[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
Sun Jun 22 06:11:46 PDT 2025


================
@@ -267,9 +267,9 @@ X86LegalizerInfo::X86LegalizerInfo(const X86Subtarget &STI,
   getActionDefinitionsBuilder({G_CTTZ_ZERO_UNDEF, G_CTTZ})
       .legalIf([=](const LegalityQuery &Query) -> bool {
         return (Query.Opcode == G_CTTZ_ZERO_UNDEF || Subtarget.hasBMI()) &&
-               (typePairInSet(0, 1, {{s16, s16}, {s32, s32}})(Query) ||
-                (Is64Bit && typePairInSet(0, 1, {{s64, s64}})(Query)));
+               (typePairInSet(0, 1, {{s16, s16}, {s32, s32}})(Query));
       })
+      .legalFor(Is64Bit, {{s64, s64}})
       .widenScalarToNextPow2(1, /*Min=*/16)
       .clampScalar(1, s16, sMaxScalar)
       .scalarSameSizeAs(0, 1);
----------------
dipeshs809 wrote:

```
 getActionDefinitionsBuilder(G_CTTZ_ZERO_UNDEF)
      .legalFor({{s16, s16}, {s32, s32}})
      .legalFor(Is64Bit, {{s64, s64}})
      .widenScalarToNextPow2(1, /*Min=*/16)
      .clampScalar(1, s16, sMaxScalar)
      .scalarSameSizeAs(0, 1);
```

Understood, by adding a seperate builder, we will get rid of, `Query.Opcode == G_CTTZ_ZERO_UNDEF`, dynamic Opcode checking.

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


More information about the llvm-commits mailing list