[llvm] [X86] X86LegalizerInfo - use LegalFor instead if LegalIf for simple ISA/test pairs (PR #144675)

Dipesh Sharma via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 19 10:52:01 PDT 2025


================
@@ -282,31 +242,23 @@ X86LegalizerInfo::X86LegalizerInfo(const X86Subtarget &STI,
 
   // bswap
   getActionDefinitionsBuilder(G_BSWAP)
-      .legalIf([=](const LegalityQuery &Query) {
-        return Query.Types[0] == s32 ||
-               (Subtarget.is64Bit() && Query.Types[0] == s64);
-      })
+      .legalFor({s32})
+      .legalFor(Is64Bit, {s64})
       .widenScalarToNextPow2(0, /*Min=*/32)
       .clampScalar(0, s32, sMaxScalar);
 
   // popcount
   getActionDefinitionsBuilder(G_CTPOP)
-      .legalIf([=](const LegalityQuery &Query) -> bool {
-        return Subtarget.hasPOPCNT() &&
-               (typePairInSet(0, 1, {{s16, s16}, {s32, s32}})(Query) ||
-                (Is64Bit && typePairInSet(0, 1, {{s64, s64}})(Query)));
-      })
+      .legalFor(HasPOPCNT, {{s16, s16}, {s32, s32}})
+      .legalFor(Is64Bit, {{s64, s64}})
       .widenScalarToNextPow2(1, /*Min=*/16)
       .clampScalar(1, s16, sMaxScalar)
       .scalarSameSizeAs(0, 1);
 
   // count leading zeros (LZCNT)
   getActionDefinitionsBuilder(G_CTLZ)
-      .legalIf([=](const LegalityQuery &Query) -> bool {
-        return Subtarget.hasLZCNT() &&
-               (typePairInSet(0, 1, {{s16, s16}, {s32, s32}})(Query) ||
-                (Is64Bit && typePairInSet(0, 1, {{s64, s64}})(Query)));
-      })
+      .legalFor(HasLZCNT, {{s16, s16}, {s32, s32}})
+      .legalFor(Is64Bit, {{s64, s64}})
----------------
dipeshs809 wrote:

added 
```
.legalFor(HasLZCNT && Is64Bit, {{s64, s64}})
```

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


More information about the llvm-commits mailing list