Skip to content

Commit 89f7202

Browse files
AlexMacleanAnthony Tran
authored andcommitted
[NVPTX] Consolidate and cleanup various NVPTXISD nodes (NFC) (llvm#145581)
This change consolidates and cleans up various NVPTXISD target-specific nodes in order to simplify SDAG ISel. While there are some whitespace changes in the emitted PTX it is otherwise a non-functional change. NVPTXISD::Wrapper - This node was used to wrap external-symbol and global-address nodes. It is redundant and has been removed. Instead we use the non-target versions of these nodes and convert them appropriately during ISel. NVPTXISD::CALL - Much of the family of nodes used to represent a PTX call instruction have been replaced by this new single node. It corresponds to a single instruction and is therefore much simpler to create and lower.
1 parent 49e2715 commit 89f7202

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+430
-1428
lines changed

clang/test/CodeGenCUDA/bf16.cu

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,7 @@ __device__ __bf16 test_call( __bf16 in) {
3737
// CHECK: ld.param.b16 %[[R:rs[0-9]+]], [_Z9test_callDF16b_param_0];
3838
// CHECK: st.param.b16 [param0], %[[R]];
3939
// CHECK: .param .align 2 .b8 retval0[2];
40-
// CHECK: call.uni (retval0),
41-
// CHECK-NEXT: _Z13external_funcDF16b,
42-
// CHECK-NEXT: (
43-
// CHECK-NEXT: param0
44-
// CHECK-NEXT );
40+
// CHECK: call.uni (retval0), _Z13external_funcDF16b, (param0);
4541
// CHECK: ld.param.b16 %[[RET:rs[0-9]+]], [retval0];
4642
return external_func(in);
4743
// CHECK: st.param.b16 [func_retval0], %[[RET]]

llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXInstPrinter.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -457,3 +457,25 @@ void NVPTXInstPrinter::printCTAGroup(const MCInst *MI, int OpNum,
457457
}
458458
llvm_unreachable("Invalid cta_group in printCTAGroup");
459459
}
460+
461+
void NVPTXInstPrinter::printCallOperand(const MCInst *MI, int OpNum,
462+
raw_ostream &O, StringRef Modifier) {
463+
const MCOperand &MO = MI->getOperand(OpNum);
464+
assert(MO.isImm() && "Invalid operand");
465+
const auto Imm = MO.getImm();
466+
467+
if (Modifier == "RetList") {
468+
assert((Imm == 1 || Imm == 0) && "Invalid return list");
469+
if (Imm)
470+
O << " (retval0),";
471+
return;
472+
}
473+
474+
if (Modifier == "ParamList") {
475+
assert(Imm >= 0 && "Invalid parameter list");
476+
interleaveComma(llvm::seq(Imm), O,
477+
[&](const auto &I) { O << "param" << I; });
478+
return;
479+
}
480+
llvm_unreachable("Invalid modifier");
481+
}

llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXInstPrinter.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ class NVPTXInstPrinter : public MCInstPrinter {
5252
void printPrmtMode(const MCInst *MI, int OpNum, raw_ostream &O);
5353
void printTmaReductionMode(const MCInst *MI, int OpNum, raw_ostream &O);
5454
void printCTAGroup(const MCInst *MI, int OpNum, raw_ostream &O);
55+
void printCallOperand(const MCInst *MI, int OpNum, raw_ostream &O,
56+
StringRef Modifier = {});
5557
};
5658

5759
}

llvm/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp

Lines changed: 8 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -160,15 +160,9 @@ 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;
168-
case ISD::INTRINSIC_WO_CHAIN:
169-
if (tryIntrinsicNoChain(N))
170-
return;
171-
break;
172166
case ISD::INTRINSIC_W_CHAIN:
173167
if (tryIntrinsicChain(N))
174168
return;
@@ -904,25 +898,6 @@ NVPTXDAGToDAGISel::insertMemoryInstructionFence(SDLoc DL, SDValue &Chain,
904898
return {InstructionOrdering, Scope};
905899
}
906900

