From a5681773abf6fe58a713d876718323ffbc43ad78 Mon Sep 17 00:00:00 2001
From: Reid Spencer
Date: Sat, 14 May 2005 00:06:06 +0000
Subject: [PATCH] Document the pseudo-instruction opcodes in opcode range
56-63. These are used to support things like volatile load/store, tail calls,
and calling conventions without reserving space for the additional
information.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21996 91177308-0d34-0410-b5e6-96231b3b80d8
---
docs/BytecodeFormat.html | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)
diff --git a/docs/BytecodeFormat.html b/docs/BytecodeFormat.html
index 5d5d55fec29..6858becd504 100644
--- a/docs/BytecodeFormat.html
+++ b/docs/BytecodeFormat.html
@@ -1601,10 +1601,46 @@ single uint32_vbr as follows:
Select | 34 | 2 | 1.2 |
UserOp1 | 35 | 1 | 1.0 |
UserOp2 | 36 | 1 | 1.0 |
+
+ Pseudo Instructions*
+ |
+ Invoke+CC | 56 | 5 | 1.5 |
+ Invoke+FastCC | 57 | 5 | 1.5 |
+ Call+CC | 58 | 5 | 1.5 |
+ Call+FastCC+TailCall | 59 | 5 | 1.5 |
+ Call+FastCC | 60 | 5 | 1.5 |
+ Call+CCC+TailCall | 61 | 5 | 1.5 |
+ Load+Volatile | 62 | 3 | 1.3 |
+ Store+Volatile | 63 | 3 | 1.3 |
+* Note:
+These aren't really opcodes from an LLVM language prespeective. They encode
+information into other opcodes without reserving space for that information.
+For example, opcode=63 is a Volatile Store. The opcode for this
+instruction is 25 (Store) but we encode it as 63 to indicate that is a Volatile
+Store. The same is done for the calling conventions and tail calls.
+In each of these entries in range 56-63, the opcode is documented as the base
+opcode (Invoke, Call, Store) plus some set of modifiers, as follows:
+
+ - CC
+ - This means a generic (user defined) calling convention number is specified
+ in a VBR that follows the opcode immediately. This is used when the calling
+ convention for the Invoke or the Call instruction is not one of the LLVM
+ standard ones (like FastCC or CCC)
+
+ - FastCC
+ - This indicates that the Call or Invoke is using the FastCC calling
+ convention which puts arguments in registers to avoid stack loading.
+ - CCC
+ - This indicates that the Call or Invoke is using the "C" calling convention
+ which is specified by the C99 language.
+ - TailCall
+ - This indicates that the Call or Invoke is a tail call.
+
+
--
2.34.1