1 //===- TableGenBackends.h - Declarations for Clang TableGen Backends ------===//
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 //===----------------------------------------------------------------------===//
9 // This file contains the declarations for all of the Clang TableGen
10 // backends. A "TableGen backend" is just a function. See
11 // "$LLVM_ROOT/utils/TableGen/TableGenBackends.h" for more info.
13 //===----------------------------------------------------------------------===//
15 #ifndef LLVM_CLANG_UTILS_TABLEGEN_TABLEGENBACKENDS_H
16 #define LLVM_CLANG_UTILS_TABLEGEN_TABLEGENBACKENDS_H
27 void EmitClangDeclContext(const llvm::RecordKeeper
&RK
, llvm::raw_ostream
&OS
);
29 @param PriorizeIfSubclassOf These classes should be prioritized in the output.
30 This is useful to force enum generation/jump tables/lookup tables to be more
31 compact in both size and surrounding code in hot functions. An example use is
32 in Decl for classes that inherit from DeclContext, for functions like
35 void EmitClangASTNodes(const llvm::RecordKeeper
&RK
, llvm::raw_ostream
&OS
,
36 const std::string
&N
, const std::string
&S
,
37 std::string_view PriorizeIfSubclassOf
= "");
38 void EmitClangBasicReader(const llvm::RecordKeeper
&Records
,
39 llvm::raw_ostream
&OS
);
40 void EmitClangBasicWriter(const llvm::RecordKeeper
&Records
,
41 llvm::raw_ostream
&OS
);
42 void EmitClangTypeNodes(const llvm::RecordKeeper
&Records
,
43 llvm::raw_ostream
&OS
);
44 void EmitClangTypeReader(const llvm::RecordKeeper
&Records
,
45 llvm::raw_ostream
&OS
);
46 void EmitClangTypeWriter(const llvm::RecordKeeper
&Records
,
47 llvm::raw_ostream
&OS
);
48 void EmitClangAttrParserStringSwitches(const llvm::RecordKeeper
&Records
,
49 llvm::raw_ostream
&OS
);
50 void EmitClangAttrSubjectMatchRulesParserStringSwitches(
51 const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
52 void EmitClangAttrClass(const llvm::RecordKeeper
&Records
,
53 llvm::raw_ostream
&OS
);
54 void EmitClangAttrImpl(const llvm::RecordKeeper
&Records
,
55 llvm::raw_ostream
&OS
);
56 void EmitClangAttrList(const llvm::RecordKeeper
&Records
,
57 llvm::raw_ostream
&OS
);
58 void EmitClangAttrSubjectMatchRuleList(const llvm::RecordKeeper
&Records
,
59 llvm::raw_ostream
&OS
);
60 void EmitClangAttrPCHRead(const llvm::RecordKeeper
&Records
,
61 llvm::raw_ostream
&OS
);
62 void EmitClangAttrPCHWrite(const llvm::RecordKeeper
&Records
,
63 llvm::raw_ostream
&OS
);
64 void EmitClangRegularKeywordAttributeInfo(const llvm::RecordKeeper
&Records
,
65 llvm::raw_ostream
&OS
);
66 void EmitClangAttrHasAttrImpl(const llvm::RecordKeeper
&Records
,
67 llvm::raw_ostream
&OS
);
68 void EmitClangAttrSpellingListIndex(const llvm::RecordKeeper
&Records
,
69 llvm::raw_ostream
&OS
);
70 void EmitClangAttrASTVisitor(const llvm::RecordKeeper
&Records
,
71 llvm::raw_ostream
&OS
);
72 void EmitClangAttrTemplateInstantiate(const llvm::RecordKeeper
&Records
,
73 llvm::raw_ostream
&OS
);
74 void EmitClangAttrParsedAttrList(const llvm::RecordKeeper
&Records
,
75 llvm::raw_ostream
&OS
);
76 void EmitClangAttrParsedAttrImpl(const llvm::RecordKeeper
&Records
,
77 llvm::raw_ostream
&OS
);
78 void EmitClangAttrParsedAttrKinds(const llvm::RecordKeeper
&Records
,
79 llvm::raw_ostream
&OS
);
80 void EmitClangAttrTextNodeDump(const llvm::RecordKeeper
&Records
,
81 llvm::raw_ostream
&OS
);
82 void EmitClangAttrNodeTraverse(const llvm::RecordKeeper
&Records
,
83 llvm::raw_ostream
&OS
);
84 void EmitClangAttrDocTable(const llvm::RecordKeeper
&Records
,
85 llvm::raw_ostream
&OS
);
87 void EmitClangBuiltins(const llvm::RecordKeeper
&Records
,
88 llvm::raw_ostream
&OS
);
90 void EmitClangDiagsDefs(const llvm::RecordKeeper
&Records
,
91 llvm::raw_ostream
&OS
, const std::string
&Component
);
92 void EmitClangDiagGroups(const llvm::RecordKeeper
&Records
,
93 llvm::raw_ostream
&OS
);
94 void EmitClangDiagsIndexName(const llvm::RecordKeeper
&Records
,
95 llvm::raw_ostream
&OS
);
97 void EmitClangSACheckers(const llvm::RecordKeeper
&Records
,
98 llvm::raw_ostream
&OS
);
100 void EmitClangCommentHTMLTags(const llvm::RecordKeeper
&Records
,
101 llvm::raw_ostream
&OS
);
102 void EmitClangCommentHTMLTagsProperties(const llvm::RecordKeeper
&Records
,
103 llvm::raw_ostream
&OS
);
104 void EmitClangCommentHTMLNamedCharacterReferences(
105 const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
107 void EmitClangCommentCommandInfo(const llvm::RecordKeeper
&Records
,
108 llvm::raw_ostream
&OS
);
109 void EmitClangCommentCommandList(const llvm::RecordKeeper
&Records
,
110 llvm::raw_ostream
&OS
);
111 void EmitClangOpcodes(const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
113 void EmitClangSyntaxNodeList(const llvm::RecordKeeper
&Records
,
114 llvm::raw_ostream
&OS
);
115 void EmitClangSyntaxNodeClasses(const llvm::RecordKeeper
&Records
,
116 llvm::raw_ostream
&OS
);
118 void EmitNeon(const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
119 void EmitFP16(const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
120 void EmitBF16(const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
121 void EmitNeonSema(const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
122 void EmitVectorTypes(const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
123 void EmitNeonTest(const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
125 void EmitImmCheckTypes(const llvm::RecordKeeper
&Records
,
126 llvm::raw_ostream
&OS
);
127 void EmitSveHeader(const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
128 void EmitSveBuiltins(const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
129 void EmitSveBuiltinCG(const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
130 void EmitSveTypeFlags(const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
131 void EmitSveRangeChecks(const llvm::RecordKeeper
&Records
,
132 llvm::raw_ostream
&OS
);
133 void EmitSveStreamingAttrs(const llvm::RecordKeeper
&Records
,
134 llvm::raw_ostream
&OS
);
136 void EmitSmeHeader(const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
137 void EmitSmeBuiltins(const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
138 void EmitSmeBuiltinCG(const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
139 void EmitSmeRangeChecks(const llvm::RecordKeeper
&Records
,
140 llvm::raw_ostream
&OS
);
141 void EmitSmeStreamingAttrs(const llvm::RecordKeeper
&Records
,
142 llvm::raw_ostream
&OS
);
143 void EmitSmeBuiltinZAState(const llvm::RecordKeeper
&Records
,
144 llvm::raw_ostream
&OS
);
146 void EmitMveHeader(const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
147 void EmitMveBuiltinDef(const llvm::RecordKeeper
&Records
,
148 llvm::raw_ostream
&OS
);
149 void EmitMveBuiltinSema(const llvm::RecordKeeper
&Records
,
150 llvm::raw_ostream
&OS
);
151 void EmitMveBuiltinCG(const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
152 void EmitMveBuiltinAliases(const llvm::RecordKeeper
&Records
,
153 llvm::raw_ostream
&OS
);
155 void EmitRVVHeader(const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
156 void EmitRVVBuiltins(const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
157 void EmitRVVBuiltinCG(const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
158 void EmitRVVBuiltinSema(const llvm::RecordKeeper
&Records
,
159 llvm::raw_ostream
&OS
);
161 void EmitCdeHeader(const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
162 void EmitCdeBuiltinDef(const llvm::RecordKeeper
&Records
,
163 llvm::raw_ostream
&OS
);
164 void EmitCdeBuiltinSema(const llvm::RecordKeeper
&Records
,
165 llvm::raw_ostream
&OS
);
166 void EmitCdeBuiltinCG(const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
167 void EmitCdeBuiltinAliases(const llvm::RecordKeeper
&Records
,
168 llvm::raw_ostream
&OS
);
170 void EmitClangAttrDocs(const llvm::RecordKeeper
&Records
,
171 llvm::raw_ostream
&OS
);
172 void EmitClangDiagDocs(const llvm::RecordKeeper
&Records
,
173 llvm::raw_ostream
&OS
);
174 void EmitClangOptDocs(const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
176 void EmitClangOpenCLBuiltins(const llvm::RecordKeeper
&Records
,
177 llvm::raw_ostream
&OS
);
178 void EmitClangOpenCLBuiltinHeader(const llvm::RecordKeeper
&Records
,
179 llvm::raw_ostream
&OS
);
180 void EmitClangOpenCLBuiltinTests(const llvm::RecordKeeper
&Records
,
181 llvm::raw_ostream
&OS
);
183 void EmitClangDataCollectors(const llvm::RecordKeeper
&Records
,
184 llvm::raw_ostream
&OS
);
186 void EmitTestPragmaAttributeSupportedAttributes(
187 const llvm::RecordKeeper
&Records
, llvm::raw_ostream
&OS
);
189 } // end namespace clang