907-
bool NVPTXDAGToDAGISel::tryIntrinsicNoChain(SDNode *N) {
908-
unsigned IID = N->getConstantOperandVal(0);
909-
switch (IID) {
910-
default:
911-
return false;
912-
case Intrinsic::nvvm_texsurf_handle_internal:
913-
SelectTexSurfHandle(N);
914-
return true;
915-
}
916-
}
917-
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-
}
925-
926901
void NVPTXDAGToDAGISel::SelectAddrSpaceCast(SDNode *N) {
927902
SDValue Src = N->getOperand(0);
928903
AddrSpaceCastSDNode *CastN = cast<AddrSpaceCastSDNode>(N);
@@ -1717,8 +1692,6 @@ bool NVPTXDAGToDAGISel::tryStoreParam(SDNode *N) {
17171692
switch (N->getOpcode()) {
17181693
default:
17191694
llvm_unreachable("Unexpected opcode");
1720-
case NVPTXISD::StoreParamU32:
1721-
case NVPTXISD::StoreParamS32:
17221695
case NVPTXISD::StoreParam:
17231696
NumElts = 1;
17241697
break;
@@ -1796,27 +1769,6 @@ bool NVPTXDAGToDAGISel::tryStoreParam(SDNode *N) {
17961769
}
17971770
}
17981771
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-
}
18201772
}
18211773

18221774
SDVTList RetVTs = CurDAG->getVTList(MVT::Other, MVT::Glue);
@@ -2105,22 +2057,14 @@ static inline bool isAddLike(const SDValue V) {
21052057
// selectBaseADDR - Match a dag node which will serve as the base address for an
21062058
// ADDR operand pair.
21072059
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))
2060+
if (const auto *GA = dyn_cast<GlobalAddressSDNode>(N))
2061+
return DAG->getTargetGlobalAddress(GA->getGlobal(), SDLoc(N),
2062+
GA->getValueType(0), GA->getOffset(),
2063+
GA->getTargetFlags());
2064+
if (const auto *ES = dyn_cast<ExternalSymbolSDNode>(N))
2065+
return DAG->getTargetExternalSymbol(ES->getSymbol(), ES->getValueType(0),
2066+
ES->getTargetFlags());
2067+
if (const auto *FIN = dyn_cast<FrameIndexSDNode>(N))
21242068
return DAG->getTargetFrameIndex(FIN->getIndex(), FIN->getValueType(0));
21252069

21262070
return N;

