[llvm] [X86] TableGen-erate SDNode descriptions (PR #168421)
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Fri Mar 6 21:05:41 PST 2026
================
@@ -200,77 +250,130 @@ def X86vaargx32 :
SDNode<"X86ISD::VAARG_X32", SDT_X86VAARG,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore,
SDNPMemOperand]>;
+
def X86callseq_start :
SDNode<"ISD::CALLSEQ_START", SDT_X86CallSeqStart,
[SDNPHasChain, SDNPOutGlue]>;
def X86callseq_end :
SDNode<"ISD::CALLSEQ_END", SDT_X86CallSeqEnd,
[SDNPHasChain, SDNPOptInGlue, SDNPOutGlue]>;
+// These operations represent an abstract X86 call
+// instruction, which includes a bunch of information. In particular the
+// operands of these node are:
+//
+// #0 - The incoming token chain
+// #1 - The callee
+// #2 - The number of arg bytes the caller pushes on the stack.
+// #3 - The number of arg bytes the callee pops off the stack.
+// #4 - The value to pass in AL/AX/EAX (optional)
+// #5 - The value to pass in DL/DX/EDX (optional)
+//
+// The result values of these nodes are:
+//
+// #0 - The outgoing token chain
+// #1 - The first register result value (optional)
+// #2 - The second register result value (optional)
+//
def X86call : SDNode<"X86ISD::CALL", SDT_X86Call,
[SDNPHasChain, SDNPOutGlue, SDNPOptInGlue,
SDNPVariadic]>;
+// Pseudo for a OBJC call that gets emitted together with a special
+// marker instruction.
def X86call_rvmarker : SDNode<"X86ISD::CALL_RVMARKER", SDT_X86Call,
[SDNPHasChain, SDNPOutGlue, SDNPOptInGlue,
SDNPVariadic]>;
+// Psuedo for a call to a global address that must be called via a memory
----------------
topperc wrote:
```suggestion
// Pseudo for a call to a global address that must be called via a memory
```
https://github.com/llvm/llvm-project/pull/168421
More information about the llvm-commits
mailing list