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
20namespace llvm {
21class raw_ostream;
22class RecordKeeper;
23} // namespace llvm
24
25namespace clang {
26
27void EmitClangDeclContext(llvm::RecordKeeper &RK, llvm::raw_ostream &OS);
28void EmitClangASTNodes(llvm::RecordKeeper &RK, llvm::raw_ostream &OS,
29                       const std::string &N, const std::string &S);
30void EmitClangBasicReader(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
31void EmitClangBasicWriter(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
32void EmitClangTypeNodes(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
33void EmitClangTypeReader(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
34void EmitClangTypeWriter(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
35void EmitClangAttrParserStringSwitches(llvm::RecordKeeper &Records,
36                                       llvm::raw_ostream &OS);
37void EmitClangAttrSubjectMatchRulesParserStringSwitches(
38    llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
39void EmitClangAttrClass(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
40void EmitClangAttrImpl(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
41void EmitClangAttrList(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
42void EmitClangAttrSubjectMatchRuleList(llvm::RecordKeeper &Records,
43                                       llvm::raw_ostream &OS);
44void EmitClangAttrPCHRead(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
45void EmitClangAttrPCHWrite(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
46void EmitClangAttrHasAttrImpl(llvm::RecordKeeper &Records,
47                              llvm::raw_ostream &OS);
48void EmitClangAttrSpellingListIndex(llvm::RecordKeeper &Records,
49                                    llvm::raw_ostream &OS);
50void EmitClangAttrASTVisitor(llvm::RecordKeeper &Records,
51                             llvm::raw_ostream &OS);
52void EmitClangAttrTemplateInstantiate(llvm::RecordKeeper &Records,
53                                      llvm::raw_ostream &OS);
54void EmitClangAttrParsedAttrList(llvm::RecordKeeper &Records,
55                                 llvm::raw_ostream &OS);
56void EmitClangAttrParsedAttrImpl(llvm::RecordKeeper &Records,
57                                 llvm::raw_ostream &OS);
58void EmitClangAttrParsedAttrKinds(llvm::RecordKeeper &Records,
59                                  llvm::raw_ostream &OS);
60void EmitClangAttrTextNodeDump(llvm::RecordKeeper &Records,
61                               llvm::raw_ostream &OS);
62void EmitClangAttrNodeTraverse(llvm::RecordKeeper &Records,
63                               llvm::raw_ostream &OS);
64
65void EmitClangDiagsDefs(llvm::RecordKeeper &Records, llvm::raw_ostream &OS,
66                        const std::string &Component);
67void EmitClangDiagGroups(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
68void EmitClangDiagsIndexName(llvm::RecordKeeper &Records,
69                             llvm::raw_ostream &OS);
70
71void EmitClangSACheckers(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
72
73void EmitClangCommentHTMLTags(llvm::RecordKeeper &Records,
74                              llvm::raw_ostream &OS);
75void EmitClangCommentHTMLTagsProperties(llvm::RecordKeeper &Records,
76                                        llvm::raw_ostream &OS);
77void EmitClangCommentHTMLNamedCharacterReferences(llvm::RecordKeeper &Records,
78                                                  llvm::raw_ostream &OS);
79
80void EmitClangCommentCommandInfo(llvm::RecordKeeper &Records,
81                                 llvm::raw_ostream &OS);
82void EmitClangCommentCommandList(llvm::RecordKeeper &Records,
83                                 llvm::raw_ostream &OS);
84void EmitClangOpcodes(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
85
86void EmitNeon(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
87void EmitFP16(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
88void EmitBF16(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
89void EmitNeonSema(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
90void EmitNeonTest(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
91void EmitNeon2(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
92void EmitNeonSema2(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
93void EmitNeonTest2(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
94
95void EmitSveHeader(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
96void EmitSveBuiltins(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
97void EmitSveBuiltinCG(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
98void EmitSveTypeFlags(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
99void EmitSveRangeChecks(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
100
101void EmitMveHeader(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
102void EmitMveBuiltinDef(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
103void EmitMveBuiltinSema(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
104void EmitMveBuiltinCG(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
105void EmitMveBuiltinAliases(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
106
107void EmitCdeHeader(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
108void EmitCdeBuiltinDef(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
109void EmitCdeBuiltinSema(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
110void EmitCdeBuiltinCG(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
111void EmitCdeBuiltinAliases(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
112
113void EmitClangAttrDocs(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
114void EmitClangDiagDocs(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
115void EmitClangOptDocs(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
116
117void EmitClangOpenCLBuiltins(llvm::RecordKeeper &Records,
118                             llvm::raw_ostream &OS);
119
120void EmitClangDataCollectors(llvm::RecordKeeper &Records,
121                             llvm::raw_ostream &OS);
122
123void EmitTestPragmaAttributeSupportedAttributes(llvm::RecordKeeper &Records,
124                                                llvm::raw_ostream &OS);
125
126} // end namespace clang
127
128#endif
129