15#ifndef LLVM_CLANG_BASIC_TARGETBUILTINS_H
16#define LLVM_CLANG_BASIC_TARGETBUILTINS_H
21#include "llvm/Support/MathExtras.h"
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
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"
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"
72#undef GET_SVE_BUILTINS
80#define GET_SME_BUILTIN_ENUMERATORS
81#include "clang/Basic/arm_sme_builtins.inc"
82#undef GET_SME_BUILTIN_ENUMERATORS
96 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
97 #include "clang/Basic/BuiltinsAArch64.def"
106#define GET_BUILTIN_ENUMERATORS
107#include "clang/Basic/BuiltinsBPF.inc"
108#undef GET_BUILTIN_ENUMERATORS
117#define BUILTIN(ID, TYPE, ATTRS) BI##ID,
118#include "clang/Basic/BuiltinsPPC.def"
127#define GET_BUILTIN_ENUMERATORS
128#include "clang/Basic/BuiltinsNVPTX.inc"
129#undef GET_BUILTIN_ENUMERATORS
138#define GET_BUILTIN_ENUMERATORS
139#include "clang/Basic/BuiltinsAMDGPU.inc"
140#undef GET_BUILTIN_ENUMERATORS
149#define GET_BUILTIN_ENUMERATORS
150#include "clang/Basic/BuiltinsDirectX.inc"
151#undef GET_BUILTIN_ENUMERATORS
160#define GET_BUILTIN_ENUMERATORS
161#include "clang/Basic/BuiltinsSPIRVCommon.inc"
162#undef GET_BUILTIN_ENUMERATORS
165#define GET_BUILTIN_ENUMERATORS
166#include "clang/Basic/BuiltinsSPIRVVK.inc"
167#undef GET_BUILTIN_ENUMERATORS
170#define GET_BUILTIN_ENUMERATORS
171#include "clang/Basic/BuiltinsSPIRVCL.inc"
172#undef GET_BUILTIN_ENUMERATORS
181#define GET_BUILTIN_ENUMERATORS
182#include "clang/Basic/BuiltinsX86.inc"
183#undef GET_BUILTIN_ENUMERATORS
186#define GET_BUILTIN_ENUMERATORS
187#include "clang/Basic/BuiltinsX86_64.inc"
188#undef GET_BUILTIN_ENUMERATORS
197#define BUILTIN(ID, TYPE, ATTRS) BI##ID,
198#include "clang/Basic/BuiltinsVE.def"
206#define GET_RISCVV_BUILTIN_ENUMERATORS
207#include "clang/Basic/riscv_vector_builtins.inc"
210#include "clang/Basic/riscv_sifive_vector_builtins.inc"
213#include "clang/Basic/riscv_andes_vector_builtins.inc"
214#undef GET_RISCVV_BUILTIN_ENUMERATORS
225#define GET_BUILTIN_ENUMERATORS
226#include "clang/Basic/BuiltinsRISCV.inc"
227#undef GET_BUILTIN_ENUMERATORS
236#define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BI##ID,
237#include "clang/Basic/BuiltinsLoongArchBase.def"
240#define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BI##ID,
241#include "clang/Basic/BuiltinsLoongArchLSX.def"
244#define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BI##ID,
245#include "clang/Basic/BuiltinsLoongArchLASX.def"
281 Flags |= UnsignedFlag;
295 bool isUnsigned()
const {
return (Flags & UnsignedFlag) != 0; }
296 bool isQuad()
const {
return (Flags & QuadFlag) != 0; }
318 llvm_unreachable(
"Invalid NeonTypeFlag!");
324#define LLVM_GET_ARM_INTRIN_IMMCHECKTYPES
325#include "clang/Basic/arm_immcheck_types.inc"
326#undef LLVM_GET_ARM_INTRIN_IMMCHECKTYPES
332 unsigned EltTypeShift;
333 unsigned MemEltTypeShift;
334 unsigned MergeTypeShift;
335 unsigned SplatOperandMaskShift;
338#define LLVM_GET_SVE_TYPEFLAGS
339#include "clang/Basic/arm_sve_typeflags.inc"
340#undef LLVM_GET_SVE_TYPEFLAGS
343#define LLVM_GET_SVE_ELTTYPES
344#include "clang/Basic/arm_sve_typeflags.inc"
345#undef LLVM_GET_SVE_ELTTYPES
349#define LLVM_GET_SVE_MEMELTTYPES
350#include "clang/Basic/arm_sve_typeflags.inc"
351#undef LLVM_GET_SVE_MEMELTTYPES
355#define LLVM_GET_SVE_MERGETYPES
356#include "clang/Basic/arm_sve_typeflags.inc"
357#undef LLVM_GET_SVE_MERGETYPES
361 EltTypeShift = llvm::countr_zero(EltTypeMask);
362 MemEltTypeShift = llvm::countr_zero(MemEltTypeMask);
363 MergeTypeShift = llvm::countr_zero(MergeTypeMask);
364 SplatOperandMaskShift = llvm::countr_zero(SplatOperandMask);
368 return (
EltType)((Flags & EltTypeMask) >> EltTypeShift);
372 return (
MemEltType)((Flags & MemEltTypeMask) >> MemEltTypeShift);
376 return (
MergeType)((Flags & MergeTypeMask) >> MergeTypeShift);
380 return ((Flags & SplatOperandMask) >> SplatOperandMaskShift) - 1;
384 return Flags & SplatOperandMask;
387 bool isLoad()
const {
return Flags & IsLoad; }
388 bool isStore()
const {
return Flags & IsStore; }
397 return Flags & IsOverloadWhileOrMultiVecCvt;
402 return Flags & IsOverloadFirstandLast;
412 bool isUndef()
const {
return Flags & IsUndef; }
421 bool isFlagSet(uint64_t Flag)
const {
return Flags & Flag; }
428#define GET_BUILTIN_ENUMERATORS
429#include "clang/Basic/BuiltinsHexagon.inc"
430#undef GET_BUILTIN_ENUMERATORS
439#define BUILTIN(ID, TYPE, ATTRS) BI##ID,
440#include "clang/Basic/BuiltinsMips.def"
449#define BUILTIN(ID, TYPE, ATTRS) BI##ID,
450#include "clang/Basic/BuiltinsXCore.def"
459#define BUILTIN(ID, TYPE, ATTRS) BI##ID,
460#include "clang/Basic/BuiltinsSystemZ.def"
469#define BUILTIN(ID, TYPE, ATTRS) BI##ID,
470#include "clang/Basic/BuiltinsWebAssembly.def"
Defines enum values for all the target-independent builtin functions.
NeonTypeFlags(unsigned F)
bool isFloatingPoint() const
unsigned getEltSizeInBits() const
EltType getEltType() const
NeonTypeFlags(EltType ET, bool IsUnsigned, bool IsQuad)
bool isZExtReturn() const
bool isReverseUSDOT() const
bool isOverloadNone() const
MemEltType getMemEltType() const
bool isGatherLoad() const
EltType getEltType() const
bool isOverloadFirstandLast() const
bool isOverloadDefault() const
bool isOverloadWhileRW() const
bool isReverseMergeAnyAccOp() const
bool isReductionQV() const
bool isFlagSet(uint64_t Flag) const
bool isInsertOp1SVALL() const
bool isAppendSVALL() const
bool isReverseMergeAnyBinOp() const
bool isStructStore() const
bool isTupleCreate() const
bool isGatherPrefetch() const
bool hasSplatOperand() const
MergeType getMergeType() const
bool isByteIndexed() const
bool isStructLoad() const
bool isOverloadWhileOrMultiVecCvt() const
unsigned getSplatOperand() const
bool isScatterStore() const
bool isReverseCompare() const
The JSON file list parser is used to communicate input to InstallAPI.
static constexpr uint64_t LargestBuiltinID