LLVM: include/llvm/IR/CallingConv.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13#ifndef LLVM_IR_CALLINGCONV_H
14#define LLVM_IR_CALLINGCONV_H
15
16namespace llvm {
17
18
19
20
22
23
25
26
27
28
29 enum {
30
31
32
33
35
36
37
38
39
40
42
43
44
45
46
48
49
51
52
54
55
56
57
58
59
61
62
64
65
67
68
70
71
73
74
75
77
78
79
80
81
83
84
85
86
88
89
91
92
93
95
96
97
98
100
101
102
104
105
106
108
109
110
112
113
115
116
118
119
120
121
123
124
126
127
128
130
131
132
133
134
135
136
137
139
140
141
142
143
145
146
148
149
150
152
153
154
155
156
157
158
160
161
162
164
165
168
169
170
171
172
174
175
177
178
180
181
182
184
185
186
187
189
190
192
193
195
196
198
199
201
202
204
205
207
208
209
211
212
214
215
216
217
219
220
222
223
225
226
227
228
230
231
233
234
236
237
239
240
242
243
244
246
247
248
250
251
253
254
256
257
258
259
261
262
263
264
266
267
269
270
272
273
286
287
289
290
292
293
294
296
297
299
300
302 };
303
304}
305
306
307
309 switch (CC) {
310
311
314
316
326 return false;
327 default:
328 return true;
329 }
330}
331
332}
333
334#endif
CallingConv Namespace - This namespace contains an enum with a value for the well-known calling conve...
Definition CallingConv.h:21
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
Definition CallingConv.h:24
@ ARM64EC_Thunk_Native
Calling convention used in the ARM64EC ABI to implement calls between ARM64 code and thunks.
Definition CallingConv.h:265
@ AArch64_VectorCall
Used between AArch64 Advanced SIMD functions.
Definition CallingConv.h:221
@ X86_64_SysV
The C convention as specified in the x86-64 supplement to the System V ABI, used on most non-Windows ...
Definition CallingConv.h:151
@ RISCV_VLSCall_2048
Definition CallingConv.h:280
@ RISCV_VectorCall
Calling convention used for RISC-V V-extension.
Definition CallingConv.h:268
@ AMDGPU_CS
Used for Mesa/AMDPAL compute shaders.
Definition CallingConv.h:197
@ M68k_INTR
Used for M68k interrupt routines.
Definition CallingConv.h:235
@ AMDGPU_VS
Used for Mesa vertex shaders, or AMDPAL last shader stage before rasterization (vertex shader if tess...
Definition CallingConv.h:188
@ RISCV_VLSCall_65536
Definition CallingConv.h:285
@ MSP430_BUILTIN
Used for special MSP430 rtlib functions which have an "optimized" convention using additional registe...
Definition CallingConv.h:210
@ AVR_SIGNAL
Used for AVR signal routines.
Definition CallingConv.h:179
@ HiPE
Used by the High-Performance Erlang Compiler (HiPE).
Definition CallingConv.h:53
@ Swift
Calling convention for Swift.
Definition CallingConv.h:69
@ AMDGPU_KERNEL
Used for AMDGPU code object kernels.
Definition CallingConv.h:200
@ MaxID
The highest possible ID. Must be some 2^k - 1.
Definition CallingConv.h:301
@ RISCV_VLSCall_256
Definition CallingConv.h:277
@ AArch64_SVE_VectorCall
Used between AArch64 SVE functions.
Definition CallingConv.h:224
@ ARM_APCS
ARM Procedure Calling Standard (obsolete, but still used on some targets).
Definition CallingConv.h:107
@ CHERIoT_CompartmentCall
Calling convention used for CHERIoT when crossing a protection boundary.
Definition CallingConv.h:291
@ CFGuard_Check
Special calling convention on Windows for calling the Control Guard Check ICall funtion.
Definition CallingConv.h:82
@ RISCV_VLSCall_16384
Definition CallingConv.h:283
@ AVR_INTR
Used for AVR interrupt routines.
Definition CallingConv.h:176
@ RISCV_VLSCall_8192
Definition CallingConv.h:282
@ PreserveMost
Used for runtime calls that preserves most registers.
Definition CallingConv.h:63
@ AnyReg
OBSOLETED - Used for stack based JavaScript calls.
Definition CallingConv.h:60
@ AMDGPU_Gfx
Used for AMD graphics targets.
Definition CallingConv.h:232
@ DUMMY_HHVM
Placeholders for HHVM calling conventions (deprecated, removed).
Definition CallingConv.h:166
@ AMDGPU_CS_ChainPreserve
Used on AMDGPUs to give the middle-end more control over argument placement.
Definition CallingConv.h:249
@ RISCV_VLSCall_32768
Definition CallingConv.h:284
@ RISCV_VLSCall_512
Definition CallingConv.h:278
@ AMDGPU_HS
Used for Mesa/AMDPAL hull shaders (= tessellation control shaders).
Definition CallingConv.h:206
@ ARM_AAPCS
ARM Architecture Procedure Calling Standard calling convention (aka EABI).
Definition CallingConv.h:111
@ CHERIoT_CompartmentCallee
Calling convention used for the callee of CHERIoT_CompartmentCall.
Definition CallingConv.h:295
@ RISCV_VLSCall_128
Definition CallingConv.h:276
@ RISCV_VLSCall_1024
Definition CallingConv.h:279
@ AMDGPU_GS
Used for Mesa/AMDPAL geometry shaders.
Definition CallingConv.h:191
@ AArch64_SME_ABI_Support_Routines_PreserveMost_From_X2
Preserve X2-X15, X19-X29, SP, Z0-Z31, P0-P15.
Definition CallingConv.h:241
@ CHERIoT_LibraryCall
Calling convention used for CHERIoT for cross-library calls to a stateless compartment.
Definition CallingConv.h:298
@ CXX_FAST_TLS
Used for access functions.
Definition CallingConv.h:72
@ X86_INTR
x86 hardware interrupt context.
Definition CallingConv.h:173
@ RISCV_VLSCall_32
Calling convention used for RISC-V V-extension fixed vectors.
Definition CallingConv.h:274
@ AArch64_SME_ABI_Support_Routines_PreserveMost_From_X0
Preserve X0-X13, X19-X29, SP, Z0-Z31, P0-P15.
Definition CallingConv.h:238
@ WASM_EmscriptenInvoke
For emscripten __invoke_* functions.
Definition CallingConv.h:229
@ AMDGPU_CS_Chain
Used on AMDGPUs to give the middle-end more control over argument placement.
Definition CallingConv.h:245
@ AVR_BUILTIN
Used for special AVR rtlib functions which have an "optimized" convention to preserve registers.
Definition CallingConv.h:183
@ GHC
Used by the Glasgow Haskell Compiler (GHC).
Definition CallingConv.h:50
@ AMDGPU_PS
Used for Mesa/AMDPAL pixel shaders.
Definition CallingConv.h:194
@ Cold
Attempts to make code in the caller as efficient as possible under the assumption that the call is no...
Definition CallingConv.h:47
@ AArch64_SME_ABI_Support_Routines_PreserveMost_From_X1
Preserve X1-X15, X19-X29, SP, Z0-Z31, P0-P15.
Definition CallingConv.h:271
@ X86_ThisCall
Similar to X86_StdCall.
Definition CallingConv.h:122
@ PTX_Device
Call to a PTX device function.
Definition CallingConv.h:129
@ SPIR_KERNEL
Used for SPIR kernel functions.
Definition CallingConv.h:144
@ PreserveAll
Used for runtime calls that preserves (almost) all registers.
Definition CallingConv.h:66
@ X86_StdCall
stdcall is mostly used by the Win32 API.
Definition CallingConv.h:99
@ FirstTargetCC
This is the start of the target-specific calling conventions, e.g.
Definition CallingConv.h:94
@ SPIR_FUNC
Used for SPIR non-kernel device functions.
Definition CallingConv.h:138
@ Fast
Attempts to make calls as fast as possible (e.g.
Definition CallingConv.h:41
@ MSP430_INTR
Used for MSP430 interrupt routines.
Definition CallingConv.h:117
@ AMDGPU_Gfx_WholeWave
Definition CallingConv.h:288
@ RISCV_VLSCall_4096
Definition CallingConv.h:281
@ X86_VectorCall
MSVC calling convention that passes vectors and vector aggregates in SSE registers.
Definition CallingConv.h:163
@ Intel_OCL_BI
Used for Intel OpenCL built-ins.
Definition CallingConv.h:147
@ PreserveNone
Used for runtime calls that preserves none general registers.
Definition CallingConv.h:90
@ AMDGPU_ES
Used for AMDPAL shader stage before geometry shader if geometry is in use.
Definition CallingConv.h:218
@ Tail
Attemps to make calls as fast as possible while guaranteeing that tail call optimization can always b...
Definition CallingConv.h:76
@ DUMMY_HHVM_C
Definition CallingConv.h:167
@ RISCV_VLSCall_64
Definition CallingConv.h:275
@ Win64
The C convention as implemented on Windows/x86-64 and AArch64.
Definition CallingConv.h:159
@ PTX_Kernel
Call to a PTX kernel. Passes all arguments in parameter space.
Definition CallingConv.h:125
@ SwiftTail
This follows the Swift calling convention in how arguments are passed but guarantees tail calls will ...
Definition CallingConv.h:87
@ GRAAL
Used by GraalVM. Two additional registers are reserved.
Definition CallingConv.h:255
@ AMDGPU_LS
Used for AMDPAL vertex shader if tessellation is in use.
Definition CallingConv.h:213
@ ARM_AAPCS_VFP
Same as ARM_AAPCS, but uses hard floating point ABI.
Definition CallingConv.h:114
@ ARM64EC_Thunk_X64
Calling convention used in the ARM64EC ABI to implement calls between x64 code and thunks.
Definition CallingConv.h:260
@ X86_RegCall
Register calling convention used for parameters transfer optimization.
Definition CallingConv.h:203
@ M68k_RTD
Used for M68k rtd-based CC (similar to X86's stdcall).
Definition CallingConv.h:252
@ C
The default llvm calling convention, compatible with C.
Definition CallingConv.h:34
@ X86_FastCall
'fast' analog of X86_StdCall.
Definition CallingConv.h:103
This is an optimization pass for GlobalISel generic memory operations.
constexpr bool isCallableCC(CallingConv::ID CC)
Definition CallingConv.h:308