@@ -1990,9 +1990,9 @@ defm FSetNE : FSET_FORMAT<setne, CmpNE, CmpNE_FTZ>;
1990
1990
defm FSetNUM : FSET_FORMAT<seto, CmpNUM, CmpNUM_FTZ>;
1991
1991
defm FSetNAN : FSET_FORMAT<setuo, CmpNAN, CmpNAN_FTZ>;
1992
1992
1993
- def SDTDeclareArrayParam :
1993
+ def SDTDeclareParamProfile :
1994
1994
SDTypeProfile<0, 3, [SDTCisVT<0, i32>, SDTCisVT<1, i32>, SDTCisVT<2, i32>]>;
1995
- def SDTDeclareScalarParam :
1995
+ def SDTDeclareScalarParamProfile :
1996
1996
SDTypeProfile<0, 2, [SDTCisVT<0, i32>, SDTCisVT<1, i32>]>;
1997
1997
def SDTLoadParamProfile : SDTypeProfile<1, 2, [SDTCisInt<1>, SDTCisInt<2>]>;
1998
1998
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>]>;
2001
2001
def SDTStoreParamV2Profile : SDTypeProfile<0, 4, [SDTCisInt<0>, SDTCisInt<1>]>;
2002
2002
def SDTStoreParamV4Profile : SDTypeProfile<0, 6, [SDTCisInt<0>, SDTCisInt<1>]>;
2003
2003
def SDTMoveParamProfile : SDTypeProfile<1, 1, [SDTCisInt<0>, SDTCisSameAs<0, 1>]>;
2004
+ def SDTProxyRegProfile : SDTypeProfile<1, 1, []>;
2004
2005
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,
2010
2008
[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>]>,
2013
2019
[SDNPHasChain, SDNPOutGlue, SDNPInGlue, SDNPSideEffect]>;
2014
-
2015
2020
def LoadParam :
2016
2021
SDNode<"NVPTXISD::LoadParam", SDTLoadParamProfile,
2017
2022
[SDNPHasChain, SDNPMayLoad, SDNPOutGlue, SDNPInGlue]>;
@@ -2032,8 +2037,9 @@ def StoreParamV4 :
2032
2037
[SDNPHasChain, SDNPOutGlue, SDNPInGlue, SDNPSideEffect]>;
2033
2038
def MoveParam :
2034
2039
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]>;
2037
2043
2038
2044
/// CALL(Chain, IsConvergent, IsIndirectCall/IsUniform, NumReturns,
2039
2045
/// NumParams, Callee, Proto, InGlue)
@@ -2182,17 +2188,23 @@ defm StoreParamV2F64 : StoreParamV2Inst<B64, f64imm, ".b64">;
2182
2188
2183
2189
defm StoreParamV4F32 : StoreParamV4Inst<B32, f32imm, ".b32">;
2184
2190
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 :
2189
2205
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)]>;
2196
2208
2197
2209
foreach t = [I32RT, I64RT] in {
2198
2210
defvar inst_name = "MOV" # t.Size # "_PARAM";
@@ -2205,7 +2217,7 @@ multiclass ProxyRegInst<string SzStr, NVPTXRegClass rc> {
2205
2217
def NAME : BasicNVPTXInst<(outs rc:$dst), (ins rc:$src),
2206
2218
"mov." # SzStr>;
2207
2219
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)>;
2209
2221
}
2210
2222
2211
2223
defm ProxyRegB1 : ProxyRegInst<"pred", B1>;
0 commit comments