Enum CallingConvention
Calling Convention for functions
public enum CallingConvention
Fields
AMDGpuComputeShader = 90
Calling convention used for Mesa compute shaders.
AMDGpuEs = 96
Calling convention used for AMDPAL shader stage before geometry shader if geometry is in use.
Either the domain (= tessellation evaluation) shader if tessellation is in use, or otherwise the vertex shader.
AMDGpuGeometryShader = 88
Calling convention used for Mesa geometry shaders.
AMDGpuHullShader = 93
Calling convention used for Mesa hull shaders. (= tessellation control shaders)
AMDGpuKernel = 91
Calling convention for AMDGPU code object kernels.
AMDGpuLS = 95
Calling convention used for AMDPAL vertex shader if tessellation is in use.
AMDGpuPixelShader = 89
Calling convention used for Mesa pixel shaders.
AMDGpuVertexShader = 87
Calling convention used for Mesa vertex shaders.
AVRBuiltIn = 86
Calling convention used for special AVR rtlib functions which have an "optimized" convention to preserve registers.
AVRInterrupt = 84
Used for AVR interrupt routines
AVRSignal = 85
Calling convention used for AVR signal routines
AnyReg = 13
Calling convention for dynamic register based calls (e.g.stackmap and patchpoint intrinsics)
ArmAAPCS = 67
ARM Architecture Procedure Calling Standard calling convention (aka EABI). Soft float variant
ArmAAPCSVfp = 68
Same as ArmAAPCS but uses hard floating point ABI
ArmAPCS = 66
ARM APCS (officially obsolete but some old targets use it)
C = 0
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
ColdCall = 9
Cold calling
CxxFastTls = 17
Calling convention for access functions.
FastCall = 8
Fast calling convention
FirstTargetSpecific = 64
Marker enum that identifies the start of the target specific conventions all values greater than or equal to this value are target specific
GlasgowHaskellCompiler = 10
Glasgow Haskell Compiler
HHVM = 81
Calling convention used by HipHop Virtual Machine (HHVM)
HHVMCCall = 82
HHVM calling convention for invoking C/C++ helpers
HiPE = 11
The High=Performance Erlang convention
IntelOpenCLBuiltIn = 77
Calling conventions for Intel OpenCL built-ins
MSP430BuiltIn = 94
Calling convention used for special MSP430 rtlib functions which have an "optimized" convention using additional registers.
MSP430Interrupt = 69
Calling convention used for MSP430 interrupt routines
MaxCallingConvention = 1023
The highest possible calling convention ID. Must be some 2^k - 1.
PreserveAll = 15
Preserve all calling convention for runtime calls that preserves (almost) all registers.
PreserveMost = 14
Preserve most calling convention for runtime calls that preserves most registers.
PtxDevice = 72
Call to a PTX device function
Passes all arguments in register or parameter space.
PtxKernel = 71
Call to a PTX kernel
Passes all arguments in parameter space
SpirFunction = 75
Calling convention for SPIR non-kernel device functions.
SpirKernel = 76
Calling convention for SPIR kernel functions.
Swift = 16
Swift calling convention
WebKitJS = 12
Webkit JavaScript calling convention
X86FastCall = 65
X86 fast call convention
'fast' analog of X86StdCall. Passes first two arguments in ECX:EDX registers, others - via stack. Callee is responsible for stack cleaning.
X86Interrupt = 83
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 sub-targets.
X86RegCall = 92
Register calling convention used for parameters transfer optimization
X86StdCall = 64
X86 stdcall convention
This calling convention is 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.
X86ThisCall = 70
Similar to X86StdCall, passes first 'this' argument in ECX all others via stack
Callee is responsible for stack cleaning. MSVC uses this by default for C++ instance methods in its ABI
X86VectorCall = 80
MSVC calling convention that passes vectors and vector aggregates in SSE registers
X86x64SysV = 78
The C convention as specified in the x86-64 supplement to the System V ABI, used on most non-Windows systems.
X86x64Win64 = 79
The C convention as implemented on Windows/x86-64 and AArch64.
This convention differs from the more common X86x64SysV convention in a number of ways, most notably in that XMM registers used to pass arguments are shadowed by GPRs, and vice versa.
On AArch64, this is identical to the normal C (AAPCS) calling convention for normal functions, but floats are passed in integer registers to variadic functions