Add compile command to each testcase
[gcc-vect-testsuite.git] / slp-36.ll
blobfe772e22ca02abfe0f2cf3eea46f73aaec5f1bd2
1 ; RUN: opt %loadPolly %defaultOpts -polly-codegen -enable-polly-vector -dce -S %s | FileCheck %s
2 ; Obtained from C source as:
3 ; clang -S -emit-llvm -O0 slp-36.c
4 ; opt -correlated-propagation -mem2reg -instcombine -loop-simplify -indvars -instnamer slp-36.s > slp-36.ll
6 ; ModuleID = 'slp-36.s'
7 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
8 target triple = "x86_64-unknown-linux-gnu"
10 @test_1.bm = internal global [32 x i32] zeroinitializer, align 16
11 @test_1.cm = internal global [32 x i32] zeroinitializer, align 16
12 @test_2.bm = internal global [32 x i32] zeroinitializer, align 16
13 @test_2.cm = internal global [32 x i32] zeroinitializer, align 16
14 @test_3.bm = internal global [32 x i32] zeroinitializer, align 16
16 define void @test_1() nounwind uwtable {
17 entry:
18   br label %for.cond
20 for.cond:                                         ; preds = %for.inc, %entry
21   %indvar5 = phi i64 [ %indvar.next6, %for.inc ], [ 0, %entry ]
22   %tmp8 = mul i64 %indvar5, 2
23   %tmp9 = add i64 %tmp8, 1
24   %arrayidx6 = getelementptr [32 x i32]* @test_1.bm, i64 0, i64 %tmp9
25   %arrayidx = getelementptr [32 x i32]* @test_1.bm, i64 0, i64 %tmp8
26   %exitcond7 = icmp ne i64 %indvar5, 16
27   br i1 %exitcond7, label %for.body, label %for.end
29 for.body:                                         ; preds = %for.cond
30   %tmp2 = load i32* %arrayidx, align 8
31   %shl = shl i32 %tmp2, 8
32   store i32 %shl, i32* %arrayidx, align 8
33   %tmp7 = load i32* %arrayidx6, align 4
34   %shl8 = shl i32 %tmp7, 8
35   store i32 %shl8, i32* %arrayidx6, align 4
36   br label %for.inc
38 for.inc:                                          ; preds = %for.body
39   %indvar.next6 = add i64 %indvar5, 1
40   br label %for.cond
42 for.end:                                          ; preds = %for.cond
43   br label %for.cond10
45 for.cond10:                                       ; preds = %for.inc27, %for.end
46   %indvar = phi i64 [ %indvar.next, %for.inc27 ], [ 0, %for.end ]
47   %tmp = mul i64 %indvar, 2
48   %tmp3 = add i64 %tmp, 1
49   %arrayidx24 = getelementptr [32 x i32]* @test_1.cm, i64 0, i64 %tmp3
50   %arrayidx17 = getelementptr [32 x i32]* @test_1.cm, i64 0, i64 %tmp
51   %exitcond = icmp ne i64 %indvar, 16
52   br i1 %exitcond, label %for.body13, label %for.end30
54 for.body13:                                       ; preds = %for.cond10
55   %tmp18 = load i32* %arrayidx17, align 8
56   %shl19 = shl i32 %tmp18, 8
57   store i32 %shl19, i32* %arrayidx17, align 8
58   %tmp25 = load i32* %arrayidx24, align 4
59   %shl26 = shl i32 %tmp25, 7
60   store i32 %shl26, i32* %arrayidx24, align 4
61   br label %for.inc27
63 for.inc27:                                        ; preds = %for.body13
64   %indvar.next = add i64 %indvar, 1
65   br label %for.cond10
67 for.end30:                                        ; preds = %for.cond10
68   ret void
71 define void @test_2(i32 %a, i32 %b) nounwind uwtable {
72 entry:
73   br label %for.cond
75 for.cond:                                         ; preds = %for.inc, %entry
76   %indvar6 = phi i64 [ %indvar.next7, %for.inc ], [ 0, %entry ]
77   %tmp10 = mul i64 %indvar6, 2
78   %tmp11 = add i64 %tmp10, 1
79   %arrayidx8 = getelementptr [32 x i32]* @test_2.bm, i64 0, i64 %tmp11
80   %arrayidx = getelementptr [32 x i32]* @test_2.bm, i64 0, i64 %tmp10
81   %exitcond8 = icmp ne i64 %indvar6, 16
82   br i1 %exitcond8, label %for.body, label %for.end
84 for.body:                                         ; preds = %for.cond
85   %tmp3 = load i32* %arrayidx, align 8
86   %shl = shl i32 %tmp3, %a
87   store i32 %shl, i32* %arrayidx, align 8
88   %tmp9 = load i32* %arrayidx8, align 4
89   %shl10 = shl i32 %tmp9, %a
90   store i32 %shl10, i32* %arrayidx8, align 4
91   br label %for.inc
93 for.inc:                                          ; preds = %for.body
94   %indvar.next7 = add i64 %indvar6, 1
95   br label %for.cond
97 for.end:                                          ; preds = %for.cond
98   br label %for.cond12
100 for.cond12:                                       ; preds = %for.inc31, %for.end
101   %indvar = phi i64 [ %indvar.next, %for.inc31 ], [ 0, %for.end ]
102   %tmp = mul i64 %indvar, 2
103   %tmp4 = add i64 %tmp, 1
104   %arrayidx28 = getelementptr [32 x i32]* @test_2.cm, i64 0, i64 %tmp4
105   %arrayidx20 = getelementptr [32 x i32]* @test_2.cm, i64 0, i64 %tmp
106   %exitcond = icmp ne i64 %indvar, 16
107   br i1 %exitcond, label %for.body15, label %for.end34
109 for.body15:                                       ; preds = %for.cond12
110   %tmp21 = load i32* %arrayidx20, align 8
111   %shl22 = shl i32 %tmp21, %a
112   store i32 %shl22, i32* %arrayidx20, align 8
113   %tmp29 = load i32* %arrayidx28, align 4
114   %shl30 = shl i32 %tmp29, %b
115   store i32 %shl30, i32* %arrayidx28, align 4
116   br label %for.inc31
118 for.inc31:                                        ; preds = %for.body15
119   %indvar.next = add i64 %indvar, 1
120   br label %for.cond12
122 for.end34:                                        ; preds = %for.cond12
123   ret void
126 define void @test_3() nounwind uwtable {
127 entry:
128   %am = alloca [32 x i32], align 16
129   br label %for.cond
131 for.cond:                                         ; preds = %for.inc, %entry
132   %indvar6 = phi i64 [ %indvar.next7, %for.inc ], [ 0, %entry ]
133   %tmp9 = mul i64 %indvar6, 2
134   %tmp11 = add i64 %tmp9, 1
135   %arrayidx14 = getelementptr [32 x i32]* @test_3.bm, i64 0, i64 %tmp11
136   %arrayidx5 = getelementptr [32 x i32]* @test_3.bm, i64 0, i64 %tmp9
137   %arrayidx = getelementptr [32 x i32]* %am, i64 0, i64 %indvar6
138   %exitcond8 = icmp ne i64 %indvar6, 16
139   br i1 %exitcond8, label %for.body, label %for.end
141 for.body:                                         ; preds = %for.cond
142   %tmp2 = load i32* %arrayidx, align 4
143   %tmp6 = load i32* %arrayidx5, align 8
144   %shl = shl i32 %tmp6, %tmp2
145   store i32 %shl, i32* %arrayidx5, align 8
146   %tmp10 = load i32* %arrayidx, align 4
147   %tmp15 = load i32* %arrayidx14, align 4
148   %shl16 = shl i32 %tmp15, %tmp10
149   store i32 %shl16, i32* %arrayidx14, align 4
150   br label %for.inc
152 for.inc:                                          ; preds = %for.body
153   %indvar.next7 = add i64 %indvar6, 1
154   br label %for.cond
156 for.end:                                          ; preds = %for.cond
157   br label %for.cond18
159 for.cond18:                                       ; preds = %for.inc46, %for.end
160   %indvar = phi i64 [ %indvar.next, %for.inc46 ], [ 0, %for.end ]
161   %tmp = mul i64 %indvar, 2
162   %tmp4 = add i64 %tmp, 1
163   %arrayidx43 = getelementptr [32 x i32]* @test_3.bm, i64 0, i64 %tmp4
164   %arrayidx37 = getelementptr [32 x i32]* %am, i64 0, i64 %tmp4
165   %arrayidx30 = getelementptr [32 x i32]* @test_3.bm, i64 0, i64 %tmp
166   %arrayidx25 = getelementptr [32 x i32]* %am, i64 0, i64 %tmp
167   %exitcond = icmp ne i64 %indvar, 16
168   br i1 %exitcond, label %for.body21, label %for.end49
170 for.body21:                                       ; preds = %for.cond18
171   %tmp26 = load i32* %arrayidx25, align 8
172   %tmp31 = load i32* %arrayidx30, align 8
173   %shl32 = shl i32 %tmp31, %tmp26
174   store i32 %shl32, i32* %arrayidx30, align 8
175   %tmp38 = load i32* %arrayidx37, align 4
176   %tmp44 = load i32* %arrayidx43, align 4
177   %shl45 = shl i32 %tmp44, %tmp38
178   store i32 %shl45, i32* %arrayidx43, align 4
179   br label %for.inc46
181 for.inc46:                                        ; preds = %for.body21
182   %indvar.next = add i64 %indvar, 1
183   br label %for.cond18
185 for.end49:                                        ; preds = %for.cond18
186   ret void
188 ; CHECK: define