Add compile command to each testcase
[gcc-vect-testsuite.git] / slp-12b.ll
blob4a3a24613859c4cb78f9eb529b99f386abe94b43
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-12b.c
4 ; opt -correlated-propagation -mem2reg -instcombine -loop-simplify -indvars -instnamer slp-12b.s > slp-12b.ll
6 ; ModuleID = 'slp-12b.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 [512 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 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0], align 16
12 define i32 @main1() nounwind uwtable {
13 entry:
14   %out2 = alloca [512 x float], align 16
15   %fa = alloca [256 x float], align 16
16   br label %for.cond
18 for.cond:                                         ; preds = %for.inc, %entry
19   %indvar9 = phi i64 [ %indvar.next10, %for.inc ], [ 0, %entry ]
20   %tmp11 = mul i64 %indvar9, 2
21   %tmp12 = add i64 %tmp11, 1
22   %arrayidx12 = getelementptr [512 x i32]* @in, i64 0, i64 %tmp12
23   %arrayidx21 = getelementptr [512 x float]* %out2, i64 0, i64 %tmp12
24   %arrayidx7 = getelementptr [512 x float]* %out2, i64 0, i64 %tmp11
25   %arrayidx = getelementptr [512 x i32]* @in, i64 0, i64 %tmp11
26   %arrayidx31 = getelementptr [256 x float]* %fa, i64 0, i64 %indvar9
27   %exitcond = icmp ne i64 %indvar9, 64
28   br i1 %exitcond, label %for.body, label %for.end
30 for.body:                                         ; preds = %for.cond
31   %tmp2 = load i32* %arrayidx, align 8
32   %mul3 = shl i32 %tmp2, 1
33   %add = add i32 %mul3, 11
34   %conv = uitofp i32 %add to float
35   store float %conv, float* %arrayidx7, align 8
36   %tmp13 = load i32* %arrayidx12, align 4
37   %mul14 = mul i32 %tmp13, 3
38   %add15 = add i32 %mul14, 7
39   %conv16 = uitofp i32 %add15 to float
40   store float %conv16, float* %arrayidx21, align 4
41   %tmp27 = load i32* %arrayidx12, align 4
42   %conv28 = uitofp i32 %tmp27 to float
43   store float %conv28, float* %arrayidx31, align 4
44   br label %for.inc
46 for.inc:                                          ; preds = %for.body
47   %indvar.next10 = add i64 %indvar9, 1
48   br label %for.cond
50 for.end:                                          ; preds = %for.cond
51   br label %for.cond33
53 for.cond33:                                       ; preds = %for.inc84, %for.end
54   %indvar = phi i64 [ %indvar.next, %for.inc84 ], [ 0, %for.end ]
55   %tmp = mul i64 %indvar, 2
56   %tmp7 = add i64 %tmp, 1
57   %arrayidx63 = getelementptr [512 x i32]* @in, i64 0, i64 %tmp7
58   %arrayidx57 = getelementptr [512 x float]* %out2, i64 0, i64 %tmp7
59   %arrayidx46 = getelementptr [512 x i32]* @in, i64 0, i64 %tmp
60   %arrayidx41 = getelementptr [512 x float]* %out2, i64 0, i64 %tmp
61   %arrayidx73 = getelementptr [256 x float]* %fa, i64 0, i64 %indvar
62   %i.1 = trunc i64 %indvar to i32
63   %cmp35 = icmp slt i32 %i.1, 64
64   br i1 %cmp35, label %for.body37, label %for.end87
66 for.body37:                                       ; preds = %for.cond33
67   %tmp42 = load float* %arrayidx41, align 8
68   %tmp47 = load i32* %arrayidx46, align 8
69   %mul48 = shl i32 %tmp47, 1
70   %add49 = add i32 %mul48, 11
71   %conv50 = uitofp i32 %add49 to float
72   %cmp51 = fcmp une float %tmp42, %conv50
73   br i1 %cmp51, label %if.then, label %lor.lhs.false
75 lor.lhs.false:                                    ; preds = %for.body37
76   %tmp58 = load float* %arrayidx57, align 4
77   %tmp64 = load i32* %arrayidx63, align 4
78   %mul65 = mul i32 %tmp64, 3
79   %add66 = add i32 %mul65, 7
80   %conv67 = uitofp i32 %add66 to float
81   %cmp68 = fcmp une float %tmp58, %conv67
82   br i1 %cmp68, label %if.then, label %lor.lhs.false70
84 lor.lhs.false70:                                  ; preds = %lor.lhs.false
85   %tmp74 = load float* %arrayidx73, align 4
86   %tmp80 = load i32* %arrayidx63, align 4
87   %conv81 = uitofp i32 %tmp80 to float
88   %cmp82 = fcmp une float %tmp74, %conv81
89   br i1 %cmp82, label %if.then, label %if.end
91 if.then:                                          ; preds = %lor.lhs.false70, %lor.lhs.false, %for.body37
92   call void @abort() noreturn nounwind
93   unreachable
95 if.end:                                           ; preds = %lor.lhs.false70
96   br label %for.inc84
98 for.inc84:                                        ; preds = %if.end
99   %indvar.next = add i64 %indvar, 1
100   br label %for.cond33
102 for.end87:                                        ; preds = %for.cond33
103   ret i32 0
106 declare void @abort() noreturn
108 define i32 @main() nounwind uwtable {
109 entry:
110   call void @check_vect()
111   %call = call i32 @main1()
112   ret i32 0
115 define internal void @check_vect() nounwind uwtable noinline {
116 entry:
117   %a = alloca i32, align 4
118   %b = alloca i32, align 4
119   %c = alloca i32, align 4
120   %d = alloca i32, align 4
121   %call = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* @sig_ill_handler) nounwind
122   %call1 = call i32 @__get_cpuid(i32 1, i32* %a, i32* %b, i32* %c, i32* %d)
123   %tobool = icmp eq i32 %call1, 0
124   br i1 %tobool, label %if.then, label %lor.lhs.false
126 lor.lhs.false:                                    ; preds = %entry
127   %tmp4 = load i32* %d, align 4
128   %and6 = and i32 %tmp4, 67108864
129   %cmp = icmp eq i32 %and6, 0
130   br i1 %cmp, label %if.then, label %if.end
132 if.then:                                          ; preds = %entry, %lor.lhs.false
133   call void @exit(i32 0) noreturn nounwind
134   unreachable
136 if.end:                                           ; preds = %lor.lhs.false
137   %call7 = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* null) nounwind
138   ret void
141 declare void (i32)* @signal(i32, void (i32)*) nounwind
143 define internal void @sig_ill_handler(i32 %sig) nounwind uwtable {
144 entry:
145   call void @exit(i32 0) noreturn nounwind
146   unreachable
148 return:                                           ; No predecessors!
149   ret void
152 define internal i32 @__get_cpuid(i32 %__level, i32* %__eax, i32* %__ebx, i32* %__ecx, i32* %__edx) nounwind uwtable inlinehint {
153 entry:
154   %and = and i32 %__level, -2147483648
155   %call = call i32 @__get_cpuid_max(i32 %and, i32* null)
156   %cmp = icmp ult i32 %call, %__level
157   br i1 %cmp, label %if.then, label %if.end
159 if.then:                                          ; preds = %entry
160   br label %return
162 if.end:                                           ; preds = %entry
163   %tmp = call { i32, i32, i32, i32 } asm "cpuid\0A\09", "={ax},={bx},={cx},={dx},0,~{dirflag},~{fpsr},~{flags}"(i32 %__level) nounwind, !srcloc !0
164   %asmresult = extractvalue { i32, i32, i32, i32 } %tmp, 0
165   %asmresult8 = extractvalue { i32, i32, i32, i32 } %tmp, 1
166   %asmresult9 = extractvalue { i32, i32, i32, i32 } %tmp, 2
167   %asmresult10 = extractvalue { i32, i32, i32, i32 } %tmp, 3
168   store i32 %asmresult, i32* %__eax, align 4
169   store i32 %asmresult8, i32* %__ebx, align 4
170   store i32 %asmresult9, i32* %__ecx, align 4
171   store i32 %asmresult10, i32* %__edx, align 4
172   br label %return
174 return:                                           ; preds = %if.end, %if.then
175   %retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.end ]
176   ret i32 %retval.0
179 declare void @exit(i32) noreturn
181 define internal i32 @__get_cpuid_max(i32 %__ext, i32* %__sig) nounwind uwtable inlinehint {
182 entry:
183   %tmp = call { i32, i32, i32, i32 } asm "cpuid\0A\09", "={ax},={bx},={cx},={dx},0,~{dirflag},~{fpsr},~{flags}"(i32 %__ext) nounwind, !srcloc !1
184   %asmresult = extractvalue { i32, i32, i32, i32 } %tmp, 0
185   %tobool = icmp eq i32* %__sig, null
186   br i1 %tobool, label %if.end, label %if.then
188 if.then:                                          ; preds = %entry
189   %asmresult1 = extractvalue { i32, i32, i32, i32 } %tmp, 1
190   store i32 %asmresult1, i32* %__sig, align 4
191   br label %if.end
193 if.end:                                           ; preds = %entry, %if.then
194   ret i32 %asmresult
197 !0 = metadata !{i32 -2147342890, i32 -2147342882} 
198 !1 = metadata !{i32 -2147343013, i32 -2147343005} 
199 ; CHECK: define