comparison test/CodeGen/X86/2011-12-08-AVXISelBugs.ll @ 0:95c75e76d11b LLVM3.4

LLVM 3.4
author Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
date Thu, 12 Dec 2013 13:56:28 +0900
parents
children afa8332a0e37
comparison
equal deleted inserted replaced
-1:000000000000 0:95c75e76d11b
1 ; RUN: llc < %s -march=x86-64 -mcpu=corei7-avx -mattr=+avx
2 ; Various missing patterns causing crashes.
3 ; rdar://10538793
4
5 define void @t1() nounwind {
6 entry:
7 br label %loop.cond
8
9 loop.cond: ; preds = %t1.exit, %entry
10 br i1 false, label %return, label %loop
11
12 loop: ; preds = %loop.cond
13 br i1 undef, label %0, label %t1.exit
14
15 ; <label>:0 ; preds = %loop
16 %1 = load <16 x i32> 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, <16 x i32> addrspace(1)* undef, align 64
19 br label %t1.exit
20
21 t1.exit: ; preds = %0, %loop
22 br label %loop.cond
23
24 return: ; preds = %loop.cond
25 ret void
26 }
27
28 define void @t2() nounwind {
29 br i1 undef, label %1, label %4
30
31 ; <label>:1 ; preds = %0
32 %2 = load <16 x i32> 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, <16 x i32> addrspace(1)* undef, align 64
35 br label %4
36
37 ; <label>:4 ; preds = %1, %0
38 ret void
39 }
40
41 define void @t3() nounwind {
42 entry:
43 br label %loop.cond
44
45 loop.cond: ; preds = %t2.exit, %entry
46 br i1 false, label %return, label %loop
47
48 loop: ; preds = %loop.cond
49 br i1 undef, label %0, label %t2.exit
50
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> 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, <16 x i32> addrspace(1)* undef, align 64
56 br label %t2.exit
57
58 t2.exit: ; preds = %0, %loop
59 br label %loop.cond
60
61 return: ; preds = %loop.cond
62 ret void
63 }
64
65 define <3 x i64> @t4() nounwind {
66 entry:
67 %0 = load <2 x i64> 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
71 }
72
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, <8 x i64> addrspace(1)* undef, align 64
78
79 ret void
80 }