xref: /freebsd/contrib/llvm-project/clang/utils/TableGen/TableGenBackends.h (revision 59144db3fca192c4637637dfe6b5a5d98632cd47)
1 //===- TableGenBackends.h - Declarations for Clang TableGen Backends ------===//
2 //
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
6 //
7 //===----------------------------------------------------------------------===//
8 //
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.
12 //
13 //===----------------------------------------------------------------------===//
14 
15 #ifndef LLVM_CLANG_UTILS_TABLEGEN_TABLEGENBACKENDS_H
16 #define LLVM_CLANG_UTILS_TABLEGEN_TABLEGENBACKENDS_H
17 
18 #include <string>
19 
20 namespace llvm {
21 class raw_ostream;
22 class RecordKeeper;
23 } // namespace llvm
24 
25 namespace clang {
26 
27 void EmitClangDeclContext(llvm::RecordKeeper &RK, llvm::raw_ostream &OS);
28 /**
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
33   castFromDeclContext.
34   */
35 void EmitClangASTNodes(llvm::RecordKeeper &RK, llvm::raw_ostream &OS,
36                        const std::string &N, const std::string &S,
37                        std::string_view PriorizeIfSubclassOf = "");
38 void EmitClangBasicReader(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
39 void EmitClangBasicWriter(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
40 void EmitClangTypeNodes(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
41 void EmitClangTypeReader(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
42 void EmitClangTypeWriter(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
43 void EmitClangAttrParserStringSwitches(llvm::RecordKeeper &Records,
44                                        llvm::raw_ostream &OS);
45 void EmitClangAttrSubjectMatchRulesParserStringSwitches(
46     llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
47 void EmitClangAttrClass(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
48 void EmitClangAttrImpl(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
49 void EmitClangAttrList(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
50 void EmitClangAttrPrintList(const std::string &FieldName,
51                             llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
52 void EmitClangAttrSubjectMatchRuleList(llvm::RecordKeeper &Records,
53                                        llvm::raw_ostream &OS);
54 void EmitClangAttrPCHRead(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
55 void EmitClangAttrPCHWrite(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
56 void EmitClangRegularKeywordAttributeInfo(llvm::RecordKeeper &Records,
57                                           llvm::raw_ostream &OS);
58 void EmitClangAttrHasAttrImpl(llvm::RecordKeeper &Records,
59                               llvm::raw_ostream &OS);
60 void EmitClangAttrSpellingListIndex(llvm::RecordKeeper &Records,
61                                     llvm::raw_ostream &OS);
62 void EmitClangAttrASTVisitor(llvm::RecordKeeper &Records,
63                              llvm::raw_ostream &OS);
64 void EmitClangAttrTemplateInstantiate(llvm::RecordKeeper &Records,
65                                       llvm::raw_ostream &OS);
66 void EmitClangAttrParsedAttrList(llvm::RecordKeeper &Records,
67                                  llvm::raw_ostream &OS);
68 void EmitClangAttrParsedAttrImpl(llvm::RecordKeeper &Records,
69                                  llvm::raw_ostream &OS);
70 void EmitClangAttrParsedAttrKinds(llvm::RecordKeeper &Records,
71                                   llvm::raw_ostream &OS);
72 void EmitClangAttrTextNodeDump(llvm::RecordKeeper &Records,
73                                llvm::raw_ostream &OS);
74 void EmitClangAttrNodeTraverse(llvm::RecordKeeper &Records,
75                                llvm::raw_ostream &OS);
76 void EmitClangAttrDocTable(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
77 
78 void EmitClangDiagsDefs(llvm::RecordKeeper &Records, llvm::raw_ostream &OS,
79                         const std::string &Component);
80 void EmitClangDiagGroups(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
81 void EmitClangDiagsIndexName(llvm::RecordKeeper &Records,
82                              llvm::raw_ostream &OS);
83 
84 void EmitClangSACheckers(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
85 
86 void EmitClangCommentHTMLTags(llvm::RecordKeeper &Records,
87                               llvm::raw_ostream &OS);
88 void EmitClangCommentHTMLTagsProperties(llvm::RecordKeeper &Records,
89                                         llvm::raw_ostream &OS);
90 void EmitClangCommentHTMLNamedCharacterReferences(llvm::RecordKeeper &Records,
91                                                   llvm::raw_ostream &OS);
92 
93 void EmitClangCommentCommandInfo(llvm::RecordKeeper &Records,
94                                  llvm::raw_ostream &OS);
95 void EmitClangCommentCommandList(llvm::RecordKeeper &Records,
96                                  llvm::raw_ostream &OS);
97 void EmitClangOpcodes(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
98 
99 void EmitClangSyntaxNodeList(llvm::RecordKeeper &Records,
100                              llvm::raw_ostream &OS);
101 void EmitClangSyntaxNodeClasses(llvm::RecordKeeper &Records,
102                                 llvm::raw_ostream &OS);
103 
104 void EmitNeon(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
105 void EmitFP16(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
106 void EmitBF16(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
107 void EmitNeonSema(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
108 void EmitVectorTypes(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
109 void EmitNeonTest(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
110 
111 void EmitSveHeader(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
112 void EmitSveBuiltins(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
113 void EmitSveBuiltinCG(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
114 void EmitSveTypeFlags(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
115 void EmitSveRangeChecks(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
116 void EmitSveStreamingAttrs(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
117 
118 void EmitSmeHeader(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
119 void EmitSmeBuiltins(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
120 void EmitSmeBuiltinCG(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
121 void EmitSmeRangeChecks(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
122 void EmitSmeStreamingAttrs(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
123 void EmitSmeBuiltinZAState(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
124 
125 void EmitMveHeader(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
126 void EmitMveBuiltinDef(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
127 void EmitMveBuiltinSema(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
128 void EmitMveBuiltinCG(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
129 void EmitMveBuiltinAliases(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
130 
131 void EmitRVVHeader(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
132 void EmitRVVBuiltins(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
133 void EmitRVVBuiltinCG(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
134 void EmitRVVBuiltinSema(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
135 
136 void EmitCdeHeader(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
137 void EmitCdeBuiltinDef(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
138 void EmitCdeBuiltinSema(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
139 void EmitCdeBuiltinCG(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
140 void EmitCdeBuiltinAliases(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
141 
142 void EmitClangAttrDocs(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
143 void EmitClangDiagDocs(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
144 void EmitClangOptDocs(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
145 
146 void EmitClangOpenCLBuiltins(llvm::RecordKeeper &Records,
147                              llvm::raw_ostream &OS);
148 void EmitClangOpenCLBuiltinHeader(llvm::RecordKeeper &Records,
149                                   llvm::raw_ostream &OS);
150 void EmitClangOpenCLBuiltinTests(llvm::RecordKeeper &Records,
151                                  llvm::raw_ostream &OS);
152 
153 void EmitClangDataCollectors(llvm::RecordKeeper &Records,
154                              llvm::raw_ostream &OS);
155 
156 void EmitTestPragmaAttributeSupportedAttributes(llvm::RecordKeeper &Records,
157                                                 llvm::raw_ostream &OS);
158 
159 } // end namespace clang
160 
161 #endif
162