Add compile command to each testcase
[gcc-vect-testsuite.git] / bb-slp-6.ll
blobe41340f5858a6179456b88d45af1e4c19149c4df
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-6.c
4 ; opt -correlated-propagation -mem2reg -instcombine -loop-simplify -indvars -instnamer bb-slp-6.s > bb-slp-6.ll
6 ; ModuleID = 'bb-slp-6.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 [16 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], align 16
11 @out = common global [16 x i32] zeroinitializer, align 16
13 define i32 @main1(i32 %x, i32 %y) nounwind uwtable noinline {
14 entry:
15   %tmp1 = load i32* getelementptr inbounds ([16 x i32]* @in, i64 0, i64 0), align 16
16   %add = add i32 %tmp1, 23
17   %tmp4 = load i32* getelementptr inbounds ([16 x i32]* @in, i64 0, i64 1), align 4
18   %add5 = add i32 %tmp4, 142
19   %tmp8 = load i32* getelementptr inbounds ([16 x i32]* @in, i64 0, i64 2), align 8
20   %add9 = add i32 %tmp8, 2
21   %tmp12 = load i32* getelementptr inbounds ([16 x i32]* @in, i64 0, i64 3), align 4
22   %add13 = add i32 %tmp12, 31
23   %mul = mul i32 %add, %x
24   store i32 %mul, i32* getelementptr inbounds ([16 x i32]* @out, i64 0, i64 0), align 16
25   %mul20 = mul i32 %add5, %y
26   store i32 %mul20, i32* getelementptr inbounds ([16 x i32]* @out, i64 0, i64 1), align 4
27   %mul25 = mul i32 %add9, %x
28   store i32 %mul25, i32* getelementptr inbounds ([16 x i32]* @out, i64 0, i64 2), align 8
29   %mul30 = mul i32 %add13, %y
30   store i32 %mul30, i32* getelementptr inbounds ([16 x i32]* @out, i64 0, i64 3), align 4
31   %tmp33 = load i32* getelementptr inbounds ([16 x i32]* @out, i64 0, i64 0), align 16
32   %tmp34 = load i32* getelementptr inbounds ([16 x i32]* @in, i64 0, i64 0), align 16
33   %add35 = add i32 %tmp34, 23
34   %mul37 = mul i32 %add35, %x
35   %cmp = icmp eq i32 %tmp33, %mul37
36   br i1 %cmp, label %lor.lhs.false, label %if.then
38 lor.lhs.false:                                    ; preds = %entry
39   %tmp38 = load i32* getelementptr inbounds ([16 x i32]* @out, i64 0, i64 1), align 4
40   %tmp39 = load i32* getelementptr inbounds ([16 x i32]* @in, i64 0, i64 1), align 4
41   %add40 = add i32 %tmp39, 142
42   %mul42 = mul i32 %add40, %y
43   %cmp43 = icmp eq i32 %tmp38, %mul42
44   br i1 %cmp43, label %lor.lhs.false44, label %if.then
46 lor.lhs.false44:                                  ; preds = %lor.lhs.false
47   %tmp45 = load i32* getelementptr inbounds ([16 x i32]* @out, i64 0, i64 2), align 8
48   %tmp46 = load i32* getelementptr inbounds ([16 x i32]* @in, i64 0, i64 2), align 8
49   %add47 = add i32 %tmp46, 2
50   %mul49 = mul i32 %add47, %x
51   %cmp50 = icmp eq i32 %tmp45, %mul49
52   br i1 %cmp50, label %lor.lhs.false51, label %if.then
54 lor.lhs.false51:                                  ; preds = %lor.lhs.false44
55   %tmp52 = load i32* getelementptr inbounds ([16 x i32]* @out, i64 0, i64 3), align 4
56   %tmp53 = load i32* getelementptr inbounds ([16 x i32]* @in, i64 0, i64 3), align 4
57   %add54 = add i32 %tmp53, 31
58   %mul56 = mul i32 %add54, %y
59   %cmp57 = icmp eq i32 %tmp52, %mul56
60   br i1 %cmp57, label %if.end, label %if.then
62 if.then:                                          ; preds = %lor.lhs.false51, %lor.lhs.false44, %lor.lhs.false, %entry
63   call void @abort() noreturn nounwind
64   unreachable
66 if.end:                                           ; preds = %lor.lhs.false51
67   ret i32 0
70 declare void @abort() noreturn
72 define i32 @main() nounwind uwtable {
73 entry:
74   call void @check_vect()
75   %call = call i32 @main1(i32 2, i32 3)
76   ret i32 0
79 define internal void @check_vect() nounwind uwtable noinline {
80 entry:
81   %a = alloca i32, align 4
82   %b = alloca i32, align 4
83   %c = alloca i32, align 4
84   %d = alloca i32, align 4
85   %call = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* @sig_ill_handler) nounwind
86   %call1 = call i32 @__get_cpuid(i32 1, i32* %a, i32* %b, i32* %c, i32* %d)
87   %tobool = icmp eq i32 %call1, 0
88   br i1 %tobool, label %if.then, label %lor.lhs.false
90 lor.lhs.false:                                    ; preds = %entry
91   %tmp4 = load i32* %d, align 4
92   %and6 = and i32 %tmp4, 67108864
93   %cmp = icmp eq i32 %and6, 0
94   br i1 %cmp, label %if.then, label %if.end
96 if.then:                                          ; preds = %entry, %lor.lhs.false
97   call void @exit(i32 0) noreturn nounwind
98   unreachable
100 if.end:                                           ; preds = %lor.lhs.false
101   %call7 = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* null) nounwind
102   ret void
105 declare void (i32)* @signal(i32, void (i32)*) nounwind
107 define internal void @sig_ill_handler(i32 %sig) nounwind uwtable {
108 entry:
109   call void @exit(i32 0) noreturn nounwind
110   unreachable
112 return:                                           ; No predecessors!
113   ret void
116 define internal i32 @__get_cpuid(i32 %__level, i32* %__eax, i32* %__ebx, i32* %__ecx, i32* %__edx) nounwind uwtable inlinehint {
117 entry:
118   %and = and i32 %__level, -2147483648
119   %call = call i32 @__get_cpuid_max(i32 %and, i32* null)
120   %cmp = icmp ult i32 %call, %__level
121   br i1 %cmp, label %if.then, label %if.end
123 if.then:                                          ; preds = %entry
124   br label %return
126 if.end:                                           ; preds = %entry
127   %tmp = call { i32, i32, i32, i32 } asm "cpuid\0A\09", "={ax},={bx},={cx},={dx},0,~{dirflag},~{fpsr},~{flags}"(i32 %__level) nounwind, !srcloc !0
128   %asmresult = extractvalue { i32, i32, i32, i32 } %tmp, 0
129   %asmresult8 = extractvalue { i32, i32, i32, i32 } %tmp, 1
130   %asmresult9 = extractvalue { i32, i32, i32, i32 } %tmp, 2
131   %asmresult10 = extractvalue { i32, i32, i32, i32 } %tmp, 3
132   store i32 %asmresult, i32* %__eax, align 4
133   store i32 %asmresult8, i32* %__ebx, align 4
134   store i32 %asmresult9, i32* %__ecx, align 4
135   store i32 %asmresult10, i32* %__edx, align 4
136   br label %return
138 return:                                           ; preds = %if.end, %if.then
139   %retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.end ]
140   ret i32 %retval.0
143 declare void @exit(i32) noreturn
145 define internal i32 @__get_cpuid_max(i32 %__ext, i32* %__sig) nounwind uwtable inlinehint {
146 entry:
147   %tmp = call { i32, i32, i32, i32 } asm "cpuid\0A\09", "={ax},={bx},={cx},={dx},0,~{dirflag},~{fpsr},~{flags}"(i32 %__ext) nounwind, !srcloc !1
148   %asmresult = extractvalue { i32, i32, i32, i32 } %tmp, 0
149   %tobool = icmp eq i32* %__sig, null
150   br i1 %tobool, label %if.end, label %if.then
152 if.then:                                          ; preds = %entry
153   %asmresult1 = extractvalue { i32, i32, i32, i32 } %tmp, 1
154   store i32 %asmresult1, i32* %__sig, align 4
155   br label %if.end
157 if.end:                                           ; preds = %entry, %if.then
158   ret i32 %asmresult
161 !0 = metadata !{i32 -2147343367, i32 -2147343359} 
162 !1 = metadata !{i32 -2147343490, i32 -2147343482} 
163 ; CHECK: define