Lines Matching refs:morph

24 isl_ctx *isl_morph_get_ctx(__isl_keep isl_morph *morph)  in isl_morph_get_ctx()  argument
26 if (!morph) in isl_morph_get_ctx()
28 return isl_basic_set_get_ctx(morph->dom); in isl_morph_get_ctx()
35 isl_morph *morph; in isl_morph_alloc() local
40 morph = isl_alloc_type(dom->ctx, struct isl_morph); in isl_morph_alloc()
41 if (!morph) in isl_morph_alloc()
44 morph->ref = 1; in isl_morph_alloc()
45 morph->dom = dom; in isl_morph_alloc()
46 morph->ran = ran; in isl_morph_alloc()
47 morph->map = map; in isl_morph_alloc()
48 morph->inv = inv; in isl_morph_alloc()
50 return morph; in isl_morph_alloc()
59 __isl_give isl_morph *isl_morph_copy(__isl_keep isl_morph *morph) in isl_morph_copy() argument
61 if (!morph) in isl_morph_copy()
64 morph->ref++; in isl_morph_copy()
65 return morph; in isl_morph_copy()
68 __isl_give isl_morph *isl_morph_dup(__isl_keep isl_morph *morph) in isl_morph_dup() argument
70 if (!morph) in isl_morph_dup()
73 return isl_morph_alloc(isl_basic_set_copy(morph->dom), in isl_morph_dup()
74 isl_basic_set_copy(morph->ran), in isl_morph_dup()
75 isl_mat_copy(morph->map), isl_mat_copy(morph->inv)); in isl_morph_dup()
78 __isl_give isl_morph *isl_morph_cow(__isl_take isl_morph *morph) in isl_morph_cow() argument
80 if (!morph) in isl_morph_cow()
83 if (morph->ref == 1) in isl_morph_cow()
84 return morph; in isl_morph_cow()
85 morph->ref--; in isl_morph_cow()
86 return isl_morph_dup(morph); in isl_morph_cow()
89 __isl_null isl_morph *isl_morph_free(__isl_take isl_morph *morph) in isl_morph_free() argument
91 if (!morph) in isl_morph_free()
94 if (--morph->ref > 0) in isl_morph_free()
97 isl_basic_set_free(morph->dom); in isl_morph_free()
98 isl_basic_set_free(morph->ran); in isl_morph_free()
99 isl_mat_free(morph->map); in isl_morph_free()
100 isl_mat_free(morph->inv); in isl_morph_free()
101 free(morph); in isl_morph_free()
108 static isl_bool identity_on_parameters(__isl_keep isl_morph *morph) in identity_on_parameters() argument
114 nparam = isl_morph_dom_dim(morph, isl_dim_param); in identity_on_parameters()
115 nparam_ran = isl_morph_ran_dim(morph, isl_dim_param); in identity_on_parameters()
122 sub = isl_mat_sub_alloc(morph->map, 0, 1 + nparam, 0, 1 + nparam); in identity_on_parameters()
136 __isl_keep isl_morph *morph) in isl_morph_get_var_multi_aff() argument
145 if (!morph) in isl_morph_get_var_multi_aff()
148 is_identity = identity_on_parameters(morph); in isl_morph_get_var_multi_aff()
152 isl_die(isl_morph_get_ctx(morph), isl_error_invalid, in isl_morph_get_var_multi_aff()
155 dom = isl_morph_get_dom_space(morph); in isl_morph_get_var_multi_aff()
157 ran = isl_morph_get_ran_space(morph); in isl_morph_get_var_multi_aff()
170 v = isl_mat_get_row(morph->map, 1 + nparam + i); in isl_morph_get_var_multi_aff()
172 val = isl_mat_get_element_val(morph->map, 0, 0); in isl_morph_get_var_multi_aff()
185 __isl_keep isl_morph *morph) in isl_morph_peek_dom_space() argument
187 if (!morph) in isl_morph_peek_dom_space()
190 return isl_basic_set_peek_space(morph->dom); in isl_morph_peek_dom_space()
195 __isl_give isl_space *isl_morph_get_dom_space(__isl_keep isl_morph *morph) in isl_morph_get_dom_space() argument
197 return isl_space_copy(isl_morph_peek_dom_space(morph)); in isl_morph_get_dom_space()
215 isl_stat isl_morph_check_applies(__isl_keep isl_morph *morph, in isl_morph_check_applies() argument
221 dom_space = isl_morph_peek_dom_space(morph); in isl_morph_check_applies()
226 __isl_give isl_space *isl_morph_get_ran_space(__isl_keep isl_morph *morph) in isl_morph_get_ran_space() argument
228 if (!morph) in isl_morph_get_ran_space()
231 return isl_space_copy(morph->ran->dim); in isl_morph_get_ran_space()
234 isl_size isl_morph_dom_dim(__isl_keep isl_morph *morph, enum isl_dim_type type) in isl_morph_dom_dim() argument
236 if (!morph) in isl_morph_dom_dim()
239 return isl_basic_set_dim(morph->dom, type); in isl_morph_dom_dim()
242 isl_size isl_morph_ran_dim(__isl_keep isl_morph *morph, enum isl_dim_type type) in isl_morph_ran_dim() argument
244 if (!morph) in isl_morph_ran_dim()
247 return isl_basic_set_dim(morph->ran, type); in isl_morph_ran_dim()
250 __isl_give isl_morph *isl_morph_remove_dom_dims(__isl_take isl_morph *morph, in isl_morph_remove_dom_dims() argument
256 return morph; in isl_morph_remove_dom_dims()
258 morph = isl_morph_cow(morph); in isl_morph_remove_dom_dims()
259 if (!morph) in isl_morph_remove_dom_dims()
262 dom_offset = 1 + isl_space_offset(morph->dom->dim, type); in isl_morph_remove_dom_dims()
264 morph->dom = isl_basic_set_remove_dims(morph->dom, type, first, n); in isl_morph_remove_dom_dims()
266 morph->map = isl_mat_drop_cols(morph->map, dom_offset + first, n); in isl_morph_remove_dom_dims()
268 morph->inv = isl_mat_drop_rows(morph->inv, dom_offset + first, n); in isl_morph_remove_dom_dims()
270 if (morph->dom && morph->ran && morph->map && morph->inv) in isl_morph_remove_dom_dims()
271 return morph; in isl_morph_remove_dom_dims()
273 isl_morph_free(morph); in isl_morph_remove_dom_dims()
277 __isl_give isl_morph *isl_morph_remove_ran_dims(__isl_take isl_morph *morph, in isl_morph_remove_ran_dims() argument
283 return morph; in isl_morph_remove_ran_dims()
285 morph = isl_morph_cow(morph); in isl_morph_remove_ran_dims()
286 if (!morph) in isl_morph_remove_ran_dims()
289 ran_offset = 1 + isl_space_offset(morph->ran->dim, type); in isl_morph_remove_ran_dims()
291 morph->ran = isl_basic_set_remove_dims(morph->ran, type, first, n); in isl_morph_remove_ran_dims()
293 morph->map = isl_mat_drop_rows(morph->map, ran_offset + first, n); in isl_morph_remove_ran_dims()
295 morph->inv = isl_mat_drop_cols(morph->inv, ran_offset + first, n); in isl_morph_remove_ran_dims()
297 if (morph->dom && morph->ran && morph->map && morph->inv) in isl_morph_remove_ran_dims()
298 return morph; in isl_morph_remove_ran_dims()
300 isl_morph_free(morph); in isl_morph_remove_ran_dims()
306 __isl_give isl_morph *isl_morph_dom_params(__isl_take isl_morph *morph) in isl_morph_dom_params() argument
310 morph = isl_morph_cow(morph); in isl_morph_dom_params()
311 if (!morph) in isl_morph_dom_params()
313 n = isl_basic_set_dim(morph->dom, isl_dim_set); in isl_morph_dom_params()
315 return isl_morph_free(morph); in isl_morph_dom_params()
316 morph = isl_morph_remove_dom_dims(morph, isl_dim_set, 0, n); in isl_morph_dom_params()
317 if (!morph) in isl_morph_dom_params()
319 morph->dom = isl_basic_set_params(morph->dom); in isl_morph_dom_params()
320 if (morph->dom) in isl_morph_dom_params()
321 return morph; in isl_morph_dom_params()
323 isl_morph_free(morph); in isl_morph_dom_params()
329 __isl_give isl_morph *isl_morph_ran_params(__isl_take isl_morph *morph) in isl_morph_ran_params() argument
333 morph = isl_morph_cow(morph); in isl_morph_ran_params()
334 if (!morph) in isl_morph_ran_params()
336 n = isl_basic_set_dim(morph->ran, isl_dim_set); in isl_morph_ran_params()
338 return isl_morph_free(morph); in isl_morph_ran_params()
339 morph = isl_morph_remove_ran_dims(morph, isl_dim_set, 0, n); in isl_morph_ran_params()
340 if (!morph) in isl_morph_ran_params()
342 morph->ran = isl_basic_set_params(morph->ran); in isl_morph_ran_params()
343 if (morph->ran) in isl_morph_ran_params()
344 return morph; in isl_morph_ran_params()
346 isl_morph_free(morph); in isl_morph_ran_params()
353 __isl_take isl_morph *morph, __isl_keep isl_id *id) in isl_morph_set_ran_tuple_id() argument
355 morph = isl_morph_cow(morph); in isl_morph_set_ran_tuple_id()
356 if (!morph) in isl_morph_set_ran_tuple_id()
358 morph->ran = isl_basic_set_set_tuple_id(morph->ran, isl_id_copy(id)); in isl_morph_set_ran_tuple_id()
359 if (!morph->ran) in isl_morph_set_ran_tuple_id()
360 return isl_morph_free(morph); in isl_morph_set_ran_tuple_id()
361 return morph; in isl_morph_set_ran_tuple_id()
364 void isl_morph_print_internal(__isl_take isl_morph *morph, FILE *out) in isl_morph_print_internal() argument
366 if (!morph) in isl_morph_print_internal()
369 isl_basic_set_dump(morph->dom); in isl_morph_print_internal()
370 isl_basic_set_dump(morph->ran); in isl_morph_print_internal()
371 isl_mat_print_internal(morph->map, out, 4); in isl_morph_print_internal()
372 isl_mat_print_internal(morph->inv, out, 4); in isl_morph_print_internal()
375 void isl_morph_dump(__isl_take isl_morph *morph) in isl_morph_dump() argument
377 isl_morph_print_internal(morph, stderr); in isl_morph_dump()
541 isl_morph *morph; in isl_basic_set_variable_compression_with_id() local
543 morph = isl_basic_set_variable_compression(bset, isl_dim_set); in isl_basic_set_variable_compression_with_id()
544 morph = isl_morph_set_ran_tuple_id(morph, id); in isl_basic_set_variable_compression_with_id()
545 return morph; in isl_basic_set_variable_compression_with_id()
641 __isl_give isl_basic_set *isl_morph_basic_set(__isl_take isl_morph *morph, in isl_morph_basic_set() argument
648 if (!morph || isl_basic_set_check_equal_space(bset, morph->dom) < 0) in isl_morph_basic_set()
650 n_param = isl_basic_set_dim(morph->dom, isl_dim_param); in isl_morph_basic_set()
654 ma = isl_multi_aff_from_aff_mat_anonymous(isl_mat_copy(morph->inv)); in isl_morph_basic_set()
659 space = isl_basic_set_get_space(morph->ran); in isl_morph_basic_set()
661 bset = isl_basic_set_intersect(bset, isl_basic_set_copy(morph->ran)); in isl_morph_basic_set()
663 isl_morph_free(morph); in isl_morph_basic_set()
666 isl_morph_free(morph); in isl_morph_basic_set()
678 __isl_give isl_set *isl_morph_set(__isl_take isl_morph *morph, in isl_morph_set() argument
686 if (!morph || isl_set_basic_set_check_equal_space(set, morph->dom) < 0) in isl_morph_set()
688 n_param = isl_basic_set_dim(morph->dom, isl_dim_param); in isl_morph_set()
692 ma = isl_multi_aff_from_aff_mat_anonymous(isl_mat_copy(morph->inv)); in isl_morph_set()
696 space = isl_basic_set_get_space(morph->ran); in isl_morph_set()
698 ran = isl_basic_set_copy(morph->ran); in isl_morph_set()
701 isl_morph_free(morph); in isl_morph_set()
705 isl_morph_free(morph); in isl_morph_set()
739 __isl_give isl_morph *isl_morph_inverse(__isl_take isl_morph *morph) in isl_morph_inverse() argument
744 morph = isl_morph_cow(morph); in isl_morph_inverse()
745 if (!morph) in isl_morph_inverse()
748 bset = morph->dom; in isl_morph_inverse()
749 morph->dom = morph->ran; in isl_morph_inverse()
750 morph->ran = bset; in isl_morph_inverse()
752 mat = morph->map; in isl_morph_inverse()
753 morph->map = morph->inv; in isl_morph_inverse()
754 morph->inv = mat; in isl_morph_inverse()
756 return morph; in isl_morph_inverse()
769 isl_morph *morph, *morph2; in isl_basic_set_full_compression() local
774 morph = isl_basic_set_variable_compression(bset, isl_dim_param); in isl_basic_set_full_compression()
775 bset = isl_morph_basic_set(isl_morph_copy(morph), bset); in isl_basic_set_full_compression()
780 morph = isl_morph_compose(morph2, morph); in isl_basic_set_full_compression()
785 morph = isl_morph_compose(morph2, morph); in isl_basic_set_full_compression()
787 return morph; in isl_basic_set_full_compression()
790 __isl_give isl_vec *isl_morph_vec(__isl_take isl_morph *morph, in isl_morph_vec() argument
793 if (!morph) in isl_morph_vec()
796 vec = isl_mat_vec_product(isl_mat_copy(morph->map), vec); in isl_morph_vec()
798 isl_morph_free(morph); in isl_morph_vec()
801 isl_morph_free(morph); in isl_morph_vec()