clang: include/clang/Basic/TargetBuiltins.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#ifndef LLVM_CLANG_BASIC_TARGETBUILTINS_H
16#define LLVM_CLANG_BASIC_TARGETBUILTINS_H
17
18#include
21#include "llvm/Support/MathExtras.h"
22#undef PPC
23
25
27 enum {
29#define GET_NEON_BUILTIN_ENUMERATORS
30#include "clang/Basic/arm_neon.inc"
33#include "clang/Basic/arm_fp16.inc"
34#undef GET_NEON_BUILTIN_ENUMERATORS
36 };
37 }
38
39
41 enum {
44#define GET_MVE_BUILTIN_ENUMERATORS
45#include "clang/Basic/arm_mve_builtins.inc"
46#undef GET_MVE_BUILTIN_ENUMERATORS
49#define GET_CDE_BUILTIN_ENUMERATORS
50#include "clang/Basic/arm_cde_builtins.inc"
51#undef GET_CDE_BUILTIN_ENUMERATORS
54#define BUILTIN(ID, TYPE, ATTRS) BI##ID,
55#include "clang/Basic/BuiltinsARM.def"
57 };
58 }
59
61 enum {
63#define GET_SVE_BUILTIN_ENUMERATORS
64#include "clang/Basic/arm_sve_builtins.inc"
65#undef GET_SVE_BUILTIN_ENUMERATORS
68#define GET_SVE_BUILTINS
69#define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BI##ID,
70#include "clang/Basic/BuiltinsAArch64NeonSVEBridge.def"
71#undef TARGET_BUILTIN
72#undef GET_SVE_BUILTINS
74 };
75 }
76
78 enum {
80#define GET_SME_BUILTIN_ENUMERATORS
81#include "clang/Basic/arm_sme_builtins.inc"
82#undef GET_SME_BUILTIN_ENUMERATORS
84 };
85 }
86
87
89 enum {
96 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
97 #include "clang/Basic/BuiltinsAArch64.def"
99 };
100 }
101
102
104 enum {
106#define GET_BUILTIN_ENUMERATORS
107#include "clang/Basic/BuiltinsBPF.inc"
108#undef GET_BUILTIN_ENUMERATORS
110 };
111 }
112
113
115 enum {
117#define BUILTIN(ID, TYPE, ATTRS) BI##ID,
118#include "clang/Basic/BuiltinsPPC.def"
120 };
121 }
122
123
125 enum {
127#define GET_BUILTIN_ENUMERATORS
128#include "clang/Basic/BuiltinsNVPTX.inc"
129#undef GET_BUILTIN_ENUMERATORS
131 };
132 }
133
134
136 enum {
138 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
139 #include "clang/Basic/BuiltinsAMDGPU.def"
141 };
142 }
143
144
146 enum {
148#define GET_BUILTIN_ENUMERATORS
149#include "clang/Basic/BuiltinsDirectX.inc"
150#undef GET_BUILTIN_ENUMERATORS
152 };
153 }
154
155
157 enum {
159#define GET_BUILTIN_ENUMERATORS
160#include "clang/Basic/BuiltinsSPIRVCommon.inc"
161#undef GET_BUILTIN_ENUMERATORS
164#define GET_BUILTIN_ENUMERATORS
165#include "clang/Basic/BuiltinsSPIRVVK.inc"
166#undef GET_BUILTIN_ENUMERATORS
169#define GET_BUILTIN_ENUMERATORS
170#include "clang/Basic/BuiltinsSPIRVCL.inc"
171#undef GET_BUILTIN_ENUMERATORS
173 };
174 }
175
176
178 enum {
180#define GET_BUILTIN_ENUMERATORS
181#include "clang/Basic/BuiltinsX86.inc"
182#undef GET_BUILTIN_ENUMERATORS
185#define GET_BUILTIN_ENUMERATORS
186#include "clang/Basic/BuiltinsX86_64.inc"
187#undef GET_BUILTIN_ENUMERATORS
189 };
190 }
191
192
194 enum {
196#define BUILTIN(ID, TYPE, ATTRS) BI##ID,
197#include "clang/Basic/BuiltinsVE.def"
199 };
200 }
201
203 enum {
205#define GET_RISCVV_BUILTIN_ENUMERATORS
206#include "clang/Basic/riscv_vector_builtins.inc"
209#include "clang/Basic/riscv_sifive_vector_builtins.inc"
212#include "clang/Basic/riscv_andes_vector_builtins.inc"
213#undef GET_RISCVV_BUILTIN_ENUMERATORS
215 };
216 }
217
218
220 enum {
224#define GET_BUILTIN_ENUMERATORS
225#include "clang/Basic/BuiltinsRISCV.inc"
226#undef GET_BUILTIN_ENUMERATORS
228 };
229 }
230
231
233 enum {
235#define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BI##ID,
236#include "clang/Basic/BuiltinsLoongArchBase.def"
239#define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BI##ID,
240#include "clang/Basic/BuiltinsLoongArchLSX.def"
243#define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BI##ID,
244#include "clang/Basic/BuiltinsLoongArchLASX.def"
246 };
247 }
248
249
250
251
253 enum {
254 EltTypeMask = 0xf,
255 UnsignedFlag = 0x10,
256 QuadFlag = 0x20
257 };
258 uint32_t Flags;
259
260 public:
276
279 if (IsUnsigned)
280 Flags |= UnsignedFlag;
281 if (IsQuad)
282 Flags |= QuadFlag;
283 }
284
294 bool isUnsigned() const { return (Flags & UnsignedFlag) != 0; }
295 bool isQuad() const { return (Flags & QuadFlag) != 0; }
301 return 8;
306 return 16;
309 return 32;
313 return 64;
315 return 128;
316 }
317 llvm_unreachable("Invalid NeonTypeFlag!");
318 }
319 };
320
321
323#define LLVM_GET_ARM_INTRIN_IMMCHECKTYPES
324#include "clang/Basic/arm_immcheck_types.inc"
325#undef LLVM_GET_ARM_INTRIN_IMMCHECKTYPES
326 };
327
328
330 uint64_t Flags;
331 unsigned EltTypeShift;
332 unsigned MemEltTypeShift;
333 unsigned MergeTypeShift;
334 unsigned SplatOperandMaskShift;
335
336 public:
337#define LLVM_GET_SVE_TYPEFLAGS
338#include "clang/Basic/arm_sve_typeflags.inc"
339#undef LLVM_GET_SVE_TYPEFLAGS
340
342#define LLVM_GET_SVE_ELTTYPES
343#include "clang/Basic/arm_sve_typeflags.inc"
344#undef LLVM_GET_SVE_ELTTYPES
345 };
346
348#define LLVM_GET_SVE_MEMELTTYPES
349#include "clang/Basic/arm_sve_typeflags.inc"
350#undef LLVM_GET_SVE_MEMELTTYPES
351 };
352
354#define LLVM_GET_SVE_MERGETYPES
355#include "clang/Basic/arm_sve_typeflags.inc"
356#undef LLVM_GET_SVE_MERGETYPES
357 };
358
360 EltTypeShift = llvm::countr_zero(EltTypeMask);
361 MemEltTypeShift = llvm::countr_zero(MemEltTypeMask);
362 MergeTypeShift = llvm::countr_zero(MergeTypeMask);
363 SplatOperandMaskShift = llvm::countr_zero(SplatOperandMask);
364 }
365
367 return (EltType)((Flags & EltTypeMask) >> EltTypeShift);
368 }
369
371 return (MemEltType)((Flags & MemEltTypeMask) >> MemEltTypeShift);
372 }
373
375 return (MergeType)((Flags & MergeTypeMask) >> MergeTypeShift);
376 }
377
379 return ((Flags & SplatOperandMask) >> SplatOperandMaskShift) - 1;
380 }
381
383 return Flags & SplatOperandMask;
384 }
385
386 bool isLoad() const { return Flags & IsLoad; }
387 bool isStore() const { return Flags & IsStore; }
388 bool isGatherLoad() const { return Flags & IsGatherLoad; }
390 bool isStructLoad() const { return Flags & IsStructLoad; }
392 bool isZExtReturn() const { return Flags & IsZExtReturn; }
396 return Flags & IsOverloadWhileOrMultiVecCvt;
397 }
401 return Flags & IsOverloadFirstandLast;
402 }
403 bool isPrefetch() const { return Flags & IsPrefetch; }
411 bool isUndef() const { return Flags & IsUndef; }
413 bool isTupleGet() const { return Flags & IsTupleGet; }
414 bool isTupleSet() const { return Flags & IsTupleSet; }
415 bool isReadZA() const { return Flags & IsReadZA; }
416 bool isWriteZA() const { return Flags & IsWriteZA; }
417 bool setsFPMR() const { return Flags & SetsFPMR; }
419 uint64_t getBits() const { return Flags; }
420 bool isFlagSet(uint64_t Flag) const { return Flags & Flag; }
421 };
422
423
425 enum {
427#define GET_BUILTIN_ENUMERATORS
428#include "clang/Basic/BuiltinsHexagon.inc"
429#undef GET_BUILTIN_ENUMERATORS
431 };
432 }
433
434
436 enum {
438#define BUILTIN(ID, TYPE, ATTRS) BI##ID,
439#include "clang/Basic/BuiltinsMips.def"
441 };
442 }
443
444
446 enum {
448#define BUILTIN(ID, TYPE, ATTRS) BI##ID,
449#include "clang/Basic/BuiltinsXCore.def"
451 };
452 }
453
454
456 enum {
458#define BUILTIN(ID, TYPE, ATTRS) BI##ID,
459#include "clang/Basic/BuiltinsSystemZ.def"
461 };
462 }
463
464
466 enum {
468#define BUILTIN(ID, TYPE, ATTRS) BI##ID,
469#include "clang/Basic/BuiltinsWebAssembly.def"
471 };
472 }
473
480
481}
482
483#endif
Defines enum values for all the target-independent builtin functions.
bool isUnsigned() const
Definition TargetBuiltins.h:294
NeonTypeFlags(unsigned F)
Definition TargetBuiltins.h:277
bool isFloatingPoint() const
Definition TargetBuiltins.h:290
bool isQuad() const
Definition TargetBuiltins.h:295
EltType
Definition TargetBuiltins.h:261
@ Float64
Definition TargetBuiltins.h:272
@ Poly64
Definition TargetBuiltins.h:268
@ Poly8
Definition TargetBuiltins.h:266
@ Float32
Definition TargetBuiltins.h:271
@ Int32
Definition TargetBuiltins.h:264
@ Int16
Definition TargetBuiltins.h:263
@ Poly128
Definition TargetBuiltins.h:269
@ Int8
Definition TargetBuiltins.h:262
@ BFloat16
Definition TargetBuiltins.h:273
@ Poly16
Definition TargetBuiltins.h:267
@ Float16
Definition TargetBuiltins.h:270
@ Int64
Definition TargetBuiltins.h:265
@ MFloat8
Definition TargetBuiltins.h:274
unsigned getEltSizeInBits() const
Definition TargetBuiltins.h:296
bool isPoly() const
Definition TargetBuiltins.h:286
EltType getEltType() const
Definition TargetBuiltins.h:285
NeonTypeFlags(EltType ET, bool IsUnsigned, bool IsQuad)
Definition TargetBuiltins.h:278
bool isZExtReturn() const
Definition TargetBuiltins.h:392
bool isReverseUSDOT() const
Definition TargetBuiltins.h:408
bool isOverloadNone() const
Definition TargetBuiltins.h:394
bool isUndef() const
Definition TargetBuiltins.h:411
EltType
Definition TargetBuiltins.h:341
MergeType
Definition TargetBuiltins.h:353
MemEltType getMemEltType() const
Definition TargetBuiltins.h:370
bool isWriteZA() const
Definition TargetBuiltins.h:416
uint64_t getBits() const
Definition TargetBuiltins.h:419
bool isGatherLoad() const
Definition TargetBuiltins.h:388
EltType getEltType() const
Definition TargetBuiltins.h:366
bool isLoad() const
Definition TargetBuiltins.h:386
bool isOverloadFirstandLast() const
Definition TargetBuiltins.h:400
bool isOverloadDefault() const
Definition TargetBuiltins.h:398
bool isPrefetch() const
Definition TargetBuiltins.h:403
bool isOverloadWhileRW() const
Definition TargetBuiltins.h:399
bool isReadZA() const
Definition TargetBuiltins.h:415
bool isTupleSet() const
Definition TargetBuiltins.h:414
bool isReverseMergeAnyAccOp() const
Definition TargetBuiltins.h:410
bool isReductionQV() const
Definition TargetBuiltins.h:418
bool isTupleGet() const
Definition TargetBuiltins.h:413
bool isFlagSet(uint64_t Flag) const
Definition TargetBuiltins.h:420
bool isInsertOp1SVALL() const
Definition TargetBuiltins.h:406
bool isAppendSVALL() const
Definition TargetBuiltins.h:405
bool isReverseMergeAnyBinOp() const
Definition TargetBuiltins.h:409
bool isStructStore() const
Definition TargetBuiltins.h:391
bool isTupleCreate() const
Definition TargetBuiltins.h:412
bool isGatherPrefetch() const
Definition TargetBuiltins.h:407
SVETypeFlags(uint64_t F)
Definition TargetBuiltins.h:359
bool hasSplatOperand() const
Definition TargetBuiltins.h:382
MergeType getMergeType() const
Definition TargetBuiltins.h:374
bool isByteIndexed() const
Definition TargetBuiltins.h:393
bool isStructLoad() const
Definition TargetBuiltins.h:390
bool setsFPMR() const
Definition TargetBuiltins.h:417
bool isOverloadWhileOrMultiVecCvt() const
Definition TargetBuiltins.h:395
unsigned getSplatOperand() const
Definition TargetBuiltins.h:378
MemEltType
Definition TargetBuiltins.h:347
bool isStore() const
Definition TargetBuiltins.h:387
bool isScatterStore() const
Definition TargetBuiltins.h:389
bool isReverseCompare() const
Definition TargetBuiltins.h:404
AArch64 builtins.
Definition TargetBuiltins.h:88
@ LastTIBuiltin
Definition TargetBuiltins.h:90
@ FirstSVEBuiltin
Definition TargetBuiltins.h:92
@ LastSMEBuiltin
Definition TargetBuiltins.h:95
@ LastTSBuiltin
Definition TargetBuiltins.h:98
@ LastSVEBuiltin
Definition TargetBuiltins.h:93
@ FirstSMEBuiltin
Definition TargetBuiltins.h:94
@ LastNEONBuiltin
Definition TargetBuiltins.h:91
AMDGPU builtins.
Definition TargetBuiltins.h:135
@ LastTIBuiltin
Definition TargetBuiltins.h:137
@ LastTSBuiltin
Definition TargetBuiltins.h:140
ARM builtins.
Definition TargetBuiltins.h:40
@ FirstCDEBuiltin
Definition TargetBuiltins.h:47
@ FirstARMBuiltin
Definition TargetBuiltins.h:52
@ LastNEONBuiltin
Definition TargetBuiltins.h:43
@ LastTSBuiltin
Definition TargetBuiltins.h:56
@ LastMVEBuiltin
Definition TargetBuiltins.h:48
@ LastCDEBuiltin
Definition TargetBuiltins.h:53
@ LastTIBuiltin
Definition TargetBuiltins.h:42
BPF builtins.
Definition TargetBuiltins.h:103
@ LastTIBuiltin
Definition TargetBuiltins.h:105
@ LastTSBuiltin
Definition TargetBuiltins.h:109
DirectX builtins.
Definition TargetBuiltins.h:145
@ LastTIBuiltin
Definition TargetBuiltins.h:147
@ LastTSBuiltin
Definition TargetBuiltins.h:151
Hexagon builtins.
Definition TargetBuiltins.h:424
@ LastTSBuiltin
Definition TargetBuiltins.h:430
@ LastTIBuiltin
Definition TargetBuiltins.h:426
LoongArch builtins.
Definition TargetBuiltins.h:232
@ LastLSXBuiltin
Definition TargetBuiltins.h:242
@ LastTIBuiltin
Definition TargetBuiltins.h:234
@ FirstLSXBuiltin
Definition TargetBuiltins.h:237
@ FirstLASXBuiltin
Definition TargetBuiltins.h:241
@ LastTSBuiltin
Definition TargetBuiltins.h:245
@ LastBaseBuiltin
Definition TargetBuiltins.h:238
MIPS builtins.
Definition TargetBuiltins.h:435
@ LastTIBuiltin
Definition TargetBuiltins.h:437
@ LastTSBuiltin
Definition TargetBuiltins.h:440
Definition TargetBuiltins.h:26
@ FirstTSBuiltin
Definition TargetBuiltins.h:35
@ LastTIBuiltin
Definition TargetBuiltins.h:28
@ LastNeonBuiltin
Definition TargetBuiltins.h:32
@ FirstFp16Builtin
Definition TargetBuiltins.h:31
NVPTX builtins.
Definition TargetBuiltins.h:124
@ LastTIBuiltin
Definition TargetBuiltins.h:126
@ LastTSBuiltin
Definition TargetBuiltins.h:130
PPC builtins.
Definition TargetBuiltins.h:114
@ LastTSBuiltin
Definition TargetBuiltins.h:119
@ LastTIBuiltin
Definition TargetBuiltins.h:116
Definition TargetBuiltins.h:202
@ FirstSiFiveBuiltin
Definition TargetBuiltins.h:207
@ FirstAndesBuiltin
Definition TargetBuiltins.h:210
@ LastSiFiveBuiltin
Definition TargetBuiltins.h:211
@ LastRVVBuiltin
Definition TargetBuiltins.h:208
@ LastTIBuiltin
Definition TargetBuiltins.h:204
@ FirstTSBuiltin
Definition TargetBuiltins.h:214
RISCV builtins.
Definition TargetBuiltins.h:219
@ LastTIBuiltin
Definition TargetBuiltins.h:221
@ LastTSBuiltin
Definition TargetBuiltins.h:227
@ FirstRVVBuiltin
Definition TargetBuiltins.h:222
@ LastRVVBuiltin
Definition TargetBuiltins.h:223
Definition TargetBuiltins.h:77
@ LastSVEBuiltin
Definition TargetBuiltins.h:79
@ FirstTSBuiltin
Definition TargetBuiltins.h:83
SPIRV builtins.
Definition TargetBuiltins.h:156
@ FirstCLBuiltin
Definition TargetBuiltins.h:167
@ LastTSBuiltin
Definition TargetBuiltins.h:172
@ FirstVKBuiltin
Definition TargetBuiltins.h:162
@ LastVKBuiltin
Definition TargetBuiltins.h:168
@ LastCoreBuiltin
Definition TargetBuiltins.h:163
@ LastTIBuiltin
Definition TargetBuiltins.h:158
Definition TargetBuiltins.h:60
@ FirstNeonBridgeBuiltin
Definition TargetBuiltins.h:66
@ FirstTSBuiltin
Definition TargetBuiltins.h:73
@ LastSveBuiltin
Definition TargetBuiltins.h:67
@ LastNEONBuiltin
Definition TargetBuiltins.h:62
SystemZ builtins.
Definition TargetBuiltins.h:455
@ LastTIBuiltin
Definition TargetBuiltins.h:457
@ LastTSBuiltin
Definition TargetBuiltins.h:460
VE builtins.
Definition TargetBuiltins.h:193
@ LastTIBuiltin
Definition TargetBuiltins.h:195
@ LastTSBuiltin
Definition TargetBuiltins.h:198
WebAssembly builtins.
Definition TargetBuiltins.h:465
@ LastTSBuiltin
Definition TargetBuiltins.h:470
@ LastTIBuiltin
Definition TargetBuiltins.h:467
X86 builtins.
Definition TargetBuiltins.h:177
@ FirstX86_64Builtin
Definition TargetBuiltins.h:183
@ LastX86CommonBuiltin
Definition TargetBuiltins.h:184
@ LastTSBuiltin
Definition TargetBuiltins.h:188
@ LastTIBuiltin
Definition TargetBuiltins.h:179
XCore builtins.
Definition TargetBuiltins.h:445
@ LastTSBuiltin
Definition TargetBuiltins.h:450
@ LastTIBuiltin
Definition TargetBuiltins.h:447
The JSON file list parser is used to communicate input to InstallAPI.
ImmCheckType
Definition TargetBuiltins.h:322
static constexpr uint64_t LargestBuiltinID
Definition TargetBuiltins.h:474