Skip to content

Commit 8393800

Browse files
committed
Remove DAGCombiner copy
1 parent edace61 commit 8393800

File tree

1 file changed

+1
-87
lines changed

1 file changed

+1
-87
lines changed

llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp

+1-87
Original file line numberDiff line numberDiff line change
@@ -385,17 +385,6 @@ namespace {
385385
bool getTruncatedStoreValue(StoreSDNode *ST, SDValue &Val);
386386
bool extendLoadedValueToExtension(LoadSDNode *LD, SDValue &Val);
387387

388-
/// Replace an ISD::EXTRACT_VECTOR_ELT of a load with a narrowed
389-
/// load.
390-
///
391-
/// \param EVE ISD::EXTRACT_VECTOR_ELT to be replaced.
392-
/// \param InVecVT type of the input vector to EVE with bitcasts resolved.
393-
/// \param EltNo index of the vector element to load.
394-
/// \param OriginalLoad load that EVE came from to be replaced.
395-
/// \returns EVE on success SDValue() on failure.
396-
SDValue scalarizeExtractedVectorLoad(SDNode *EVE, EVT InVecVT,
397-
SDValue EltNo,
398-
LoadSDNode *OriginalLoad);
399388
void ReplaceLoadWithPromotedLoad(SDNode *Load, SDNode *ExtLoad);
400389
SDValue PromoteOperand(SDValue Op, EVT PVT, bool &Replace);
401390
SDValue SExtPromoteOperand(SDValue Op, EVT PVT);
@@ -22719,81 +22708,6 @@ SDValue DAGCombiner::visitINSERT_VECTOR_ELT(SDNode *N) {
2271922708
return SDValue();
2272022709
}
2272122710

22722-
SDValue DAGCombiner::scalarizeExtractedVectorLoad(SDNode *EVE, EVT InVecVT,
22723-
SDValue EltNo,
22724-
LoadSDNode *OriginalLoad) {
22725-
assert(OriginalLoad->isSimple());
22726-
22727-
EVT ResultVT = EVE->getValueType(0);
22728-
EVT VecEltVT = InVecVT.getVectorElementType();
22729-
22730-
// If the vector element type is not a multiple of a byte then we are unable
22731-
// to correctly compute an address to load only the extracted element as a
22732-
// scalar.
22733-
if (!VecEltVT.isByteSized())
22734-
return SDValue();
22735-
22736-
ISD::LoadExtType ExtTy =
22737-
ResultVT.bitsGT(VecEltVT) ? ISD::EXTLOAD : ISD::NON_EXTLOAD;
22738-
if (!TLI.isOperationLegalOrCustom(ISD::LOAD, VecEltVT) ||
22739-
!TLI.shouldReduceLoadWidth(OriginalLoad, ExtTy, VecEltVT))
22740-
return SDValue();
22741-
22742-
Align Alignment = OriginalLoad->getAlign();
22743-
MachinePointerInfo MPI;
22744-
SDLoc DL(EVE);
22745-
if (auto *ConstEltNo = dyn_cast<ConstantSDNode>(EltNo)) {
22746-
int Elt = ConstEltNo->getZExtValue();
22747-
unsigned PtrOff = VecEltVT.getSizeInBits() * Elt / 8;
22748-
MPI = OriginalLoad->getPointerInfo().getWithOffset(PtrOff);
22749-
Alignment = commonAlignment(Alignment, PtrOff);
22750-
} else {
22751-
// Discard the pointer info except the address space because the memory
22752-
// operand can't represent this new access since the offset is variable.
22753-
MPI = MachinePointerInfo(OriginalLoad->getPointerInfo().getAddrSpace());
22754-
Alignment = commonAlignment(Alignment, VecEltVT.getSizeInBits() / 8);
22755-
}
22756-
22757-
unsigned IsFast = 0;
22758-
if (!TLI.allowsMemoryAccess(*DAG.getContext(), DAG.getDataLayout(), VecEltVT,
22759-
OriginalLoad->getAddressSpace(), Alignment,
22760-
OriginalLoad->getMemOperand()->getFlags(),
22761-
&IsFast) ||
22762-
!IsFast)
22763-
return SDValue();
22764-
22765-
SDValue NewPtr = TLI.getVectorElementPointer(DAG, OriginalLoad->getBasePtr(),
22766-
InVecVT, EltNo);
22767-
22768-
// We are replacing a vector load with a scalar load. The new load must have
22769-
// identical memory op ordering to the original.
22770-
SDValue Load;
22771-
if (ResultVT.bitsGT(VecEltVT)) {
22772-
// If the result type of vextract is wider than the load, then issue an
22773-
// extending load instead.
22774-
ISD::LoadExtType ExtType =
22775-
TLI.isLoadExtLegal(ISD::ZEXTLOAD, ResultVT, VecEltVT) ? ISD::ZEXTLOAD
22776-
: ISD::EXTLOAD;
22777-
Load = DAG.getExtLoad(ExtType, DL, ResultVT, OriginalLoad->getChain(),
22778-
NewPtr, MPI, VecEltVT, Alignment,
22779-
OriginalLoad->getMemOperand()->getFlags(),
22780-
OriginalLoad->getAAInfo());
22781-
DAG.makeEquivalentMemoryOrdering(OriginalLoad, Load);
22782-
} else {
22783-
// The result type is narrower or the same width as the vector element
22784-
Load = DAG.getLoad(VecEltVT, DL, OriginalLoad->getChain(), NewPtr, MPI,
22785-
Alignment, OriginalLoad->getMemOperand()->getFlags(),
22786-
OriginalLoad->getAAInfo());
22787-
DAG.makeEquivalentMemoryOrdering(OriginalLoad, Load);
22788-
if (ResultVT.bitsLT(VecEltVT))
22789-
Load = DAG.getNode(ISD::TRUNCATE, DL, ResultVT, Load);
22790-
else
22791-
Load = DAG.getBitcast(ResultVT, Load);
22792-
}
22793-
++OpsNarrowed;
22794-
return Load;
22795-
}
22796-
2279722711
/// Transform a vector binary operation into a scalar binary operation by moving
2279822712
/// the math/logic after an extract element of a vector.
2279922713
static SDValue scalarizeExtractedBinOp(SDNode *ExtElt, SelectionDAG &DAG,
@@ -23366,7 +23280,7 @@ SDValue DAGCombiner::visitEXTRACT_VECTOR_ELT(SDNode *N) {
2336623280
if (Elt == -1)
2336723281
return DAG.getUNDEF(LVT);
2336823282

23369-
return scalarizeExtractedVectorLoad(N, VecVT, Index, LN0);
23283+
return TLI.scalarizeExtractedVectorLoad(LVT, DL, VecVT, Index, LN0, DAG);
2337023284
}
2337123285

2337223286
// Simplify (build_vec (ext )) to (bitcast (build_vec ))

0 commit comments

Comments
 (0)