|LLVM IR allows to use arbitrary numbers as calling convention identifiers. |
C = 0, Fast = 8, Cold = 9, GHC = 10,
HiPE = 11, WebKit_JS = 12, AnyReg = 13, PreserveMost = 14,
PreserveAll = 15, Swift = 16, CXX_FAST_TLS = 17, FirstTargetCC = 64,
X86_StdCall = 64, X86_FastCall = 65, ARM_APCS = 66, ARM_AAPCS = 67,
ARM_AAPCS_VFP = 68, MSP430_INTR = 69, X86_ThisCall = 70, PTX_Kernel = 71,
PTX_Device = 72, SPIR_FUNC = 75, SPIR_KERNEL = 76, Intel_OCL_BI = 77,
X86_64_SysV = 78, X86_64_Win64 = 79, X86_VectorCall = 80, HHVM = 81,
HHVM_C = 82, X86_INTR = 83, AVR_INTR = 84, AVR_SIGNAL = 85,
AVR_BUILTIN = 86, MaxID = 1023
|A set of enums which specify the assigned numeric values for known llvm calling conventions. More...|
CallingConv Namespace - This namespace contains an enum with a value for the well-known calling conventions.
A set of enums which specify the assigned numeric values for known llvm calling conventions.
LLVM Calling Convention Representation
C - The default llvm calling convention, compatible with C.
This convention is the only calling convention that supports varargs calls. As with typical C calling conventions, the callee/caller have to tolerate certain amounts of prototype mismatch.
Fast - This calling convention attempts to make calls as fast as possible (e.g.
by passing things in registers).
X86_StdCall - stdcall is the calling conventions mostly used by the Win32 API.
It is basically the same as the C convention with the difference in that the callee is responsible for popping the arguments from the stack.
X86_FastCall - 'fast' analog of X86_StdCall.
Passes first two arguments in ECX:EDX registers, others - via stack. Callee is responsible for stack cleaning.
ARM_APCS - ARM Procedure Calling Standard calling convention (obsolete, but still used on some targets).
ARM_AAPCS - ARM Architecture Procedure Calling Standard calling convention (aka EABI).
Soft float variant.
ARM_AAPCS_VFP - Same as ARM_AAPCS, but uses hard floating point ABI.
MSP430_INTR - Calling convention used for MSP430 interrupt routines.
X86_ThisCall - Similar to X86_StdCall.
Passes first argument in ECX, others via stack. Callee is responsible for stack cleaning. MSVC uses this by default for methods in its ABI.
PTX_Kernel - Call to a PTX kernel.
Passes all arguments in parameter space.
PTX_Device - Call to a PTX device function.
Passes all arguments in register or parameter space.
SPIR_FUNC - Calling convention for SPIR non-kernel device functions.
No lowering or expansion of arguments. Structures are passed as a pointer to a struct with the byval attribute. Functions can only call SPIR_FUNC and SPIR_KERNEL functions. Functions can only have zero or one return values. Variable arguments are not allowed, except for printf. How arguments/return values are lowered are not specified. Functions are only visible to the devices.
SPIR_KERNEL - Calling convention for SPIR kernel functions.
Inherits the restrictions of SPIR_FUNC, except Cannot have non-void return values. Cannot have variable arguments. Can also be called by the host. Is externally visible.
Intel_OCL_BI - Calling conventions for Intel OpenCL built-ins.
The C convention as specified in the x86-64 supplement to the System V ABI, used on most non-Windows systems.
The C convention as implemented on Windows/x86-64.
This convention differs from the more common
MSVC calling convention that passes vectors and vector aggregates in SSE registers.
Calling convention used by HipHop Virtual Machine (HHVM) to perform calls to and from translation cache, and for calling PHP functions.
HHVM calling convention supports tail/sibling call elimination.
HHVM calling convention for invoking C/C++ helpers.
X86_INTR - x86 hardware interrupt context.
Callee may take one or two parameters, where the 1st represents a pointer to hardware context frame and the 2nd represents hardware error code, the presence of the later depends on the interrupt vector taken. Valid for both 32- and 64-bit subtargets.
Used for AVR interrupt routines.
Calling convention used for AVR signal routines.
Calling convention used for special AVR rtlib functions which have an "optimized" convention to preserve registers.
The highest possible calling convention ID. Must be some 2^k - 1.