mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 04:02:41 +01:00
ac5e953a20
WidenVSELECTAndMask can fold (and it folds in this case) so we get a BUILD_VECTOR of constants as mask. convertMask() seems to work fine when the input is a vector of constants, and we still need to call it to extend/add elements at the end. but the current code just asserts on anything but a SETCC or AND/OR/XOR of 2xSETCC. This change was discussed briefly with Simon Pilgrim, who also suggests we might consider dropping this assertion in the future. Fixes PR33715. llvm-svn: 307508
17 lines
679 B
LLVM
17 lines
679 B
LLVM
; Make sure we don't crash with a build vector of integer constants.
|
|
; RUN: llc %s -o /dev/null
|
|
|
|
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-unknown-linux-gnu"
|
|
|
|
define i32 @patatino() {
|
|
%tmp = insertelement <4 x i32> <i32 1, i32 1, i32 undef, i32 undef>, i32 1, i32 2
|
|
%tmp1 = insertelement <4 x i32> %tmp, i32 1, i32 3
|
|
%tmp2 = icmp ne <4 x i32> %tmp1, zeroinitializer
|
|
%tmp3 = icmp slt <4 x i32> %tmp1, <i32 4, i32 4, i32 4, i32 4>
|
|
%tmp4 = or <4 x i1> %tmp2, %tmp3
|
|
%tmp5 = select <4 x i1> %tmp4, <4 x i32> zeroinitializer, <4 x i32> <i32 4, i32 4, i32 4, i32 4>
|
|
%tmp6 = extractelement <4 x i32> %tmp5, i32 0
|
|
ret i32 %tmp6
|
|
}
|