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 EmitNeonSema(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
89void EmitNeonTest(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
90void EmitNeon2(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
91void EmitNeonSema2(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
92void EmitNeonTest2(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
93
94void EmitMveHeader(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
95void EmitMveBuiltinDef(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
96void EmitMveBuiltinSema(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
97void EmitMveBuiltinCG(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
98void EmitMveBuiltinAliases(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
99
100void EmitClangAttrDocs(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
101void EmitClangDiagDocs(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
102void EmitClangOptDocs(llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
103
104void EmitClangOpenCLBuiltins(llvm::RecordKeeper &Records,
105                             llvm::raw_ostream &OS);
106
107void EmitClangDataCollectors(llvm::RecordKeeper &Records,
108                             llvm::raw_ostream &OS);
109
110void EmitTestPragmaAttributeSupportedAttributes(llvm::RecordKeeper &Records,
111                                                llvm::raw_ostream &OS);
112
113} // end namespace clang
114
115#endif
116