1 //===--- TargetBuiltins.h - Target specific builtin IDs ---------*- C++ -*-===//
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"
26 LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
27 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
28 #include "clang/Basic/BuiltinsNEON.def"
33 /// \brief ARM builtins
36 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
37 LastNEONBuiltin = NEON::FirstTSBuiltin - 1,
38 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
39 #include "clang/Basic/BuiltinsARM.def"
44 /// \brief AArch64 builtins
47 LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
48 LastNEONBuiltin = NEON::FirstTSBuiltin - 1,
49 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
50 #include "clang/Basic/BuiltinsAArch64.def"
55 /// \brief PPC builtins
58 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
59 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
60 #include "clang/Basic/BuiltinsPPC.def"
65 /// \brief NVPTX builtins
68 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
69 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
70 #include "clang/Basic/BuiltinsNVPTX.def"
75 /// \brief R600 builtins
78 LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
79 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
80 #include "clang/Basic/BuiltinsR600.def"
85 /// \brief X86 builtins
88 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
89 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
90 #include "clang/Basic/BuiltinsX86.def"
95 /// \brief Flags to identify the types for overloaded Neon builtins.
97 /// These must be kept in sync with the flags in utils/TableGen/NeonEmitter.h.
121 NeonTypeFlags(unsigned F) : Flags(F) {}
122 NeonTypeFlags(EltType ET, bool IsUnsigned, bool IsQuad) : Flags(ET) {
124 Flags |= UnsignedFlag;
129 EltType getEltType() const { return (EltType)(Flags & EltTypeMask); }
130 bool isPoly() const {
131 EltType ET = getEltType();
132 return ET == Poly8 || ET == Poly16;
134 bool isUnsigned() const { return (Flags & UnsignedFlag) != 0; }
135 bool isQuad() const { return (Flags & QuadFlag) != 0; }
138 /// \brief Hexagon builtins
141 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
142 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
143 #include "clang/Basic/BuiltinsHexagon.def"
148 /// \brief MIPS builtins
151 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
152 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
153 #include "clang/Basic/BuiltinsMips.def"
158 /// \brief XCore builtins
161 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
162 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
163 #include "clang/Basic/BuiltinsXCore.def"
167 } // end namespace clang.