Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / X86 / 2011-12-08-AVXISelBugs.ll
blob6027b10db9981aec26ee3a4c4609c204388d4d57
1 ; RUN: llc < %s -mtriple=x86_64-- -mcpu=corei7-avx -mattr=+avx
2 ; Various missing patterns causing crashes.
3 ; rdar://10538793
5 define void @t1() nounwind {
6 entry:
7   br label %loop.cond
9 loop.cond:                                        ; preds = %t1.exit, %entry
10   br i1 false, label %return, label %loop
12 loop:                                             ; preds = %loop.cond
13   br i1 undef, label %0, label %t1.exit
15 ; <label>:0                                       ; preds = %loop
16   %1 = load <16 x i32>, ptr addrspace(1) undef, align 64
17   %2 = shufflevector <16 x i32> <i32 0, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>, <16 x i32> %1, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 16, i32 0, i32 0>
18   store <16 x i32> %2, ptr addrspace(1) undef, align 64
19   br label %t1.exit
21 t1.exit:                                 ; preds = %0, %loop
22   br label %loop.cond
24 return:                                           ; preds = %loop.cond
25   ret void
28 define void @t2() nounwind {
29   br i1 undef, label %1, label %4
31 ; <label>:1                                       ; preds = %0
32   %2 = load <16 x i32>, ptr addrspace(1) undef, align 64
33   %3 = shufflevector <16 x i32> <i32 0, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>, <16 x i32> %2, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 20, i32 0, i32 0, i32 0, i32 0>
34   store <16 x i32> %3, ptr addrspace(1) undef, align 64
35   br label %4
37 ; <label>:4                                       ; preds = %1, %0
38   ret void
41 define void @t3() nounwind {
42 entry:
43   br label %loop.cond
45 loop.cond:                                        ; preds = %t2.exit, %entry
46   br i1 false, label %return, label %loop
48 loop:                                             ; preds = %loop.cond
49   br i1 undef, label %0, label %t2.exit
51 ; <label>:0                                       ; preds = %loop
52   %1 = shufflevector <16 x i32> <i32 0, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>, <16 x i32> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 25, i32 0>
53   %2 = load <16 x i32>, ptr addrspace(1) undef, align 64
54   %3 = shufflevector <16 x i32> <i32 0, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>, <16 x i32> %2, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 28, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
55   store <16 x i32> %3, ptr addrspace(1) undef, align 64
56   br label %t2.exit
58 t2.exit:                                 ; preds = %0, %loop
59   br label %loop.cond
61 return:                                           ; preds = %loop.cond
62   ret void
65 define <3 x i64> @t4() nounwind {
66 entry:
67   %0 = load <2 x i64>, ptr addrspace(1) undef, align 16
68   %1 = extractelement <2 x i64> %0, i32 0
69   %2 = insertelement <3 x i64> <i64 undef, i64 0, i64 0>, i64 %1, i32 0
70   ret <3 x i64> %2
73 define void @t5() nounwind {
74 entry:
75   %0 = shufflevector <2 x i64> zeroinitializer, <2 x i64> undef, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
76   %1 = shufflevector <8 x i64> <i64 0, i64 0, i64 0, i64 undef, i64 undef, i64 0, i64 0, i64 0>, <8 x i64> %0, <8 x i32> <i32 0, i32 1, i32 2, i32 9, i32 8, i32 5, i32 6, i32 7>
77   store <8 x i64> %1, ptr addrspace(1) undef, align 64
79   ret void