[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