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 /// Enumerates target-specific builtins in their own namespaces within
12 /// namespace ::clang.
14 //===----------------------------------------------------------------------===//
16 #ifndef LLVM_CLANG_BASIC_TARGETBUILTINS_H
17 #define LLVM_CLANG_BASIC_TARGETBUILTINS_H
20 #include "clang/Basic/Builtins.h"
27 LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
28 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
29 #include "clang/Basic/BuiltinsNEON.def"
37 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
38 LastNEONBuiltin = NEON::FirstTSBuiltin - 1,
39 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
40 #include "clang/Basic/BuiltinsARM.def"
48 LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
49 LastNEONBuiltin = NEON::FirstTSBuiltin - 1,
50 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
51 #include "clang/Basic/BuiltinsAArch64.def"
59 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
60 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
61 #include "clang/Basic/BuiltinsPPC.def"
69 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
70 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
71 #include "clang/Basic/BuiltinsNVPTX.def"
79 LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
80 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
81 #include "clang/Basic/BuiltinsAMDGPU.def"
89 LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
90 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
91 #include "clang/Basic/BuiltinsX86.def"
93 LastX86CommonBuiltin = FirstX86_64Builtin - 1,
94 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
95 #include "clang/Basic/BuiltinsX86_64.def"
100 /// Flags to identify the types for overloaded Neon builtins.
102 /// These must be kept in sync with the flags in utils/TableGen/NeonEmitter.h.
103 class NeonTypeFlags {
126 NeonTypeFlags(unsigned F) : Flags(F) {}
127 NeonTypeFlags(EltType ET, bool IsUnsigned, bool IsQuad) : Flags(ET) {
129 Flags |= UnsignedFlag;
134 EltType getEltType() const { return (EltType)(Flags & EltTypeMask); }
135 bool isPoly() const {
136 EltType ET = getEltType();
137 return ET == Poly8 || ET == Poly16;
139 bool isUnsigned() const { return (Flags & UnsignedFlag) != 0; }
140 bool isQuad() const { return (Flags & QuadFlag) != 0; }
146 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
147 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
148 #include "clang/Basic/BuiltinsHexagon.def"
156 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
157 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
158 #include "clang/Basic/BuiltinsMips.def"
166 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
167 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
168 #include "clang/Basic/BuiltinsXCore.def"
176 LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
177 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
178 #include "clang/Basic/BuiltinsLe64.def"
186 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
187 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
188 #include "clang/Basic/BuiltinsSystemZ.def"
193 /// WebAssembly builtins
194 namespace WebAssembly {
196 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
197 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
198 #include "clang/Basic/BuiltinsWebAssembly.def"
203 } // end namespace clang.