================
@@ -154,17 +156,39 @@ std::optional<AArch64::CpuInfo> 
AArch64::parseCpu(StringRef Name) {
   return {};
 }
 
-void AArch64::PrintSupportedExtensions(StringMap<StringRef> DescMap) {
+void AArch64::PrintSupportedExtensions() {
   outs() << "All available -march extensions for AArch64\n\n"
          << "    " << left_justify("Name", 20)
-         << (DescMap.empty() ? "\n" : "Description\n");
+         << left_justify("Architecture Feature(s)", 55)
+         << "Description\n";
   for (const auto &Ext : Extensions) {
     // Extensions without a feature cannot be used with -march.
-    if (!Ext.Feature.empty()) {
-      std::string Description = DescMap[Ext.Name].str();
+    if (!Ext.UserVisibleName.empty() && !Ext.PosTargetFeature.empty()) {
+      outs() << "    "
+             << format(Ext.Description.empty() ? "%-20s%s\n" : 
"%-20s%-55s%s\n",
+                       Ext.UserVisibleName.str().c_str(),
+                       Ext.ArchFeatureName.str().c_str(),
+                       Ext.Description.str().c_str());
+    }
+  }
+}
+
+void
+AArch64::printEnabledExtensions(std::vector<StringRef> EnabledFeatureNames) {
+  outs() << "Extensions enabled for the given AArch64 target\n\n"
+         << "    " << left_justify("Architecture Feature(s)", 55)
+         << "Description\n";
+  auto IsEnabled = [&](const ExtensionInfo &Ext) {
+    StringRef FeatureName = Ext.PosTargetFeature.drop_front(); // drop '+' 
before comparing
+    return std::find(EnabledFeatureNames.begin(), EnabledFeatureNames.end(),
+                     FeatureName) != EnabledFeatureNames.end();
----------------
tmatheson-arm wrote:

Can you use `targetFeatureToExtension` here, to avoid the double loop?

https://github.com/llvm/llvm-project/pull/95805
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to