llvm/lib/Target/NVPTX/NVPTXISelDAGToDAG.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ class LLVM_LIBRARY_VISIBILITY NVPTXDAGToDAGISel : public SelectionDAGISel {
6969
#include "NVPTXGenDAGISel.inc"
7070

7171
void Select(SDNode *N) override;
72-
bool tryIntrinsicNoChain(SDNode *N);
7372
bool tryIntrinsicChain(SDNode *N);
7473
bool tryIntrinsicVoid(SDNode *N);
7574
void SelectTexSurfHandle(SDNode *N);

llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp

Lines changed: 23 additions & 98 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,45 +1052,24 @@ 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)
1067-
MAKE_CASE(NVPTXISD::PrintCall)
1068-
MAKE_CASE(NVPTXISD::PrintConvergentCall)
1069-
MAKE_CASE(NVPTXISD::PrintCallUni)
1070-
MAKE_CASE(NVPTXISD::PrintConvergentCallUni)
1060+
MAKE_CASE(NVPTXISD::CALL)
10711061
MAKE_CASE(NVPTXISD::LoadParam)
10721062
MAKE_CASE(NVPTXISD::LoadParamV2)
10731063
MAKE_CASE(NVPTXISD::LoadParamV4)
10741064
MAKE_CASE(NVPTXISD::StoreParam)
10751065
MAKE_CASE(NVPTXISD::StoreParamV2)
10761066
MAKE_CASE(NVPTXISD::StoreParamV4)
1077-
MAKE_CASE(NVPTXISD::StoreParamS32)
1078-
MAKE_CASE(NVPTXISD::StoreParamU32)
1079-
MAKE_CASE(NVPTXISD::CallArgBegin)
1080-
MAKE_CASE(NVPTXISD::CallArg)
1081-
MAKE_CASE(NVPTXISD::LastCallArg)
1082-
MAKE_CASE(NVPTXISD::CallArgEnd)
1083-
MAKE_CASE(NVPTXISD::CallVoid)
1084-
MAKE_CASE(NVPTXISD::CallVal)
1085-
MAKE_CASE(NVPTXISD::CallSymbol)
1086-
MAKE_CASE(NVPTXISD::Prototype)
10871067
MAKE_CASE(NVPTXISD::MoveParam)
10881068
MAKE_CASE(NVPTXISD::StoreRetval)
10891069
MAKE_CASE(NVPTXISD::StoreRetvalV2)
10901070
MAKE_CASE(NVPTXISD::StoreRetvalV4)
1091-
MAKE_CASE(NVPTXISD::PseudoUseParam)
10921071
MAKE_CASE(NVPTXISD::UNPACK_VECTOR)
10931072
MAKE_CASE(NVPTXISD::BUILD_VECTOR)
1094-
MAKE_CASE(NVPTXISD::RETURN)
1095-
MAKE_CASE(NVPTXISD::CallSeqBegin)
1096-
MAKE_CASE(NVPTXISD::CallSeqEnd)
10971073
MAKE_CASE(NVPTXISD::CallPrototype)
10981074
MAKE_CASE(NVPTXISD::ProxyReg)
10991075
MAKE_CASE(NVPTXISD::LoadV2)
@@ -1115,7 +1091,6 @@ const char *NVPTXTargetLowering::getTargetNodeName(unsigned Opcode) const {
11151091
MAKE_CASE(NVPTXISD::STACKSAVE)
11161092
MAKE_CASE(NVPTXISD::SETP_F16X2)
11171093
MAKE_CASE(NVPTXISD::SETP_BF16X2)
1118-
MAKE_CASE(NVPTXISD::Dummy)
11191094
MAKE_CASE(NVPTXISD::MUL_WIDE_SIGNED)
11201095
MAKE_CASE(NVPTXISD::MUL_WIDE_UNSIGNED)
11211096
MAKE_CASE(NVPTXISD::BrxEnd)
@@ -1189,15 +1164,6 @@ SDValue NVPTXTargetLowering::getSqrtEstimate(SDValue Operand, SelectionDAG &DAG,
11891164
}
11901165
}
11911166

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-
12011167
std::string NVPTXTargetLowering::getPrototype(
12021168
const DataLayout &DL, Type *retTy, const ArgListTy &Args,
12031169
const SmallVectorImpl<ISD::OutputArg> &Outs, MaybeAlign RetAlign,
@@ -1601,9 +1567,9 @@ SDValue NVPTXTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
16011567
? promoteScalarArgumentSize(TypeSize * 8)
16021568
: TypeSize * 8;
16031569

1604-
Chain = DAG.getNode(
1605-
NVPTXISD::DeclareScalarParam, dl, {MVT::Other, MVT::Glue},
1606-
{Chain, GetI32(ArgI), GetI32(PromotedSize), GetI32(0), InGlue});
1570+
Chain =
1571+
DAG.getNode(NVPTXISD::DeclareScalarParam, dl, {MVT::Other, MVT::Glue},
1572+
{Chain, GetI32(ArgI), GetI32(PromotedSize), InGlue});
16071573
}
16081574
InGlue = Chain.getValue(1);
16091575

