[clang] [llvm] [NVPTX] Consolidate and cleanup various NVPTXISD nodes (NFC) (PR #145581)
Alex MacLean via cfe-commits
cfe-commits at lists.llvm.org
Tue Jun 24 19:46:51 PDT 2025
================
@@ -2174,23 +2129,40 @@ let mayStore = true in {
[]>;
}
-let isCall=1 in {
- multiclass CALL<string OpcStr, SDNode OpNode> {
- def PrintCallNoRetInst : NVPTXInst<(outs), (ins),
- OpcStr # " ", [(OpNode 0)]>;
- def PrintCallRetInst1 : NVPTXInst<(outs), (ins),
- OpcStr # " (retval0), ", [(OpNode 1)]>;
+/// CALL(Chain, IsConvergent, IsIndirectCall/IsUniform, NumReturns,
+/// NumParams, Callee, Proto, InGlue)
+
+def CallOperand : Operand<i32> { let PrintMethod = "printCallOperand"; }
+
+foreach is_convergent = [0, 1] in {
+ defvar convergent_suffix = !if(is_convergent, "_conv", "");
+
+ let isCall = 1, isConvergent = is_convergent in {
+ def CALL # convergent_suffix :
+ NVPTXInst<(outs), (ins ADDR_base:$addr, CallOperand:$rets, CallOperand:$params, i32imm:$proto),
+ "call${rets:RetList} $addr, (${params:ParamList}), prototype_$proto;", []>;
+
+ def CALL_UNI # convergent_suffix :
+ NVPTXInst<(outs), (ins ADDR_base:$addr, CallOperand:$rets, CallOperand:$params),
+ "call.uni${rets:RetList} $addr, (${params:ParamList});", []>;
}
-}
-defm Call : CALL<"call", PrintCall>;
-defm CallUni : CALL<"call.uni", PrintCallUni>;
+ defvar inst = !cast<NVPTXInst>("CALL" # convergent_suffix);
+ defvar inst_uni = !cast<NVPTXInst>("CALL_UNI" # convergent_suffix);
----------------
AlexMaclean wrote:
I've renamed these to `call_inst` and `call_uni_inst`
https://github.com/llvm/llvm-project/pull/145581
More information about the cfe-commits
mailing list