1 //===--- TargetBuiltins.h - Target specific builtin IDs -------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
11 /// \brief Enumerates target-specific builtins in their own namespaces within
12 /// namespace ::clang.
14 //===----------------------------------------------------------------------===//
16 #ifndef LLVM_CLANG_BASIC_TARGET_BUILTINS_H
17 #define LLVM_CLANG_BASIC_TARGET_BUILTINS_H
19 #include "clang/Basic/Builtins.h"
24 /// \brief AArch64 builtins
27 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
28 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
29 #include "clang/Basic/BuiltinsAArch64.def"
33 /// \brief ARM builtins
36 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
37 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
38 #include "clang/Basic/BuiltinsARM.def"
43 /// \brief PPC builtins
46 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
47 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
48 #include "clang/Basic/BuiltinsPPC.def"
53 /// \brief NVPTX builtins
56 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
57 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
58 #include "clang/Basic/BuiltinsNVPTX.def"
64 /// \brief X86 builtins
67 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
68 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
69 #include "clang/Basic/BuiltinsX86.def"
74 /// \brief Flags to identify the types for overloaded Neon builtins.
76 /// These must be kept in sync with the flags in utils/TableGen/NeonEmitter.h.
99 NeonTypeFlags(unsigned F) : Flags(F) {}
100 NeonTypeFlags(EltType ET, bool IsUnsigned, bool IsQuad) : Flags(ET) {
102 Flags |= UnsignedFlag;
107 EltType getEltType() const { return (EltType)(Flags & EltTypeMask); }
108 bool isPoly() const {
109 EltType ET = getEltType();
110 return ET == Poly8 || ET == Poly16;
112 bool isUnsigned() const { return (Flags & UnsignedFlag) != 0; }
113 bool isQuad() const { return (Flags & QuadFlag) != 0; }
116 /// \brief Hexagon builtins
119 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
120 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
121 #include "clang/Basic/BuiltinsHexagon.def"
126 /// \brief MIPS builtins
129 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
130 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
131 #include "clang/Basic/BuiltinsMips.def"
136 /// \brief XCore builtins
139 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
140 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
141 #include "clang/Basic/BuiltinsXCore.def"
145 } // end namespace clang.