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