Skip to content

Commit c8cc587

Browse files
committed
[NVPTX] Remove various dead/extraneous NVPTXISD nodes (NFC)
1 parent e615544 commit c8cc587

File tree

5 files changed

+44
-175
lines changed

5 files changed

+44
-175
lines changed

llvm/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp

Lines changed: 8 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -160,8 +160,6 @@ void NVPTXDAGToDAGISel::Select(SDNode *N) {
160160
case NVPTXISD::StoreParam:
161161
case NVPTXISD::StoreParamV2:
162162
case NVPTXISD::StoreParamV4:
163-
case NVPTXISD::StoreParamS32:
164-
case NVPTXISD::StoreParamU32:
165163
if (tryStoreParam(N))
166164
return;
167165
break;
@@ -909,19 +907,9 @@ bool NVPTXDAGToDAGISel::tryIntrinsicNoChain(SDNode *N) {
909907
switch (IID) {
910908
default:
911909
return false;
912-
case Intrinsic::nvvm_texsurf_handle_internal:
913-
SelectTexSurfHandle(N);
914-
return true;
915910
}
916911
}
917912

918-
void NVPTXDAGToDAGISel::SelectTexSurfHandle(SDNode *N) {
919-
// Op 0 is the intrinsic ID
920-
SDValue Wrapper = N->getOperand(1);
921-
SDValue GlobalVal = Wrapper.getOperand(0);
922-
ReplaceNode(N, CurDAG->getMachineNode(NVPTX::texsurf_handles, SDLoc(N),
923-
MVT::i64, GlobalVal));
924-
}
925913

926914
void NVPTXDAGToDAGISel::SelectAddrSpaceCast(SDNode *N) {
927915
SDValue Src = N->getOperand(0);
@@ -1717,8 +1705,6 @@ bool NVPTXDAGToDAGISel::tryStoreParam(SDNode *N) {
17171705
switch (N->getOpcode()) {
17181706
default:
17191707
llvm_unreachable("Unexpected opcode");
1720-
case NVPTXISD::StoreParamU32:
1721-
case NVPTXISD::StoreParamS32:
17221708
case NVPTXISD::StoreParam:
17231709
NumElts = 1;
17241710
break;
@@ -1796,27 +1782,6 @@ bool NVPTXDAGToDAGISel::tryStoreParam(SDNode *N) {
17961782
}
17971783
}
17981784
break;
1799-
// Special case: if we have a sign-extend/zero-extend node, insert the
1800-
// conversion instruction first, and use that as the value operand to
1801-
// the selected StoreParam node.
1802-
case NVPTXISD::StoreParamU32: {
1803-
Opcode = NVPTX::StoreParamI32_r;
1804-
SDValue CvtNone = CurDAG->getTargetConstant(NVPTX::PTXCvtMode::NONE, DL,
1805-
MVT::i32);
1806-
SDNode *Cvt = CurDAG->getMachineNode(NVPTX::CVT_u32_u16, DL,
1807-
MVT::i32, Ops[0], CvtNone);
1808-
Ops[0] = SDValue(Cvt, 0);
1809-
break;
1810-
}
1811-
case NVPTXISD::StoreParamS32: {
1812-
Opcode = NVPTX::StoreParamI32_r;
1813-
SDValue CvtNone = CurDAG->getTargetConstant(NVPTX::PTXCvtMode::NONE, DL,
1814-
MVT::i32);
1815-
SDNode *Cvt = CurDAG->getMachineNode(NVPTX::CVT_s32_s16, DL,
1816-
MVT::i32, Ops[0], CvtNone);
1817-
Ops[0] = SDValue(Cvt, 0);
1818-
break;
1819-
}
18201785
}
18211786

18221787
SDVTList RetVTs = CurDAG->getVTList(MVT::Other, MVT::Glue);
@@ -2105,22 +2070,14 @@ static inline bool isAddLike(const SDValue V) {
21052070
// selectBaseADDR - Match a dag node which will serve as the base address for an
21062071
// ADDR operand pair.
21072072
static SDValue selectBaseADDR(SDValue N, SelectionDAG *DAG) {
2108-
// Return true if TGA or ES.
2109-
if (N.getOpcode() == ISD::TargetGlobalAddress ||
2110-
N.getOpcode() == ISD::TargetExternalSymbol)
2111-
return N;
2112-
2113-
if (N.getOpcode() == NVPTXISD::Wrapper)
2114-
return N.getOperand(0);
2115-
2116-
// addrspacecast(Wrapper(arg_symbol) to addrspace(PARAM)) -> arg_symbol
2117-
if (AddrSpaceCastSDNode *CastN = dyn_cast<AddrSpaceCastSDNode>(N))
2118-
if (CastN->getSrcAddressSpace() == ADDRESS_SPACE_GENERIC &&
2119-
CastN->getDestAddressSpace() == ADDRESS_SPACE_PARAM &&
2120-
CastN->getOperand(0).getOpcode() == NVPTXISD::Wrapper)
2121-
return selectBaseADDR(CastN->getOperand(0).getOperand(0), DAG);
2122-
2123-
if (auto *FIN = dyn_cast<FrameIndexSDNode>(N))
2073+
if (const auto *GA = dyn_cast<GlobalAddressSDNode>(N))
2074+
return DAG->getTargetGlobalAddress(GA->getGlobal(), SDLoc(N),
2075+
GA->getValueType(0), GA->getOffset(),
2076+
GA->getTargetFlags());
2077+
if (const auto *ES = dyn_cast<ExternalSymbolSDNode>(N))
2078+
return DAG->getTargetExternalSymbol(ES->getSymbol(), ES->getValueType(0),
2079+
ES->getTargetFlags());
2080+
if (const auto *FIN = dyn_cast<FrameIndexSDNode>(N))
21242081
return DAG->getTargetFrameIndex(FIN->getIndex(), FIN->getValueType(0));
21252082

21262083
return N;

llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp

Lines changed: 3 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -702,9 +702,6 @@ NVPTXTargetLowering::NVPTXTargetLowering(const NVPTXTargetMachine &TM,
702702
setOperationAction(ISD::BR_JT, MVT::Other, Custom);
703703
setOperationAction(ISD::BRIND, MVT::Other, Expand);
704704

705-
setOperationAction(ISD::GlobalAddress, MVT::i32, Custom);
706-
setOperationAction(ISD::GlobalAddress, MVT::i64, Custom);
707-
708705
// We want to legalize constant related memmove and memcopy
709706
// intrinsics.
710707
setOperationAction(ISD::INTRINSIC_W_CHAIN, MVT::Other, Custom);
@@ -1055,14 +1052,10 @@ const char *NVPTXTargetLowering::getTargetNodeName(unsigned Opcode) const {
10551052
case NVPTXISD::FIRST_NUMBER:
10561053
break;
10571054

1058-
MAKE_CASE(NVPTXISD::CALL)
10591055
MAKE_CASE(NVPTXISD::RET_GLUE)
1060-
MAKE_CASE(NVPTXISD::LOAD_PARAM)
1061-
MAKE_CASE(NVPTXISD::Wrapper)
10621056
MAKE_CASE(NVPTXISD::DeclareParam)
10631057
MAKE_CASE(NVPTXISD::DeclareScalarParam)
10641058
MAKE_CASE(NVPTXISD::DeclareRet)
1065-
MAKE_CASE(NVPTXISD::DeclareScalarRet)
10661059
MAKE_CASE(NVPTXISD::DeclareRetParam)
10671060
MAKE_CASE(NVPTXISD::PrintCall)
10681061
MAKE_CASE(NVPTXISD::PrintConvergentCall)
@@ -1074,24 +1067,18 @@ const char *NVPTXTargetLowering::getTargetNodeName(unsigned Opcode) const {
10741067
MAKE_CASE(NVPTXISD::StoreParam)
10751068
MAKE_CASE(NVPTXISD::StoreParamV2)
10761069
MAKE_CASE(NVPTXISD::StoreParamV4)
1077-
MAKE_CASE(NVPTXISD::StoreParamS32)
1078-
MAKE_CASE(NVPTXISD::StoreParamU32)
10791070
MAKE_CASE(NVPTXISD::CallArgBegin)
10801071
MAKE_CASE(NVPTXISD::CallArg)
10811072
MAKE_CASE(NVPTXISD::LastCallArg)
10821073
MAKE_CASE(NVPTXISD::CallArgEnd)
10831074
MAKE_CASE(NVPTXISD::CallVoid)
1084-
MAKE_CASE(NVPTXISD::CallVal)
1085-
MAKE_CASE(NVPTXISD::CallSymbol)
10861075
MAKE_CASE(NVPTXISD::Prototype)
10871076
MAKE_CASE(NVPTXISD::MoveParam)
10881077
MAKE_CASE(NVPTXISD::StoreRetval)
10891078
MAKE_CASE(NVPTXISD::StoreRetvalV2)
10901079
MAKE_CASE(NVPTXISD::StoreRetvalV4)
1091-
MAKE_CASE(NVPTXISD::PseudoUseParam)
10921080
MAKE_CASE(NVPTXISD::UNPACK_VECTOR)
10931081
MAKE_CASE(NVPTXISD::BUILD_VECTOR)
1094-
MAKE_CASE(NVPTXISD::RETURN)
10951082
MAKE_CASE(NVPTXISD::CallSeqBegin)
10961083
MAKE_CASE(NVPTXISD::CallSeqEnd)
10971084
MAKE_CASE(NVPTXISD::CallPrototype)
@@ -1115,7 +1102,6 @@ const char *NVPTXTargetLowering::getTargetNodeName(unsigned Opcode) const {
11151102
MAKE_CASE(NVPTXISD::STACKSAVE)
11161103
MAKE_CASE(NVPTXISD::SETP_F16X2)
11171104
MAKE_CASE(NVPTXISD::SETP_BF16X2)
1118-
MAKE_CASE(NVPTXISD::Dummy)
11191105
MAKE_CASE(NVPTXISD::MUL_WIDE_SIGNED)
11201106
MAKE_CASE(NVPTXISD::MUL_WIDE_UNSIGNED)
11211107
MAKE_CASE(NVPTXISD::BrxEnd)
@@ -1189,15 +1175,6 @@ SDValue NVPTXTargetLowering::getSqrtEstimate(SDValue Operand, SelectionDAG &DAG,
11891175
}
11901176
}
11911177

1192-
SDValue
1193-
NVPTXTargetLowering::LowerGlobalAddress(SDValue Op, SelectionDAG &DAG) const {
1194-
SDLoc dl(Op);
1195-
const GlobalAddressSDNode *GAN = cast<GlobalAddressSDNode>(Op);
1196-
auto PtrVT = getPointerTy(DAG.getDataLayout(), GAN->getAddressSpace());
1197-
Op = DAG.getTargetGlobalAddress(GAN->getGlobal(), dl, PtrVT);
1198-
return DAG.getNode(NVPTXISD::Wrapper, dl, PtrVT, Op);
1199-
}
1200-
12011178
std::string NVPTXTargetLowering::getPrototype(
12021179
const DataLayout &DL, Type *retTy, const ArgListTy &Args,
12031180
const SmallVectorImpl<ISD::OutputArg> &Outs, MaybeAlign RetAlign,
@@ -2919,8 +2896,6 @@ NVPTXTargetLowering::LowerOperation(SDValue Op, SelectionDAG &DAG) const {
29192896
return SDValue();
29202897
case ISD::ADDRSPACECAST:
29212898
return LowerADDRSPACECAST(Op, DAG);
2922-
case ISD::GlobalAddress:
2923-
return LowerGlobalAddress(Op, DAG);
29242899
case ISD::INTRINSIC_W_CHAIN:
29252900
return Op;
29262901
case ISD::INTRINSIC_WO_CHAIN:
@@ -3129,8 +3104,7 @@ SDValue NVPTXTargetLowering::LowerVASTART(SDValue Op, SelectionDAG &DAG) const {
31293104
EVT PtrVT = TLI->getPointerTy(DAG.getDataLayout());
31303105

31313106
// Store the address of unsized array <function>_vararg[] in the ap object.
3132-
SDValue Arg = getParamSymbol(DAG, /* vararg */ -1, PtrVT);
3133-
SDValue VAReg = DAG.getNode(NVPTXISD::Wrapper, DL, PtrVT, Arg);
3107+
SDValue VAReg = getParamSymbol(DAG, /* vararg */ -1, PtrVT);
31343108

31353109
const Value *SV = cast<SrcValueSDNode>(Op.getOperand(2))->getValue();
31363110
return DAG.getStore(Op.getOperand(0), DL, VAReg, Op.getOperand(1),
@@ -3370,7 +3344,7 @@ SDValue NVPTXTargetLowering::getParamSymbol(SelectionDAG &DAG, int idx,
33703344
EVT v) const {
33713345
StringRef SavedStr = nvTM->getStrPool().save(
33723346
getParamName(&DAG.getMachineFunction().getFunction(), idx));
3373-
return DAG.getTargetExternalSymbol(SavedStr.data(), v);
3347+
return DAG.getExternalSymbol(SavedStr.data(), v);
33743348
}
33753349

33763350
SDValue NVPTXTargetLowering::LowerFormalArguments(
@@ -3438,7 +3412,7 @@ SDValue NVPTXTargetLowering::LowerFormalArguments(
34383412

34393413
SDValue P;
34403414
if (isKernelFunction(*F)) {
3441-
P = DAG.getNode(NVPTXISD::Wrapper, dl, ByvalIn.VT, ArgSymbol);
3415+
P = ArgSymbol;
34423416
P.getNode()->setIROrder(Arg.getArgNo() + 1);
34433417
} else {
34443418
P = DAG.getNode(NVPTXISD::MoveParam, dl, ByvalIn.VT, ArgSymbol);

llvm/lib/Target/NVPTX/NVPTXISelLowering.h

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,11 @@ namespace NVPTXISD {
2424
enum NodeType : unsigned {
2525
// Start the numbering from where ISD NodeType finishes.
2626
FIRST_NUMBER = ISD::BUILTIN_OP_END,
27-
Wrapper,
28-
CALL,
2927
RET_GLUE,
30-
LOAD_PARAM,
3128
DeclareParam,
3229
DeclareScalarParam,
3330
DeclareRetParam,
3431
DeclareRet,
35-
DeclareScalarRet,
3632
PrintCall,
3733
PrintConvergentCall,
3834
PrintCallUni,
@@ -42,12 +38,8 @@ enum NodeType : unsigned {
4238
LastCallArg,
4339
CallArgEnd,
4440
CallVoid,
45-
CallVal,
46-
CallSymbol,
4741
Prototype,
4842
MoveParam,
49-
PseudoUseParam,
50-
RETURN,
5143
CallSeqBegin,
5244
CallSeqEnd,
5345
CallPrototype,
@@ -83,7 +75,6 @@ enum NodeType : unsigned {
8375
CLUSTERLAUNCHCONTROL_QUERY_CANCEL_GET_FIRST_CTAID_X,
8476
CLUSTERLAUNCHCONTROL_QUERY_CANCEL_GET_FIRST_CTAID_Y,
8577
CLUSTERLAUNCHCONTROL_QUERY_CANCEL_GET_FIRST_CTAID_Z,
86-
Dummy,
8778

8879
FIRST_MEMORY_OPCODE,
8980
LoadV2 = FIRST_MEMORY_OPCODE,
@@ -100,8 +91,6 @@ enum NodeType : unsigned {
10091
StoreParam,
10192
StoreParamV2,
10293
StoreParamV4,
103-
StoreParamS32, // to sext and store a <32bit value, not used currently
104-
StoreParamU32, // to zext and store a <32bit value, not used currently
10594
StoreRetval,
10695
StoreRetvalV2,
10796
StoreRetvalV4,
@@ -120,8 +109,6 @@ class NVPTXTargetLowering : public TargetLowering {
120109
const NVPTXSubtarget &STI);
121110
SDValue LowerOperation(SDValue Op, SelectionDAG &DAG) const override;
122111

123-
SDValue LowerGlobalAddress(SDValue Op, SelectionDAG &DAG) const;
124-
125112
const char *getTargetNodeName(unsigned Opcode) const override;
126113

127114
bool getTgtMemIntrinsic(IntrinsicInfo &Info, const CallInst &I,

0 commit comments

Comments
 (0)