.clampScalar(0, s8, sMaxScalar)
.scalarize(0);
+ // integer divisions
+ getActionDefinitionsBuilder({G_SDIV, G_SREM, G_UDIV, G_UREM})
+ .legalIf([=](const LegalityQuery &Query) -> bool {
+ return typeInSet(0, {s8, s16, s32})(Query) ||
+ (Is64Bit && typeInSet(0, {s64})(Query));
+ })
+ .clampScalar(0, s8, sMaxScalar);
+
// bswap
getActionDefinitionsBuilder(G_BSWAP)
.legalIf([=](const LegalityQuery &Query) {
.widenScalarToNextPow2(0, /*Min*/ 8);
getActionDefinitionsBuilder(G_INTTOPTR).legalFor({{p0, s32}});
- // Shifts and SDIV
- getActionDefinitionsBuilder(
- {G_SDIV, G_SREM, G_UDIV, G_UREM})
- .legalFor({s8, s16, s32})
- .clampScalar(0, s8, s32);
-
+ // Shifts
getActionDefinitionsBuilder(
{G_SHL, G_LSHR, G_ASHR})
.legalFor({{s8, s8}, {s16, s8}, {s32, s8}})
.clampScalar(1, s32, s64)
.widenScalarToNextPow2(1);
- // Divisions
- getActionDefinitionsBuilder(
- {G_SDIV, G_SREM, G_UDIV, G_UREM})
- .legalFor({s8, s16, s32, s64})
- .clampScalar(0, s8, s64);
-
// Shifts
getActionDefinitionsBuilder(
{G_SHL, G_LSHR, G_ASHR})