15 #ifndef LLVM_CLANG_BASIC_TARGETBUILTINS_H
16 #define LLVM_CLANG_BASIC_TARGETBUILTINS_H
21 #include "llvm/Support/MathExtras.h"
29 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
30 #include "clang/Basic/BuiltinsNEON.def"
40 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
41 #include "clang/Basic/BuiltinsARM.def"
49 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
50 #include "clang/Basic/BuiltinsSVE.def"
62 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
63 #include "clang/Basic/BuiltinsAArch64.def"
72 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
73 #include "clang/Basic/BuiltinsBPF.def"
82 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
83 #include "clang/Basic/BuiltinsPPC.def"
92 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
93 #include "clang/Basic/BuiltinsNVPTX.def"
102 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
103 #include "clang/Basic/BuiltinsAMDGPU.def"
112 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
113 #include "clang/Basic/BuiltinsX86.def"
116 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
117 #include "clang/Basic/BuiltinsX86_64.def"
126 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
127 #include "clang/Basic/BuiltinsVE.def"
132 namespace RISCVVector {
135 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
136 #include "clang/Basic/BuiltinsRISCVVector.def"
147 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
148 #include "clang/Basic/BuiltinsRISCV.def"
183 Flags |= UnsignedFlag;
193 bool isUnsigned()
const {
return (Flags & UnsignedFlag) != 0; }
194 bool isQuad()
const {
return (Flags & QuadFlag) != 0; }
200 unsigned EltTypeShift;
201 unsigned MemEltTypeShift;
202 unsigned MergeTypeShift;
203 unsigned SplatOperandMaskShift;
206 #define LLVM_GET_SVE_TYPEFLAGS
207 #include "clang/Basic/arm_sve_typeflags.inc"
208 #undef LLVM_GET_SVE_TYPEFLAGS
211 #define LLVM_GET_SVE_ELTTYPES
212 #include "clang/Basic/arm_sve_typeflags.inc"
213 #undef LLVM_GET_SVE_ELTTYPES
217 #define LLVM_GET_SVE_MEMELTTYPES
218 #include "clang/Basic/arm_sve_typeflags.inc"
219 #undef LLVM_GET_SVE_MEMELTTYPES
223 #define LLVM_GET_SVE_MERGETYPES
224 #include "clang/Basic/arm_sve_typeflags.inc"
225 #undef LLVM_GET_SVE_MERGETYPES
229 #define LLVM_GET_SVE_IMMCHECKTYPES
230 #include "clang/Basic/arm_sve_typeflags.inc"
231 #undef LLVM_GET_SVE_IMMCHECKTYPES
235 EltTypeShift = llvm::countTrailingZeros(EltTypeMask);
236 MemEltTypeShift = llvm::countTrailingZeros(MemEltTypeMask);
237 MergeTypeShift = llvm::countTrailingZeros(MergeTypeMask);
238 SplatOperandMaskShift = llvm::countTrailingZeros(SplatOperandMask);
242 return (
EltType)((Flags & EltTypeMask) >> EltTypeShift);
246 return (
MemEltType)((Flags & MemEltTypeMask) >> MemEltTypeShift);
250 return (
MergeType)((Flags & MergeTypeMask) >> MergeTypeShift);
254 return ((Flags & SplatOperandMask) >> SplatOperandMaskShift) - 1;
258 return Flags & SplatOperandMask;
261 bool isLoad()
const {
return Flags & IsLoad; }
262 bool isStore()
const {
return Flags & IsStore; }
280 bool isUndef()
const {
return Flags & IsUndef; }
293 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
294 #include "clang/Basic/BuiltinsHexagon.def"
303 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
304 #include "clang/Basic/BuiltinsMips.def"
313 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
314 #include "clang/Basic/BuiltinsXCore.def"
323 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
324 #include "clang/Basic/BuiltinsSystemZ.def"
330 namespace WebAssembly {
333 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
334 #include "clang/Basic/BuiltinsWebAssembly.def"