You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
3.8 KiB
81 lines
3.8 KiB
; RUN: llc < %s -mtriple=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>, <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>, <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>, <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>, <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
|
|
}
|