2626using namespace clang ;
2727using namespace clang ::targets;
2828
29- static constexpr int NumNEONBuiltins =
30- NEON::FirstTSBuiltin - Builtin::FirstTSBuiltin;
29+ static constexpr int NumNeonBuiltins =
30+ NEON::FirstFp16Builtin - Builtin::FirstTSBuiltin;
31+ static constexpr int NumFp16Builtins =
32+ NEON::FirstTSBuiltin - NEON::FirstFp16Builtin;
3133static constexpr int NumSVEBuiltins =
32- SVE::FirstTSBuiltin - NEON::FirstTSBuiltin;
34+ SVE::FirstNeonBridgeBuiltin - NEON::FirstTSBuiltin;
35+ static constexpr int NumSVENeonBridgeBuiltins =
36+ SVE::FirstTSBuiltin - SVE::FirstNeonBridgeBuiltin;
3337static constexpr int NumSMEBuiltins = SME::FirstTSBuiltin - SVE::FirstTSBuiltin;
3438static constexpr int NumAArch64Builtins =
3539 AArch64::LastTSBuiltin - SME::FirstTSBuiltin;
3640static constexpr int NumBuiltins =
3741 AArch64::LastTSBuiltin - Builtin::FirstTSBuiltin;
38- static_assert (NumBuiltins == (NumNEONBuiltins + NumSVEBuiltins +
39- NumSMEBuiltins + NumAArch64Builtins));
42+ static_assert (NumBuiltins ==
43+ (NumNeonBuiltins + NumFp16Builtins + NumSVEBuiltins +
44+ NumSVENeonBridgeBuiltins + NumSMEBuiltins + NumAArch64Builtins));
45+
46+ namespace clang {
47+ namespace NEON {
48+ #define GET_NEON_BUILTIN_STR_TABLE
49+ #include " clang/Basic/arm_neon.inc"
50+ #undef GET_NEON_BUILTIN_STR_TABLE
51+
52+ static constexpr std::array<Builtin::Info, NumNeonBuiltins> BuiltinInfos = {
53+ #define GET_NEON_BUILTIN_INFOS
54+ #include " clang/Basic/arm_neon.inc"
55+ #undef GET_NEON_BUILTIN_INFOS
56+ };
4057
41- static constexpr llvm::StringTable BuiltinNEONStrings =
42- CLANG_BUILTIN_STR_TABLE_START
43- #define BUILTIN CLANG_BUILTIN_STR_TABLE
44- #define TARGET_BUILTIN CLANG_TARGET_BUILTIN_STR_TABLE
45- #include " clang/Basic/BuiltinsNEON.def"
46- ;
47- static constexpr llvm::StringTable BuiltinSVEStrings =
48- CLANG_BUILTIN_STR_TABLE_START
49- #define BUILTIN CLANG_BUILTIN_STR_TABLE
50- #define TARGET_BUILTIN CLANG_TARGET_BUILTIN_STR_TABLE
51- #include " clang/Basic/BuiltinsSVE.def"
52- ;
53- static constexpr llvm::StringTable BuiltinSMEStrings =
58+ namespace FP16 {
59+ #define GET_NEON_BUILTIN_STR_TABLE
60+ #include " clang/Basic/arm_fp16.inc"
61+ #undef GET_NEON_BUILTIN_STR_TABLE
62+
63+ static constexpr std::array<Builtin::Info, NumFp16Builtins> BuiltinInfos = {
64+ #define GET_NEON_BUILTIN_INFOS
65+ #include " clang/Basic/arm_fp16.inc"
66+ #undef GET_NEON_BUILTIN_INFOS
67+ };
68+ } // namespace FP16
69+ } // namespace NEON
70+
71+ namespace SVE {
72+ #define GET_SVE_BUILTIN_STR_TABLE
73+ #include " clang/Basic/arm_sve_builtins.inc"
74+ #undef GET_SVE_BUILTIN_STR_TABLE
75+
76+ static constexpr std::array<Builtin::Info, NumSVEBuiltins> BuiltinInfos = {
77+ #define GET_SVE_BUILTIN_INFOS
78+ #include " clang/Basic/arm_sve_builtins.inc"
79+ #undef GET_SVE_BUILTIN_INFOS
80+ };
81+ } // namespace SVE
82+
83+ namespace SME {
84+ #define GET_SME_BUILTIN_STR_TABLE
85+ #include " clang/Basic/arm_sme_builtins.inc"
86+ #undef GET_SME_BUILTIN_STR_TABLE
87+
88+ static constexpr std::array<Builtin::Info, NumSMEBuiltins> BuiltinInfos = {
89+ #define GET_SME_BUILTIN_INFOS
90+ #include " clang/Basic/arm_sme_builtins.inc"
91+ #undef GET_SME_BUILTIN_INFOS
92+ };
93+ } // namespace SME
94+ } // namespace clang
95+
96+ static constexpr llvm::StringTable BuiltinSVENeonBridgeStrings =
5497 CLANG_BUILTIN_STR_TABLE_START
55- #define BUILTIN CLANG_BUILTIN_STR_TABLE
5698#define TARGET_BUILTIN CLANG_TARGET_BUILTIN_STR_TABLE
57- #include " clang/Basic/BuiltinsSME.def"
99+ #define GET_SVE_BUILTINS
100+ #include " clang/Basic/BuiltinsAArch64NeonSVEBridge.def"
101+ #undef GET_SVE_BUILTINS
102+ #undef TARGET_BUILTIN
58103 ;
59104static constexpr llvm::StringTable BuiltinAArch64Strings =
60105 CLANG_BUILTIN_STR_TABLE_START
@@ -64,21 +109,14 @@ static constexpr llvm::StringTable BuiltinAArch64Strings =
64109#include " clang/Basic/BuiltinsAArch64.def"
65110 ;
66111
67- static constexpr auto BuiltinNEONInfos = Builtin::MakeInfos<NumNEONBuiltins>({
68- # define BUILTIN CLANG_BUILTIN_ENTRY
112+ static constexpr auto BuiltinSVENeonBridgeInfos =
113+ Builtin::MakeInfos<NumSVENeonBridgeBuiltins>({
69114#define TARGET_BUILTIN CLANG_TARGET_BUILTIN_ENTRY
70- #include " clang/Basic/BuiltinsNEON.def"
71- });
72- static constexpr auto BuiltinSVEInfos = Builtin::MakeInfos<NumSVEBuiltins>({
73- #define BUILTIN CLANG_BUILTIN_ENTRY
74- #define TARGET_BUILTIN CLANG_TARGET_BUILTIN_ENTRY
75- #include " clang/Basic/BuiltinsSVE.def"
76- });
77- static constexpr auto BuiltinSMEInfos = Builtin::MakeInfos<NumSMEBuiltins>({
78- #define BUILTIN CLANG_BUILTIN_ENTRY
79- #define TARGET_BUILTIN CLANG_TARGET_BUILTIN_ENTRY
80- #include " clang/Basic/BuiltinsSME.def"
81- });
115+ #define GET_SVE_BUILTINS
116+ #include " clang/Basic/BuiltinsAArch64NeonSVEBridge.def"
117+ #undef GET_SVE_BUILTINS
118+ #undef TARGET_BUILTIN
119+ });
82120static constexpr auto BuiltinAArch64Infos =
83121 Builtin::MakeInfos<NumAArch64Builtins>({
84122#define BUILTIN CLANG_BUILTIN_ENTRY
@@ -732,9 +770,11 @@ void AArch64TargetInfo::getTargetDefines(const LangOptions &Opts,
732770llvm::SmallVector<Builtin::InfosShard>
733771AArch64TargetInfo::getTargetBuiltins () const {
734772 return {
735- {&BuiltinNEONStrings, BuiltinNEONInfos},
736- {&BuiltinSVEStrings, BuiltinSVEInfos},
737- {&BuiltinSMEStrings, BuiltinSMEInfos},
773+ {&NEON::BuiltinStrings, NEON::BuiltinInfos},
774+ {&NEON::FP16::BuiltinStrings, NEON::FP16::BuiltinInfos},
775+ {&SVE::BuiltinStrings, SVE::BuiltinInfos},
776+ {&BuiltinSVENeonBridgeStrings, BuiltinSVENeonBridgeInfos},
777+ {&SME::BuiltinStrings, SME::BuiltinInfos},
738778 {&BuiltinAArch64Strings, BuiltinAArch64Infos},
739779 };
740780}
0 commit comments