Add compile command to each testcase
[gcc-vect-testsuite.git] / vect-10.ll
blobd6ace6af1d0e88cc5b607245651c8a361538fce5
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-10.c
4 ; opt -correlated-propagation -mem2reg -instcombine -loop-simplify -indvars -instnamer vect-10.s > vect-10.ll
6 ; ModuleID = 'vect-10.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 @foo.b = internal unnamed_addr constant [16 x i16] [i16 0, i16 3, i16 6, i16 9, i16 12, i16 15, i16 18, i16 21, i16 24, i16 27, i16 30, i16 33, i16 36, i16 39, i16 42, i16 45], align 16
11 @foo.c = internal unnamed_addr constant [16 x i16] [i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15], align 16
12 @a = common global [16 x i16] zeroinitializer, align 16
13 @d = common global [16 x i16] zeroinitializer, align 16
15 define i32 @foo() nounwind uwtable {
16 entry:
17   %b = alloca [16 x i16], align 16
18   %c = alloca [16 x i16], align 16
19   %tmp = bitcast [16 x i16]* %b to i8*
20   call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp, i8* bitcast ([16 x i16]* @foo.b to i8*), i64 32, i32 16, i1 false)
21   %tmp2 = bitcast [16 x i16]* %c to i8*
22   call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp2, i8* bitcast ([16 x i16]* @foo.c to i8*), i64 32, i32 16, i1 false)
23   br label %for.cond
25 for.cond:                                         ; preds = %for.inc, %entry
26   %indvar = phi i64 [ %indvar.next, %for.inc ], [ 0, %entry ]
27   %tmp6 = mul i64 %indvar, 2
28   %arrayidx23 = getelementptr [16 x i16]* %c, i64 0, i64 %tmp6
29   %tmp7 = add i64 %tmp6, 1
30   %arrayidx = getelementptr [16 x i16]* %b, i64 0, i64 %tmp7
31   %arrayidx10 = getelementptr [16 x i16]* %c, i64 0, i64 %tmp7
32   %arrayidx17 = getelementptr [16 x i16]* %b, i64 0, i64 %tmp6
33   %arrayidx63 = getelementptr [16 x i16]* @d, i64 0, i64 %indvar
34   %arrayidx30 = getelementptr [16 x i16]* @a, i64 0, i64 %indvar
35   %exitcond = icmp ne i64 %indvar, 8
36   br i1 %exitcond, label %for.body, label %for.end
38 for.body:                                         ; preds = %for.cond
39   %tmp5 = load i16* %arrayidx, align 2
40   %tmp11 = load i16* %arrayidx10, align 2
41   %mul13 = mul i16 %tmp5, %tmp11
42   %tmp18 = load i16* %arrayidx17, align 4
43   %tmp24 = load i16* %arrayidx23, align 4
44   %mul26 = mul i16 %tmp18, %tmp24
45   %sub = sub i16 %mul13, %mul26
46   store i16 %sub, i16* %arrayidx30, align 2
47   %tmp35 = load i16* %arrayidx17, align 4
48   %tmp42 = load i16* %arrayidx10, align 2
49   %mul44 = mul i16 %tmp35, %tmp42
50   %tmp50 = load i16* %arrayidx, align 2
51   %tmp56 = load i16* %arrayidx23, align 4
52   %mul58 = mul i16 %tmp50, %tmp56
53   %add59 = add i16 %mul44, %mul58
54   store i16 %add59, i16* %arrayidx63, align 2
55   br label %for.inc
57 for.inc:                                          ; preds = %for.body
58   %indvar.next = add i64 %indvar, 1
59   br label %for.cond
61 for.end:                                          ; preds = %for.cond
62   ret i32 0
65 declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture, i64, i32, i1) nounwind
66 ; CHECK: define