1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +01:00

Preview of new calling conventions: cextcc and csretextcc to handle explicit

sign and zero extension in function calls.

llvm-svn: 32764
This commit is contained in:
Reid Spencer 2006-12-28 16:55:55 +00:00
parent c87ce8ee4b
commit b7c7a56ef8

View File

@ -519,9 +519,26 @@ the future:</p>
<dd>This calling convention (the default if no other calling convention is
specified) matches the target C calling conventions. This calling convention
supports varargs function calls and tolerates some mismatch in the declared
prototype and implemented declaration of the function (as does normal C).
prototype and implemented declaration of the function (as does normal C). For
integer arguments less than 32-bits, the value will be sign-extended to
32-bits before the call is made. If zero-extension is required, use the
<tt>cextcc</tt> calling convention.
</dd>
<dt><b>"<tt>cextcc(bitmask)</tt>" - The C with explicit extend calling
convention </b>:</dt>
<dd>This calling convention is exactly like the C calling convention except
that it is parameterized to provide a <tt>bitmask</tt> that indicates how
integer arguments of less than 32-bits should be extended. A zero bit
indicates zero-extension while a 1-bit indicates sign-extension. The least
significant bit always corresponds to the return type of the function. The
bits in the <tt>bitmask</tt> are assigned to the integer parameters of the
function that are smaller than 32-bits. For example, a bitmask of value
5 (0b0101) indicates that the return value is to be sign extended, the first
small integer argument is to be zero extended and the second small integer
argument is to be sign extended.</dd>
<dt><b>"<tt>csretcc</tt>" - The C struct return calling convention</b>:</dt>
<dd>This calling convention matches the target C calling conventions, except
@ -535,6 +552,14 @@ the future:</p>
pointer to a struct as the first argument.
</dd>
<dt><b>"<tt>csretextcc(bitmask)</tt>" - The C struct return with explicit
extend calling convention</b>:</dt>
<dd>This calling convention is exactly like the <tt>csret</tt> calling
convention except that it is parameterized to provide a <tt>bitmask</tt>
that indicates how integer arguments of less than 32-bits should be extended.
A zero bit indicates zero-extension while a 1-bit indicates sign-extension.
</dd>
<dt><b>"<tt>fastcc</tt>" - The fast calling convention</b>:</dt>
<dd>This calling convention attempts to make calls as fast as possible