Polly
20.0.0git
Toggle main menu visibility
Main Page
Related Pages
Namespaces
Namespace List
Namespace Members
All
a
b
c
d
e
f
g
h
i
l
m
o
p
r
s
t
u
v
w
Functions
a
b
c
d
e
f
g
h
i
l
m
o
p
r
s
t
v
Variables
Typedefs
Enumerations
Enumerator
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
y
z
~
Functions
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
z
~
Variables
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
y
z
Typedefs
a
b
c
d
e
i
l
m
p
r
s
v
Enumerations
Enumerator
Related Functions
a
d
f
l
m
s
v
Files
File List
File Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Variables
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
Typedefs
b
f
i
m
o
r
s
t
Enumerations
a
g
i
m
o
t
Enumerator
i
m
o
t
v
Macros
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
x
z
llvm-project
polly
lib
External
isl
isl_multi_splice_templ.c
Go to the documentation of this file.
1
/*
2
* Copyright 2012 Ecole Normale Superieure
3
*
4
* Use of this software is governed by the MIT license
5
*
6
* Written by Sven Verdoolaege,
7
* Ecole Normale Superieure, 45 rue d'Ulm, 75230 Paris, France
8
*/
9
10
#include <
isl/ctx.h
>
11
#include <
isl/space.h
>
12
13
#include <
isl_multi_macro.h
>
14
15
/* Given two multi expressions, "multi1"
16
*
17
* [A1 A2] -> [B1 B2]
18
*
19
* where A2 starts at position "in_pos" and B2 starts at position "out_pos",
20
* and "multi2"
21
*
22
* [C] -> [D]
23
*
24
* return the multi expression
25
*
26
* [A1 C A2] -> [B1 D B2]
27
*
28
* We first insert input dimensions to obtain
29
*
30
* [A1 C A2] -> [B1 B2]
31
*
32
* and
33
*
34
* [A1 C A2] -> [D]
35
*
36
* and then apply range_splice.
37
*/
38
__isl_give
MULTI
(
BASE
) *
FN
(
MULTI
(
BASE
),splice)(
39
__isl_take
MULTI
(
BASE
) *multi1,
unsigned
in_pos,
unsigned
out_pos,
40
__isl_take
MULTI
(
BASE
) *multi2)
41
{
42
isl_size
n_in1;
43
isl_size
n_in2;
44
45
n_in1 =
FN
(
MULTI
(
BASE
),dim)(multi1,
isl_dim_in
);
46
n_in2 =
FN
(
MULTI
(
BASE
),dim)(multi2,
isl_dim_in
);
47
if
(n_in1 < 0 || n_in2 < 0)
48
goto
error;
49
50
if
(
FN
(
MULTI
(
BASE
),check_range)(multi1,
isl_dim_in
, in_pos, 0) < 0)
51
goto
error;
52
53
multi1 =
FN
(
MULTI
(
BASE
),
insert_dims
)(multi1,
isl_dim_in
, in_pos, n_in2);
54
multi2 =
FN
(
MULTI
(
BASE
),
insert_dims
)(multi2,
isl_dim_in
, n_in2,
55
n_in1 - in_pos);
56
multi2 =
FN
(
MULTI
(
BASE
),
insert_dims
)(multi2,
isl_dim_in
, 0, in_pos);
57
58
return
FN
(
MULTI
(
BASE
),range_splice)(multi1, out_pos, multi2);
59
error:
60
FN
(
MULTI
(
BASE
),free)(multi1);
61
FN
(
MULTI
(
BASE
),free)(multi2);
62
return
NULL;
63
}
FN
#define FN(TYPE, NAME)
Definition:
check_parse_fail_test_templ.c:15
ctx.h
__isl_take
#define __isl_take
Definition:
ctx.h:22
__isl_give
#define __isl_give
Definition:
ctx.h:19
isl_size
int isl_size
Definition:
ctx.h:96
BASE
#define BASE
Definition:
flow_cmp.c:49
insert_dims
static __isl_give isl_qpolynomial * insert_dims(__isl_take isl_qpolynomial *qp, void *user)
Definition:
isl_fold.c:412
isl_multi_macro.h
MULTI
#define MULTI(BASE)
Definition:
isl_multi_macro.h:6
space.h
isl_dim_in
@ isl_dim_in
Definition:
space_type.h:16
Generated on Thu Apr 24 2025 21:44:34 for Polly by
1.9.6