mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-16 11:30:51 +00:00
Fixed a bug in LowerVECTOR_SHUFFLE caused assertion failure
lc: X86ISelLowering.cpp:6480: llvm::SDValue llvm::X86TargetLowering::LowerVECTOR_SHUFFLE(llvm::SDValue, llvm::SelectionDAG&) const: Assertion `V1.getOpcode() != ISD::UNDEF&& "Op 1 of shuffle should not be undef"' failed. Added a test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148044 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c16c25fbc3
commit
16db710898
@ -6464,6 +6464,7 @@ X86TargetLowering::LowerVECTOR_SHUFFLE(SDValue Op, SelectionDAG &DAG) const {
|
||||
EVT VT = Op.getValueType();
|
||||
DebugLoc dl = Op.getDebugLoc();
|
||||
unsigned NumElems = VT.getVectorNumElements();
|
||||
bool V1IsUndef = V1.getOpcode() == ISD::UNDEF;
|
||||
bool V2IsUndef = V2.getOpcode() == ISD::UNDEF;
|
||||
bool V1IsSplat = false;
|
||||
bool V2IsSplat = false;
|
||||
@ -6475,7 +6476,10 @@ X86TargetLowering::LowerVECTOR_SHUFFLE(SDValue Op, SelectionDAG &DAG) const {
|
||||
|
||||
assert(VT.getSizeInBits() != 64 && "Can't lower MMX shuffles");
|
||||
|
||||
assert(V1.getOpcode() != ISD::UNDEF && "Op 1 of shuffle should not be undef");
|
||||
if (V1IsUndef && V2IsUndef)
|
||||
return DAG.getUNDEF(VT);
|
||||
|
||||
assert(!V1IsUndef && "Op 1 of shuffle should not be undef");
|
||||
|
||||
// Vector shuffle lowering takes 3 steps:
|
||||
//
|
||||
|
@ -54,4 +54,12 @@ entry:
|
||||
; CHECK-NOT: vinsertf128
|
||||
%shuffle.i = shufflevector <2 x double> %1, <2 x double> <double 0.000000e+00, double undef>, <4 x i32> <i32 0, i32 1, i32 2, i32 2>
|
||||
ret <4 x double> %shuffle.i
|
||||
}
|
||||
}
|
||||
|
||||
define <16 x i16> @test7(<4 x i16> %a) nounwind {
|
||||
; CHECK: test7
|
||||
|
||||
%b = shufflevector <4 x i16> %a, <4 x i16> undef, <16 x i32> <i32 1, i32 1, 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>
|
||||
ret <16 x i16> %b
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user