212 lines · c
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-exception6//7//===----------------------------------------------------------------------===//8//9// This file contains the declarations for all of the Clang TableGen10// backends. A "TableGen backend" is just a function. See11// "$LLVM_ROOT/utils/TableGen/TableGenBackends.h" for more info.12//13//===----------------------------------------------------------------------===//14 15#ifndef LLVM_CLANG_UTILS_TABLEGEN_TABLEGENBACKENDS_H16#define LLVM_CLANG_UTILS_TABLEGEN_TABLEGENBACKENDS_H17 18#include <string>19 20namespace llvm {21class raw_ostream;22class RecordKeeper;23} // namespace llvm24 25namespace clang {26 27void EmitCIRLowering(const llvm::RecordKeeper &RK, llvm::raw_ostream &OS);28void EmitClangDeclContext(const llvm::RecordKeeper &RK, llvm::raw_ostream &OS);29/**30 @param PriorizeIfSubclassOf These classes should be prioritized in the output.31 This is useful to force enum generation/jump tables/lookup tables to be more32 compact in both size and surrounding code in hot functions. An example use is33 in Decl for classes that inherit from DeclContext, for functions like34 castFromDeclContext.35 */36void EmitClangASTNodes(const llvm::RecordKeeper &RK, llvm::raw_ostream &OS,37 const std::string &N, const std::string &S,38 std::string_view PriorizeIfSubclassOf = "");39void EmitClangBasicReader(const llvm::RecordKeeper &Records,40 llvm::raw_ostream &OS);41void EmitClangBasicWriter(const llvm::RecordKeeper &Records,42 llvm::raw_ostream &OS);43void EmitClangTypeNodes(const llvm::RecordKeeper &Records,44 llvm::raw_ostream &OS);45void EmitClangTypeReader(const llvm::RecordKeeper &Records,46 llvm::raw_ostream &OS);47void EmitClangTypeWriter(const llvm::RecordKeeper &Records,48 llvm::raw_ostream &OS);49void EmitClangAttrParserStringSwitches(const llvm::RecordKeeper &Records,50 llvm::raw_ostream &OS);51void EmitClangAttrSubjectMatchRulesParserStringSwitches(52 const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);53void EmitCXX11AttributeInfo(const llvm::RecordKeeper &Records,54 llvm::raw_ostream &OS);55void EmitAttributeSpellingList(const llvm::RecordKeeper &Records,56 llvm::raw_ostream &OS);57void EmitClangAttrClass(const llvm::RecordKeeper &Records,58 llvm::raw_ostream &OS);59void EmitClangAttrImpl(const llvm::RecordKeeper &Records,60 llvm::raw_ostream &OS);61void EmitClangAttrList(const llvm::RecordKeeper &Records,62 llvm::raw_ostream &OS);63void EmitClangAttrSubjectMatchRuleList(const llvm::RecordKeeper &Records,64 llvm::raw_ostream &OS);65void EmitClangAttrPCHRead(const llvm::RecordKeeper &Records,66 llvm::raw_ostream &OS);67void EmitClangAttrPCHWrite(const llvm::RecordKeeper &Records,68 llvm::raw_ostream &OS);69void EmitClangRegularKeywordAttributeInfo(const llvm::RecordKeeper &Records,70 llvm::raw_ostream &OS);71void EmitClangAttrHasAttrImpl(const llvm::RecordKeeper &Records,72 llvm::raw_ostream &OS);73void EmitClangAttrSpellingListIndex(const llvm::RecordKeeper &Records,74 llvm::raw_ostream &OS);75void EmitClangAttrASTVisitor(const llvm::RecordKeeper &Records,76 llvm::raw_ostream &OS);77void EmitClangAttrTemplateInstantiate(const llvm::RecordKeeper &Records,78 llvm::raw_ostream &OS);79void EmitClangAttrParsedAttrList(const llvm::RecordKeeper &Records,80 llvm::raw_ostream &OS);81void EmitClangAttrParsedAttrImpl(const llvm::RecordKeeper &Records,82 llvm::raw_ostream &OS);83void EmitClangAttrParsedAttrKinds(const llvm::RecordKeeper &Records,84 llvm::raw_ostream &OS);85void EmitClangAttrIsTypeDependent(const llvm::RecordKeeper &Records,86 llvm::raw_ostream &OS);87void EmitClangAttrTextNodeDump(const llvm::RecordKeeper &Records,88 llvm::raw_ostream &OS);89void EmitClangAttrNodeTraverse(const llvm::RecordKeeper &Records,90 llvm::raw_ostream &OS);91void EmitClangAttrDocTable(const llvm::RecordKeeper &Records,92 llvm::raw_ostream &OS);93 94void EmitClangBuiltins(const llvm::RecordKeeper &Records,95 llvm::raw_ostream &OS);96void EmitClangBuiltinTemplates(const llvm::RecordKeeper &Records,97 llvm::raw_ostream &OS);98 99void EmitClangDiagsCompatIDs(const llvm::RecordKeeper &Records,100 llvm::raw_ostream &OS,101 const std::string &Component);102void EmitClangDiagsDefs(const llvm::RecordKeeper &Records,103 llvm::raw_ostream &OS, const std::string &Component);104void EmitClangDiagsEnums(const llvm::RecordKeeper &Records,105 llvm::raw_ostream &OS, const std::string &Component);106void EmitClangDiagGroups(const llvm::RecordKeeper &Records,107 llvm::raw_ostream &OS);108void EmitClangDiagsIndexName(const llvm::RecordKeeper &Records,109 llvm::raw_ostream &OS);110void EmitClangDiagsInterface(llvm::raw_ostream &OS,111 const std::string &Component);112 113void EmitClangSACheckers(const llvm::RecordKeeper &Records,114 llvm::raw_ostream &OS);115 116void EmitClangCommentHTMLTags(const llvm::RecordKeeper &Records,117 llvm::raw_ostream &OS);118void EmitClangCommentHTMLTagsProperties(const llvm::RecordKeeper &Records,119 llvm::raw_ostream &OS);120void EmitClangCommentHTMLNamedCharacterReferences(121 const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);122 123void EmitClangCommentCommandInfo(const llvm::RecordKeeper &Records,124 llvm::raw_ostream &OS);125void EmitClangCommentCommandList(const llvm::RecordKeeper &Records,126 llvm::raw_ostream &OS);127void EmitClangOpcodes(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);128 129void EmitClangSyntaxNodeList(const llvm::RecordKeeper &Records,130 llvm::raw_ostream &OS);131void EmitClangSyntaxNodeClasses(const llvm::RecordKeeper &Records,132 llvm::raw_ostream &OS);133 134void EmitNeon(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);135void EmitFP16(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);136void EmitBF16(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);137void EmitNeonSema(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);138void EmitVectorTypes(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);139void EmitNeonTest(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);140 141void EmitImmCheckTypes(const llvm::RecordKeeper &Records,142 llvm::raw_ostream &OS);143void EmitSveHeader(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);144void EmitSveBuiltins(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);145void EmitSveBuiltinsJSON(const llvm::RecordKeeper &Records,146 llvm::raw_ostream &OS);147void EmitSveBuiltinCG(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);148void EmitSveTypeFlags(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);149void EmitSveRangeChecks(const llvm::RecordKeeper &Records,150 llvm::raw_ostream &OS);151void EmitSveStreamingAttrs(const llvm::RecordKeeper &Records,152 llvm::raw_ostream &OS);153 154void EmitSmeHeader(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);155void EmitSmeBuiltins(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);156void EmitSmeBuiltinsJSON(const llvm::RecordKeeper &Records,157 llvm::raw_ostream &OS);158void EmitSmeBuiltinCG(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);159void EmitSmeRangeChecks(const llvm::RecordKeeper &Records,160 llvm::raw_ostream &OS);161void EmitSmeStreamingAttrs(const llvm::RecordKeeper &Records,162 llvm::raw_ostream &OS);163void EmitSmeBuiltinZAState(const llvm::RecordKeeper &Records,164 llvm::raw_ostream &OS);165 166void EmitMveHeader(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);167void EmitMveBuiltinDef(const llvm::RecordKeeper &Records,168 llvm::raw_ostream &OS);169void EmitMveBuiltinSema(const llvm::RecordKeeper &Records,170 llvm::raw_ostream &OS);171void EmitMveBuiltinCG(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);172void EmitMveBuiltinAliases(const llvm::RecordKeeper &Records,173 llvm::raw_ostream &OS);174 175void EmitRVVHeader(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);176void EmitRVVBuiltins(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);177void EmitRVVBuiltinCG(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);178void EmitRVVBuiltinSema(const llvm::RecordKeeper &Records,179 llvm::raw_ostream &OS);180 181void EmitCdeHeader(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);182void EmitCdeBuiltinDef(const llvm::RecordKeeper &Records,183 llvm::raw_ostream &OS);184void EmitCdeBuiltinSema(const llvm::RecordKeeper &Records,185 llvm::raw_ostream &OS);186void EmitCdeBuiltinCG(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);187void EmitCdeBuiltinAliases(const llvm::RecordKeeper &Records,188 llvm::raw_ostream &OS);189 190void EmitClangAttrDocs(const llvm::RecordKeeper &Records,191 llvm::raw_ostream &OS);192void EmitClangDiagDocs(const llvm::RecordKeeper &Records,193 llvm::raw_ostream &OS);194void EmitClangOptDocs(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);195 196void EmitClangOpenCLBuiltins(const llvm::RecordKeeper &Records,197 llvm::raw_ostream &OS);198void EmitClangOpenCLBuiltinHeader(const llvm::RecordKeeper &Records,199 llvm::raw_ostream &OS);200void EmitClangOpenCLBuiltinTests(const llvm::RecordKeeper &Records,201 llvm::raw_ostream &OS);202 203void EmitClangDataCollectors(const llvm::RecordKeeper &Records,204 llvm::raw_ostream &OS);205 206void EmitTestPragmaAttributeSupportedAttributes(207 const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);208 209} // end namespace clang210 211#endif212