@@ -1740,16 +1706,13 @@ SDValue NVPTXTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
17401706
const unsigned ResultSize = DL.getTypeAllocSizeInBits(RetTy);
17411707
if (!shouldPassAsArray(RetTy)) {
17421708
const unsigned PromotedResultSize = promoteScalarArgumentSize(ResultSize);
1743-
SDValue DeclareRetOps[] = {Chain, GetI32(1), GetI32(PromotedResultSize),
1744-
GetI32(0), InGlue};
17451709
Chain = DAG.getNode(NVPTXISD::DeclareRet, dl, {MVT::Other, MVT::Glue},
1746-
DeclareRetOps);
1710+
{Chain, GetI32(PromotedResultSize), InGlue});
17471711
InGlue = Chain.getValue(1);
17481712
} else {
1749-
SDValue DeclareRetOps[] = {Chain, GetI32(RetAlign->value()),
1750-
GetI32(ResultSize / 8), GetI32(0), InGlue};
1751-
Chain = DAG.getNode(NVPTXISD::DeclareRetParam, dl,
1752-
{MVT::Other, MVT::Glue}, DeclareRetOps);
1713+
Chain = DAG.getNode(
1714+
NVPTXISD::DeclareRetParam, dl, {MVT::Other, MVT::Glue},
1715+
{Chain, GetI32(RetAlign->value()), GetI32(ResultSize / 8), InGlue});
17531716
InGlue = Chain.getValue(1);
17541717
}
17551718
}
@@ -1800,25 +1763,11 @@ SDValue NVPTXTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
18001763
HasVAArgs ? std::optional(FirstVAArg) : std::nullopt, *CB,
18011764
UniqueCallSite);
18021765
const char *ProtoStr = nvTM->getStrPool().save(Proto).data();
1803-
SDValue ProtoOps[] = {
1804-
Chain,
1805-
DAG.getTargetExternalSymbol(ProtoStr, MVT::i32),
1806-
InGlue,
1807-
};
1808-
Chain = DAG.getNode(NVPTXISD::CallPrototype, dl, {MVT::Other, MVT::Glue},
1809-
ProtoOps);
1766+
Chain = DAG.getNode(
1767+
NVPTXISD::CallPrototype, dl, {MVT::Other, MVT::Glue},
1768+
{Chain, DAG.getTargetExternalSymbol(ProtoStr, MVT::i32), InGlue});
18101769
InGlue = Chain.getValue(1);
18111770
}
1812-
// Op to just print "call"
1813-
SDValue PrintCallOps[] = {Chain, GetI32(Ins.empty() ? 0 : 1), InGlue};
1814-
// We model convergent calls as separate opcodes.
1815-
unsigned Opcode =
1816-
IsIndirectCall ? NVPTXISD::PrintCall : NVPTXISD::PrintCallUni;
1817-
if (CLI.IsConvergent)
1818-
Opcode = Opcode == NVPTXISD::PrintCallUni ? NVPTXISD::PrintConvergentCallUni
1819-
: NVPTXISD::PrintConvergentCall;
1820-
Chain = DAG.getNode(Opcode, dl, {MVT::Other, MVT::Glue}, PrintCallOps);
1821-
InGlue = Chain.getValue(1);
18221771

18231772
if (ConvertToIndirectCall) {
18241773
// Copy the function ptr to a ptx register and use the register to call the
@@ -1832,38 +1781,17 @@ SDValue NVPTXTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
18321781
Callee = DAG.getCopyFromReg(RegCopy, dl, DestReg, DestVT);
18331782
}
18341783

1835-
// Ops to print out the function name
1836-
SDValue CallVoidOps[] = { Chain, Callee, InGlue };
1837-
Chain =
1838-
DAG.getNode(NVPTXISD::CallVoid, dl, {MVT::Other, MVT::Glue}, CallVoidOps);
1839-
InGlue = Chain.getValue(1);
1840-
1841-
// Ops to print out the param list
1842-
SDValue CallArgBeginOps[] = { Chain, InGlue };
1843-
Chain = DAG.getNode(NVPTXISD::CallArgBegin, dl, {MVT::Other, MVT::Glue},
1844-
CallArgBeginOps);
1784+
const unsigned Proto = IsIndirectCall ? UniqueCallSite : 0;
1785+
const unsigned NumArgs =
1786+
std::min<unsigned>(CLI.NumFixedArgs + 1, Args.size());
1787+
/// CALL(Chain, IsConvergent, IsIndirectCall/IsUniform, NumReturns,
1788+
/// NumParams, Callee, Proto, InGlue)
1789+
Chain = DAG.getNode(NVPTXISD::CALL, dl, {MVT::Other, MVT::Glue},
1790+
{Chain, GetI32(CLI.IsConvergent), GetI32(IsIndirectCall),
1791+
GetI32(Ins.empty() ? 0 : 1), GetI32(NumArgs), Callee,
1792+
GetI32(Proto), InGlue});
18451793
InGlue = Chain.getValue(1);
18461794

