Line data Source code
1 : /*
2 : * Copyright 2017 Sven Verdoolaege
3 : *
4 : * Use of this software is governed by the MIT license
5 : *
6 : * Written by Sven Verdoolaege.
7 : */
8 :
9 : /* These versions of the explicit domain functions are used
10 : * when the multi expression cannot have an explicit domain.
11 : */
12 :
13 : #include <isl/space.h>
14 :
15 : #include <isl_multi_macro.h>
16 :
17 : /* Does "multi" have an explicit domain?
18 : *
19 : * No.
20 : */
21 0 : static int FN(MULTI(BASE),has_explicit_domain)(__isl_keep MULTI(BASE) *multi)
22 : {
23 0 : return 0;
24 : }
25 :
26 : /* Initialize the explicit domain of "multi".
27 : * "multi" cannot have an explicit domain, so this function is never called.
28 : */
29 0 : static __isl_give MULTI(BASE) *FN(MULTI(BASE),init_explicit_domain)(
30 : __isl_take MULTI(BASE) *multi)
31 : {
32 0 : return multi;
33 : }
34 :
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.
37 : */
38 0 : static __isl_give MULTI(BASE) *FN(MULTI(BASE),intersect_explicit_domain)(
39 : __isl_take MULTI(BASE) *dst, __isl_keep MULTI(BASE) *src)
40 : {
41 0 : return dst;
42 : }
43 :
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.
47 : */
48 0 : static __isl_give MULTI(BASE) *FN(MULTI(BASE),copy_explicit_domain)(
49 : __isl_take MULTI(BASE) *dst, __isl_keep MULTI(BASE) *src)
50 : {
51 0 : return dst;
52 : }
53 :
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.
60 : */
61 : static __isl_give MULTI(BASE) *
62 0 : FN(MULTI(BASE),intersect_explicit_domain_product)(
63 : __isl_take MULTI(BASE) *dst, __isl_keep MULTI(BASE) *src1,
64 : __isl_keep MULTI(BASE) *src2)
65 : {
66 0 : return dst;
67 : }
68 :
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.
71 : */
72 0 : static __isl_give MULTI(BASE) *FN(MULTI(BASE),align_explicit_domain_params)(
73 : __isl_take MULTI(BASE) *multi, __isl_take isl_space *space)
74 : {
75 0 : isl_space_free(space);
76 0 : return multi;
77 : }
78 :
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.
82 : */
83 0 : static __isl_give MULTI(BASE) *FN(MULTI(BASE),reset_explicit_domain_space)(
84 : __isl_take MULTI(BASE) *multi, __isl_take isl_space *space)
85 : {
86 0 : isl_space_free(space);
87 0 : return multi;
88 : }
89 :
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.
94 : */
95 0 : 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)
98 : {
99 0 : return isl_bool_false;
100 : }
101 :
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.
105 : */
106 0 : __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)
109 : {
110 0 : return multi;
111 : }
112 :
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.
116 : */
117 0 : __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)
120 : {
121 0 : return multi;
122 : }
123 :
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.
127 : */
128 0 : __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)
132 : {
133 0 : return multi;
134 : }
135 :
136 : /* Free the explicit domain of "multi".
137 : * "multi" cannot have an explicit domain, so this function is never called.
138 : */
139 0 : static void FN(MULTI(BASE),free_explicit_domain)(__isl_keep MULTI(BASE) *multi)
140 : {
141 0 : }
142 :
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.
146 : */
147 0 : static isl_bool FN(MULTI(BASE),equal_explicit_domain)(
148 : __isl_keep MULTI(BASE) *multi1, __isl_keep MULTI(BASE) *multi2)
149 : {
150 0 : return isl_bool_true;
151 : }
152 :
153 : static isl_stat FN(MULTI(BASE),check_explicit_domain)(
154 : __isl_keep MULTI(BASE) *multi) __attribute__ ((unused));
155 :
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.
160 : */
161 0 : static isl_stat FN(MULTI(BASE),check_explicit_domain)(
162 : __isl_keep MULTI(BASE) *multi)
163 : {
164 0 : return isl_stat_ok;
165 : }
|