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