Skip to content

Commit aa5b0e8

Browse files
committed
Revert "[NVPTX] Further cleanup call isel (llvm#146411)"
This reverts commit 475cd8d.
1 parent 965db37 commit aa5b0e8

16 files changed

+2090
-2087
lines changed

llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp

Lines changed: 153 additions & 150 deletions
Large diffs are not rendered by default.

llvm/lib/Target/NVPTX/NVPTXISelLowering.h

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,10 @@ enum NodeType : unsigned {
2525
// Start the numbering from where ISD NodeType finishes.
2626
FIRST_NUMBER = ISD::BUILTIN_OP_END,
2727
RET_GLUE,
28-
29-
/// These nodes represent a parameter declaration. In PTX this will look like:
30-
/// .param .align 16 .b8 param0[1024];
31-
/// .param .b32 retval0;
32-
///
33-
/// DeclareArrayParam(Chain, Externalsym, Align, Size, Glue)
34-
/// DeclareScalarParam(Chain, Externalsym, Size, Glue)
28+
DeclareParam,
3529
DeclareScalarParam,
36-
DeclareArrayParam,
30+
DeclareRetParam,
31+
DeclareRet,
3732

3833
/// This node represents a PTX call instruction. It's operands are as follows:
3934
///
@@ -179,6 +174,7 @@ class NVPTXTargetLowering : public TargetLowering {
179174

180175
std::string getPrototype(const DataLayout &DL, Type *, const ArgListTy &,
181176
const SmallVectorImpl<ISD::OutputArg> &,
177+
MaybeAlign RetAlign,
182178
std::optional<unsigned> FirstVAArg,
183179
const CallBase &CB, unsigned UniqueCallSite) const;
184180

@@ -276,8 +272,8 @@ class NVPTXTargetLowering : public TargetLowering {
276272
const NVPTXSubtarget &STI; // cache the subtarget here
277273
mutable unsigned GlobalUniqueCallSite;
278274

279-
SDValue getParamSymbol(SelectionDAG &DAG, int I, EVT T) const;
280-
SDValue getCallParamSymbol(SelectionDAG &DAG, int I, EVT T) const;
275+
SDValue getParamSymbol(SelectionDAG &DAG, int idx, EVT) const;
276+
281277
SDValue LowerADDRSPACECAST(SDValue Op, SelectionDAG &DAG) const;
282278
SDValue LowerBITCAST(SDValue Op, SelectionDAG &DAG) const;
283279

llvm/lib/Target/NVPTX/NVPTXInstrInfo.td

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1990,9 +1990,9 @@ defm FSetNE : FSET_FORMAT<setne, CmpNE, CmpNE_FTZ>;
19901990
defm FSetNUM : FSET_FORMAT<seto, CmpNUM, CmpNUM_FTZ>;
19911991
defm FSetNAN : FSET_FORMAT<setuo, CmpNAN, CmpNAN_FTZ>;
19921992

1993-
def SDTDeclareArrayParam :
1993+
def SDTDeclareParamProfile :
19941994
SDTypeProfile<0, 3, [SDTCisVT<0, i32>, SDTCisVT<1, i32>, SDTCisVT<2, i32>]>;
1995-
def SDTDeclareScalarParam :
1995+
def SDTDeclareScalarParamProfile :
19961996
SDTypeProfile<0, 2, [SDTCisVT<0, i32>, SDTCisVT<1, i32>]>;
19971997
def SDTLoadParamProfile : SDTypeProfile<1, 2, [SDTCisInt<1>, SDTCisInt<2>]>;
19981998
def SDTLoadParamV2Profile : SDTypeProfile<2, 2, [SDTCisSameAs<0, 1>, SDTCisInt<2>, SDTCisInt<3>]>;
@@ -2001,17 +2001,22 @@ def SDTStoreParamProfile : SDTypeProfile<0, 3, [SDTCisInt<0>, SDTCisInt<1>]>;
20012001
def SDTStoreParamV2Profile : SDTypeProfile<0, 4, [SDTCisInt<0>, SDTCisInt<1>]>;
20022002
def SDTStoreParamV4Profile : SDTypeProfile<0, 6, [SDTCisInt<0>, SDTCisInt<1>]>;
20032003
def SDTMoveParamProfile : SDTypeProfile<1, 1, [SDTCisInt<0>, SDTCisSameAs<0, 1>]>;
2004+
def SDTProxyRegProfile : SDTypeProfile<1, 1, []>;
20042005

2005-
def SDTProxyReg : SDTypeProfile<1, 1, [SDTCisSameAs<0, 1>]>;
2006-
2007-
2008-
def declare_array_param :
2009-
SDNode<"NVPTXISD::DeclareArrayParam", SDTDeclareArrayParam,
2006+
def DeclareParam :
2007+
SDNode<"NVPTXISD::DeclareParam", SDTDeclareParamProfile,
20102008
[SDNPHasChain, SDNPOutGlue, SDNPInGlue, SDNPSideEffect]>;
2011-
def declare_scalar_param :
2012-
SDNode<"NVPTXISD::DeclareScalarParam", SDTDeclareScalarParam,
2009+
def DeclareScalarParam :
2010+
SDNode<"NVPTXISD::DeclareScalarParam", SDTDeclareScalarParamProfile,
2011+
[SDNPHasChain, SDNPOutGlue, SDNPInGlue, SDNPSideEffect]>;
2012+
def DeclareRetParam :
2013+
SDNode<"NVPTXISD::DeclareRetParam",
2014+
SDTypeProfile<0, 2, [SDTCisVT<0, i32>, SDTCisVT<1, i32>]>,
2015+
[SDNPHasChain, SDNPOutGlue, SDNPInGlue, SDNPSideEffect]>;
2016+
def DeclareRet :
2017+
SDNode<"NVPTXISD::DeclareRet",
2018+
SDTypeProfile<0, 1, [SDTCisVT<0, i32>]>,
20132019
[SDNPHasChain, SDNPOutGlue, SDNPInGlue, SDNPSideEffect]>;
2014-
20152020
def LoadParam :
20162021
SDNode<"NVPTXISD::LoadParam", SDTLoadParamProfile,
20172022
[SDNPHasChain, SDNPMayLoad, SDNPOutGlue, SDNPInGlue]>;
@@ -2032,8 +2037,9 @@ def StoreParamV4 :
20322037
[SDNPHasChain, SDNPOutGlue, SDNPInGlue, SDNPSideEffect]>;
20332038
def MoveParam :
20342039
SDNode<"NVPTXISD::MoveParam", SDTMoveParamProfile, []>;
2035-
def proxy_reg :
2036-
SDNode<"NVPTXISD::ProxyReg", SDTProxyReg, [SDNPHasChain]>;
2040+
def ProxyReg :
2041+
SDNode<"NVPTXISD::ProxyReg", SDTProxyRegProfile,
2042+
[SDNPHasChain, SDNPOutGlue, SDNPInGlue, SDNPSideEffect]>;
20372043

20382044
/// CALL(Chain, IsConvergent, IsIndirectCall/IsUniform, NumReturns,
20392045
/// NumParams, Callee, Proto, InGlue)
@@ -2182,17 +2188,23 @@ defm StoreParamV2F64 : StoreParamV2Inst<B64, f64imm, ".b64">;
21822188

21832189
defm StoreParamV4F32 : StoreParamV4Inst<B32, f32imm, ".b32">;
21842190

2185-
def DECLARE_PARAM_array :
2186-
NVPTXInst<(outs), (ins i32imm:$a, i32imm:$align, i32imm:$size),
2187-
".param .align $align .b8 \t$a[$size];", []>;
2188-
def DECLARE_PARAM_scalar :
2191+
def DeclareRetMemInst :
2192+
NVPTXInst<(outs), (ins i32imm:$align, i32imm:$size),
2193+
".param .align $align .b8 retval0[$size];",
2194+
[(DeclareRetParam imm:$align, imm:$size)]>;
2195+
def DeclareRetScalarInst :
2196+
NVPTXInst<(outs), (ins i32imm:$size),
2197+
".param .b$size retval0;",
2198+
[(DeclareRet imm:$size)]>;
2199+
2200+
def DeclareParamInst :
2201+
NVPTXInst<(outs), (ins i32imm:$align, i32imm:$a, i32imm:$size),
2202+
".param .align $align .b8 param$a[$size];",
2203+
[(DeclareParam imm:$align, imm:$a, imm:$size)]>;
2204+
def DeclareScalarParamInst :
21892205
NVPTXInst<(outs), (ins i32imm:$a, i32imm:$size),
2190-
".param .b$size \t$a;", []>;
2191-
2192-
def : Pat<(declare_array_param externalsym:$a, imm:$align, imm:$size),
2193-
(DECLARE_PARAM_array (to_texternsym $a), imm:$align, imm:$size)>;
2194-
def : Pat<(declare_scalar_param externalsym:$a, imm:$size),
2195-
(DECLARE_PARAM_scalar (to_texternsym $a), imm:$size)>;
2206+
".param .b$size param$a;",
2207+
[(DeclareScalarParam imm:$a, imm:$size)]>;
21962208

21972209
foreach t = [I32RT, I64RT] in {
21982210
defvar inst_name = "MOV" # t.Size # "_PARAM";
@@ -2205,7 +2217,7 @@ multiclass ProxyRegInst<string SzStr, NVPTXRegClass rc> {
22052217
def NAME : BasicNVPTXInst<(outs rc:$dst), (ins rc:$src),
22062218
"mov." # SzStr>;
22072219
foreach vt = rc.RegTypes in
2208-
def : Pat<(vt (proxy_reg vt:$src)), (!cast<NVPTXInst>(NAME) $src)>;
2220+
def : Pat<(vt (ProxyReg vt:$src)), (!cast<NVPTXInst>(NAME) $src)>;
22092221
}
22102222

22112223
defm ProxyRegB1 : ProxyRegInst<"pred", B1>;

0 commit comments

Comments
 (0)