Add compile command to each testcase
[gcc-vect-testsuite.git] / O3-pr41881.ll
blob0d8b878b89373b28759fdf29a6bb8616c6e0b886
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 O3-pr41881.c
4 ; opt -correlated-propagation -mem2reg -instcombine -loop-simplify -indvars -instnamer O3-pr41881.s > O3-pr41881.ll
6 ; ModuleID = 'O3-pr41881.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 define i32 @fun1(i32* %x, i32* %y, i32 %n) nounwind uwtable {
11 entry:
12   %tmp = zext i32 %n to i64
13   br label %for.cond
15 for.cond:                                         ; preds = %for.inc, %entry
16   %indvar = phi i64 [ %indvar.next, %for.inc ], [ 0, %entry ]
17   %dot.0 = phi i32 [ 0, %entry ], [ %add, %for.inc ]
18   %y.addr.0 = getelementptr i32* %y, i64 %indvar
19   %x.addr.0 = getelementptr i32* %x, i64 %indvar
20   %exitcond = icmp ne i64 %indvar, %tmp
21   br i1 %exitcond, label %for.body, label %for.end
23 for.body:                                         ; preds = %for.cond
24   br label %for.inc
26 for.inc:                                          ; preds = %for.body
27   %tmp6 = load i32* %y.addr.0, align 4
28   %tmp3 = load i32* %x.addr.0, align 4
29   %mul = mul nsw i32 %tmp3, %tmp6
30   %add = add nsw i32 %dot.0, %mul
31   %indvar.next = add i64 %indvar, 1
32   br label %for.cond
34 for.end:                                          ; preds = %for.cond
35   %dot.0.lcssa = phi i32 [ %dot.0, %for.cond ]
36   ret i32 %dot.0.lcssa
39 define i32 @fun2(i32* %x, i32* %y, i32 %n) nounwind uwtable {
40 entry:
41   br label %for.cond
43 for.cond:                                         ; preds = %for.inc13, %entry
44   %indvar2 = phi i64 [ %indvar.next3, %for.inc13 ], [ 0, %entry ]
45   %dot.0 = phi i32 [ 0, %entry ], [ %dot.1.lcssa, %for.inc13 ]
46   %tmp8 = mul i64 %indvar2, 8
47   %i.0 = trunc i64 %indvar2 to i32
48   %div = lshr i32 %n, 3
49   %cmp = icmp ult i32 %i.0, %div
50   br i1 %cmp, label %for.body, label %for.end16
52 for.body:                                         ; preds = %for.cond
53   br label %for.cond2
55 for.cond2:                                        ; preds = %for.inc, %for.body
56   %indvar = phi i64 [ %indvar.next, %for.inc ], [ 0, %for.body ]
57   %dot.1 = phi i32 [ %dot.0, %for.body ], [ %add, %for.inc ]
58   %tmp9 = add i64 %tmp8, %indvar
59   %x.addr.1 = getelementptr i32* %x, i64 %tmp9
60   %y.addr.1 = getelementptr i32* %y, i64 %tmp9
61   %exitcond = icmp ne i64 %indvar, 8
62   br i1 %exitcond, label %for.body5, label %for.end
64 for.body5:                                        ; preds = %for.cond2
65   br label %for.inc
67 for.inc:                                          ; preds = %for.body5
68   %tmp10 = load i32* %y.addr.1, align 4
69   %tmp7 = load i32* %x.addr.1, align 4
70   %mul = mul nsw i32 %tmp7, %tmp10
71   %add = add nsw i32 %dot.1, %mul
72   %indvar.next = add i64 %indvar, 1
73   br label %for.cond2
75 for.end:                                          ; preds = %for.cond2
76   %dot.1.lcssa = phi i32 [ %dot.1, %for.cond2 ]
77   br label %for.inc13
79 for.inc13:                                        ; preds = %for.end
80   %indvar.next3 = add i64 %indvar2, 1
81   br label %for.cond
83 for.end16:                                        ; preds = %for.cond
84   %dot.0.lcssa = phi i32 [ %dot.0, %for.cond ]
85   ret i32 %dot.0.lcssa
87 ; CHECK: define