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;
|
return true;
|
||||||
break;
|
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: {
|
case X86ISD::BLENDV: {
|
||||||
APInt SelUndef, SelZero;
|
APInt SelUndef, SelZero;
|
||||||
if (SimplifyDemandedVectorElts(Op.getOperand(0), DemandedElts, SelUndef,
|
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-LABEL: trunc_v4i64_to_v4i8:
|
||||||
; AVX512F: # %bb.0:
|
; 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: vpmovqb %zmm0, %xmm0
|
||||||
; AVX512F-NEXT: vmovd %xmm0, (%rsi)
|
; AVX512F-NEXT: vmovd %xmm0, (%rsi)
|
||||||
; AVX512F-NEXT: vzeroupper
|
; 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-LABEL: trunc_v4i64_to_v4i8:
|
||||||
; AVX512BW: # %bb.0:
|
; 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: vpmovqb %zmm0, %xmm0
|
||||||
; AVX512BW-NEXT: vmovd %xmm0, (%rsi)
|
; AVX512BW-NEXT: vmovd %xmm0, (%rsi)
|
||||||
; AVX512BW-NEXT: vzeroupper
|
; AVX512BW-NEXT: vzeroupper
|
||||||
|
|
Loading…
Reference in New Issue