diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2005-05-14 00:06:06 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2005-05-14 00:06:06 +0000 |
commit | a5681773abf6fe58a713d876718323ffbc43ad78 (patch) | |
tree | e6844cf2cd05d72d42180747f902f7415f9d2d32 /docs/BytecodeFormat.html | |
parent | 10d264571074770660c38950f41a36b7745f41c2 (diff) |
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
Diffstat (limited to 'docs/BytecodeFormat.html')
-rw-r--r-- | docs/BytecodeFormat.html | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/docs/BytecodeFormat.html b/docs/BytecodeFormat.html index 5d5d55fec2..6858becd50 100644 --- a/docs/BytecodeFormat.html +++ b/docs/BytecodeFormat.html @@ -1601,10 +1601,46 @@ single <a href="#uint32_vbr">uint32_vbr</a> as follows:</p> <tr><td>Select</td><td>34</td><td>2</td><td>1.2</td></tr> <tr><td>UserOp1</td><td>35</td><td>1</td><td>1.0</td></tr> <tr><td>UserOp2</td><td>36</td><td>1</td><td>1.0</td></tr> + <tr><td colspan="4"> + <b>Pseudo Instructions<a href="#pi_note">*</a></b> + </td></tr> + <tr><td>Invoke+CC </td><td>56</td><td>5</td><td>1.5</td></tr> + <tr><td>Invoke+FastCC</td><td>57</td><td>5</td><td>1.5</td></tr> + <tr><td>Call+CC</td><td>58</td><td>5</td><td>1.5</td></tr> + <tr><td>Call+FastCC+TailCall</td><td>59</td><td>5</td><td>1.5</td></tr> + <tr><td>Call+FastCC</td><td>60</td><td>5</td><td>1.5</td></tr> + <tr><td>Call+CCC+TailCall</td><td>61</td><td>5</td><td>1.5</td></tr> + <tr><td>Load+Volatile</td><td>62</td><td>3</td><td>1.3</td></tr> + <tr><td>Store+Volatile</td><td>63</td><td>3</td><td>1.3</td></tr> </tbody> </table> </div> +<p><b><a name="pi_note">* Note: </a></b> +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:</p> +<dl> + <dt>CC</dt> + <dd>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) + </dd> + <dt>FastCC</dt> + <dd>This indicates that the Call or Invoke is using the FastCC calling + convention which puts arguments in registers to avoid stack loading.</dd> + <dt>CCC</dt> + <dd>This indicates that the Call or Invoke is using the "C" calling convention + which is specified by the C99 language.</dd> + <dt>TailCall</dt> + <dd>This indicates that the Call or Invoke is a tail call.</dd> +</dl> + <!-- _______________________________________________________________________ --> <div class="doc_subsection"><a name="symtab">Symbol Table</a> </div> <div class="doc_text"> |