1847-
const unsigned E = std::min<unsigned>(CLI.NumFixedArgs + 1, Args.size());
1848-
for (const unsigned I : llvm::seq(E)) {
1849-
const unsigned Opcode =
1850-
I == (E - 1) ? NVPTXISD::LastCallArg : NVPTXISD::CallArg;
1851-
SDValue CallArgOps[] = {Chain, GetI32(1), GetI32(I), InGlue};
1852-
Chain = DAG.getNode(Opcode, dl, {MVT::Other, MVT::Glue}, CallArgOps);
1853-
InGlue = Chain.getValue(1);
1854-
}
1855-
SDValue CallArgEndOps[] = {Chain, GetI32(IsIndirectCall ? 0 : 1), InGlue};
1856-
Chain = DAG.getNode(NVPTXISD::CallArgEnd, dl, {MVT::Other, MVT::Glue},
1857-
CallArgEndOps);
1858-
InGlue = Chain.getValue(1);
1859-
1860-
if (IsIndirectCall) {
1861-
SDValue PrototypeOps[] = {Chain, GetI32(UniqueCallSite), InGlue};
1862-
Chain = DAG.getNode(NVPTXISD::Prototype, dl, {MVT::Other, MVT::Glue},
1863-
PrototypeOps);
1864-
InGlue = Chain.getValue(1);
1865-
}
1866-
18671795
SmallVector<SDValue, 16> ProxyRegOps;
18681796
// An item of the vector is filled if the element does not need a ProxyReg
18691797
// operation on it and should be added to InVals as is. ProxyRegOps and
@@ -2919,8 +2847,6 @@ NVPTXTargetLowering::LowerOperation(SDValue Op, SelectionDAG &DAG) const {
29192847
return SDValue();
29202848
case ISD::ADDRSPACECAST:
29212849
return LowerADDRSPACECAST(Op, DAG);
2922-
case ISD::GlobalAddress:
2923-
return LowerGlobalAddress(Op, DAG);
29242850
case ISD::INTRINSIC_W_CHAIN:
29252851
return Op;
29262852
case ISD::INTRINSIC_WO_CHAIN:
@@ -3129,8 +3055,7 @@ SDValue NVPTXTargetLowering::LowerVASTART(SDValue Op, SelectionDAG &DAG) const {
31293055
EVT PtrVT = TLI->getPointerTy(DAG.getDataLayout());
31303056

31313057
// 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);
3058+
SDValue VAReg = getParamSymbol(DAG, /* vararg */ -1, PtrVT);
31343059

31353060
const Value *SV = cast<SrcValueSDNode>(Op.getOperand(2))->getValue();
31363061
return DAG.getStore(Op.getOperand(0), DL, VAReg, Op.getOperand(1),
@@ -3370,7 +3295,7 @@ SDValue NVPTXTargetLowering::getParamSymbol(SelectionDAG &DAG, int idx,
33703295
EVT v) const {
33713296
StringRef SavedStr = nvTM->getStrPool().save(
33723297
getParamName(&DAG.getMachineFunction().getFunction(), idx));
3373-
return DAG.getTargetExternalSymbol(SavedStr.data(), v);
3298+
return DAG.getExternalSymbol(SavedStr.data(), v);
33743299
}
33753300

33763301
SDValue NVPTXTargetLowering::LowerFormalArguments(
@@ -3438,7 +3363,7 @@ SDValue NVPTXTargetLowering::LowerFormalArguments(
34383363

34393364
SDValue P;
34403365
if (isKernelFunction(*F)) {
3441-
P = DAG.getNode(NVPTXISD::Wrapper, dl, ByvalIn.VT, ArgSymbol);
3366+
P = ArgSymbol;
34423367
P.getNode()->setIROrder(Arg.getArgNo() + 1);
34433368
} else {
34443369
P = DAG.getNode(NVPTXISD::MoveParam, dl, ByvalIn.VT, ArgSymbol);

0 commit comments

Comments
 (0)