[llvm] [TableGen][CodeGen] Remove feature string from HwMode (PR #157600)

Sergei Barannikov via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 9 09:18:14 PDT 2025


================
@@ -120,13 +128,26 @@ def foo : Instruction {
   let AsmString = "foo  $factor";
 }
 
+// CHECK-SUBTARGET-LABEL:  unsigned TestTargetGenMCSubtargetInfo::getHwModeSet() const {
+// CHECK-SUBTARGET{LITERAL}:[[maybe_unused]] const FeatureBitset &FB = getFeatureBits();
+// CHECK-SUBTARGET-NEXT:    // Collect HwModes and store them as a bit set.
+// CHECK-SUBTARGET-NEXT:    unsigned Modes = 0;
+// CHECK-SUBTARGET-NEXT:    if (FB[TestTarget::Feat1]) Modes |= (1 << 0);
+// CHECK-SUBTARGET-NEXT:    if (FB[TestTarget::Feat1]) Modes |= (1 << 1);
+// CHECK-SUBTARGET-NEXT:    if (FB[TestTarget::Feat1] && FB[TestTarget::Feat1]) Modes |= (1 << 2);
+// CHECK-SUBTARGET-NEXT:    return Modes;
+// CHECK-SUBTARGET-NEXT:  }
+
 // CHECK-SUBTARGET-LABEL: unsigned TestTargetGenSubtargetInfo::getHwModeSet() const {
-// CHECK-SUBTARGET:         unsigned Modes = 0;
-// CHECK-SUBTARGET:         if (checkFeatures("+feat")) Modes |= (1 << 0);
-// CHECK-SUBTARGET:         if (checkFeatures("+feat1")) Modes |= (1 << 1);
-// CHECK-SUBTARGET:         if (checkFeatures("+feat2")) Modes |= (1 << 2);
-// CHECK-SUBTARGET:         return Modes;
-// CHECK-SUBTARGET:       }
+// CHECK-SUBTARGET{LITERAL}:[[maybe_unused]] const auto *Subtarget =
+// CHECK-SUBTARGET-NEXT:        static_cast<const TestTargetSubtarget *>(this);
+// CHECK-SUBTARGET-NEXT:    // Collect HwModes and store them as a bit set.
+// CHECK-SUBTARGET-NEXT:    unsigned Modes = 0;
+// CHECK-SUBTARGET-NEXT:    if ((Subtarget->hasFeat1())) Modes |= (1 << 0);
+// CHECK-SUBTARGET-NEXT:    if ((Subtarget->hasFeat2())) Modes |= (1 << 1);
+// CHECK-SUBTARGET-NEXT:    if ((Subtarget->hasFeat1()) && (Subtarget->hasFeat2())) Modes |= (1 << 2);
+// CHECK-SUBTARGET-NEXT:    return Modes;
+// CHECK-SUBTARGET-NEXT:  }
----------------
s-barannikov wrote:

Here is an example of the generated getHwModeSet functions (one for GenMCSubtargetInfo, one for GenSubtargetInfo).

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


More information about the llvm-commits mailing list