[llvm] 8ca666a - [X86][AVX] lowerV2X128Shuffle - use getBROADCAST_LOAD helper. NFCI.
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 2 07:07:36 PDT 2021
Author: Simon Pilgrim
Date: 2021-11-02T14:07:21Z
New Revision: 8ca666a28000881817e5692c531fff1e11d9ac57
URL: https://github.com/llvm/llvm-project/commit/8ca666a28000881817e5692c531fff1e11d9ac57
DIFF: https://github.com/llvm/llvm-project/commit/8ca666a28000881817e5692c531fff1e11d9ac57.diff
LOG: [X86][AVX] lowerV2X128Shuffle - use getBROADCAST_LOAD helper. NFCI.
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 e65a4f9eb1ecd..0f71dbda120f5 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -16432,21 +16432,12 @@ static SDValue lowerV2X128Shuffle(const SDLoc &DL, MVT VT, SDValue V1,
bool SplatHi = isShuffleEquivalent(Mask, {2, 3, 2, 3}, V1);
if ((SplatLo || SplatHi) && !Subtarget.hasAVX512() && V1.hasOneUse() &&
X86::mayFoldLoad(peekThroughOneUseBitcasts(V1), Subtarget)) {
+ MVT MemVT = VT.getHalfNumVectorElementsVT();
+ unsigned Ofs = SplatLo ? 0 : MemVT.getStoreSize();
auto *Ld = cast<LoadSDNode>(peekThroughOneUseBitcasts(V1));
- if (!Ld->isNonTemporal()) {
- MVT MemVT = VT.getHalfNumVectorElementsVT();
- unsigned Ofs = SplatLo ? 0 : MemVT.getStoreSize();
- SDVTList Tys = DAG.getVTList(VT, MVT::Other);
- SDValue Ptr = DAG.getMemBasePlusOffset(Ld->getBasePtr(),
- TypeSize::Fixed(Ofs), DL);
- SDValue Ops[] = {Ld->getChain(), Ptr};
- SDValue BcastLd = DAG.getMemIntrinsicNode(
- X86ISD::SUBV_BROADCAST_LOAD, DL, Tys, Ops, MemVT,
- DAG.getMachineFunction().getMachineMemOperand(
- Ld->getMemOperand(), Ofs, MemVT.getStoreSize()));
- DAG.ReplaceAllUsesOfValueWith(SDValue(Ld, 1), BcastLd.getValue(1));
- return BcastLd;
- }
+ if (SDValue BcstLd = getBROADCAST_LOAD(X86ISD::SUBV_BROADCAST_LOAD, DL,
+ VT, MemVT, Ld, Ofs, DAG))
+ return BcstLd;
}
// With AVX2, use VPERMQ/VPERMPD for unary shuffles to allow memory folding.
More information about the llvm-commits
mailing list