@@ -1990,9 +1990,9 @@ defm FSetNE : FSET_FORMAT<setne, CmpNE, CmpNE_FTZ>;
19901990defm FSetNUM : FSET_FORMAT<seto, CmpNUM, CmpNUM_FTZ>;
19911991defm FSetNAN : FSET_FORMAT<setuo, CmpNAN, CmpNAN_FTZ>;
19921992
1993- def SDTDeclareParamProfile :
1993+ def SDTDeclareArrayParam :
19941994 SDTypeProfile<0, 3, [SDTCisVT<0, i32>, SDTCisVT<1, i32>, SDTCisVT<2, i32>]>;
1995- def SDTDeclareScalarParamProfile :
1995+ def SDTDeclareScalarParam :
19961996 SDTypeProfile<0, 2, [SDTCisVT<0, i32>, SDTCisVT<1, i32>]>;
19971997def SDTLoadParamProfile : SDTypeProfile<1, 2, [SDTCisInt<1>, SDTCisInt<2>]>;
19981998def SDTLoadParamV2Profile : SDTypeProfile<2, 2, [SDTCisSameAs<0, 1>, SDTCisInt<2>, SDTCisInt<3>]>;
@@ -2001,22 +2001,17 @@ def SDTStoreParamProfile : SDTypeProfile<0, 3, [SDTCisInt<0>, SDTCisInt<1>]>;
20012001def SDTStoreParamV2Profile : SDTypeProfile<0, 4, [SDTCisInt<0>, SDTCisInt<1>]>;
20022002def SDTStoreParamV4Profile : SDTypeProfile<0, 6, [SDTCisInt<0>, SDTCisInt<1>]>;
20032003def SDTMoveParamProfile : SDTypeProfile<1, 1, [SDTCisInt<0>, SDTCisSameAs<0, 1>]>;
2004- def SDTProxyRegProfile : SDTypeProfile<1, 1, []>;
20052004
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,
20152010 [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,
20192013 [SDNPHasChain, SDNPOutGlue, SDNPInGlue, SDNPSideEffect]>;
2014+
20202015def LoadParam :
20212016 SDNode<"NVPTXISD::LoadParam", SDTLoadParamProfile,
20222017 [SDNPHasChain, SDNPMayLoad, SDNPOutGlue, SDNPInGlue]>;
@@ -2037,9 +2032,8 @@ def StoreParamV4 :
20372032 [SDNPHasChain, SDNPOutGlue, SDNPInGlue, SDNPSideEffect]>;
20382033def MoveParam :
20392034 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]>;
20432037
20442038 /// CALL(Chain, IsConvergent, IsIndirectCall/IsUniform, NumReturns,
20452039 /// NumParams, Callee, Proto, InGlue)
@@ -2188,23 +2182,17 @@ defm StoreParamV2F64 : StoreParamV2Inst<B64, f64imm, ".b64">;
21882182
21892183defm StoreParamV4F32 : StoreParamV4Inst<B32, f32imm, ".b32">;
21902184
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 :
22052189 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)>;
22082196
22092197foreach t = [I32RT, I64RT] in {
22102198 defvar inst_name = "MOV" # t.Size # "_PARAM";
@@ -2217,7 +2205,7 @@ multiclass ProxyRegInst<string SzStr, NVPTXRegClass rc> {
22172205 def NAME : BasicNVPTXInst<(outs rc:$dst), (ins rc:$src),
22182206 "mov." # SzStr>;
22192207 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)>;
22212209}
22222210
22232211defm ProxyRegB1 : ProxyRegInst<"pred", B1>;
0 commit comments