xref: /llvm-project/polly/test/Simplify/scalability2.ll (revision e1f056f692d869708c1898d9d65a69ac5584a0ed)
1; RUN: opt %loadNPMPolly -polly-ignore-inbounds '-passes=print<polly-simplify>' -disable-output < %s | FileCheck %s -match-full-lines
2;
3; Test scalability.
4;
5define void @func(i32 %n, ptr noalias nonnull %A,
6i32 %p0, i32 %p1, i32 %p2, i32 %p3, i32 %p4, i32 %p5, i32 %p6, i32 %p7, i32 %p8, i32 %p9,
7i32 %p10, i32 %p11, i32 %p12, i32 %p13, i32 %p14, i32 %p15, i32 %p16, i32 %p17, i32 %p18, i32 %p19,
8i32 %p20, i32 %p21, i32 %p22, i32 %p23, i32 %p24, i32 %p25, i32 %p26, i32 %p27, i32 %p28, i32 %p29,
9i32 %p30, i32 %p31, i32 %p32, i32 %p33, i32 %p34, i32 %p35, i32 %p36, i32 %p37, i32 %p38, i32 %p39,
10i32 %p40, i32 %p41, i32 %p42, i32 %p43, i32 %p44, i32 %p45, i32 %p46, i32 %p47, i32 %p48, i32 %p49,
11i32 %p50, i32 %p51, i32 %p52, i32 %p53, i32 %p54, i32 %p55, i32 %p56, i32 %p57, i32 %p58, i32 %p59) {
12entry:
13  br label %for
14
15for:
16  %j = phi i32 [0, %entry], [%j.inc, %inc]
17  %j.cmp = icmp slt i32 %j, %n
18  br i1 %j.cmp, label %body, label %exit
19
20
21    body:
22      %A0 = getelementptr inbounds double, ptr %A, i32 %p0
23      %A1 = getelementptr inbounds double, ptr %A, i32 %p1
24      %A2 = getelementptr inbounds double, ptr %A, i32 %p2
25      %A3 = getelementptr inbounds double, ptr %A, i32 %p3
26      %A4 = getelementptr inbounds double, ptr %A, i32 %p4
27      %A5 = getelementptr inbounds double, ptr %A, i32 %p5
28      %A6 = getelementptr inbounds double, ptr %A, i32 %p6
29      %A7 = getelementptr inbounds double, ptr %A, i32 %p7
30      %A8 = getelementptr inbounds double, ptr %A, i32 %p8
31      %A9 = getelementptr inbounds double, ptr %A, i32 %p9
32      %A10 = getelementptr inbounds double, ptr %A, i32 %p10
33      %A11 = getelementptr inbounds double, ptr %A, i32 %p11
34      %A12 = getelementptr inbounds double, ptr %A, i32 %p12
35      %A13 = getelementptr inbounds double, ptr %A, i32 %p13
36      %A14 = getelementptr inbounds double, ptr %A, i32 %p14
37      %A15 = getelementptr inbounds double, ptr %A, i32 %p15
38      %A16 = getelementptr inbounds double, ptr %A, i32 %p16
39      %A17 = getelementptr inbounds double, ptr %A, i32 %p17
40      %A18 = getelementptr inbounds double, ptr %A, i32 %p18
41      %A19 = getelementptr inbounds double, ptr %A, i32 %p19
42      %A20 = getelementptr inbounds double, ptr %A, i32 %p20
43      %A21 = getelementptr inbounds double, ptr %A, i32 %p21
44      %A22 = getelementptr inbounds double, ptr %A, i32 %p22
45      %A23 = getelementptr inbounds double, ptr %A, i32 %p23
46      %A24 = getelementptr inbounds double, ptr %A, i32 %p24
47      %A25 = getelementptr inbounds double, ptr %A, i32 %p25
48      %A26 = getelementptr inbounds double, ptr %A, i32 %p26
49      %A27 = getelementptr inbounds double, ptr %A, i32 %p27
50      %A28 = getelementptr inbounds double, ptr %A, i32 %p28
51      %A29 = getelementptr inbounds double, ptr %A, i32 %p29
52      %A30 = getelementptr inbounds double, ptr %A, i32 %p30
53      %A31 = getelementptr inbounds double, ptr %A, i32 %p31
54      %A32 = getelementptr inbounds double, ptr %A, i32 %p32
55      %A33 = getelementptr inbounds double, ptr %A, i32 %p33
56      %A34 = getelementptr inbounds double, ptr %A, i32 %p34
57      %A35 = getelementptr inbounds double, ptr %A, i32 %p35
58      %A36 = getelementptr inbounds double, ptr %A, i32 %p36
59      %A37 = getelementptr inbounds double, ptr %A, i32 %p37
60      %A38 = getelementptr inbounds double, ptr %A, i32 %p38
61      %A39 = getelementptr inbounds double, ptr %A, i32 %p39
62      %A40 = getelementptr inbounds double, ptr %A, i32 %p40
63      %A41 = getelementptr inbounds double, ptr %A, i32 %p41
64      %A42 = getelementptr inbounds double, ptr %A, i32 %p42
65      %A43 = getelementptr inbounds double, ptr %A, i32 %p43
66      %A44 = getelementptr inbounds double, ptr %A, i32 %p44
67      %A45 = getelementptr inbounds double, ptr %A, i32 %p45
68      %A46 = getelementptr inbounds double, ptr %A, i32 %p46
69      %A47 = getelementptr inbounds double, ptr %A, i32 %p47
70      %A48 = getelementptr inbounds double, ptr %A, i32 %p48
71      %A49 = getelementptr inbounds double, ptr %A, i32 %p49
72      %A50 = getelementptr inbounds double, ptr %A, i32 %p50
73      %A51 = getelementptr inbounds double, ptr %A, i32 %p51
74      %A52 = getelementptr inbounds double, ptr %A, i32 %p52
75      %A53 = getelementptr inbounds double, ptr %A, i32 %p53
76      %A54 = getelementptr inbounds double, ptr %A, i32 %p54
77      %A55 = getelementptr inbounds double, ptr %A, i32 %p55
78      %A56 = getelementptr inbounds double, ptr %A, i32 %p56
79      %A57 = getelementptr inbounds double, ptr %A, i32 %p57
80      %A58 = getelementptr inbounds double, ptr %A, i32 %p58
81      %A59 = getelementptr inbounds double, ptr %A, i32 %p59
82
83      %val0 = load double, ptr %A0
84      store double %val0, ptr %A1
85
86      %val2 = load double, ptr %A2
87      store double %val2, ptr %A3
88
89      %val4 = load double, ptr %A4
90      store double %val4, ptr %A5
91
92      %val6 = load double, ptr %A6
93      store double %val6, ptr %A7
94
95      %val8 = load double, ptr %A8
96      store double %val8, ptr %A9
97
98      %val10 = load double, ptr %A10
99      store double %val10, ptr %A11
100
101      %val12 = load double, ptr %A12
102      store double %val12, ptr %A13
103
104      %val13 = load double, ptr %A13
105      store double %val13, ptr %A15
106
107      %val16 = load double, ptr %A16
108      store double %val16, ptr %A17
109
110      %val18 = load double, ptr %A18
111      store double %val18, ptr %A19
112
113      %val20 = load double, ptr %A20
114      store double %val20, ptr %A21
115
116      %val22 = load double, ptr %A22
117      store double %val22, ptr %A23
118
119      %val24 = load double, ptr %A24
120      store double %val24, ptr %A25
121
122      %val26 = load double, ptr %A26
123      store double %val26, ptr %A27
124
125      %val28 = load double, ptr %A28
126      store double %val28, ptr %A29
127
128      %val30 = load double, ptr %A30
129      store double %val30, ptr %A31
130
131      %val32 = load double, ptr %A32
132      store double %val32, ptr %A33
133
134      %val34 = load double, ptr %A34
135      store double %val34, ptr %A35
136
137      %val36 = load double, ptr %A36
138      store double %val36, ptr %A37
139
140      %val38 = load double, ptr %A38
141      store double %val38, ptr %A39
142
143      %val40 = load double, ptr %A40
144      store double %val40, ptr %A41
145
146      %val42 = load double, ptr %A42
147      store double %val42, ptr %A43
148
149      %val44 = load double, ptr %A44
150      store double %val44, ptr %A45
151
152      %val46 = load double, ptr %A46
153      store double %val46, ptr %A47
154
155      %val48 = load double, ptr %A48
156      store double %val48, ptr %A49
157
158      %val50 = load double, ptr %A50
159      store double %val50, ptr %A51
160
161      %val52 = load double, ptr %A52
162      store double %val52, ptr %A53
163
164      %val54 = load double, ptr %A54
165      store double %val54, ptr %A55
166
167      %val56 = load double, ptr %A56
168      store double %val56, ptr %A57
169
170      %val58 = load double, ptr %A58
171      store double %val58, ptr %A59
172
173      br label %inc
174
175
176inc:
177  %j.inc = add nuw nsw i32 %j, 1
178  br label %for
179
180exit:
181  br label %return
182
183return:
184  ret void
185}
186
187
188; CHECK: SCoP could not be simplified
189