[llvm] df3765b - [NFC] Rename `FixedLenDecoderEmitter` as `DecoderEmitter`
via llvm-commits
llvm-commits at lists.llvm.org
Mon May 2 12:37:34 PDT 2022
Author: Sheng
Date: 2022-05-03T03:37:13+08:00
New Revision: df3765bfdc13ab01bbdd3ffe3711b1d13e368249
URL: https://github.com/llvm/llvm-project/commit/df3765bfdc13ab01bbdd3ffe3711b1d13e368249
DIFF: https://github.com/llvm/llvm-project/commit/df3765bfdc13ab01bbdd3ffe3711b1d13e368249.diff
LOG: [NFC] Rename `FixedLenDecoderEmitter` as `DecoderEmitter`
Since now we are able to handle both fixed length & variable
length instructions.
Reviewed By: myhsu
Differential Revision: https://reviews.llvm.org/D123451
Added:
llvm/utils/TableGen/DecoderEmitter.cpp
Modified:
llvm/utils/TableGen/CMakeLists.txt
llvm/utils/TableGen/DisassemblerEmitter.cpp
llvm/utils/gn/secondary/llvm/utils/TableGen/BUILD.gn
Removed:
llvm/utils/TableGen/FixedLenDecoderEmitter.cpp
################################################################################
diff --git a/llvm/utils/TableGen/CMakeLists.txt b/llvm/utils/TableGen/CMakeLists.txt
index 87f86dc5b725a..af77744de4ce5 100644
--- a/llvm/utils/TableGen/CMakeLists.txt
+++ b/llvm/utils/TableGen/CMakeLists.txt
@@ -22,13 +22,13 @@ add_tablegen(llvm-tblgen LLVM
DAGISelMatcherGen.cpp
DAGISelMatcherOpt.cpp
DAGISelMatcher.cpp
+ DecoderEmitter.cpp
DFAEmitter.cpp
DFAPacketizerEmitter.cpp
DirectiveEmitter.cpp
DisassemblerEmitter.cpp
ExegesisEmitter.cpp
FastISelEmitter.cpp
- FixedLenDecoderEmitter.cpp
GICombinerEmitter.cpp
GlobalISelEmitter.cpp
InfoByHwMode.cpp
diff --git a/llvm/utils/TableGen/FixedLenDecoderEmitter.cpp b/llvm/utils/TableGen/DecoderEmitter.cpp
similarity index 98%
rename from llvm/utils/TableGen/FixedLenDecoderEmitter.cpp
rename to llvm/utils/TableGen/DecoderEmitter.cpp
index 808a7674e3a51..22bfc1f1a7492 100644
--- a/llvm/utils/TableGen/FixedLenDecoderEmitter.cpp
+++ b/llvm/utils/TableGen/DecoderEmitter.cpp
@@ -1,4 +1,4 @@
-//===------------ FixedLenDecoderEmitter.cpp - Decoder Generator ----------===//
+//===---------------- DecoderEmitter.cpp - Decoder Generator --------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
@@ -7,7 +7,7 @@
//===----------------------------------------------------------------------===//
//
// It contains the tablegen backend that emits the decoder functions for
-// targets with fixed length instruction set.
+// targets with fixed/variable length instruction set.
//
//===----------------------------------------------------------------------===//
@@ -122,19 +122,18 @@ raw_ostream &operator<<(raw_ostream &OS, const EncodingAndInst &Value) {
return OS;
}
-class FixedLenDecoderEmitter {
+class DecoderEmitter {
RecordKeeper &RK;
std::vector<EncodingAndInst> NumberedEncodings;
public:
// Defaults preserved here for documentation, even though they aren't
// strictly necessary given the way that this is currently being called.
- FixedLenDecoderEmitter(RecordKeeper &R, std::string PredicateNamespace,
- std::string GPrefix = "if (",
- std::string GPostfix = " == MCDisassembler::Fail)",
- std::string ROK = "MCDisassembler::Success",
- std::string RFail = "MCDisassembler::Fail",
- std::string L = "")
+ DecoderEmitter(RecordKeeper &R, std::string PredicateNamespace,
+ std::string GPrefix = "if (",
+ std::string GPostfix = " == MCDisassembler::Fail)",
+ std::string ROK = "MCDisassembler::Success",
+ std::string RFail = "MCDisassembler::Fail", std::string L = "")
: RK(R), Target(R), PredicateNamespace(std::move(PredicateNamespace)),
GuardPrefix(std::move(GPrefix)), GuardPostfix(std::move(GPostfix)),
ReturnOK(std::move(ROK)), ReturnFail(std::move(RFail)),
@@ -411,13 +410,13 @@ class FilterChooser {
unsigned BitWidth;
// Parent emitter
- const FixedLenDecoderEmitter *Emitter;
+ const DecoderEmitter *Emitter;
public:
FilterChooser(ArrayRef<EncodingAndInst> Insts,
const std::vector<EncodingIDAndOpcode> &IDs,
const std::map<unsigned, std::vector<OperandInfo>> &Ops,
- unsigned BW, const FixedLenDecoderEmitter *E)
+ unsigned BW, const DecoderEmitter *E)
: AllInstructions(Insts), Opcodes(IDs), Operands(Ops),
FilterBitValues(BW, BIT_UNFILTERED), Parent(nullptr), BestIndex(-1),
BitWidth(BW), Emitter(E) {
@@ -771,11 +770,9 @@ unsigned Filter::usefulness() const {
//////////////////////////////////
// Emit the decoder state machine table.
-void FixedLenDecoderEmitter::emitTable(formatted_raw_ostream &OS,
- DecoderTable &Table,
- unsigned Indentation,
- unsigned BitWidth,
- StringRef Namespace) const {
+void DecoderEmitter::emitTable(formatted_raw_ostream &OS, DecoderTable &Table,
+ unsigned Indentation, unsigned BitWidth,
+ StringRef Namespace) const {
OS.indent(Indentation) << "static const uint8_t DecoderTable" << Namespace
<< BitWidth << "[] = {\n";
@@ -960,8 +957,8 @@ void FixedLenDecoderEmitter::emitTable(formatted_raw_ostream &OS,
OS.indent(Indentation) << "};\n\n";
}
-void FixedLenDecoderEmitter::emitInstrLenTable(
- formatted_raw_ostream &OS, std::vector<unsigned> &InstrLen) const {
+void DecoderEmitter::emitInstrLenTable(formatted_raw_ostream &OS,
+ std::vector<unsigned> &InstrLen) const {
OS << "static const uint8_t InstrLenTable[] = {\n";
for (unsigned &Len : InstrLen) {
OS << Len << ",\n";
@@ -969,9 +966,9 @@ void FixedLenDecoderEmitter::emitInstrLenTable(
OS << "};\n\n";
}
-void FixedLenDecoderEmitter::
-emitPredicateFunction(formatted_raw_ostream &OS, PredicateSet &Predicates,
- unsigned Indentation) const {
+void DecoderEmitter::emitPredicateFunction(formatted_raw_ostream &OS,
+ PredicateSet &Predicates,
+ unsigned Indentation) const {
// The predicate function is just a big switch statement based on the
// input predicate index.
OS.indent(Indentation) << "static bool checkDecoderPredicate(unsigned Idx, "
@@ -994,9 +991,9 @@ emitPredicateFunction(formatted_raw_ostream &OS, PredicateSet &Predicates,
OS.indent(Indentation) << "}\n\n";
}
-void FixedLenDecoderEmitter::
-emitDecoderFunction(formatted_raw_ostream &OS, DecoderSet &Decoders,
- unsigned Indentation) const {
+void DecoderEmitter::emitDecoderFunction(formatted_raw_ostream &OS,
+ DecoderSet &Decoders,
+ unsigned Indentation) const {
// The decoder function is just a big switch statement based on the
// input decoder index.
OS.indent(Indentation) << "template <typename InsnType>\n";
@@ -2518,7 +2515,7 @@ static void emitDecodeInstruction(formatted_raw_ostream &OS,
}
// Emits disassembler code for instruction decoding.
-void FixedLenDecoderEmitter::run(raw_ostream &o) {
+void DecoderEmitter::run(raw_ostream &o) {
formatted_raw_ostream OS(o);
OS << "#include \"llvm/MC/MCInst.h\"\n";
OS << "#include \"llvm/MC/MCSubtargetInfo.h\"\n";
@@ -2690,13 +2687,13 @@ void FixedLenDecoderEmitter::run(raw_ostream &o) {
namespace llvm {
-void EmitFixedLenDecoder(RecordKeeper &RK, raw_ostream &OS,
- const std::string &PredicateNamespace,
- const std::string &GPrefix,
- const std::string &GPostfix, const std::string &ROK,
- const std::string &RFail, const std::string &L) {
- FixedLenDecoderEmitter(RK, PredicateNamespace, GPrefix, GPostfix,
- ROK, RFail, L).run(OS);
+void EmitDecoder(RecordKeeper &RK, raw_ostream &OS,
+ const std::string &PredicateNamespace,
+ const std::string &GPrefix, const std::string &GPostfix,
+ const std::string &ROK, const std::string &RFail,
+ const std::string &L) {
+ DecoderEmitter(RK, PredicateNamespace, GPrefix, GPostfix, ROK, RFail, L)
+ .run(OS);
}
} // end namespace llvm
diff --git a/llvm/utils/TableGen/DisassemblerEmitter.cpp b/llvm/utils/TableGen/DisassemblerEmitter.cpp
index 7c3f53b31bf4f..297d12c5d0e92 100644
--- a/llvm/utils/TableGen/DisassemblerEmitter.cpp
+++ b/llvm/utils/TableGen/DisassemblerEmitter.cpp
@@ -95,12 +95,11 @@ using namespace llvm::X86Disassembler;
namespace llvm {
-extern void EmitFixedLenDecoder(RecordKeeper &RK, raw_ostream &OS,
- const std::string &PredicateNamespace,
- const std::string &GPrefix,
- const std::string &GPostfix,
- const std::string &ROK,
- const std::string &RFail, const std::string &L);
+extern void EmitDecoder(RecordKeeper &RK, raw_ostream &OS,
+ const std::string &PredicateNamespace,
+ const std::string &GPrefix, const std::string &GPostfix,
+ const std::string &ROK, const std::string &RFail,
+ const std::string &L);
void EmitDisassembler(RecordKeeper &Records, raw_ostream &OS) {
CodeGenTarget Target(Records);
@@ -140,17 +139,16 @@ void EmitDisassembler(RecordKeeper &Records, raw_ostream &OS) {
if (PredicateNamespace == "Thumb")
PredicateNamespace = "ARM";
- EmitFixedLenDecoder(Records, OS, PredicateNamespace,
- "if (!Check(S, ", "))",
- "S", "MCDisassembler::Fail",
- " MCDisassembler::DecodeStatus S = "
- "MCDisassembler::Success;\n(void)S;");
+ EmitDecoder(Records, OS, PredicateNamespace, "if (!Check(S, ", "))", "S",
+ "MCDisassembler::Fail",
+ " MCDisassembler::DecodeStatus S = "
+ "MCDisassembler::Success;\n(void)S;");
return;
}
- EmitFixedLenDecoder(Records, OS, std::string(Target.getName()), "if (",
- " == MCDisassembler::Fail)", "MCDisassembler::Success",
- "MCDisassembler::Fail", "");
+ EmitDecoder(Records, OS, std::string(Target.getName()), "if (",
+ " == MCDisassembler::Fail)", "MCDisassembler::Success",
+ "MCDisassembler::Fail", "");
}
} // end namespace llvm
diff --git a/llvm/utils/gn/secondary/llvm/utils/TableGen/BUILD.gn b/llvm/utils/gn/secondary/llvm/utils/TableGen/BUILD.gn
index 034fbe3ab9256..412557df6015f 100644
--- a/llvm/utils/gn/secondary/llvm/utils/TableGen/BUILD.gn
+++ b/llvm/utils/gn/secondary/llvm/utils/TableGen/BUILD.gn
@@ -27,13 +27,13 @@ executable("llvm-tblgen") {
"DAGISelMatcherEmitter.cpp",
"DAGISelMatcherGen.cpp",
"DAGISelMatcherOpt.cpp",
+ "DecoderEmitter.cpp",
"DFAEmitter.cpp",
"DFAPacketizerEmitter.cpp",
"DirectiveEmitter.cpp",
"DisassemblerEmitter.cpp",
"ExegesisEmitter.cpp",
"FastISelEmitter.cpp",
- "FixedLenDecoderEmitter.cpp",
"GICombinerEmitter.cpp",
"GlobalISelEmitter.cpp",
"InfoByHwMode.cpp",
More information about the llvm-commits
mailing list