@@ -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 SDTDeclareParamProfile :
1993
+ def SDTDeclareArrayParam :
1994
1994
SDTypeProfile<0, 3, [SDTCisVT<0, i32>, SDTCisVT<1, i32>, SDTCisVT<2, i32>]>;
1995
- def SDTDeclareScalarParamProfile :
1995
+ def SDTDeclareScalarParam :
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,22 +2001,17 @@ 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, []>;
2005
2004
2006
- def DeclareParam :
2007
- SDNode<"NVPTXISD::DeclareParam", SDTDeclareParamProfile,
2008
- [SDNPHasChain, SDNPOutGlue, SDNPInGlue, SDNPSideEffect]>;
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>]>,
2005
+ def SDTProxyReg : SDTypeProfile<1, 1, [SDTCisSameAs<0, 1>]>;
2006
+
2007
+
2008
+ def declare_array_param :
2009
+ SDNode<"NVPTXISD::DeclareArrayParam", SDTDeclareArrayParam,
2015
2010
[SDNPHasChain, SDNPOutGlue, SDNPInGlue, SDNPSideEffect]>;
2016
- def DeclareRet :
2017
- SDNode<"NVPTXISD::DeclareRet",
2018
- SDTypeProfile<0, 1, [SDTCisVT<0, i32>]>,
2011
+ def declare_scalar_param :
2012
+ SDNode<"NVPTXISD::DeclareScalarParam", SDTDeclareScalarParam,
2019
2013
[SDNPHasChain, SDNPOutGlue, SDNPInGlue, SDNPSideEffect]>;
2014
+
2020
2015
def LoadParam :
2021
2016
SDNode<"NVPTXISD::LoadParam", SDTLoadParamProfile,
2022
2017
[SDNPHasChain, SDNPMayLoad, SDNPOutGlue, SDNPInGlue]>;
@@ -2037,9 +2032,8 @@ def StoreParamV4 :
2037
2032
[SDNPHasChain, SDNPOutGlue, SDNPInGlue, SDNPSideEffect]>;
2038
2033
def MoveParam :
2039
2034
SDNode<"NVPTXISD::MoveParam", SDTMoveParamProfile, []>;
2040
- def ProxyReg :
2041
- SDNode<"NVPTXISD::ProxyReg", SDTProxyRegProfile,
2042
- [SDNPHasChain, SDNPOutGlue, SDNPInGlue, SDNPSideEffect]>;
2035
+ def proxy_reg :
2036
+ SDNode<"NVPTXISD::ProxyReg", SDTProxyReg, [SDNPHasChain]>;
2043
2037
2044
2038
/// CALL(Chain, IsConvergent, IsIndirectCall/IsUniform, NumReturns,
2045
2039
/// NumParams, Callee, Proto, InGlue)
@@ -2188,23 +2182,17 @@ defm StoreParamV2F64 : StoreParamV2Inst<B64, f64imm, ".b64">;
2188
2182
2189
2183
defm StoreParamV4F32 : StoreParamV4Inst<B32, f32imm, ".b32">;
2190
2184
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 :
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 :
2205
2189
NVPTXInst<(outs), (ins i32imm:$a, i32imm:$size),
2206
- ".param .b$size param$a;",
2207
- [(DeclareScalarParam imm:$a, imm:$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)>;
2208
2196
2209
2197
foreach t = [I32RT, I64RT] in {
2210
2198
defvar inst_name = "MOV" # t.Size # "_PARAM";
@@ -2217,7 +2205,7 @@ multiclass ProxyRegInst<string SzStr, NVPTXRegClass rc> {
2217
2205
def NAME : BasicNVPTXInst<(outs rc:$dst), (ins rc:$src),
2218
2206
"mov." # SzStr>;
2219
2207
foreach vt = rc.RegTypes in
2220
- def : Pat<(vt (ProxyReg vt:$src)), (!cast<NVPTXInst>(NAME) $src)>;
2208
+ def : Pat<(vt (proxy_reg vt:$src)), (!cast<NVPTXInst>(NAME) $src)>;
2221
2209
}
2222
2210
2223
2211
defm ProxyRegB1 : ProxyRegInst<"pred", B1>;
0 commit comments