Skip to content

Commit 0bbe953

Browse files
committed
[X86] Fold extract_subvector(cvtps2dq(x),c) -> cvtps2dq(extract_subvector(x,c))
Help unblock llvm#83402
1 parent 45aec9a commit 0bbe953

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

llvm/lib/Target/X86/X86ISelLowering.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56158,6 +56158,13 @@ static SDValue combineEXTRACT_SUBVECTOR(SDNode *N, SelectionDAG &DAG,
5615856158
return DAG.getNode(X86ISD::VFPEXT, DL, VT, InVec.getOperand(0));
5615956159
}
5616056160
}
56161+
// v4i32 CVTPS2DQ(v4f32).
56162+
if (InOpcode == ISD::FP_TO_SINT && VT == MVT::v4i32) {
56163+
SDValue Src = InVec.getOperand(0);
56164+
if (Src.getValueType().getScalarType() == MVT::f32)
56165+
return DAG.getNode(InOpcode, DL, VT,
56166+
extractSubVector(Src, IdxVal, DAG, DL, SizeInBits));
56167+
}
5616156168
if (IdxVal == 0 &&
5616256169
(ISD::isExtOpcode(InOpcode) || ISD::isExtVecInRegOpcode(InOpcode)) &&
5616356170
(SizeInBits == 128 || SizeInBits == 256) &&

llvm/test/CodeGen/X86/vector-half-conversions.ll

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5025,16 +5025,14 @@ define <4 x i32> @fptosi_4f16_to_4i32(<4 x half> %a) nounwind {
50255025
; F16C-LABEL: fptosi_4f16_to_4i32:
50265026
; F16C: # %bb.0:
50275027
; F16C-NEXT: vcvtph2ps %xmm0, %ymm0
5028-
; F16C-NEXT: vcvttps2dq %ymm0, %ymm0
5029-
; F16C-NEXT: # kill: def $xmm0 killed $xmm0 killed $ymm0
5028+
; F16C-NEXT: vcvttps2dq %xmm0, %xmm0
50305029
; F16C-NEXT: vzeroupper
50315030
; F16C-NEXT: retq
50325031
;
50335032
; AVX512-LABEL: fptosi_4f16_to_4i32:
50345033
; AVX512: # %bb.0:
50355034
; AVX512-NEXT: vcvtph2ps %xmm0, %ymm0
5036-
; AVX512-NEXT: vcvttps2dq %ymm0, %ymm0
5037-
; AVX512-NEXT: # kill: def $xmm0 killed $xmm0 killed $ymm0
5035+
; AVX512-NEXT: vcvttps2dq %xmm0, %xmm0
50385036
; AVX512-NEXT: vzeroupper
50395037
; AVX512-NEXT: retq
50405038
%cvt = fptosi <4 x half> %a to <4 x i32>

0 commit comments

Comments
 (0)