Skip to content

Commit 04366fa

Browse files
Revert "[X86] Combine store + vselect to masked_store`"
This reverts commit 73c5a668e2c4ff72195a816b1b3c93279ed46185.
1 parent b3a4522 commit 04366fa

File tree

2 files changed

+0
-354
lines changed

2 files changed

+0
-354
lines changed

llvm/lib/Target/X86/X86ISelLowering.cpp

Lines changed: 0 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@
6666
#include <bitset>
6767
#include <cctype>
6868
#include <numeric>
69-
#include <queue>
7069
using namespace llvm;
7170

7271
#define DEBUG_TYPE "x86-isel"
@@ -53389,80 +53388,6 @@ static SDValue combineMaskedStore(SDNode *N, SelectionDAG &DAG,
5338953388
return SDValue();
5339053389
}
5339153390

53392-
static SDValue foldToMaskedStore(StoreSDNode *Store, SelectionDAG &DAG,
53393-
const SDLoc &Dl,
53394-
const X86Subtarget &Subtarget) {
53395-
if (!Subtarget.hasAVX() && !Subtarget.hasAVX2() && !Subtarget.hasAVX512())
53396-
return SDValue();
53397-
53398-
if (!Store->isSimple())
53399-
return SDValue();
53400-
53401-
SDValue StoredVal = Store->getValue();
53402-
SDValue StorePtr = Store->getBasePtr();
53403-
SDValue StoreOffset = Store->getOffset();
53404-
EVT VT = StoredVal.getValueType();
53405-
const TargetLowering &TLI = DAG.getTargetLoweringInfo();
53406-
53407-
if (!TLI.isTypeLegal(VT) || !TLI.isOperationLegalOrCustom(ISD::MSTORE, VT))
53408-
return SDValue();
53409-
53410-
if (StoredVal.getOpcode() != ISD::VSELECT)
53411-
return SDValue();
53412-
53413-
SDValue Mask = StoredVal.getOperand(0);
53414-
SDValue TrueVec = StoredVal.getOperand(1);
53415-
SDValue FalseVec = StoredVal.getOperand(2);
53416-
53417-
LoadSDNode *Load = cast<LoadSDNode>(FalseVec.getNode());
53418-
if (!Load || !Load->isSimple())
53419-
return SDValue();
53420-
53421-
SDValue LoadPtr = Load->getBasePtr();
53422-
SDValue LoadOffset = Load->getOffset();
53423-
53424-
if (StorePtr != LoadPtr || StoreOffset != LoadOffset)
53425-
return SDValue();
53426-
53427-
auto IsSafeToFold = [](StoreSDNode *Store, LoadSDNode *Load) {
53428-
std::queue<SDValue> Worklist;
53429-
53430-
Worklist.push(Store->getChain());
53431-
53432-
while (!Worklist.empty()) {
53433-
SDValue Chain = Worklist.front();
53434-
Worklist.pop();
53435-
53436-
SDNode *Node = Chain.getNode();
53437-
if (!Node)
53438-
return false;
53439-
53440-
if (const auto *MemNode = dyn_cast<MemSDNode>(Node))
53441-
if (!MemNode->isSimple() || MemNode->writeMem())
53442-
return false;
53443-
53444-
if (Node == Load)
53445-
return true;
53446-
53447-
if (Node->getOpcode() == ISD::TokenFactor) {
53448-
for (unsigned i = 0; i < Node->getNumOperands(); ++i)
53449-
Worklist.push(Node->getOperand(i));
53450-
} else {
53451-
Worklist.push(Node->getOperand(0));
53452-
}
53453-
}
53454-
53455-
return false;
53456-
};
53457-
53458-
if (!IsSafeToFold(Store, Load))
53459-
return SDValue();
53460-
53461-
return DAG.getMaskedStore(Store->getChain(), Dl, TrueVec, StorePtr,
53462-
StoreOffset, Mask, Store->getMemoryVT(),
53463-
Store->getMemOperand(), Store->getAddressingMode());
53464-
}
53465-
5346653391
static SDValue combineStore(SDNode *N, SelectionDAG &DAG,
5346753392
TargetLowering::DAGCombinerInfo &DCI,
5346853393
const X86Subtarget &Subtarget) {
@@ -53788,9 +53713,6 @@ static SDValue combineStore(SDNode *N, SelectionDAG &DAG,
5378853713
St->getMemOperand()->getFlags());
5378953714
}
5379053715

53791-
if (SDValue MaskedStore = foldToMaskedStore(St, DAG, dl, Subtarget))
53792-
return MaskedStore;
53793-
5379453716
return SDValue();
5379553717
}
5379653718

llvm/test/CodeGen/X86/combine-storetomstore.ll

Lines changed: 0 additions & 276 deletions
This file was deleted.

0 commit comments

Comments
 (0)