mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-29 13:32:33 +00:00
AVX: fixed a bug in LowerVECTOR_SHUFFLE
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201140 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d4ab7d1b69
commit
e9d5f6e387
@ -7371,7 +7371,11 @@ X86TargetLowering::LowerVECTOR_SHUFFLE(SDValue Op, SelectionDAG &DAG) const {
|
|||||||
if (V1IsUndef && V2IsUndef)
|
if (V1IsUndef && V2IsUndef)
|
||||||
return DAG.getUNDEF(VT);
|
return DAG.getUNDEF(VT);
|
||||||
|
|
||||||
assert(!V1IsUndef && "Op 1 of shuffle should not be undef");
|
// When we create a shuffle node we put the UNDEF node to second operand,
|
||||||
|
// but in some cases the first operand may be transformed to UNDEF.
|
||||||
|
// In this case we should just commute the node.
|
||||||
|
if (V1IsUndef)
|
||||||
|
return CommuteVectorShuffle(SVOp, DAG);
|
||||||
|
|
||||||
// Vector shuffle lowering takes 3 steps:
|
// Vector shuffle lowering takes 3 steps:
|
||||||
//
|
//
|
||||||
|
@ -297,3 +297,12 @@ entry:
|
|||||||
}
|
}
|
||||||
declare <2 x double> @llvm.x86.avx.vextractf128.pd.256(<4 x double>, i8) nounwind readnone
|
declare <2 x double> @llvm.x86.avx.vextractf128.pd.256(<4 x double>, i8) nounwind readnone
|
||||||
declare <4 x double> @llvm.x86.avx.vinsertf128.pd.256(<4 x double>, <2 x double>, i8) nounwind readnone
|
declare <4 x double> @llvm.x86.avx.vinsertf128.pd.256(<4 x double>, <2 x double>, i8) nounwind readnone
|
||||||
|
|
||||||
|
; this test case just should not fail
|
||||||
|
define void @test20() {
|
||||||
|
%a0 = insertelement <3 x double> <double 0.000000e+00, double 0.000000e+00, double undef>, double 0.000000e+00, i32 2
|
||||||
|
store <3 x double> %a0, <3 x double>* undef, align 1
|
||||||
|
%a1 = insertelement <3 x double> <double 0.000000e+00, double 0.000000e+00, double undef>, double undef, i32 2
|
||||||
|
store <3 x double> %a1, <3 x double>* undef, align 1
|
||||||
|
ret void
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user