1 //===--- TargetBuiltins.h - Target specific builtin IDs ---------*- C++ -*-===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
10 /// Enumerates target-specific builtins in their own namespaces within
11 /// namespace ::clang.
13 //===----------------------------------------------------------------------===//
15 #ifndef LLVM_CLANG_BASIC_TARGETBUILTINS_H
16 #define LLVM_CLANG_BASIC_TARGETBUILTINS_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"
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"
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"
58 LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
59 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
60 #include "clang/Basic/BuiltinsBPF.def"
68 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
69 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
70 #include "clang/Basic/BuiltinsPPC.def"
78 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
79 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
80 #include "clang/Basic/BuiltinsNVPTX.def"
88 LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
89 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
90 #include "clang/Basic/BuiltinsAMDGPU.def"
98 LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
99 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
100 #include "clang/Basic/BuiltinsX86.def"
102 LastX86CommonBuiltin = FirstX86_64Builtin - 1,
103 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
104 #include "clang/Basic/BuiltinsX86_64.def"
109 /// Flags to identify the types for overloaded Neon builtins.
111 /// These must be kept in sync with the flags in utils/TableGen/NeonEmitter.h.
112 class NeonTypeFlags {
135 NeonTypeFlags(unsigned F) : Flags(F) {}
136 NeonTypeFlags(EltType ET, bool IsUnsigned, bool IsQuad) : Flags(ET) {
138 Flags |= UnsignedFlag;
143 EltType getEltType() const { return (EltType)(Flags & EltTypeMask); }
144 bool isPoly() const {
145 EltType ET = getEltType();
146 return ET == Poly8 || ET == Poly16;
148 bool isUnsigned() const { return (Flags & UnsignedFlag) != 0; }
149 bool isQuad() const { return (Flags & QuadFlag) != 0; }
155 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
156 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
157 #include "clang/Basic/BuiltinsHexagon.def"
165 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
166 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
167 #include "clang/Basic/BuiltinsMips.def"
175 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
176 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
177 #include "clang/Basic/BuiltinsXCore.def"
185 LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
186 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
187 #include "clang/Basic/BuiltinsLe64.def"
195 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
196 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
197 #include "clang/Basic/BuiltinsSystemZ.def"
202 /// WebAssembly builtins
203 namespace WebAssembly {
205 LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
206 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
207 #include "clang/Basic/BuiltinsWebAssembly.def"
212 } // end namespace clang.