Add compile command to each testcase
[gcc-vect-testsuite.git] / vect-13.ll
blob1d3d1c0ea6c6b67e2e361302c961109725757f9c
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 vect-13.c
4 ; opt -correlated-propagation -mem2reg -instcombine -loop-simplify -indvars -instnamer vect-13.s > vect-13.ll
6 ; ModuleID = 'vect-13.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 @results = global [16 x i32] [i32 0, i32 1, i32 2, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 12, i32 13, i32 14, i32 15], align 16
11 @b = 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
12 @a = common global [16 x i32] zeroinitializer, align 16
14 define i32 @main1() nounwind uwtable noinline {
15 entry:
16   br label %for.cond
18 for.cond:                                         ; preds = %for.inc, %entry
19   %indvar1 = phi i64 [ %indvar.next2, %for.inc ], [ 0, %entry ]
20   %arrayidx10 = getelementptr [16 x i32]* @a, i64 0, i64 %indvar1
21   %arrayidx = getelementptr [16 x i32]* @b, i64 0, i64 %indvar1
22   %exitcond = icmp ne i64 %indvar1, 16
23   br i1 %exitcond, label %for.body, label %for.end
25 for.body:                                         ; preds = %for.cond
26   %tmp2 = load i32* %arrayidx, align 4
27   %cmp3 = icmp sgt i32 %tmp2, -1
28   br i1 %cmp3, label %cond.true, label %cond.false
30 cond.true:                                        ; preds = %for.body
31   %tmp7 = load i32* %arrayidx, align 4
32   br label %cond.end
34 cond.false:                                       ; preds = %for.body
35   br label %cond.end
37 cond.end:                                         ; preds = %cond.false, %cond.true
38   %cond = phi i32 [ %tmp7, %cond.true ], [ 0, %cond.false ]
39   store i32 %cond, i32* %arrayidx10, align 4
40   br label %for.inc
42 for.inc:                                          ; preds = %cond.end
43   %indvar.next2 = add i64 %indvar1, 1
44   br label %for.cond
46 for.end:                                          ; preds = %for.cond
47   br label %for.cond12
49 for.cond12:                                       ; preds = %for.inc25, %for.end
50   %indvar = phi i64 [ %indvar.next, %for.inc25 ], [ 0, %for.end ]
51   %arrayidx22 = getelementptr [16 x i32]* @results, i64 0, i64 %indvar
52   %arrayidx18 = getelementptr [16 x i32]* @a, i64 0, i64 %indvar
53   %i.1 = trunc i64 %indvar to i32
54   %cmp14 = icmp slt i32 %i.1, 16
55   br i1 %cmp14, label %for.body15, label %for.end28
57 for.body15:                                       ; preds = %for.cond12
58   %tmp19 = load i32* %arrayidx18, align 4
59   %tmp23 = load i32* %arrayidx22, align 4
60   %cmp24 = icmp eq i32 %tmp19, %tmp23
61   br i1 %cmp24, label %if.end, label %if.then
63 if.then:                                          ; preds = %for.body15
64   call void @abort() noreturn nounwind
65   unreachable
67 if.end:                                           ; preds = %for.body15
68   br label %for.inc25
70 for.inc25:                                        ; preds = %if.end
71   %indvar.next = add i64 %indvar, 1
72   br label %for.cond12
74 for.end28:                                        ; preds = %for.cond12
75   ret i32 0
78 declare void @abort() noreturn
80 define i32 @main() nounwind uwtable {
81 entry:
82   call void @check_vect()
83   %call = call i32 @main1()
84   ret i32 %call
87 define internal void @check_vect() nounwind uwtable noinline {
88 entry:
89   %a = alloca i32, align 4
90   %b = alloca i32, align 4
91   %c = alloca i32, align 4
92   %d = alloca i32, align 4
93   %call = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* @sig_ill_handler) nounwind
94   %call1 = call i32 @__get_cpuid(i32 1, i32* %a, i32* %b, i32* %c, i32* %d)
95   %tobool = icmp eq i32 %call1, 0
96   br i1 %tobool, label %if.then, label %lor.lhs.false
98 lor.lhs.false:                                    ; preds = %entry
99   %tmp4 = load i32* %d, align 4
100   %and6 = and i32 %tmp4, 67108864
101   %cmp = icmp eq i32 %and6, 0
102   br i1 %cmp, label %if.then, label %if.end
104 if.then:                                          ; preds = %entry, %lor.lhs.false
105   call void @exit(i32 0) noreturn nounwind
106   unreachable
108 if.end:                                           ; preds = %lor.lhs.false
109   %call7 = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* null) nounwind
110   ret void
113 declare void (i32)* @signal(i32, void (i32)*) nounwind
115 define internal void @sig_ill_handler(i32 %sig) nounwind uwtable {
116 entry:
117   call void @exit(i32 0) noreturn nounwind
118   unreachable
120 return:                                           ; No predecessors!
121   ret void
124 define internal i32 @__get_cpuid(i32 %__level, i32* %__eax, i32* %__ebx, i32* %__ecx, i32* %__edx) nounwind uwtable inlinehint {
125 entry:
126   %and = and i32 %__level, -2147483648
127   %call = call i32 @__get_cpuid_max(i32 %and, i32* null)
128   %cmp = icmp ult i32 %call, %__level
129   br i1 %cmp, label %if.then, label %if.end
131 if.then:                                          ; preds = %entry
132   br label %return
134 if.end:                                           ; preds = %entry
135   %tmp = call { i32, i32, i32, i32 } asm "cpuid\0A\09", "={ax},={bx},={cx},={dx},0,~{dirflag},~{fpsr},~{flags}"(i32 %__level) nounwind, !srcloc !0
136   %asmresult = extractvalue { i32, i32, i32, i32 } %tmp, 0
137   %asmresult8 = extractvalue { i32, i32, i32, i32 } %tmp, 1
138   %asmresult9 = extractvalue { i32, i32, i32, i32 } %tmp, 2
139   %asmresult10 = extractvalue { i32, i32, i32, i32 } %tmp, 3
140   store i32 %asmresult, i32* %__eax, align 4
141   store i32 %asmresult8, i32* %__ebx, align 4
142   store i32 %asmresult9, i32* %__ecx, align 4
143   store i32 %asmresult10, i32* %__edx, align 4
144   br label %return
146 return:                                           ; preds = %if.end, %if.then
147   %retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.end ]
148   ret i32 %retval.0
151 declare void @exit(i32) noreturn
153 define internal i32 @__get_cpuid_max(i32 %__ext, i32* %__sig) nounwind uwtable inlinehint {
154 entry:
155   %tmp = call { i32, i32, i32, i32 } asm "cpuid\0A\09", "={ax},={bx},={cx},={dx},0,~{dirflag},~{fpsr},~{flags}"(i32 %__ext) nounwind, !srcloc !1
156   %asmresult = extractvalue { i32, i32, i32, i32 } %tmp, 0
157   %tobool = icmp eq i32* %__sig, null
158   br i1 %tobool, label %if.end, label %if.then
160 if.then:                                          ; preds = %entry
161   %asmresult1 = extractvalue { i32, i32, i32, i32 } %tmp, 1
162   store i32 %asmresult1, i32* %__sig, align 4
163   br label %if.end
165 if.end:                                           ; preds = %entry, %if.then
166   ret i32 %asmresult
169 !0 = metadata !{i32 -2147343529, i32 -2147343521} 
170 !1 = metadata !{i32 -2147343652, i32 -2147343644} 
171 ; CHECK: define