[llvm] [AArch64][llvm] Generate asm parser extension map from TableGen (NFC) (PR #191045)

Jonathan Thackray via llvm-commits llvm-commits at lists.llvm.org
Fri May 1 05:36:21 PDT 2026


================
@@ -150,6 +213,42 @@ static void emitARMTargetDef(const RecordKeeper &RK, raw_ostream &OS) {
      << "#endif // EMIT_EXTENSIONS\n"
      << "\n";
 
+  OS << "#ifdef EMIT_ASM_PARSER_EXTENSIONS\n"
+     << "static const struct Extension {\n"
+     << "  const char *Name;\n"
+     << "  const FeatureBitset Features;\n"
+     << "  bool AllowInDirective;\n"
+     << "} ExtensionMap[] = {\n";
+  for (const Record *Rec : SortedExtensions) {
+    bool AllowInDirective = allowInAArch64AsmParserDirective(Rec);
+    auto EmitEntry = [&](StringRef Name) {
+      if (Name.empty())
+        return;
+      OS << "  {\"" << Name << "\", {AArch64::" << Rec->getName();
+      for (StringRef Extra : getAArch64AsmParserExtraFeatures(Rec))
+        OS << ", AArch64::" << Extra;
+      OS << "}, " << (AllowInDirective ? "true" : "false") << "},\n";
+    };
+
+    StringRef PrimaryName = getAArch64AsmParserPrimaryName(Rec);
+    if (PrimaryName.empty())
+      PrimaryName = Rec->getValueAsString("UserVisibleName");
+    if (PrimaryName.empty())
+      PrimaryName = Rec->getValueAsString("Name");
+    EmitEntry(PrimaryName);
+
+    if (auto Name = Rec->getValueAsString("UserVisibleName");
----------------
jthackray wrote:

Sure, done.

https://github.com/llvm/llvm-project/pull/191045


More information about the llvm-commits mailing list