mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-29 23:12:55 +01:00
b37883fe87
The failure that I see in the current version is: LLVM ERROR: Cannot select: 0x18b8f70: v4i64 = X86ISD::VZEXT_MOVL 0x18beee0 [ID=14] 0x18beee0: v4i64 = insert_subvector 0x18b8c70, 0x18b9170, 0x18b9570 [ID=13] 0x18b8c70: v4i64 = insert_subvector 0x18b9870, 0x18bf4e0, 0x18b9970 [ID=12] 0x18b9870: v4i64 = undef [ID=4] 0x18bf4e0: v2i64 = bitcast 0x18bf3e0 [ID=10] 0x18bf3e0: v4i32 = BUILD_VECTOR 0x18b9770, 0x18b9770, 0x18b9770, 0x18b9770 [ID=8] 0x18b9770: i32 = TargetConstant<0> [ID=6] 0x18b9770: i32 = TargetConstant<0> [ID=6] 0x18b9770: i32 = TargetConstant<0> [ID=6] 0x18b9770: i32 = TargetConstant<0> [ID=6] 0x18b9970: i32 = Constant<0> [ID=3] 0x18b9170: v2i64 = undef [ORD=1] [ID=1] 0x18b9570: i32 = Constant<2> [ID=5] llvm-svn: 146975
81 lines
3.8 KiB
LLVM
81 lines
3.8 KiB
LLVM
; RUN: llc < %s -march=x86-64 -mcpu=corei7-avx -mattr=+avx
|
|
; Various missing patterns causing crashes.
|
|
; rdar://10538793
|
|
|
|
define void @t1() nounwind {
|
|
entry:
|
|
br label %loop.cond
|
|
|
|
loop.cond: ; preds = %t1.exit, %entry
|
|
br i1 false, label %return, label %loop
|
|
|
|
loop: ; preds = %loop.cond
|
|
br i1 undef, label %0, label %t1.exit
|
|
|
|
; <label>:0 ; preds = %loop
|
|
%1 = load <16 x i32> addrspace(1)* undef, align 64
|
|
%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>
|
|
store <16 x i32> %2, <16 x i32> addrspace(1)* undef, align 64
|
|
br label %t1.exit
|
|
|
|
t1.exit: ; preds = %0, %loop
|
|
br label %loop.cond
|
|
|
|
return: ; preds = %loop.cond
|
|
ret void
|
|
}
|
|
|
|
define void @t2() nounwind {
|
|
br i1 undef, label %1, label %4
|
|
|
|
; <label>:1 ; preds = %0
|
|
%2 = load <16 x i32> addrspace(1)* undef, align 64
|
|
%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>
|
|
store <16 x i32> %3, <16 x i32> addrspace(1)* undef, align 64
|
|
br label %4
|
|
|
|
; <label>:4 ; preds = %1, %0
|
|
ret void
|
|
}
|
|
|
|
define void @t3() nounwind {
|
|
entry:
|
|
br label %loop.cond
|
|
|
|
loop.cond: ; preds = %t2.exit, %entry
|
|
br i1 false, label %return, label %loop
|
|
|
|
loop: ; preds = %loop.cond
|
|
br i1 undef, label %0, label %t2.exit
|
|
|
|
; <label>:0 ; preds = %loop
|
|
%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>
|
|
%2 = load <16 x i32> addrspace(1)* undef, align 64
|
|
%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>
|
|
store <16 x i32> %3, <16 x i32> addrspace(1)* undef, align 64
|
|
br label %t2.exit
|
|
|
|
t2.exit: ; preds = %0, %loop
|
|
br label %loop.cond
|
|
|
|
return: ; preds = %loop.cond
|
|
ret void
|
|
}
|
|
|
|
define <3 x i64> @t4() nounwind {
|
|
entry:
|
|
%0 = load <2 x i64> addrspace(1)* undef, align 16
|
|
%1 = extractelement <2 x i64> %0, i32 0
|
|
%2 = insertelement <3 x i64> <i64 undef, i64 0, i64 0>, i64 %1, i32 0
|
|
ret <3 x i64> %2
|
|
}
|
|
|
|
define void @t5() nounwind {
|
|
entry:
|
|
%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>
|
|
%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>
|
|
store <8 x i64> %1, <8 x i64> addrspace(1)* undef, align 64
|
|
|
|
ret void
|
|
}
|