xref: /netbsd-src/external/mit/isl/dist/isl_multi_domain_reverse_templ.c (revision 5971e316fdea024efff6be8f03536623db06833e)
1 /*
2  * Copyright 2019      Cerebras Systems
3  *
4  * Use of this software is governed by the MIT license
5  *
6  * Written by Sven Verdoolaege,
7  * Cerebras Systems, 175 S San Antonio Rd, Los Altos, CA, USA
8  */
9 
10 #include <isl/space.h>
11 
12 #include <isl_multi_macro.h>
13 
14 /* Given a multi expression on a domain (A -> B),
15  * interchange A and B in the wrapped domain
16  * to obtain a multi expression on the domain (B -> A).
17  */
MULTI(BASE)18 __isl_give MULTI(BASE) *FN(MULTI(BASE),domain_reverse)(
19 	__isl_take MULTI(BASE) *multi)
20 {
21 	S(MULTI(BASE),un_op_control) control = {
22 		.fn_space = &isl_space_domain_reverse,
23 		.fn_el = &FN(EL,domain_reverse),
24 	};
25 	return FN(MULTI(BASE),un_op)(multi, &control);
26 }
27