xref: /llvm-project/polly/test/Simplify/scalability1.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) {
10entry:
11  br label %for
12
13for:
14  %j = phi i32 [0, %entry], [%j.inc, %inc]
15  %j.cmp = icmp slt i32 %j, %n
16  br i1 %j.cmp, label %body, label %exit
17
18
19    body:
20      %A0 = getelementptr inbounds double, ptr %A, i32 %p0
21      %A1 = getelementptr inbounds double, ptr %A, i32 %p1
22      %A2 = getelementptr inbounds double, ptr %A, i32 %p2
23      %A3 = getelementptr inbounds double, ptr %A, i32 %p3
24      %A4 = getelementptr inbounds double, ptr %A, i32 %p4
25      %A5 = getelementptr inbounds double, ptr %A, i32 %p5
26      %A6 = getelementptr inbounds double, ptr %A, i32 %p6
27      %A7 = getelementptr inbounds double, ptr %A, i32 %p7
28      %A8 = getelementptr inbounds double, ptr %A, i32 %p8
29      %A9 = getelementptr inbounds double, ptr %A, i32 %p9
30      %A10 = getelementptr inbounds double, ptr %A, i32 %p10
31      %A11 = getelementptr inbounds double, ptr %A, i32 %p11
32      %A12 = getelementptr inbounds double, ptr %A, i32 %p12
33      %A13 = getelementptr inbounds double, ptr %A, i32 %p13
34      %A14 = getelementptr inbounds double, ptr %A, i32 %p14
35      %A15 = getelementptr inbounds double, ptr %A, i32 %p15
36      %A16 = getelementptr inbounds double, ptr %A, i32 %p16
37      %A17 = getelementptr inbounds double, ptr %A, i32 %p17
38      %A18 = getelementptr inbounds double, ptr %A, i32 %p18
39      %A19 = getelementptr inbounds double, ptr %A, i32 %p19
40      %A20 = getelementptr inbounds double, ptr %A, i32 %p20
41      %A21 = getelementptr inbounds double, ptr %A, i32 %p21
42      %A22 = getelementptr inbounds double, ptr %A, i32 %p22
43      %A23 = getelementptr inbounds double, ptr %A, i32 %p23
44      %A24 = getelementptr inbounds double, ptr %A, i32 %p24
45      %A25 = getelementptr inbounds double, ptr %A, i32 %p25
46      %A26 = getelementptr inbounds double, ptr %A, i32 %p26
47      %A27 = getelementptr inbounds double, ptr %A, i32 %p27
48      %A28 = getelementptr inbounds double, ptr %A, i32 %p28
49      %A29 = getelementptr inbounds double, ptr %A, i32 %p29
50      %A30 = getelementptr inbounds double, ptr %A, i32 %p30
51      %A31 = getelementptr inbounds double, ptr %A, i32 %p31
52      %A32 = getelementptr inbounds double, ptr %A, i32 %p32
53
54      %val = load double, ptr %A0
55
56      store double %val, ptr %A1
57      store double %val, ptr %A2
58      store double %val, ptr %A3
59      store double %val, ptr %A4
60      store double %val, ptr %A5
61      store double %val, ptr %A6
62      store double %val, ptr %A7
63      store double %val, ptr %A8
64      store double %val, ptr %A9
65      store double %val, ptr %A10
66      store double %val, ptr %A11
67      store double %val, ptr %A12
68      store double %val, ptr %A13
69      store double %val, ptr %A14
70      store double %val, ptr %A15
71      store double %val, ptr %A16
72      store double %val, ptr %A17
73      store double %val, ptr %A18
74      store double %val, ptr %A19
75      store double %val, ptr %A20
76      store double %val, ptr %A21
77      store double %val, ptr %A22
78      store double %val, ptr %A23
79      store double %val, ptr %A24
80      store double %val, ptr %A25
81      store double %val, ptr %A26
82      store double %val, ptr %A27
83      store double %val, ptr %A28
84      store double %val, ptr %A29
85      store double %val, ptr %A30
86      store double %val, ptr %A31
87      store double %val, ptr %A32
88
89      br label %inc
90
91
92inc:
93  %j.inc = add nuw nsw i32 %j, 1
94  br label %for
95
96exit:
97  br label %return
98
99return:
100  ret void
101}
102
103
104; CHECK: SCoP could not be simplified
105