Add compile command to each testcase
[gcc-vect-testsuite.git] / bb-slp-1.ll
bloba30af15c50995739394000fe522f350d83db3313
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 bb-slp-1.c
4 ; opt -correlated-propagation -mem2reg -instcombine -loop-simplify -indvars -instnamer bb-slp-1.s > bb-slp-1.ll
6 ; ModuleID = 'bb-slp-1.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 @in = global [256 x i32] [i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63], align 16
11 @out = common global [256 x i32] zeroinitializer, align 16
13 define i32 @main1(i32 %dummy) nounwind uwtable noinline {
14 entry:
15   br label %for.cond
17 for.cond:                                         ; preds = %for.inc, %entry
18   %indvar25 = phi i64 [ %indvar.next26, %for.inc ], [ 0, %entry ]
19   %tmp28 = mul i64 %indvar25, 8
20   %tmp29 = add i64 %tmp28, 7
21   %incdec.ptr31 = getelementptr [256 x i32]* @in, i64 0, i64 %tmp29
22   %tmp30 = add i64 %tmp28, 6
23   %incdec.ptr26 = getelementptr [256 x i32]* @in, i64 0, i64 %tmp30
24   %tmp31 = add i64 %tmp28, 5
25   %incdec.ptr21 = getelementptr [256 x i32]* @in, i64 0, i64 %tmp31
26   %tmp33 = add i64 %tmp28, 4
27   %incdec.ptr16 = getelementptr [256 x i32]* @in, i64 0, i64 %tmp33
28   %tmp34 = add i64 %tmp28, 3
29   %incdec.ptr11 = getelementptr [256 x i32]* @in, i64 0, i64 %tmp34
30   %tmp35 = add i64 %tmp28, 2
31   %incdec.ptr6 = getelementptr [256 x i32]* @in, i64 0, i64 %tmp35
32   %tmp36 = add i64 %tmp28, 1
33   %incdec.ptr = getelementptr [256 x i32]* @in, i64 0, i64 %tmp36
34   %pin.0 = getelementptr [256 x i32]* @in, i64 0, i64 %tmp28
35   %i.0 = trunc i64 %indvar25 to i32
36   %incdec.ptr34 = getelementptr [256 x i32]* @out, i64 0, i64 %tmp29
37   %incdec.ptr29 = getelementptr [256 x i32]* @out, i64 0, i64 %tmp30
38   %incdec.ptr24 = getelementptr [256 x i32]* @out, i64 0, i64 %tmp31
39   %incdec.ptr19 = getelementptr [256 x i32]* @out, i64 0, i64 %tmp33
40   %incdec.ptr14 = getelementptr [256 x i32]* @out, i64 0, i64 %tmp34
41   %incdec.ptr9 = getelementptr [256 x i32]* @out, i64 0, i64 %tmp35
42   %incdec.ptr4 = getelementptr [256 x i32]* @out, i64 0, i64 %tmp36
43   %pout.0 = getelementptr [256 x i32]* @out, i64 0, i64 %tmp28
44   %cmp = icmp slt i32 %i.0, 32
45   br i1 %cmp, label %for.body, label %for.end
47 for.body:                                         ; preds = %for.cond
48   %tmp2 = load i32* %pin.0, align 4
49   store i32 %tmp2, i32* %pout.0, align 4
50   %tmp7 = load i32* %incdec.ptr, align 4
51   store i32 %tmp7, i32* %incdec.ptr4, align 4
52   %tmp12 = load i32* %incdec.ptr6, align 4
53   store i32 %tmp12, i32* %incdec.ptr9, align 4
54   %tmp17 = load i32* %incdec.ptr11, align 4
55   store i32 %tmp17, i32* %incdec.ptr14, align 4
56   %tmp22 = load i32* %incdec.ptr16, align 4
57   store i32 %tmp22, i32* %incdec.ptr19, align 4
58   %tmp27 = load i32* %incdec.ptr21, align 4
59   store i32 %tmp27, i32* %incdec.ptr24, align 4
60   %tmp32 = load i32* %incdec.ptr26, align 4
61   store i32 %tmp32, i32* %incdec.ptr29, align 4
62   %tmp37 = load i32* %incdec.ptr31, align 4
63   store i32 %tmp37, i32* %incdec.ptr34, align 4
64   %cmp41 = icmp eq i32 %dummy, 32
65   br i1 %cmp41, label %if.then, label %if.end
67 if.then:                                          ; preds = %for.body
68   call void @abort() noreturn nounwind
69   unreachable
71 if.end:                                           ; preds = %for.body
72   br label %for.inc
74 for.inc:                                          ; preds = %if.end
75   %indvar.next26 = add i64 %indvar25, 1
76   br label %for.cond
78 for.end:                                          ; preds = %for.cond
79   br label %for.cond43
81 for.cond43:                                       ; preds = %for.inc153, %for.end
82   %indvar = phi i64 [ %indvar.next, %for.inc153 ], [ 0, %for.end ]
83   %tmp = mul i64 %indvar, 8
84   %tmp15 = add i64 %tmp, 7
85   %arrayidx148 = getelementptr [256 x i32]* @in, i64 0, i64 %tmp15
86   %arrayidx142 = getelementptr [256 x i32]* @out, i64 0, i64 %tmp15
87   %tmp16 = add i64 %tmp, 6
88   %arrayidx134 = getelementptr [256 x i32]* @in, i64 0, i64 %tmp16
89   %arrayidx128 = getelementptr [256 x i32]* @out, i64 0, i64 %tmp16
90   %tmp18 = add i64 %tmp, 5
91   %arrayidx120 = getelementptr [256 x i32]* @in, i64 0, i64 %tmp18
92   %arrayidx114 = getelementptr [256 x i32]* @out, i64 0, i64 %tmp18
93   %tmp19 = add i64 %tmp, 4
94   %arrayidx106 = getelementptr [256 x i32]* @in, i64 0, i64 %tmp19
95   %arrayidx100 = getelementptr [256 x i32]* @out, i64 0, i64 %tmp19
96   %tmp20 = add i64 %tmp, 3
97   %arrayidx92 = getelementptr [256 x i32]* @in, i64 0, i64 %tmp20
98   %arrayidx86 = getelementptr [256 x i32]* @out, i64 0, i64 %tmp20
99   %tmp21 = add i64 %tmp, 2
100   %arrayidx78 = getelementptr [256 x i32]* @in, i64 0, i64 %tmp21
101   %arrayidx72 = getelementptr [256 x i32]* @out, i64 0, i64 %tmp21
102   %tmp23 = add i64 %tmp, 1
103   %arrayidx64 = getelementptr [256 x i32]* @in, i64 0, i64 %tmp23
104   %arrayidx58 = getelementptr [256 x i32]* @out, i64 0, i64 %tmp23
105   %arrayidx52 = getelementptr [256 x i32]* @in, i64 0, i64 %tmp
106   %arrayidx = getelementptr [256 x i32]* @out, i64 0, i64 %tmp
107   %i.1 = trunc i64 %indvar to i32
108   %cmp45 = icmp slt i32 %i.1, 32
109   br i1 %cmp45, label %for.body46, label %for.end156
111 for.body46:                                       ; preds = %for.cond43
112   %tmp48 = load i32* %arrayidx, align 16
113   %tmp53 = load i32* %arrayidx52, align 16
114   %cmp54 = icmp eq i32 %tmp48, %tmp53
115   br i1 %cmp54, label %lor.lhs.false, label %if.then151
117 lor.lhs.false:                                    ; preds = %for.body46
118   %tmp59 = load i32* %arrayidx58, align 4
119   %tmp65 = load i32* %arrayidx64, align 4
120   %cmp66 = icmp eq i32 %tmp59, %tmp65
121   br i1 %cmp66, label %lor.lhs.false67, label %if.then151
123 lor.lhs.false67:                                  ; preds = %lor.lhs.false
124   %tmp73 = load i32* %arrayidx72, align 8
125   %tmp79 = load i32* %arrayidx78, align 8
126   %cmp80 = icmp eq i32 %tmp73, %tmp79
127   br i1 %cmp80, label %lor.lhs.false81, label %if.then151
129 lor.lhs.false81:                                  ; preds = %lor.lhs.false67
130   %tmp87 = load i32* %arrayidx86, align 4
131   %tmp93 = load i32* %arrayidx92, align 4
132   %cmp94 = icmp eq i32 %tmp87, %tmp93
133   br i1 %cmp94, label %lor.lhs.false95, label %if.then151
135 lor.lhs.false95:                                  ; preds = %lor.lhs.false81
136   %tmp101 = load i32* %arrayidx100, align 16
137   %tmp107 = load i32* %arrayidx106, align 16
138   %cmp108 = icmp eq i32 %tmp101, %tmp107
139   br i1 %cmp108, label %lor.lhs.false109, label %if.then151
141 lor.lhs.false109:                                 ; preds = %lor.lhs.false95
142   %tmp115 = load i32* %arrayidx114, align 4
143   %tmp121 = load i32* %arrayidx120, align 4
144   %cmp122 = icmp eq i32 %tmp115, %tmp121
145   br i1 %cmp122, label %lor.lhs.false123, label %if.then151
147 lor.lhs.false123:                                 ; preds = %lor.lhs.false109
148   %tmp129 = load i32* %arrayidx128, align 8
149   %tmp135 = load i32* %arrayidx134, align 8
150   %cmp136 = icmp eq i32 %tmp129, %tmp135
151   br i1 %cmp136, label %lor.lhs.false137, label %if.then151
153 lor.lhs.false137:                                 ; preds = %lor.lhs.false123
154   %tmp143 = load i32* %arrayidx142, align 4
155   %tmp149 = load i32* %arrayidx148, align 4
156   %cmp150 = icmp eq i32 %tmp143, %tmp149
157   br i1 %cmp150, label %if.end152, label %if.then151
159 if.then151:                                       ; preds = %lor.lhs.false137, %lor.lhs.false123, %lor.lhs.false109, %lor.lhs.false95, %lor.lhs.false81, %lor.lhs.false67, %lor.lhs.false, %for.body46
160   call void @abort() noreturn nounwind
161   unreachable
163 if.end152:                                        ; preds = %lor.lhs.false137
164   br label %for.inc153
166 for.inc153:                                       ; preds = %if.end152
167   %indvar.next = add i64 %indvar, 1
168   br label %for.cond43
170 for.end156:                                       ; preds = %for.cond43
171   ret i32 0
174 declare void @abort() noreturn
176 define i32 @main() nounwind uwtable {
177 entry:
178   call void @check_vect()
179   %call = call i32 @main1(i32 33)
180   ret i32 0
183 define internal void @check_vect() nounwind uwtable noinline {
184 entry:
185   %a = alloca i32, align 4
186   %b = alloca i32, align 4
187   %c = alloca i32, align 4
188   %d = alloca i32, align 4
189   %call = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* @sig_ill_handler) nounwind
190   %call1 = call i32 @__get_cpuid(i32 1, i32* %a, i32* %b, i32* %c, i32* %d)
191   %tobool = icmp eq i32 %call1, 0
192   br i1 %tobool, label %if.then, label %lor.lhs.false
194 lor.lhs.false:                                    ; preds = %entry
195   %tmp4 = load i32* %d, align 4
196   %and6 = and i32 %tmp4, 67108864
197   %cmp = icmp eq i32 %and6, 0
198   br i1 %cmp, label %if.then, label %if.end
200 if.then:                                          ; preds = %entry, %lor.lhs.false
201   call void @exit(i32 0) noreturn nounwind
202   unreachable
204 if.end:                                           ; preds = %lor.lhs.false
205   %call7 = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* null) nounwind
206   ret void
209 declare void (i32)* @signal(i32, void (i32)*) nounwind
211 define internal void @sig_ill_handler(i32 %sig) nounwind uwtable {
212 entry:
213   call void @exit(i32 0) noreturn nounwind
214   unreachable
216 return:                                           ; No predecessors!
217   ret void
220 define internal i32 @__get_cpuid(i32 %__level, i32* %__eax, i32* %__ebx, i32* %__ecx, i32* %__edx) nounwind uwtable inlinehint {
221 entry:
222   %and = and i32 %__level, -2147483648
223   %call = call i32 @__get_cpuid_max(i32 %and, i32* null)
224   %cmp = icmp ult i32 %call, %__level
225   br i1 %cmp, label %if.then, label %if.end
227 if.then:                                          ; preds = %entry
228   br label %return
230 if.end:                                           ; preds = %entry
231   %tmp = call { i32, i32, i32, i32 } asm "cpuid\0A\09", "={ax},={bx},={cx},={dx},0,~{dirflag},~{fpsr},~{flags}"(i32 %__level) nounwind, !srcloc !0
232   %asmresult = extractvalue { i32, i32, i32, i32 } %tmp, 0
233   %asmresult8 = extractvalue { i32, i32, i32, i32 } %tmp, 1
234   %asmresult9 = extractvalue { i32, i32, i32, i32 } %tmp, 2
235   %asmresult10 = extractvalue { i32, i32, i32, i32 } %tmp, 3
236   store i32 %asmresult, i32* %__eax, align 4
237   store i32 %asmresult8, i32* %__ebx, align 4
238   store i32 %asmresult9, i32* %__ecx, align 4
239   store i32 %asmresult10, i32* %__edx, align 4
240   br label %return
242 return:                                           ; preds = %if.end, %if.then
243   %retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.end ]
244   ret i32 %retval.0
247 declare void @exit(i32) noreturn
249 define internal i32 @__get_cpuid_max(i32 %__ext, i32* %__sig) nounwind uwtable inlinehint {
250 entry:
251   %tmp = call { i32, i32, i32, i32 } asm "cpuid\0A\09", "={ax},={bx},={cx},={dx},0,~{dirflag},~{fpsr},~{flags}"(i32 %__ext) nounwind, !srcloc !1
252   %asmresult = extractvalue { i32, i32, i32, i32 } %tmp, 0
253   %tobool = icmp eq i32* %__sig, null
254   br i1 %tobool, label %if.end, label %if.then
256 if.then:                                          ; preds = %entry
257   %asmresult1 = extractvalue { i32, i32, i32, i32 } %tmp, 1
258   store i32 %asmresult1, i32* %__sig, align 4
259   br label %if.end
261 if.end:                                           ; preds = %entry, %if.then
262   ret i32 %asmresult
265 !0 = metadata !{i32 -2147342396, i32 -2147342388} 
266 !1 = metadata !{i32 -2147342519, i32 -2147342511} 
267 ; CHECK: define