[llvm] e62ffd3 - [RISCV][TableGen] Use getAllDerivedDefinitions in RISCVTargetDefEmitter to simplify the code. NFC

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 20 00:34:42 PST 2023


Author: Craig Topper
Date: 2023-01-20T00:34:05-08:00
New Revision: e62ffd3fd6bbda04d810f25c2f570e03bda1dd4a

URL: https://github.com/llvm/llvm-project/commit/e62ffd3fd6bbda04d810f25c2f570e03bda1dd4a
DIFF: https://github.com/llvm/llvm-project/commit/e62ffd3fd6bbda04d810f25c2f570e03bda1dd4a.diff

LOG: [RISCV][TableGen] Use getAllDerivedDefinitions in RISCVTargetDefEmitter to simplify the code. NFC

Added: 
    

Modified: 
    llvm/utils/TableGen/RISCVTargetDefEmitter.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/utils/TableGen/RISCVTargetDefEmitter.cpp b/llvm/utils/TableGen/RISCVTargetDefEmitter.cpp
index db38ec89ceeb8..f513bd426a17a 100644
--- a/llvm/utils/TableGen/RISCVTargetDefEmitter.cpp
+++ b/llvm/utils/TableGen/RISCVTargetDefEmitter.cpp
@@ -59,31 +59,24 @@ static std::string getEnumFeatures(int XLen) {
 }
 
 void llvm::EmitRISCVTargetDef(const RecordKeeper &RK, raw_ostream &OS) {
-  using MapTy = std::pair<const std::string, std::unique_ptr<llvm::Record>>;
-  using RecordMap = std::map<std::string, std::unique_ptr<Record>, std::less<>>;
-  const RecordMap &Map = RK.getDefs();
-
   OS << "#ifndef PROC\n"
      << "#define PROC(ENUM, NAME, FEATURES, DEFAULT_MARCH)\n"
      << "#endif\n\n";
 
   OS << "PROC(INVALID, {\"invalid\"}, FK_INVALID, {\"\"})\n";
   // Iterate on all definition records.
-  for (const MapTy &Def : Map) {
-    const Record &Rec = *(Def.second);
-    if (Rec.isSubClassOf("RISCVProcessorModel")) {
-      int XLen = getXLen(Rec);
-      std::string MArch = Rec.getValueAsString("DefaultMarch").str();
-
-      // Compute MArch from features if we don't specify it.
-      if (MArch.empty())
-        MArch = getMArch(XLen, Rec);
-
-      OS << "PROC(" << Rec.getName() << ", "
-         << "{\"" << Rec.getValueAsString("Name") << "\"},"
-         << getEnumFeatures(XLen) << ", "
-         << "{\"" << MArch << "\"})\n";
-    }
+  for (const Record *Rec : RK.getAllDerivedDefinitions("RISCVProcessorModel")) {
+    int XLen = getXLen(*Rec);
+    std::string MArch = Rec->getValueAsString("DefaultMarch").str();
+
+    // Compute MArch from features if we don't specify it.
+    if (MArch.empty())
+      MArch = getMArch(XLen, *Rec);
+
+    OS << "PROC(" << Rec->getName() << ", "
+       << "{\"" << Rec->getValueAsString("Name") << "\"},"
+       << getEnumFeatures(XLen) << ", "
+       << "{\"" << MArch << "\"})\n";
   }
   OS << "\n#undef PROC\n";
   OS << "\n";
@@ -91,11 +84,11 @@ void llvm::EmitRISCVTargetDef(const RecordKeeper &RK, raw_ostream &OS) {
      << "#define TUNE_PROC(ENUM, NAME)\n"
      << "#endif\n\n";
   OS << "TUNE_PROC(GENERIC, \"generic\")\n";
-  for (const MapTy &Def : Map) {
-    const Record &Rec = *(Def.second);
-    if (Rec.isSubClassOf("RISCVTuneProcessorModel"))
-      OS << "TUNE_PROC(" << Rec.getName() << ", "
-         << "\"" << Rec.getValueAsString("Name") << "\")\n";
+
+  for (const Record *Rec :
+       RK.getAllDerivedDefinitions("RISCVTuneProcessorModel")) {
+    OS << "TUNE_PROC(" << Rec->getName() << ", "
+       << "\"" << Rec->getValueAsString("Name") << "\")\n";
   }
 
   OS << "\n#undef TUNE_PROC\n";


        


More information about the llvm-commits mailing list