[llvm] 80fa796 - [X86] combineStore - add early out for 32-bit f64 store combines. NFC.
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 5 07:39:36 PST 2023
Author: Simon Pilgrim
Date: 2023-12-05T15:39:21Z
New Revision: 80fa79609e9adf0e2ccd71b9838d7fdb6ab2d07a
URL: https://github.com/llvm/llvm-project/commit/80fa79609e9adf0e2ccd71b9838d7fdb6ab2d07a
DIFF: https://github.com/llvm/llvm-project/commit/80fa79609e9adf0e2ccd71b9838d7fdb6ab2d07a.diff
LOG: [X86] combineStore - add early out for 32-bit f64 store combines. NFC.
Added:
Modified:
llvm/lib/Target/X86/X86ISelLowering.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 1edf758a278d4..4fca5afb46dd2 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -50472,11 +50472,14 @@ static SDValue combineStore(SDNode *N, SelectionDAG &DAG,
bool NoImplicitFloatOps = F.hasFnAttribute(Attribute::NoImplicitFloat);
bool F64IsLegal =
!Subtarget.useSoftFloat() && !NoImplicitFloatOps && Subtarget.hasSSE2();
- if ((VT == MVT::i64 && F64IsLegal && !Subtarget.is64Bit()) &&
- isa<LoadSDNode>(St->getValue()) &&
+
+ if (!F64IsLegal || Subtarget.is64Bit())
+ return SDValue();
+
+ if (VT == MVT::i64 && isa<LoadSDNode>(St->getValue()) &&
cast<LoadSDNode>(St->getValue())->isSimple() &&
St->getChain().hasOneUse() && St->isSimple()) {
- LoadSDNode *Ld = cast<LoadSDNode>(St->getValue().getNode());
+ auto *Ld = cast<LoadSDNode>(St->getValue());
if (!ISD::isNormalLoad(Ld))
return SDValue();
@@ -50503,7 +50506,7 @@ static SDValue combineStore(SDNode *N, SelectionDAG &DAG,
// to get past legalization. The execution dependencies fixup pass will
// choose the optimal machine instruction for the store if this really is
// an integer or v2f32 rather than an f64.
- if (VT == MVT::i64 && F64IsLegal && !Subtarget.is64Bit() &&
+ if (VT == MVT::i64 &&
St->getOperand(1).getOpcode() == ISD::EXTRACT_VECTOR_ELT) {
SDValue OldExtract = St->getOperand(1);
SDValue ExtOp0 = OldExtract.getOperand(0);
More information about the llvm-commits
mailing list