2 * Copyright 2018 Cerebras Systems
4 * Use of this software is governed by the MIT license
6 * Written by Sven Verdoolaege,
7 * Cerebras Systems, 175 S San Antonio Rd, Los Altos, CA, USA
10 #include "isl_multi_macro.h"
12 #define TYPE CAT(isl_,BASE)
14 /* Check that "map" and "multi" live in the same space, ignoring parameters.
16 static isl_stat
FN(check_map_equal_tuples_multi
,BASE
)(__isl_keep isl_map
*map
,
17 __isl_keep
MULTI(BASE
) *multi
)
19 isl_space
*map_space
, *multi_space
;
21 map_space
= isl_map_peek_space(map
);
22 multi_space
= FN(MULTI(BASE
),peek_space
)(multi
);
23 return isl_space_check_equal_tuples(map_space
, multi_space
);
26 /* Apply "map_bound" to "map" with the corresponding value in "bound"
27 * for each output dimension.
29 static __isl_give isl_map
*FN(map_bound_multi
,BASE
)(__isl_take isl_map
*map
,
30 __isl_take
MULTI(BASE
) *bound
,
31 __isl_give isl_map
*map_bound(__isl_take isl_map
*map
,
32 unsigned pos
, __isl_take TYPE
*value
))
37 dim
= isl_map_dim(map
, isl_dim_out
);
38 if (dim
< 0 || FN(check_map_equal_tuples_multi
,BASE
)(map
, bound
) < 0)
41 for (i
= 0; i
< dim
; ++i
) {
44 el
= FN(MULTI(BASE
),get_at
)(bound
, i
);
45 map
= map_bound(map
, i
, el
);
47 FN(MULTI(BASE
),free
)(bound
);
51 FN(MULTI(BASE
),free
)(bound
);