forked from OSchip/llvm-project
[X86][AVX] Add X86ISD::VTRUNC handling to SimplifyDemandedVectorEltsForTargetNode
llvm-svn: 356067
This commit is contained in:
parent
823d9f3cdf
commit
bef4fe056d
|
@ -33039,6 +33039,20 @@ bool X86TargetLowering::SimplifyDemandedVectorEltsForTargetNode(
|
|||
return true;
|
||||
break;
|
||||
}
|
||||
case X86ISD::VTRUNC:
|
||||
case X86ISD::VTRUNCS:
|
||||
case X86ISD::VTRUNCUS: {
|
||||
SDValue Src = Op.getOperand(0);
|
||||
MVT SrcVT = Src.getSimpleValueType();
|
||||
APInt DemandedSrc = DemandedElts.zextOrTrunc(SrcVT.getVectorNumElements());
|
||||
APInt SrcUndef, SrcZero;
|
||||
if (SimplifyDemandedVectorElts(Src, DemandedSrc, SrcUndef, SrcZero, TLO,
|
||||
Depth + 1))
|
||||
return true;
|
||||
KnownZero = SrcZero.zextOrTrunc(NumElts);
|
||||
KnownUndef = SrcUndef.zextOrTrunc(NumElts);
|
||||
break;
|
||||
}
|
||||
case X86ISD::BLENDV: {
|
||||
APInt SelUndef, SelZero;
|
||||
if (SimplifyDemandedVectorElts(Op.getOperand(0), DemandedElts, SelUndef,
|
||||
|
|
|
@ -1179,7 +1179,7 @@ define void @trunc_v4i64_to_v4i8(<32 x i8>* %L, <4 x i8>* %S) nounwind {
|
|||
;
|
||||
; AVX512F-LABEL: trunc_v4i64_to_v4i8:
|
||||
; AVX512F: # %bb.0:
|
||||
; AVX512F-NEXT: vbroadcasti64x4 {{.*#+}} zmm0 = mem[0,1,2,3,0,1,2,3]
|
||||
; AVX512F-NEXT: vmovdqa (%rdi), %ymm0
|
||||
; AVX512F-NEXT: vpmovqb %zmm0, %xmm0
|
||||
; AVX512F-NEXT: vmovd %xmm0, (%rsi)
|
||||
; AVX512F-NEXT: vzeroupper
|
||||
|
@ -1194,7 +1194,7 @@ define void @trunc_v4i64_to_v4i8(<32 x i8>* %L, <4 x i8>* %S) nounwind {
|
|||
;
|
||||
; AVX512BW-LABEL: trunc_v4i64_to_v4i8:
|
||||
; AVX512BW: # %bb.0:
|
||||
; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm0 = mem[0,1,2,3,0,1,2,3]
|
||||
; AVX512BW-NEXT: vmovdqa (%rdi), %ymm0
|
||||
; AVX512BW-NEXT: vpmovqb %zmm0, %xmm0
|
||||
; AVX512BW-NEXT: vmovd %xmm0, (%rsi)
|
||||
; AVX512BW-NEXT: vzeroupper
|
||||
|
|
Loading…
Reference in New Issue