isl_map_simplify.c: eliminate_divs_eq: isl_basic_map_offset
[isl.git] / isl_multi_no_explicit_domain.c
blobfc672a05b5fc8bceda2016d01a63c71f9b7dfb9b
1 /*
2 * Copyright 2017 Sven Verdoolaege
4 * Use of this software is governed by the MIT license
6 * Written by Sven Verdoolaege.
7 */
9 /* These versions of the explicit domain functions are used
10 * when the multi expression cannot have an explicit domain.
13 #include <isl/space.h>
15 #include <isl_multi_macro.h>
17 /* Does "multi" have an explicit domain?
19 * No.
21 static int FN(MULTI(BASE),has_explicit_domain)(__isl_keep MULTI(BASE) *multi)
23 return 0;
26 /* Initialize the explicit domain of "multi".
27 * "multi" cannot have an explicit domain, so this function is never called.
29 static __isl_give MULTI(BASE) *FN(MULTI(BASE),init_explicit_domain)(
30 __isl_take MULTI(BASE) *multi)
32 return multi;
35 /* Intersect the domain of "dst" with the explicit domain of "src".
36 * "src" cannot have an explicit domain, so this function is never called.
38 static __isl_give MULTI(BASE) *FN(MULTI(BASE),intersect_explicit_domain)(
39 __isl_take MULTI(BASE) *dst, __isl_keep MULTI(BASE) *src)
41 return dst;
44 /* Set the explicit domain of "dst" to that of "src".
45 * "src" and "dst" cannot have an explicit domain,
46 * so this function is never called.
48 static __isl_give MULTI(BASE) *FN(MULTI(BASE),copy_explicit_domain)(
49 __isl_take MULTI(BASE) *dst, __isl_keep MULTI(BASE) *src)
51 return dst;
54 /* Intersect the domain of "dst" with the domain product
55 * of the explicit domains of "src1" and "src2".
56 * This function is only called if at least one of "src1" or "src2"
57 * has an explicit domain.
58 * "src1", "src2" and "dst" cannot have an explicit domain,
59 * so this function is never called.
61 static __isl_give MULTI(BASE) *
62 FN(MULTI(BASE),intersect_explicit_domain_product)(
63 __isl_take MULTI(BASE) *dst, __isl_keep MULTI(BASE) *src1,
64 __isl_keep MULTI(BASE) *src2)
66 return dst;
69 /* Align the parameters of the explicit domain of "multi" to those of "space".
70 * "multi" cannot have an explicit domain, so this function is never called.
72 static __isl_give MULTI(BASE) *FN(MULTI(BASE),align_explicit_domain_params)(
73 __isl_take MULTI(BASE) *multi, __isl_take isl_space *space)
75 isl_space_free(space);
76 return multi;
79 /* Replace the space of the explicit domain of "multi" by "space",
80 * without modifying its dimension.
81 * "multi" cannot have an explicit domain, so this function is never called.
83 static __isl_give MULTI(BASE) *FN(MULTI(BASE),reset_explicit_domain_space)(
84 __isl_take MULTI(BASE) *multi, __isl_take isl_space *space)
86 isl_space_free(space);
87 return multi;
90 /* Check whether the explicit domain of "multi" has non-zero coefficients
91 * for any dimension in the given range or if any of these dimensions appear
92 * with non-zero coefficients in any of the integer divisions involved.
93 * "multi" cannot have an explicit domain, so this function is never called.
95 isl_bool FN(MULTI(BASE),involves_explicit_domain_dims)(
96 __isl_keep MULTI(BASE) *multi,
97 enum isl_dim_type type, unsigned pos, unsigned n)
99 return isl_bool_false;
102 /* Insert "n" dimensions of type "type" at position "pos"
103 * of the explicit domain of "multi".
104 * "multi" cannot have an explicit domain, so this function is never called.
106 __isl_give MULTI(BASE) *FN(MULTI(BASE),insert_explicit_domain_dims)(
107 __isl_take MULTI(BASE) *multi,
108 enum isl_dim_type type, unsigned pos, unsigned n)
110 return multi;
113 /* Drop the "n" dimensions of type "type" starting at position "pos"
114 * of the explicit domain of "multi".
115 * "multi" cannot have an explicit domain, so this function is never called.
117 __isl_give MULTI(BASE) *FN(MULTI(BASE),drop_explicit_domain_dims)(
118 __isl_take MULTI(BASE) *multi,
119 enum isl_dim_type type, unsigned pos, unsigned n)
121 return multi;
124 /* Move the "n" dimensions of "src_type" starting at "src_pos" of
125 * of the explicit domain of "multi" to dimensions of "dst_type" at "dst_pos".
126 * "multi" cannot have an explicit domain, so this function is never called.
128 __isl_give MULTI(BASE) *FN(MULTI(BASE),move_explicit_domain_dims)(
129 __isl_take MULTI(BASE) *multi,
130 enum isl_dim_type dst_type, unsigned dst_pos,
131 enum isl_dim_type src_type, unsigned src_pos, unsigned n)
133 return multi;
136 /* Free the explicit domain of "multi".
137 * "multi" cannot have an explicit domain, so this function is never called.
139 static void FN(MULTI(BASE),free_explicit_domain)(__isl_keep MULTI(BASE) *multi)
143 /* Do "multi1" and "multi2" have the same explicit domain?
144 * "multi1" and "multi2" cannot have an explicit domain,
145 * so this function is never called.
147 static isl_bool FN(MULTI(BASE),equal_explicit_domain)(
148 __isl_keep MULTI(BASE) *multi1, __isl_keep MULTI(BASE) *multi2)
150 return isl_bool_true;
153 static isl_stat FN(MULTI(BASE),check_explicit_domain)(
154 __isl_keep MULTI(BASE) *multi) __attribute__ ((unused));
156 /* Debugging function to check that the explicit domain of "multi"
157 * has the correct space.
158 * "multi" cannot have an explicit domain,
159 * so this function should never be called.
161 static isl_stat FN(MULTI(BASE),check_explicit_domain)(
162 __isl_keep MULTI(BASE) *multi)
164 return isl_stat_ok;