mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-03 17:32:59 +00:00
[X86] Widen (v2i32 (fp_to_uint v2f64)) to (v8i32 (fp_to_uint v8f64)) during legalization if we have AVX512F, but not VLX. NFC
Previously we widened it using isel patterns. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320824 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
20ea5a5161
commit
021be3a67e
@ -24676,12 +24676,21 @@ void X86TargetLowering::ReplaceNodeResults(SDNode *N,
|
||||
assert(Subtarget.hasSSE2() && "Requires at least SSE2!");
|
||||
SDValue Src = N->getOperand(0);
|
||||
if (Src.getValueType() == MVT::v2f64) {
|
||||
SDValue Idx = DAG.getIntPtrConstant(0, dl);
|
||||
SDValue Res = DAG.getNode(IsSigned ? X86ISD::CVTTP2SI
|
||||
: X86ISD::CVTTP2UI,
|
||||
dl, MVT::v4i32, Src);
|
||||
if (!ExperimentalVectorWideningLegalization)
|
||||
Res = DAG.getNode(ISD::EXTRACT_SUBVECTOR, dl, MVT::v2i32, Res, Idx);
|
||||
MVT ResVT = MVT::v4i32;
|
||||
unsigned Opc = IsSigned ? X86ISD::CVTTP2SI : X86ISD::CVTTP2UI;
|
||||
if (!IsSigned && !Subtarget.hasVLX()) {
|
||||
// Widen to 512-bits.
|
||||
ResVT = MVT::v8i32;
|
||||
Opc = ISD::FP_TO_UINT;
|
||||
Src = DAG.getNode(ISD::INSERT_SUBVECTOR, dl, MVT::v8f64,
|
||||
DAG.getUNDEF(MVT::v8f64),
|
||||
Src, DAG.getIntPtrConstant(0, dl));
|
||||
}
|
||||
SDValue Res = DAG.getNode(Opc, dl, ResVT, Src);
|
||||
ResVT = ExperimentalVectorWideningLegalization ? MVT::v4i32
|
||||
: MVT::v2i32;
|
||||
Res = DAG.getNode(ISD::EXTRACT_SUBVECTOR, dl, ResVT, Res,
|
||||
DAG.getIntPtrConstant(0, dl));
|
||||
Results.push_back(Res);
|
||||
return;
|
||||
}
|
||||
|
@ -7327,11 +7327,6 @@ def : Pat<(v4i32 (fp_to_uint (v4f64 VR256X:$src1))),
|
||||
(v8f64 (INSERT_SUBREG (IMPLICIT_DEF),
|
||||
VR256X:$src1, sub_ymm)))), sub_xmm)>;
|
||||
|
||||
def : Pat<(v4i32 (X86cvttp2ui (v2f64 VR128X:$src))),
|
||||
(EXTRACT_SUBREG (v8i32 (VCVTTPD2UDQZrr
|
||||
(v8f64 (INSERT_SUBREG (IMPLICIT_DEF),
|
||||
VR128X:$src, sub_xmm)))), sub_xmm)>;
|
||||
|
||||
def : Pat<(v8f32 (uint_to_fp (v8i32 VR256X:$src1))),
|
||||
(EXTRACT_SUBREG (v16f32 (VCVTUDQ2PSZrr
|
||||
(v16i32 (INSERT_SUBREG (IMPLICIT_DEF),
|
||||
|
Loading…
Reference in New Issue
Block a user