diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2022-02-05 18:04:23 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2022-02-05 18:05:05 +0000 |
| commit | ecbca9f5fb7d7613d2b94982c4825eb0d33d6842 (patch) | |
| tree | 3a4038f3b7bafaeade9fd6146ea8021237616657 /llvm/utils/TableGen | |
| parent | 6f8fc217eaa12bf657be1c6468ed9938d10168b3 (diff) | |
Diffstat (limited to 'llvm/utils/TableGen')
31 files changed, 80 insertions, 74 deletions
diff --git a/llvm/utils/TableGen/CodeGenDAGPatterns.cpp b/llvm/utils/TableGen/CodeGenDAGPatterns.cpp index 4de619df5b5f..a1f8f4809d5f 100644 --- a/llvm/utils/TableGen/CodeGenDAGPatterns.cpp +++ b/llvm/utils/TableGen/CodeGenDAGPatterns.cpp @@ -4645,39 +4645,33 @@ static void GenerateVariantsOf(TreePatternNodePtr N, // If this node is commutative, consider the commuted order. bool isCommIntrinsic = N->isCommutativeIntrinsic(CDP); if (NodeInfo.hasProperty(SDNPCommutative) || isCommIntrinsic) { - assert((N->getNumChildren()>=2 || isCommIntrinsic) && + unsigned Skip = isCommIntrinsic ? 1 : 0; // First operand is intrinsic id. + assert(N->getNumChildren() >= (2 + Skip) && "Commutative but doesn't have 2 children!"); - // Don't count children which are actually register references. - unsigned NC = 0; - for (unsigned i = 0, e = N->getNumChildren(); i != e; ++i) { + // Don't allow commuting children which are actually register references. + bool NoRegisters = true; + unsigned i = 0 + Skip; + unsigned e = 2 + Skip; + for (; i != e; ++i) { TreePatternNode *Child = N->getChild(i); if (Child->isLeaf()) if (DefInit *DI = dyn_cast<DefInit>(Child->getLeafValue())) { Record *RR = DI->getDef(); if (RR->isSubClassOf("Register")) - continue; + NoRegisters = false; } - NC++; } // Consider the commuted order. - if (isCommIntrinsic) { - // Commutative intrinsic. First operand is the intrinsic id, 2nd and 3rd - // operands are the commutative operands, and there might be more operands - // after those. - assert(NC >= 3 && - "Commutative intrinsic should have at least 3 children!"); - std::vector<std::vector<TreePatternNodePtr>> Variants; - Variants.push_back(std::move(ChildVariants[0])); // Intrinsic id. - Variants.push_back(std::move(ChildVariants[2])); - Variants.push_back(std::move(ChildVariants[1])); - for (unsigned i = 3; i != NC; ++i) - Variants.push_back(std::move(ChildVariants[i])); - CombineChildVariants(N, Variants, OutVariants, CDP, DepVars); - } else if (NC == N->getNumChildren()) { + if (NoRegisters) { std::vector<std::vector<TreePatternNodePtr>> Variants; - Variants.push_back(std::move(ChildVariants[1])); - Variants.push_back(std::move(ChildVariants[0])); - for (unsigned i = 2; i != NC; ++i) + unsigned i = 0; + if (isCommIntrinsic) + Variants.push_back(std::move(ChildVariants[i++])); // Intrinsic id. + Variants.push_back(std::move(ChildVariants[i + 1])); + Variants.push_back(std::move(ChildVariants[i])); + i += 2; + // Remaining operands are not commuted. + for (; i != N->getNumChildren(); ++i) Variants.push_back(std::move(ChildVariants[i])); CombineChildVariants(N, Variants, OutVariants, CDP, DepVars); } diff --git a/llvm/utils/TableGen/CodeGenSchedule.cpp b/llvm/utils/TableGen/CodeGenSchedule.cpp index 7c1c37f7b370..e47bda725a17 100644 --- a/llvm/utils/TableGen/CodeGenSchedule.cpp +++ b/llvm/utils/TableGen/CodeGenSchedule.cpp @@ -521,6 +521,15 @@ void CodeGenSchedModels::collectProcModels() { RecVec ProcRecords = Records.getAllDerivedDefinitions("Processor"); llvm::sort(ProcRecords, LessRecordFieldName()); + // Check for duplicated names. + auto I = std::adjacent_find(ProcRecords.begin(), ProcRecords.end(), + [](const Record *Rec1, const Record *Rec2) { + return Rec1->getValueAsString("Name") == Rec2->getValueAsString("Name"); + }); + if (I != ProcRecords.end()) + PrintFatalError((*I)->getLoc(), "Duplicate processor name " + + (*I)->getValueAsString("Name")); + // Reserve space because we can. Reallocation would be ok. ProcModels.reserve(ProcRecords.size()+1); @@ -1973,7 +1982,6 @@ void CodeGenSchedModels::collectProcResources() { void CodeGenSchedModels::checkCompleteness() { bool Complete = true; - bool HadCompleteModel = false; for (const CodeGenProcModel &ProcModel : procModels()) { const bool HasItineraries = ProcModel.hasItineraries(); if (!ProcModel.ModelDef->getValueAsBit("CompleteModel")) @@ -1985,7 +1993,7 @@ void CodeGenSchedModels::checkCompleteness() { continue; unsigned SCIdx = getSchedClassIdx(*Inst); if (!SCIdx) { - if (Inst->TheDef->isValueUnset("SchedRW") && !HadCompleteModel) { + if (Inst->TheDef->isValueUnset("SchedRW")) { PrintError(Inst->TheDef->getLoc(), "No schedule information for instruction '" + Inst->TheDef->getName() + "' in SchedMachineModel '" + @@ -2013,7 +2021,6 @@ void CodeGenSchedModels::checkCompleteness() { Complete = false; } } - HadCompleteModel = true; } if (!Complete) { errs() << "\n\nIncomplete schedule models found.\n" diff --git a/llvm/utils/TableGen/CompressInstEmitter.cpp b/llvm/utils/TableGen/CompressInstEmitter.cpp index 94ad6ee285d4..1fd85939e74e 100644 --- a/llvm/utils/TableGen/CompressInstEmitter.cpp +++ b/llvm/utils/TableGen/CompressInstEmitter.cpp @@ -72,7 +72,6 @@ #include "CodeGenTarget.h" #include "llvm/ADT/IndexedMap.h" #include "llvm/ADT/SmallVector.h" -#include "llvm/ADT/StringExtras.h" #include "llvm/ADT/StringMap.h" #include "llvm/Support/Debug.h" #include "llvm/Support/ErrorHandling.h" diff --git a/llvm/utils/TableGen/GICombinerEmitter.cpp b/llvm/utils/TableGen/GICombinerEmitter.cpp index 63a9ed682d4f..0dea1ef00e4b 100644 --- a/llvm/utils/TableGen/GICombinerEmitter.cpp +++ b/llvm/utils/TableGen/GICombinerEmitter.cpp @@ -11,21 +11,21 @@ /// //===----------------------------------------------------------------------===// +#include "CodeGenTarget.h" +#include "GlobalISel/CodeExpander.h" +#include "GlobalISel/CodeExpansions.h" +#include "GlobalISel/GIMatchDag.h" +#include "GlobalISel/GIMatchDagPredicate.h" +#include "GlobalISel/GIMatchTree.h" #include "llvm/ADT/SmallSet.h" #include "llvm/ADT/Statistic.h" #include "llvm/ADT/StringSet.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/Debug.h" #include "llvm/Support/ScopedPrinter.h" -#include "llvm/Support/Timer.h" #include "llvm/TableGen/Error.h" #include "llvm/TableGen/StringMatcher.h" #include "llvm/TableGen/TableGenBackend.h" -#include "CodeGenTarget.h" -#include "GlobalISel/CodeExpander.h" -#include "GlobalISel/CodeExpansions.h" -#include "GlobalISel/GIMatchDag.h" -#include "GlobalISel/GIMatchTree.h" #include <cstdint> using namespace llvm; diff --git a/llvm/utils/TableGen/GlobalISel/CodeExpander.cpp b/llvm/utils/TableGen/GlobalISel/CodeExpander.cpp index 3ebb293f466e..42b4aabf2755 100644 --- a/llvm/utils/TableGen/GlobalISel/CodeExpander.cpp +++ b/llvm/utils/TableGen/GlobalISel/CodeExpander.cpp @@ -12,7 +12,6 @@ #include "CodeExpander.h" #include "CodeExpansions.h" -#include "llvm/Support/CommandLine.h" #include "llvm/Support/raw_ostream.h" #include "llvm/TableGen/Error.h" diff --git a/llvm/utils/TableGen/GlobalISel/CodeExpander.h b/llvm/utils/TableGen/GlobalISel/CodeExpander.h index bd6946de5925..1291eb1ad940 100644 --- a/llvm/utils/TableGen/GlobalISel/CodeExpander.h +++ b/llvm/utils/TableGen/GlobalISel/CodeExpander.h @@ -15,10 +15,10 @@ #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/StringRef.h" -#include "llvm/Support/SMLoc.h" namespace llvm { class CodeExpansions; +class SMLoc; class raw_ostream; /// Emit the given code with all '${foo}' placeholders expanded to their diff --git a/llvm/utils/TableGen/GlobalISel/GIMatchDag.h b/llvm/utils/TableGen/GlobalISel/GIMatchDag.h index 37570648cad1..4c3c610aff74 100644 --- a/llvm/utils/TableGen/GlobalISel/GIMatchDag.h +++ b/llvm/utils/TableGen/GlobalISel/GIMatchDag.h @@ -16,7 +16,6 @@ #include "GIMatchDagPredicateDependencyEdge.h" namespace llvm { -class GIMatchDag; /// This class manages lifetimes for data associated with the GIMatchDag object. class GIMatchDagContext { diff --git a/llvm/utils/TableGen/GlobalISel/GIMatchDagEdge.cpp b/llvm/utils/TableGen/GlobalISel/GIMatchDagEdge.cpp index e59cb3aae49a..796479467df7 100644 --- a/llvm/utils/TableGen/GlobalISel/GIMatchDagEdge.cpp +++ b/llvm/utils/TableGen/GlobalISel/GIMatchDagEdge.cpp @@ -8,6 +8,7 @@ #include "GIMatchDagEdge.h" #include "GIMatchDagInstr.h" +#include "GIMatchDagOperands.h" #include "llvm/Support/raw_ostream.h" using namespace llvm; diff --git a/llvm/utils/TableGen/GlobalISel/GIMatchDagInstr.h b/llvm/utils/TableGen/GlobalISel/GIMatchDagInstr.h index 0c39b50442b4..5e60448b30c1 100644 --- a/llvm/utils/TableGen/GlobalISel/GIMatchDagInstr.h +++ b/llvm/utils/TableGen/GlobalISel/GIMatchDagInstr.h @@ -9,11 +9,14 @@ #ifndef LLVM_UTILS_TABLEGEN_GIMATCHDAGINSTR_H #define LLVM_UTILS_TABLEGEN_GIMATCHDAGINSTR_H -#include "GIMatchDagOperands.h" #include "llvm/ADT/DenseMap.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/raw_ostream.h" namespace llvm { +class CodeGenInstruction; class GIMatchDag; +class GIMatchDagOperandList; /// Represents an instruction in the match DAG. This object knows very little /// about the actual instruction to be matched as the bulk of that is in diff --git a/llvm/utils/TableGen/GlobalISel/GIMatchDagPredicate.cpp b/llvm/utils/TableGen/GlobalISel/GIMatchDagPredicate.cpp index 1aca2f9dc135..6a9e33ac515e 100644 --- a/llvm/utils/TableGen/GlobalISel/GIMatchDagPredicate.cpp +++ b/llvm/utils/TableGen/GlobalISel/GIMatchDagPredicate.cpp @@ -10,8 +10,8 @@ #include "llvm/TableGen/Record.h" -#include "GIMatchDagOperands.h" #include "../CodeGenInstruction.h" +#include "GIMatchDag.h" using namespace llvm; diff --git a/llvm/utils/TableGen/GlobalISel/GIMatchDagPredicate.h b/llvm/utils/TableGen/GlobalISel/GIMatchDagPredicate.h index 9b030d6edb13..08e541b76a5a 100644 --- a/llvm/utils/TableGen/GlobalISel/GIMatchDagPredicate.h +++ b/llvm/utils/TableGen/GlobalISel/GIMatchDagPredicate.h @@ -9,8 +9,12 @@ #ifndef LLVM_UTILS_TABLEGEN_GIMATCHDAGPREDICATE_H #define LLVM_UTILS_TABLEGEN_GIMATCHDAGPREDICATE_H +#include "llvm/ADT/SmallVector.h" #include "llvm/ADT/StringRef.h" -#include "GIMatchDag.h" + +#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) +#include "llvm/Support/raw_ostream.h" +#endif namespace llvm { class CodeExpansions; diff --git a/llvm/utils/TableGen/GlobalISel/GIMatchDagPredicateDependencyEdge.cpp b/llvm/utils/TableGen/GlobalISel/GIMatchDagPredicateDependencyEdge.cpp index 2e804de1cd4e..921cbaf9c408 100644 --- a/llvm/utils/TableGen/GlobalISel/GIMatchDagPredicateDependencyEdge.cpp +++ b/llvm/utils/TableGen/GlobalISel/GIMatchDagPredicateDependencyEdge.cpp @@ -9,6 +9,7 @@ #include "GIMatchDagPredicateDependencyEdge.h" #include "GIMatchDagInstr.h" +#include "GIMatchDagOperands.h" #include "GIMatchDagPredicate.h" #include "llvm/Support/raw_ostream.h" diff --git a/llvm/utils/TableGen/GlobalISel/GIMatchDagPredicateDependencyEdge.h b/llvm/utils/TableGen/GlobalISel/GIMatchDagPredicateDependencyEdge.h index 9552adc5c625..af91afc6073d 100644 --- a/llvm/utils/TableGen/GlobalISel/GIMatchDagPredicateDependencyEdge.h +++ b/llvm/utils/TableGen/GlobalISel/GIMatchDagPredicateDependencyEdge.h @@ -9,12 +9,14 @@ #ifndef LLVM_UTILS_TABLEGEN_GIMATCHDAGPREDICATEEDGE_H #define LLVM_UTILS_TABLEGEN_GIMATCHDAGPREDICATEEDGE_H -#include "GIMatchDagOperands.h" +#include "llvm/Support/Compiler.h" namespace llvm { -class GIMatchDag; class GIMatchDagInstr; class GIMatchDagPredicate; +class GIMatchDagOperand; + +class raw_ostream; /// Represents a dependency that must be met to evaluate a predicate. /// diff --git a/llvm/utils/TableGen/GlobalISel/GIMatchTree.cpp b/llvm/utils/TableGen/GlobalISel/GIMatchTree.cpp index 00d57404b069..42055ad4f608 100644 --- a/llvm/utils/TableGen/GlobalISel/GIMatchTree.cpp +++ b/llvm/utils/TableGen/GlobalISel/GIMatchTree.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// #include "GIMatchTree.h" +#include "GIMatchDagPredicate.h" #include "../CodeGenInstruction.h" diff --git a/llvm/utils/TableGen/GlobalISelEmitter.cpp b/llvm/utils/TableGen/GlobalISelEmitter.cpp index 25bc0adc2a81..018aa7ee2f71 100644 --- a/llvm/utils/TableGen/GlobalISelEmitter.cpp +++ b/llvm/utils/TableGen/GlobalISelEmitter.cpp @@ -32,7 +32,6 @@ #include "CodeGenDAGPatterns.h" #include "SubtargetFeatureInfo.h" #include "llvm/ADT/Optional.h" -#include "llvm/ADT/SmallSet.h" #include "llvm/ADT/Statistic.h" #include "llvm/Support/CodeGenCoverage.h" #include "llvm/Support/CommandLine.h" @@ -668,7 +667,6 @@ MatchTable &operator<<(MatchTable &Table, const MatchTableRecord &Value) { class OperandMatcher; class MatchAction; class PredicateMatcher; -class RuleMatcher; class Matcher { public: diff --git a/llvm/utils/TableGen/InfoByHwMode.cpp b/llvm/utils/TableGen/InfoByHwMode.cpp index 3d236b828032..73c4fbf0a5eb 100644 --- a/llvm/utils/TableGen/InfoByHwMode.cpp +++ b/llvm/utils/TableGen/InfoByHwMode.cpp @@ -18,7 +18,6 @@ #include "llvm/Support/Debug.h" #include "llvm/Support/raw_ostream.h" -#include <set> #include <string> using namespace llvm; diff --git a/llvm/utils/TableGen/InfoByHwMode.h b/llvm/utils/TableGen/InfoByHwMode.h index c97add687ca2..44927d0bf0df 100644 --- a/llvm/utils/TableGen/InfoByHwMode.h +++ b/llvm/utils/TableGen/InfoByHwMode.h @@ -20,11 +20,9 @@ #include <map> #include <string> -#include <vector> namespace llvm { -struct CodeGenHwModes; class Record; class raw_ostream; diff --git a/llvm/utils/TableGen/IntrinsicEmitter.cpp b/llvm/utils/TableGen/IntrinsicEmitter.cpp index f4e5eb59cb80..a5aa4069e60f 100644 --- a/llvm/utils/TableGen/IntrinsicEmitter.cpp +++ b/llvm/utils/TableGen/IntrinsicEmitter.cpp @@ -18,7 +18,6 @@ #include "llvm/Support/CommandLine.h" #include "llvm/TableGen/Error.h" #include "llvm/TableGen/Record.h" -#include "llvm/TableGen/StringMatcher.h" #include "llvm/TableGen/StringToOffsetTable.h" #include "llvm/TableGen/TableGenBackend.h" #include <algorithm> diff --git a/llvm/utils/TableGen/OptParserEmitter.cpp b/llvm/utils/TableGen/OptParserEmitter.cpp index 0809432dfd0d..d54132f3190b 100644 --- a/llvm/utils/TableGen/OptParserEmitter.cpp +++ b/llvm/utils/TableGen/OptParserEmitter.cpp @@ -13,7 +13,6 @@ #include "llvm/Support/raw_ostream.h" #include "llvm/TableGen/Record.h" #include "llvm/TableGen/TableGenBackend.h" -#include <cctype> #include <cstring> #include <map> #include <memory> diff --git a/llvm/utils/TableGen/OptRSTEmitter.cpp b/llvm/utils/TableGen/OptRSTEmitter.cpp index 5e44d033109a..11d896229f5b 100644 --- a/llvm/utils/TableGen/OptRSTEmitter.cpp +++ b/llvm/utils/TableGen/OptRSTEmitter.cpp @@ -8,15 +8,8 @@ #include "OptEmitter.h" #include "llvm/ADT/STLExtras.h" -#include "llvm/ADT/SmallString.h" #include "llvm/ADT/StringMap.h" -#include "llvm/ADT/Twine.h" -#include "llvm/TableGen/Error.h" #include "llvm/TableGen/Record.h" -#include "llvm/TableGen/TableGenBackend.h" -#include <cctype> -#include <cstring> -#include <map> using namespace llvm; diff --git a/llvm/utils/TableGen/PredicateExpander.h b/llvm/utils/TableGen/PredicateExpander.h index 9e7a4a3925ac..27f049a715aa 100644 --- a/llvm/utils/TableGen/PredicateExpander.h +++ b/llvm/utils/TableGen/PredicateExpander.h @@ -17,12 +17,12 @@ #define LLVM_UTILS_TABLEGEN_PREDICATEEXPANDER_H #include "llvm/ADT/StringRef.h" -#include "llvm/Support/raw_ostream.h" -#include "llvm/TableGen/Record.h" +#include <vector> namespace llvm { class raw_ostream; +class Record; class PredicateExpander { bool EmitCallsByRef; diff --git a/llvm/utils/TableGen/RegisterBankEmitter.cpp b/llvm/utils/TableGen/RegisterBankEmitter.cpp index 61f71309b6fb..d97d7acb87a7 100644 --- a/llvm/utils/TableGen/RegisterBankEmitter.cpp +++ b/llvm/utils/TableGen/RegisterBankEmitter.cpp @@ -17,7 +17,6 @@ #include "llvm/TableGen/Record.h" #include "llvm/TableGen/TableGenBackend.h" -#include "CodeGenHwModes.h" #include "CodeGenRegisters.h" #include "CodeGenTarget.h" diff --git a/llvm/utils/TableGen/SearchableTableEmitter.cpp b/llvm/utils/TableGen/SearchableTableEmitter.cpp index 327b90d59db6..dc5c96c662be 100644 --- a/llvm/utils/TableGen/SearchableTableEmitter.cpp +++ b/llvm/utils/TableGen/SearchableTableEmitter.cpp @@ -16,9 +16,6 @@ #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/StringExtras.h" -#include "llvm/Support/Format.h" -#include "llvm/Support/MemoryBuffer.h" -#include "llvm/Support/SourceMgr.h" #include "llvm/TableGen/Error.h" #include "llvm/TableGen/Record.h" #include <algorithm> @@ -32,8 +29,6 @@ using namespace llvm; namespace { -struct GenericTable; - int getAsInt(Init *B) { return cast<IntInit>(B->convertInitializerTo(IntRecTy::get()))->getValue(); } diff --git a/llvm/utils/TableGen/TableGen.cpp b/llvm/utils/TableGen/TableGen.cpp index 24c11c8bc831..2d4a45f889be 100644 --- a/llvm/utils/TableGen/TableGen.cpp +++ b/llvm/utils/TableGen/TableGen.cpp @@ -289,7 +289,8 @@ int main(int argc, char **argv) { #define __has_feature(x) 0 #endif -#if __has_feature(address_sanitizer) || defined(__SANITIZE_ADDRESS__) || \ +#if __has_feature(address_sanitizer) || \ + (defined(__SANITIZE_ADDRESS__) && defined(__GNUC__)) || \ __has_feature(leak_sanitizer) #include <sanitizer/lsan_interface.h> diff --git a/llvm/utils/TableGen/WebAssemblyDisassemblerEmitter.cpp b/llvm/utils/TableGen/WebAssemblyDisassemblerEmitter.cpp index 7518b262e6e9..74969053f095 100644 --- a/llvm/utils/TableGen/WebAssemblyDisassemblerEmitter.cpp +++ b/llvm/utils/TableGen/WebAssemblyDisassemblerEmitter.cpp @@ -14,6 +14,9 @@ //===----------------------------------------------------------------------===// #include "WebAssemblyDisassemblerEmitter.h" +#include "CodeGenInstruction.h" +#include "llvm/ADT/STLExtras.h" +#include "llvm/Support/raw_ostream.h" #include "llvm/TableGen/Record.h" namespace llvm { diff --git a/llvm/utils/TableGen/WebAssemblyDisassemblerEmitter.h b/llvm/utils/TableGen/WebAssemblyDisassemblerEmitter.h index 60d3d9433eca..aba3a4bfd302 100644 --- a/llvm/utils/TableGen/WebAssemblyDisassemblerEmitter.h +++ b/llvm/utils/TableGen/WebAssemblyDisassemblerEmitter.h @@ -14,12 +14,13 @@ #ifndef LLVM_UTILS_TABLEGEN_WEBASSEMBLYDISASSEMBLEREMITTER_H #define LLVM_UTILS_TABLEGEN_WEBASSEMBLYDISASSEMBLEREMITTER_H -#include "CodeGenInstruction.h" #include "llvm/ADT/ArrayRef.h" -#include "llvm/Support/raw_ostream.h" namespace llvm { +class CodeGenInstruction; +class raw_ostream; + void emitWebAssemblyDisassemblerTables( raw_ostream &OS, const ArrayRef<const CodeGenInstruction *> &NumberedInstructions); diff --git a/llvm/utils/TableGen/X86DisassemblerTables.cpp b/llvm/utils/TableGen/X86DisassemblerTables.cpp index 90e71a354d17..81ddea99740d 100644 --- a/llvm/utils/TableGen/X86DisassemblerTables.cpp +++ b/llvm/utils/TableGen/X86DisassemblerTables.cpp @@ -15,9 +15,12 @@ #include "X86DisassemblerTables.h" #include "X86DisassemblerShared.h" -#include "llvm/ADT/STLExtras.h" +#include "X86ModRMFilters.h" +#include "llvm/ADT/STLArrayExtras.h" +#include "llvm/ADT/SmallVector.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/Format.h" +#include "llvm/Support/raw_ostream.h" #include <map> using namespace llvm; diff --git a/llvm/utils/TableGen/X86DisassemblerTables.h b/llvm/utils/TableGen/X86DisassemblerTables.h index 2e4ff1e2ce08..966f7406efec 100644 --- a/llvm/utils/TableGen/X86DisassemblerTables.h +++ b/llvm/utils/TableGen/X86DisassemblerTables.h @@ -17,15 +17,18 @@ #define LLVM_UTILS_TABLEGEN_X86DISASSEMBLERTABLES_H #include "X86DisassemblerShared.h" -#include "X86ModRMFilters.h" -#include "llvm/Support/raw_ostream.h" +#include "llvm/Support/X86DisassemblerDecoderCommon.h" #include <map> +#include <memory> #include <vector> namespace llvm { +class raw_ostream; namespace X86Disassembler { +class ModRMFilter; + /// DisassemblerTables - Encapsulates all the decode tables being generated by /// the table emitter. Contains functions to populate the tables as well as /// to emit them as hierarchical C structures suitable for consumption by the diff --git a/llvm/utils/TableGen/X86FoldTablesEmitter.cpp b/llvm/utils/TableGen/X86FoldTablesEmitter.cpp index 0a8d0750cf13..2a29331eb7e8 100644 --- a/llvm/utils/TableGen/X86FoldTablesEmitter.cpp +++ b/llvm/utils/TableGen/X86FoldTablesEmitter.cpp @@ -40,8 +40,6 @@ struct ManualMapEntry { : RegInstStr(RegInstStr), MemInstStr(MemInstStr), Strategy(Strategy) {} }; -class IsMatch; - // List of instructions requiring explicitly aligned memory. const char *ExplicitAlign[] = {"MOVDQA", "MOVAPS", "MOVAPD", "MOVNTPS", "MOVNTPD", "MOVNTDQ", "MOVNTDQA"}; diff --git a/llvm/utils/TableGen/X86RecognizableInstr.cpp b/llvm/utils/TableGen/X86RecognizableInstr.cpp index a9b384155965..4023d8f57318 100644 --- a/llvm/utils/TableGen/X86RecognizableInstr.cpp +++ b/llvm/utils/TableGen/X86RecognizableInstr.cpp @@ -15,8 +15,10 @@ #include "X86RecognizableInstr.h" #include "X86DisassemblerShared.h" +#include "X86DisassemblerTables.h" #include "X86ModRMFilters.h" #include "llvm/Support/ErrorHandling.h" +#include "llvm/TableGen/Record.h" #include <string> using namespace llvm; diff --git a/llvm/utils/TableGen/X86RecognizableInstr.h b/llvm/utils/TableGen/X86RecognizableInstr.h index d4fad2cc3f0f..8f557d9ee5f5 100644 --- a/llvm/utils/TableGen/X86RecognizableInstr.h +++ b/llvm/utils/TableGen/X86RecognizableInstr.h @@ -16,13 +16,16 @@ #ifndef LLVM_UTILS_TABLEGEN_X86RECOGNIZABLEINSTR_H #define LLVM_UTILS_TABLEGEN_X86RECOGNIZABLEINSTR_H -#include "CodeGenTarget.h" -#include "X86DisassemblerTables.h" +#include "CodeGenInstruction.h" #include "llvm/Support/DataTypes.h" -#include "llvm/TableGen/Record.h" +#include "llvm/Support/X86DisassemblerDecoderCommon.h" + +struct InstructionSpecifier; namespace llvm { +class Record; + #define X86_INSTR_MRM_MAPPING \ MAP(C0, 64) \ MAP(C1, 65) \ @@ -153,6 +156,8 @@ namespace X86Local { namespace X86Disassembler { +class DisassemblerTables; + /// RecognizableInstr - Encapsulates all information required to decode a single /// instruction, as extracted from the LLVM instruction tables. Has methods /// to interpret the information available in the LLVM tables, and to emit the |
