Commit 58d2bd601e

Jacob Young <jacobly0@users.noreply.github.com>
2025-05-17 08:08:33
x86_64: rewrite scalar `<<|`
Closes #23035
1 parent d3dfe61
lib/std/math/big/int.zig
@@ -415,12 +415,12 @@ pub const Mutable = struct {
         // in the case that scalar happens to be small in magnitude within its type, but it
         // is well worth being able to use the stack and not needing an allocator passed in.
         // Note that Mutable.init still sets len to calcLimbLen(scalar) in any case.
-        const limb_len = comptime switch (@typeInfo(@TypeOf(scalar))) {
+        const limbs_len = comptime switch (@typeInfo(@TypeOf(scalar))) {
             .comptime_int => calcLimbLen(scalar),
             .int => |info| calcTwosCompLimbCount(info.bits),
             else => @compileError("expected scalar to be an int"),
         };
-        var limbs: [limb_len]Limb = undefined;
+        var limbs: [limbs_len]Limb = undefined;
         const operand = init(&limbs, scalar).toConst();
         return add(r, a, operand);
     }
@@ -2454,12 +2454,12 @@ pub const Const = struct {
         // in the case that scalar happens to be small in magnitude within its type, but it
         // is well worth being able to use the stack and not needing an allocator passed in.
         // Note that Mutable.init still sets len to calcLimbLen(scalar) in any case.
-        const limb_len = comptime switch (@typeInfo(@TypeOf(scalar))) {
+        const limbs_len = comptime switch (@typeInfo(@TypeOf(scalar))) {
             .comptime_int => calcLimbLen(scalar),
             .int => |info| calcTwosCompLimbCount(info.bits),
             else => @compileError("expected scalar to be an int"),
         };
-        var limbs: [limb_len]Limb = undefined;
+        var limbs: [limbs_len]Limb = undefined;
         const rhs = Mutable.init(&limbs, scalar);
         return order(lhs, rhs.toConst());
     }
lib/std/math/big/int_test.zig
@@ -2295,8 +2295,6 @@ test "sat shift-left signed simple positive" {
 }
 
 test "sat shift-left signed multi positive" {
-    if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
-
     var x: SignedDoubleLimb = 1;
     _ = &x;
 
@@ -2310,8 +2308,6 @@ test "sat shift-left signed multi positive" {
 }
 
 test "sat shift-left signed multi negative" {
-    if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
-
     var x: SignedDoubleLimb = -1;
     _ = &x;
 
lib/std/math/log2.zig
@@ -12,12 +12,10 @@ const expect = std.testing.expect;
 ///  - log2(nan)   = nan
 pub fn log2(x: anytype) @TypeOf(x) {
     const T = @TypeOf(x);
-    switch (@typeInfo(T)) {
-        .comptime_float => {
-            return @as(comptime_float, @log2(x));
-        },
-        .float => return @log2(x),
+    return switch (@typeInfo(T)) {
+        .comptime_float, .float => @log2(x),
         .comptime_int => comptime {
+            std.debug.assert(x > 0);
             var x_shifted = x;
             // First, calculate floorPowerOfTwo(x)
             var shift_amt = 1;
@@ -34,12 +32,15 @@ pub fn log2(x: anytype) @TypeOf(x) {
             }
             return result;
         },
-        .int => |IntType| switch (IntType.signedness) {
-            .signed => @compileError("log2 not implemented for signed integers"),
-            .unsigned => return math.log2_int(T, x),
-        },
+        .int => |int_info| math.log2_int(switch (int_info.signedness) {
+            .signed => @Type(.{ .int = .{
+                .signedness = .unsigned,
+                .bits = int_info.bits -| 1,
+            } }),
+            .unsigned => T,
+        }, @intCast(x)),
         else => @compileError("log2 not implemented for " ++ @typeName(T)),
-    }
+    };
 }
 
 test log2 {
lib/std/math.zig
@@ -774,18 +774,15 @@ pub fn Log2IntCeil(comptime T: type) type {
 /// Returns the smallest integer type that can hold both from and to.
 pub fn IntFittingRange(comptime from: comptime_int, comptime to: comptime_int) type {
     assert(from <= to);
-    if (from == 0 and to == 0) {
-        return u0;
-    }
     const signedness: std.builtin.Signedness = if (from < 0) .signed else .unsigned;
-    const largest_positive_integer = @max(if (from < 0) (-from) - 1 else from, to); // two's complement
-    const base = log2(largest_positive_integer);
-    const upper = (1 << base) - 1;
-    var magnitude_bits = if (upper >= largest_positive_integer) base else base + 1;
-    if (signedness == .signed) {
-        magnitude_bits += 1;
-    }
-    return std.meta.Int(signedness, magnitude_bits);
+    return @Type(.{ .int = .{
+        .signedness = signedness,
+        .bits = @as(u16, @intFromBool(signedness == .signed)) +
+            switch (if (from < 0) @max(@abs(from) - 1, to) else to) {
+                0 => 0,
+                else => |pos_max| 1 + log2(pos_max),
+            },
+    } });
 }
 
 test IntFittingRange {
@@ -1267,6 +1264,19 @@ pub fn log2_int(comptime T: type, x: T) Log2Int(T) {
     return @as(Log2Int(T), @intCast(@typeInfo(T).int.bits - 1 - @clz(x)));
 }
 
+test log2_int {
+    try testing.expect(log2_int(u32, 1) == 0);
+    try testing.expect(log2_int(u32, 2) == 1);
+    try testing.expect(log2_int(u32, 3) == 1);
+    try testing.expect(log2_int(u32, 4) == 2);
+    try testing.expect(log2_int(u32, 5) == 2);
+    try testing.expect(log2_int(u32, 6) == 2);
+    try testing.expect(log2_int(u32, 7) == 2);
+    try testing.expect(log2_int(u32, 8) == 3);
+    try testing.expect(log2_int(u32, 9) == 3);
+    try testing.expect(log2_int(u32, 10) == 3);
+}
+
 /// Return the log base 2 of integer value x, rounding up to the
 /// nearest integer.
 pub fn log2_int_ceil(comptime T: type, x: T) Log2IntCeil(T) {
lib/zig.h
@@ -1115,14 +1115,15 @@ static inline bool zig_mulo_i16(int16_t *res, int16_t lhs, int16_t rhs, uint8_t
 \
     static inline uint##w##_t zig_shls_u##w(uint##w##_t lhs, uint##w##_t rhs, uint8_t bits) { \
         uint##w##_t res; \
-        if (rhs >= bits) return lhs != UINT##w##_C(0) ? zig_maxInt_u(w, bits) : lhs; \
-        return zig_shlo_u##w(&res, lhs, (uint8_t)rhs, bits) ? zig_maxInt_u(w, bits) : res; \
+        if (rhs < bits && !zig_shlo_u##w(&res, lhs, rhs, bits)) return res; \
+        return lhs == INT##w##_C(0) ? INT##w##_C(0) : zig_maxInt_u(w, bits); \
     } \
 \
-    static inline int##w##_t zig_shls_i##w(int##w##_t lhs, int##w##_t rhs, uint8_t bits) { \
+    static inline int##w##_t zig_shls_i##w(int##w##_t lhs, uint##w##_t rhs, uint8_t bits) { \
         int##w##_t res; \
-        if ((uint##w##_t)rhs < (uint##w##_t)bits && !zig_shlo_i##w(&res, lhs, (uint8_t)rhs, bits)) return res; \
-        return lhs < INT##w##_C(0) ? zig_minInt_i(w, bits) : zig_maxInt_i(w, bits); \
+        if (rhs < bits && !zig_shlo_i##w(&res, lhs, rhs, bits)) return res; \
+        return lhs == INT##w##_C(0) ? INT##w##_C(0) : \
+            lhs < INT##w##_C(0) ? zig_minInt_i(w, bits) : zig_maxInt_i(w, bits); \
     } \
 \
     static inline uint##w##_t zig_adds_u##w(uint##w##_t lhs, uint##w##_t rhs, uint8_t bits) { \
@@ -1851,15 +1852,23 @@ static inline bool zig_shlo_i128(zig_i128 *res, zig_i128 lhs, uint8_t rhs, uint8
 
 static inline zig_u128 zig_shls_u128(zig_u128 lhs, zig_u128 rhs, uint8_t bits) {
     zig_u128 res;
-    if (zig_cmp_u128(rhs, zig_make_u128(0, bits)) >= INT32_C(0))
-        return zig_cmp_u128(lhs, zig_make_u128(0, 0)) != INT32_C(0) ? zig_maxInt_u(128, bits) : lhs;
-    return zig_shlo_u128(&res, lhs, (uint8_t)zig_lo_u128(rhs), bits) ? zig_maxInt_u(128, bits) : res;
+    if (zig_cmp_u128(rhs, zig_make_u128(0, bits)) < INT32_C(0) && !zig_shlo_u128(&res, lhs, (uint8_t)zig_lo_u128(rhs), bits)) return res;
+    switch (zig_cmp_u128(lhs, zig_make_u128(0, 0))) {
+        case 0: return zig_make_u128(0, 0);
+        case 1: return zig_maxInt_u(128, bits);
+        default: zig_unreachable();
+    }
 }
 
-static inline zig_i128 zig_shls_i128(zig_i128 lhs, zig_i128 rhs, uint8_t bits) {
+static inline zig_i128 zig_shls_i128(zig_i128 lhs, zig_u128 rhs, uint8_t bits) {
     zig_i128 res;
-    if (zig_cmp_u128(zig_bitCast_u128(rhs), zig_make_u128(0, bits)) < INT32_C(0) && !zig_shlo_i128(&res, lhs, (uint8_t)zig_lo_i128(rhs), bits)) return res;
-    return zig_cmp_i128(lhs, zig_make_i128(0, 0)) < INT32_C(0) ? zig_minInt_i(128, bits) : zig_maxInt_i(128, bits);
+    if (zig_cmp_u128(rhs, zig_make_u128(0, bits)) < INT32_C(0) && !zig_shlo_i128(&res, lhs, (uint8_t)zig_lo_u128(rhs), bits)) return res;
+    switch (zig_cmp_i128(lhs, zig_make_i128(0, 0))) {
+        case -1: return zig_minInt_i(128, bits);
+        case  0: return zig_make_i128(0, 0);
+        case  1: return zig_maxInt_i(128, bits);
+        default: zig_unreachable();
+    }
 }
 
 static inline zig_u128 zig_adds_u128(zig_u128 lhs, zig_u128 rhs, uint8_t bits) {
src/arch/x86_64/CodeGen.zig
@@ -2408,7 +2408,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
 }
 
 fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
-    @setEvalBranchQuota(19_300);
+    @setEvalBranchQuota(20_000);
     const pt = cg.pt;
     const zcu = pt.zcu;
     const ip = &zcu.intern_pool;
@@ -2444,8 +2444,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
         try cg.inst_tracking.ensureUnusedCapacity(cg.gpa, 1);
         switch (air_tags[@intFromEnum(inst)]) {
             // zig fmt: off
-            .shl_sat         => try cg.airShlSat(inst),
-
             .bitcast          => try cg.airBitCast(inst),
 
             .splat            => try cg.airSplat(inst),
@@ -4408,7 +4406,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0b, .ui(7), ._, ._ },
                         .{ ._, ._, .xor, .tmp0b, .sa(.src0, .add_smax), ._, ._ },
                         .{ ._, ._, .add, .dst0b, .src1b, ._, ._ },
@@ -4457,7 +4455,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0b, .ui(7), ._, ._ },
                         .{ ._, ._, .add, .dst0b, .src1b, ._, ._ },
                         .{ ._, ._, .xor, .tmp0b, .sa(.src0, .add_smax), ._, ._ },
@@ -4585,7 +4583,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ },
                         .{ ._, ._, .add, .dst0w, .src1w, ._, ._ },
@@ -4617,7 +4615,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
                         .{ ._, ._, .add, .dst0w, .src1w, ._, ._ },
@@ -4683,7 +4681,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .add, .dst0w, .src1w, ._, ._ },
                         .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ },
@@ -4713,7 +4711,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .add, .dst0d, .src1d, ._, ._ },
                         .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ },
@@ -4744,7 +4742,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .add, .dst0w, .src1w, ._, ._ },
                         .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
@@ -4776,7 +4774,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .add, .dst0d, .src1d, ._, ._ },
                         .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
@@ -4929,7 +4927,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .add, .dst0w, .src1w, ._, ._ },
                         .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ },
@@ -4959,7 +4957,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .add, .dst0d, .src1d, ._, ._ },
                         .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ },
@@ -4990,7 +4988,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .add, .dst0w, .src1w, ._, ._ },
                         .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
@@ -5022,7 +5020,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .add, .dst0d, .src1d, ._, ._ },
                         .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
@@ -5055,7 +5053,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .add, .dst0w, .src1w, ._, ._ },
                         .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ },
@@ -5086,7 +5084,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .add, .dst0d, .src1d, ._, ._ },
                         .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ },
@@ -5118,7 +5116,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .add, .dst0w, .src1w, ._, ._ },
                         .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
@@ -5151,7 +5149,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .add, .dst0d, .src1d, ._, ._ },
                         .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
@@ -5456,7 +5454,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
                         .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
                         .{ ._, ._, .add, .dst0d, .src1d, ._, ._ },
@@ -5505,7 +5503,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
                         .{ ._, ._, .add, .dst0d, .src1d, ._, ._ },
                         .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
@@ -5571,7 +5569,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
                         .{ ._, ._, .add, .dst0d, .src1d, ._, ._ },
                         .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
@@ -5605,7 +5603,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
                         .{ ._, ._, .add, .dst0d, .src1d, ._, ._ },
                         .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
@@ -5750,7 +5748,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
                         .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ },
                         .{ ._, ._, .xor, .tmp0q, .tmp1q, ._, ._ },
@@ -5815,7 +5813,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
                         .{ ._, ._, .add, .dst0q, .src1q, ._, ._ },
                         .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ },
@@ -5884,7 +5882,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
                         .{ ._, ._, .add, .dst0q, .src1q, ._, ._ },
                         .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ },
@@ -5919,7 +5917,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
                         .{ ._, ._, .add, .dst0q, .src1q, ._, ._ },
                         .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ },
@@ -14879,7 +14877,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0b, .ui(7), ._, ._ },
                         .{ ._, ._, .xor, .tmp0b, .sa(.src0, .add_smax), ._, ._ },
                         .{ ._, ._, .sub, .dst0b, .src1b, ._, ._ },
@@ -14924,7 +14922,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0b, .ui(7), ._, ._ },
                         .{ ._, ._, .sub, .dst0b, .src1b, ._, ._ },
                         .{ ._, ._, .xor, .tmp0b, .sa(.src0, .add_smax), ._, ._ },
@@ -15027,7 +15025,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ },
                         .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ },
@@ -15057,7 +15055,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
                         .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ },
@@ -15117,7 +15115,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ },
                         .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ },
@@ -15147,7 +15145,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ },
                         .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ },
@@ -15177,7 +15175,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ },
                         .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
@@ -15208,7 +15206,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ },
                         .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
@@ -15355,7 +15353,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ },
                         .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ },
@@ -15385,7 +15383,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ },
                         .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ },
@@ -15415,7 +15413,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ },
                         .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
@@ -15446,7 +15444,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ },
                         .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
@@ -15477,7 +15475,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ },
                         .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ },
@@ -15508,7 +15506,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ },
                         .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ },
@@ -15539,7 +15537,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ },
                         .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
@@ -15571,7 +15569,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
                         .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ },
                         .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
@@ -15780,7 +15778,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
                         .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
                         .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ },
@@ -15825,7 +15823,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
                         .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ },
                         .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
@@ -15887,7 +15885,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
                         .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ },
                         .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
@@ -15919,7 +15917,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
                         .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ },
                         .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
@@ -16039,7 +16037,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
                         .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ },
                         .{ ._, ._, .xor, .tmp0q, .tmp1q, ._, ._ },
@@ -16100,7 +16098,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
                         .{ ._, ._, .sub, .dst0q, .src1q, ._, ._ },
                         .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ },
@@ -16165,7 +16163,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
                         .{ ._, ._, .sub, .dst0q, .src1q, ._, ._ },
                         .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ },
@@ -16198,7 +16196,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .{ .ref = .src0 }, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
                         .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
                         .{ ._, ._, .sub, .dst0q, .src1q, ._, ._ },
                         .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ },
@@ -58000,20 +57998,3084 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                 }, .{
                     .required_features = .{ .@"64bit", null, null, null },
                     .src_constraints = .{
-                        .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } },
-                        .{ .unsigned_int = .byte },
+                        .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } },
+                        .{ .unsigned_int = .byte },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ },
+                        .{ ._, ._, .not, .tmp0p, ._, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
+                        .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
+                        .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ },
+                        .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ },
+                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp3q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
+                        .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
+                        .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } },
+                        .{ .unsigned_int = .byte },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ },
+                        .{ ._, ._, .not, .tmp0p, ._, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
+                        .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
+                        .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ },
+                        .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ },
+                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp3q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
+                        .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
+                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } },
+                        .{ .unsigned_int = .byte },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ },
+                        .{ ._, ._, .not, .tmp0p, ._, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
+                        .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
+                        .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ },
+                        .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ },
+                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp3q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
+                        .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
+                        .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } },
+                        .{ .unsigned_int = .word },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cx }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ },
+                        .{ ._, ._, .not, .tmp0p, ._, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
+                        .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
+                        .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ },
+                        .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ },
+                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp3q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
+                        .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
+                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } },
+                        .{ .unsigned_int = .word },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cx }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ },
+                        .{ ._, ._, .not, .tmp0p, ._, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
+                        .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
+                        .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ },
+                        .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ },
+                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp3q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
+                        .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
+                        .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } },
+                        .{ .unsigned_int = .word },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cx }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ },
+                        .{ ._, ._, .not, .tmp0p, ._, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
+                        .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
+                        .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ },
+                        .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ },
+                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp3q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
+                        .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
+                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } },
+                        .{ .unsigned_int = .word },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cx }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ },
+                        .{ ._, ._, .not, .tmp0p, ._, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
+                        .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
+                        .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ },
+                        .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ },
+                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp3q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
+                        .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
+                        .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
+                    } },
+                } }) catch |err| switch (err) {
+                    error.SelectFailed => return cg.fail("failed to select {s} {} {} {} {}", .{
+                        @tagName(air_tag),
+                        cg.typeOf(bin_op.lhs).fmt(pt),
+                        cg.typeOf(bin_op.rhs).fmt(pt),
+                        ops[0].tracking(cg),
+                        ops[1].tracking(cg),
+                    }),
+                    else => |e| return e,
+                };
+                try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
+            },
+            .shl, .shl_exact => |air_tag| if (use_old) try cg.airShlShrBinOp(inst) else fallback: {
+                const bin_op = air_datas[@intFromEnum(inst)].bin_op;
+                if (cg.typeOf(bin_op.lhs).isVector(zcu)) break :fallback try cg.airShlShrBinOp(inst);
+                var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
+                var res: [1]Temp = undefined;
+                cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
+                    .src_constraints = .{ .{ .signed_int = .byte }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .mut_mem, .imm8, .none } },
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                        .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } },
+                        .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._l, .sa, .dst0b, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .mut_mem, .imm8, .none } },
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                        .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } },
+                        .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._l, .sh, .dst0b, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .signed_int = .word }, .{ .exact_unsigned_int = 4 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .mut_mem, .imm8, .none } },
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                        .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } },
+                        .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._l, .sa, .dst0w, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .unsigned_int = .word }, .{ .exact_unsigned_int = 4 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .mut_mem, .imm8, .none } },
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                        .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } },
+                        .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._l, .sh, .dst0w, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .signed_int = .dword }, .{ .exact_unsigned_int = 5 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .mut_mem, .imm8, .none } },
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._l, .sa, .dst0d, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .exact_unsigned_int = 5 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .mut_mem, .imm8, .none } },
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._l, .sh, .dst0d, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .bmi2, null, null, null },
+                    .src_constraints = .{ .{ .int = .dword }, .{ .exact_unsigned_int = 5 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .mem, .to_gpr, .none } },
+                        .{ .src = .{ .to_gpr, .to_gpr, .none } },
+                    },
+                    .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._lx, .sh, .dst0d, .src0d, .src1d, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .signed_int = .dword }, .{ .exact_unsigned_int = 5 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } },
+                        .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._l, .sa, .dst0d, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .exact_unsigned_int = 5 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } },
+                        .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._l, .sh, .dst0d, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{ .{ .signed_int = .qword }, .{ .exact_unsigned_int = 6 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .mut_mem, .imm8, .none } },
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._l, .sa, .dst0q, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .exact_unsigned_int = 6 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .mut_mem, .imm8, .none } },
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._l, .sh, .dst0q, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .bmi2, null, null },
+                    .src_constraints = .{ .{ .int = .qword }, .{ .exact_unsigned_int = 6 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .mem, .to_gpr, .none } },
+                        .{ .src = .{ .to_gpr, .to_gpr, .none } },
+                    },
+                    .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._lx, .sh, .dst0q, .src0q, .src1q, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{ .{ .signed_int = .qword }, .{ .exact_unsigned_int = 6 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } },
+                        .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._l, .sa, .dst0q, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .exact_unsigned_int = 6 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } },
+                        .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._l, .sh, .dst0q, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_int = .{ .of = .qword, .is = .qword } },
+                        .{ .unsigned_int = .byte },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp4q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp3q, .tmp4q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ },
+                        .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp3q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_int = .{ .of = .qword, .is = .qword } },
+                        .{ .unsigned_int = .byte },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp4q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp3q, .tmp4q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ },
+                        .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp3q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
+                        .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_int = .{ .of = .qword, .is = .qword } },
+                        .{ .unsigned_int = .word },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cx }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp4q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp3q, .tmp4q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ },
+                        .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp3q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_int = .{ .of = .qword, .is = .qword } },
+                        .{ .unsigned_int = .word },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cx }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp4q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp3q, .tmp4q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ },
+                        .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp3q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
+                        .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                    } },
+                } }) catch |err| switch (err) {
+                    error.SelectFailed => return cg.fail("failed to select {s} {} {} {} {}", .{
+                        @tagName(air_tag),
+                        cg.typeOf(bin_op.lhs).fmt(pt),
+                        cg.typeOf(bin_op.rhs).fmt(pt),
+                        ops[0].tracking(cg),
+                        ops[1].tracking(cg),
+                    }),
+                    else => |e| return e,
+                };
+                switch (air_tag) {
+                    else => unreachable,
+                    .shl => res[0].wrapInt(cg) catch |err| switch (err) {
+                        error.SelectFailed => return cg.fail("failed to select wrap {} {} {} {}", .{
+                            cg.typeOf(bin_op.lhs).fmt(pt),
+                            cg.typeOf(bin_op.rhs).fmt(pt),
+                            ops[0].tracking(cg),
+                            ops[1].tracking(cg),
+                        }),
+                        else => |e| return e,
+                    },
+                    .shl_exact => {},
+                }
+                try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
+            },
+            .shl_sat => |air_tag| if (use_old) try cg.airShlSat(inst) else fallback: {
+                const bin_op = air_datas[@intFromEnum(inst)].bin_op;
+                const lhs_ty = cg.typeOf(bin_op.lhs);
+                if (lhs_ty.isVector(zcu)) break :fallback try cg.airShlSat(inst);
+                var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
+                var res: [1]Temp = undefined;
+                switch (ops[1].tracking(cg).short) {
+                    .immediate => |rhs_imm| res[0] = try cg.tempInit(
+                        .i32,
+                        .{ .immediate = if (rhs_imm < cg.intInfo(lhs_ty).?.bits)
+                            rhs_imm
+                        else
+                            @bitCast(@as(i64, -1)) },
+                    ),
+                    else => cg.select(&res, &.{.i32}, ops[1..2], comptime &.{ .{
+                        .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
+                        .patterns = &.{
+                            .{ .src = .{ .mem, .none, .none } },
+                            .{ .src = .{ .to_gpr, .none, .none } },
+                        },
+                        .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }, .unused },
+                        .each = .{ .once = &.{
+                            .{ ._, ._, .movzx, .dst0d, .src0b, ._, ._ },
+                        } },
+                    }, .{
+                        .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
+                        .patterns = &.{
+                            .{ .src = .{ .mem, .none, .none } },
+                            .{ .src = .{ .to_gpr, .none, .none } },
+                        },
+                        .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }, .unused },
+                        .each = .{ .once = &.{
+                            .{ ._, ._, .movzx, .dst0d, .src0w, ._, ._ },
+                        } },
+                    }, .{
+                        .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
+                        .patterns = &.{
+                            .{ .src = .{ .to_mut_gpr, .none, .none } },
+                        },
+                        .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                        .each = .{ .once = &.{} },
+                    }, .{
+                        .required_features = .{ .@"64bit", .cmov, null, null },
+                        .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
+                        .patterns = &.{
+                            .{ .src = .{ .to_mut_gpr, .none, .none } },
+                        },
+                        .extra_temps = .{
+                            .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                        },
+                        .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                        .each = .{ .once = &.{
+                            .{ ._, ._, .mov, .tmp0d, .si(1 << 16), ._, ._ },
+                            .{ ._, ._, .cmp, .src0q, .tmp0q, ._, ._ },
+                            .{ ._, ._nb, .cmov, .dst0d, .tmp0d, ._, ._ },
+                        } },
+                    }, .{
+                        .required_features = .{ .@"64bit", null, null, null },
+                        .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
+                        .patterns = &.{
+                            .{ .src = .{ .to_mut_gpr, .none, .none } },
+                        },
+                        .extra_temps = .{
+                            .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                        },
+                        .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                        .each = .{ .once = &.{
+                            .{ ._, ._, .cmp, .src0q, .si(1 << 16), ._, ._ },
+                            .{ ._, ._, .cmc, ._, ._, ._, ._ },
+                            .{ ._, ._, .sbb, .tmp0d, .tmp0d, ._, ._ },
+                            .{ ._, ._, .@"or", .dst0d, .tmp0d, ._, ._ },
+                        } },
+                    }, .{
+                        .required_features = .{ .@"64bit", .cmov, null, null },
+                        .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
+                        .patterns = &.{
+                            .{ .src = .{ .to_mem, .none, .none } },
+                        },
+                        .extra_temps = .{
+                            .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                        },
+                        .dst_temps = .{ .{ .reg = .ecx }, .unused },
+                        .each = .{ .once = &.{
+                            .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
+                            .{ ._, ._, .mov, .dst0d, .si(1 << 16), ._, ._ },
+                            .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ },
+                            .{ ._, ._ne, .j, .@"0f", ._, ._, ._ },
+                            .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
+                            .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
+                            .{ ._, ._, .mov, .tmp0q, .mem(.src0q), ._, ._ },
+                            .{ ._, ._, .cmp, .tmp0q, .dst0q, ._, ._ },
+                            .{ ._, ._na, .cmov, .dst0d, .tmp0d, ._, ._ },
+                        } },
+                    }, .{
+                        .required_features = .{ .@"64bit", null, null, null },
+                        .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
+                        .patterns = &.{
+                            .{ .src = .{ .to_mem, .none, .none } },
+                        },
+                        .extra_temps = .{
+                            .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                            .unused,
+                        },
+                        .dst_temps = .{ .{ .reg = .ecx }, .unused },
+                        .each = .{ .once = &.{
+                            .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
+                            .{ ._, ._, .mov, .dst0d, .si(1 << 16), ._, ._ },
+                            .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ },
+                            .{ ._, ._ne, .j, .@"0f", ._, ._, ._ },
+                            .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
+                            .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
+                            .{ ._, ._, .mov, .tmp0q, .mem(.src0q), ._, ._ },
+                            .{ ._, ._, .cmp, .dst0q, .tmp0q, ._, ._ },
+                            .{ ._, ._, .sbb, .dst0d, .dst0d, ._, ._ },
+                            .{ ._, ._, .@"or", .dst0d, .tmp0d, ._, ._ },
+                        } },
+                    } }) catch |err| switch (err) {
+                        error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
+                            @tagName(air_tag),
+                            cg.typeOf(bin_op.rhs).fmt(pt),
+                            ops[1].tracking(cg),
+                        }),
+                        else => |e| return e,
+                    },
+                }
+                if (ops[1].index != res[0].index) {
+                    try ops[1].die(cg);
+                    ops[1] = res[0];
+                } else cg.temp_type[@intFromEnum(res[0].unwrap(cg).temp)] = .i32;
+                cg.select(&res, &.{lhs_ty}, &ops, comptime &.{ .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .signed_int = .byte }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0b, .ui(7), ._, ._ },
+                        .{ ._, ._, .xor, .tmp0b, .sa(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .@"test", .dst0b, .src0b, ._, ._ },
+                        .{ ._, ._nz, .cmov, .dst0d, .tmp0d, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .signed_int = .byte }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .@"test", .dst0b, .src0b, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._r, .sa, .dst0b, .ui(7), ._, ._ },
+                        .{ ._, ._, .xor, .dst0b, .sa(.src0, .add_smax), ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .exact_signed_int = 8 }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0b, .ui(7), ._, ._ },
+                        .{ ._, ._, .xor, .tmp0b, .sa(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .add, .dst0b, .src0b, ._, ._ },
+                        .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .exact_signed_int = 8 }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .add, .dst0b, .src0b, ._, ._ },
+                        .{ ._, ._no, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._r, .sa, .dst0b, .ui(7), ._, ._ },
+                        .{ ._, ._, .xor, .dst0b, .sa(.src0, .add_smin), ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .signed_int = .byte }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0b, .ui(7), ._, ._ },
+                        .{ ._, ._, .lea, .tmp1d, .leaad(.src0, .add_smax_shr_src1, 1), ._, ._ },
+                        .{ ._, ._l, .sa, .dst0b, .src1b, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0b, .sa(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .cmp, .tmp1b, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                        .{ ._, ._a, .cmov, .dst0d, .tmp0d, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .signed_int = .byte }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .lea, .tmp0d, .leaad(.src0, .add_smax_shr_src1, 1), ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0b, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._r, .sa, .dst0b, .ui(7), ._, ._ },
+                        .{ ._, ._, .xor, .dst0b, .sa(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"1:", ._l, .sa, .dst0b, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .signed_int = .byte }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .{ .to_reg = .ecx }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .@"test", .src0b, .src0b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._r, .sa, .dst0b, .ui(7), ._, ._ },
+                        .{ ._, ._, .xor, .dst0b, .sa(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sa, .dst0b, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp0b, .uia(8, .src0, .sub_bit_size), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0b, .uia(8, .src0, .sub_bit_size), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0b, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0b, .src0b, ._, ._ },
+                        .{ ._, ._ne, .j, .@"0b", ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .@"test", .dst0b, .src0b, ._, ._ },
+                        .{ ._, ._nz, .cmov, .dst0d, .tmp0d, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .@"test", .dst0b, .src0b, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .exact_unsigned_int = 8 }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .add, .dst0b, .src0b, ._, ._ },
+                        .{ ._, ._c, .cmov, .dst0d, .tmp0d, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .exact_unsigned_int = 8 }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .add, .dst0b, .src0b, ._, ._ },
+                        .{ ._, ._nc, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sh, .dst0b, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .src0b, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._a, .cmov, .dst0d, .tmp0d, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sh, .dst0b, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .src0b, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                        .{ ._, ._na, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .to_reg = .ecx }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .@"test", .src0b, .src0b, ._, ._ },
+                        .{ ._, ._z, .cmov, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0b, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp1b, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .src0b, .tmp0b, ._, ._ },
+                        .{ ._, ._na, .cmov, .dst0d, .tmp1d, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .to_reg = .ecx }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .@"test", .src0b, .src0b, ._, ._ },
+                        .{ ._, ._nz, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0b, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp1b, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .src0b, .tmp0b, ._, ._ },
+                        .{ ._, ._a, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .tmp1d, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, .fast_imm16, null, null },
+                    .src_constraints = .{ .{ .signed_int = .word }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
+                        .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .@"test", .dst0w, .src0w, ._, ._ },
+                        .{ ._, ._nz, .cmov, .dst0d, .tmp0d, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .signed_int = .word }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .@"test", .dst0w, .src0w, ._, ._ },
+                        .{ ._, ._nz, .cmov, .dst0d, .tmp0d, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .fast_imm16, null, null, null },
+                    .src_constraints = .{ .{ .signed_int = .word }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .@"test", .dst0w, .src0w, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ },
+                        .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_smax), ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .signed_int = .word }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .@"test", .dst0w, .src0w, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ },
+                        .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smax), ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, .fast_imm16, null, null },
+                    .src_constraints = .{ .{ .exact_signed_int = 16 }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
+                        .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .add, .dst0w, .src0w, ._, ._ },
+                        .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .exact_signed_int = 16 }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .add, .dst0w, .src0w, ._, ._ },
+                        .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .fast_imm16, null, null, null },
+                    .src_constraints = .{ .{ .exact_signed_int = 16 }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .add, .dst0w, .src0w, ._, ._ },
+                        .{ ._, ._no, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ },
+                        .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_smin), ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .exact_signed_int = 16 }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .add, .dst0w, .src0w, ._, ._ },
+                        .{ ._, ._no, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ },
+                        .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smin), ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, .fast_imm16, null, null },
+                    .src_constraints = .{ .{ .signed_int = .word }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
+                        .{ ._, ._, .lea, .tmp1d, .leaad(.src0, .add_smax_shr_src1, 1), ._, ._ },
+                        .{ ._, ._l, .sa, .dst0d, .src1b, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .cmp, .tmp1w, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                        .{ ._, ._a, .cmov, .dst0d, .tmp0d, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .signed_int = .word }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ },
+                        .{ ._, ._, .lea, .tmp1d, .leaad(.src0, .add_smax_shr_src1, 1), ._, ._ },
+                        .{ ._, ._l, .sa, .dst0d, .src1b, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .cmp, .tmp1w, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                        .{ ._, ._a, .cmov, .dst0d, .tmp0d, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .fast_imm16, null, null, null },
+                    .src_constraints = .{ .{ .signed_int = .word }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .lea, .tmp0d, .leaad(.src0, .add_smax_shr_src1, 1), ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0w, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ },
+                        .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"1:", ._l, .sa, .dst0d, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .signed_int = .word }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .lea, .tmp0d, .leaad(.src0, .add_smax_shr_src1, 1), ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0w, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ },
+                        .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"1:", ._l, .sa, .dst0d, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .fast_imm16, null, null, null },
+                    .src_constraints = .{ .{ .signed_int = .word }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .{ .to_reg = .ecx }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .@"test", .src0w, .src0w, ._, ._ },
+                        .{ .@"0:", ._, .mov, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ },
+                        .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sa, .dst0d, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0w, .src0w, ._, ._ },
+                        .{ ._, ._ne, .j, .@"0b", ._, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .signed_int = .word }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .{ .to_reg = .ecx }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .@"test", .src0w, .src0w, ._, ._ },
+                        .{ .@"0:", ._, .mov, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ },
+                        .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sa, .dst0d, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0w, .src0w, ._, ._ },
+                        .{ ._, ._ne, .j, .@"0b", ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .unsigned_int = .word }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .@"test", .dst0w, .src0w, ._, ._ },
+                        .{ ._, ._nz, .cmov, .dst0d, .tmp0d, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .unsigned_int = .word }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .@"test", .dst0w, .src0w, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .exact_unsigned_int = 16 }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .add, .dst0w, .src0w, ._, ._ },
+                        .{ ._, ._c, .cmov, .dst0d, .tmp0d, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .exact_unsigned_int = 16 }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .add, .dst0w, .src0w, ._, ._ },
+                        .{ ._, ._nc, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .unsigned_int = .word }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sh, .dst0d, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .src0w, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._a, .cmov, .dst0d, .tmp0d, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .unsigned_int = .word }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sh, .dst0d, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .src0w, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                        .{ ._, ._na, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .unsigned_int = .word }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .to_reg = .ecx }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .@"test", .src0w, .src0w, ._, ._ },
+                        .{ ._, ._z, .cmov, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0w, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp1d, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .src0w, .tmp0w, ._, ._ },
+                        .{ ._, ._na, .cmov, .dst0d, .tmp1d, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .unsigned_int = .word }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .to_reg = .ecx }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .@"test", .src0w, .src0w, ._, ._ },
+                        .{ ._, ._nz, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0w, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp1d, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .src0w, .tmp0w, ._, ._ },
+                        .{ ._, ._a, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .tmp1d, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .signed_int = .dword }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .@"test", .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._nz, .cmov, .dst0d, .tmp0d, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .signed_int = .dword }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .@"test", .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._r, .sa, .dst0d, .ui(31), ._, ._ },
+                        .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smax), ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .exact_signed_int = 32 }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .add, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .exact_signed_int = 32 }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .add, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._no, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._r, .sa, .dst0d, .ui(31), ._, ._ },
+                        .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smin), ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .signed_int = .dword }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
+                        .{ ._, ._, .lea, .tmp1d, .leaad(.src0, .add_smax_shr_src1, 1), ._, ._ },
+                        .{ ._, ._l, .sa, .dst0d, .src1b, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .cmp, .tmp1d, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                        .{ ._, ._a, .cmov, .dst0d, .tmp0d, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .signed_int = .dword }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .lea, .tmp0d, .leaad(.src0, .add_smax_shr_src1, 1), ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0d, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._r, .sa, .dst0d, .ui(31), ._, ._ },
+                        .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"1:", ._l, .sa, .dst0d, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .signed_int = .dword }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .{ .to_reg = .ecx }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .@"test", .src0d, .src0d, ._, ._ },
+                        .{ .@"0:", ._, .mov, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._r, .sa, .dst0d, .ui(31), ._, ._ },
+                        .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sa, .dst0d, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._ne, .j, .@"0b", ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .@"test", .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._nz, .cmov, .dst0d, .tmp0d, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .@"test", .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .add, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._c, .cmov, .dst0d, .tmp0d, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .add, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._nc, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sh, .dst0d, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .src0d, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._a, .cmov, .dst0d, .tmp0d, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sh, .dst0d, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .src0d, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                        .{ ._, ._na, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .to_reg = .ecx }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .@"test", .src0d, .src0d, ._, ._ },
+                        .{ ._, ._z, .cmov, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp1d, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .src0d, .tmp0d, ._, ._ },
+                        .{ ._, ._na, .cmov, .dst0d, .tmp1d, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .to_reg = .ecx }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .@"test", .src0d, .src0d, ._, ._ },
+                        .{ ._, ._nz, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .dst0d, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp1d, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .src0d, .tmp0d, ._, ._ },
+                        .{ ._, ._a, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .tmp1d, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .cmov, null, null },
+                    .src_constraints = .{ .{ .signed_int = .qword }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .xor, .tmp0q, .tmp1q, ._, ._ },
+                        .{ ._, ._, .@"test", .dst0q, .src0q, ._, ._ },
+                        .{ ._, ._nz, .cmov, .dst0q, .tmp0q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{ .{ .signed_int = .qword }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .@"test", .dst0q, .src0q, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._r, .sa, .dst0q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .xor, .dst0q, .tmp0q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .cmov, null, null },
+                    .src_constraints = .{ .{ .exact_signed_int = 64 }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .xor, .tmp0q, .tmp1q, ._, ._ },
+                        .{ ._, ._, .add, .dst0q, .src0q, ._, ._ },
+                        .{ ._, ._o, .cmov, .dst0q, .tmp0q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{ .{ .exact_signed_int = 64 }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .add, .dst0q, .src0q, ._, ._ },
+                        .{ ._, ._no, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._r, .sa, .dst0q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_smin), ._, ._ },
+                        .{ ._, ._, .xor, .dst0q, .tmp0q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .cmov, null, null },
+                    .src_constraints = .{ .{ .signed_int = .qword }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
+                        .{ ._, ._, .lea, .tmp1q, .leaad(.src0, .add_smax_shr_src1, 1), ._, ._ },
+                        .{ ._, ._l, .sa, .dst0q, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .xor, .tmp0q, .tmp2q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                        .{ ._, ._, .cmp, .tmp1q, .tmp2q, ._, ._ },
+                        .{ ._, ._a, .cmov, .dst0q, .tmp0q, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .signed_int = .qword }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .lea, .tmp0q, .leaad(.src0, .add_smax_shr_src1, 1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0q, .tmp1q, ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._r, .sa, .dst0q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .xor, .dst0q, .tmp1q, ._, ._ },
+                        .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"1:", ._l, .sa, .dst0q, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .signed_int = .qword }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .{ .to_reg = .ecx }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ },
+                        .{ .@"0:", ._, .mov, .dst0q, .src0q, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._r, .sa, .dst0q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .xor, .dst0q, .tmp0q, ._, ._ },
+                        .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .dst0q, .src0q, ._, ._ },
+                        .{ ._, ._l, .sa, .dst0q, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0q, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0q, .src0q, ._, ._ },
+                        .{ ._, ._ne, .j, .@"0b", ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .@"test", .dst0q, .src0q, ._, ._ },
+                        .{ ._, ._nz, .cmov, .dst0q, .tmp0q, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .@"test", .dst0q, .src0q, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .dst0q, .ua(.src0, .add_umax), ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .add, .dst0q, .src0q, ._, ._ },
+                        .{ ._, ._c, .cmov, .dst0q, .tmp0q, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .add, .dst0q, .src0q, ._, ._ },
+                        .{ ._, ._nc, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .dst0q, .ua(.src0, .add_umax), ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .dst0q, .src0q, ._, ._ },
+                        .{ ._, ._l, .sh, .dst0q, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                        .{ ._, ._, .cmp, .src0q, .tmp0q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._a, .cmov, .dst0q, .tmp0q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .dst0q, .src0q, ._, ._ },
+                        .{ ._, ._l, .sh, .dst0q, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                        .{ ._, ._, .cmp, .src0q, .tmp0q, ._, ._ },
+                        .{ ._, ._na, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .dst0q, .ua(.src0, .add_umax), ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .cmov, null, null, null },
+                    .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .to_reg = .ecx }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .dst0q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ },
+                        .{ ._, ._z, .cmov, .dst0q, .src0q, ._, ._ },
+                        .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0q, .dst0q, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0q, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .src0q, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp1q, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .src0q, .tmp0q, ._, ._ },
+                        .{ ._, ._na, .cmov, .dst0q, .tmp1q, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .exact_signed_int = 32 }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .to_reg = .ecx }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .dst0q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ },
+                        .{ ._, ._nz, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._, .xor, .dst0q, .dst0q, ._, ._ },
+                        .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0q, .dst0q, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0q, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .src0q, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp1q, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .src0q, .tmp0q, ._, ._ },
+                        .{ ._, ._a, .j, .@"0f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
+                        .{ .exact_signed_int = 32 },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .reg = .rax } },
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .reg = .rdi } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
+                        .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
+                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
+                        .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ },
+                        .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                        .{ ._, ._, .sub, .tmp6d, .si(1), ._, ._ },
+                        .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
+                        .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp7q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp7q, .ui(63), ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"2:", ._, .mov, .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
+                        .{ ._, ._, .not, .tmp0q, ._, ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
+                        .{ ._, ._, .mov, .src1d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
+                        .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
+                        .{ .exact_signed_int = 32 },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .reg = .rax } },
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .reg = .rdi } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
+                        .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
+                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
+                        .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ },
+                        .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                        .{ ._, ._c, .de, .tmp6d, ._, ._, ._ },
+                        .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
+                        .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ },
+                        .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp7q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp7q, .ui(63), ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"2:", ._, .mov, .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
+                        .{ ._, ._, .not, .tmp0q, ._, ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
+                        .{ ._, ._, .mov, .src1d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
+                        .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
+                        .{ .exact_signed_int = 32 },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .reg = .rax } },
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .reg = .rdi } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
+                        .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
+                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
+                        .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
+                        .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
+                        .{ ._, ._, .sub, .tmp5d, .si(1), ._, ._ },
+                        .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
+                        .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .@"test", .tmp4q, .tmp4q, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"2:", ._, .mov, .tmp0q, .si(-1), ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
+                        .{ ._, ._, .mov, .src1d, .sa(.dst0, .add_size_div_8), ._, ._ },
+                        .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
+                        .{ .exact_signed_int = 32 },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .reg = .rax } },
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .reg = .rdi } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
+                        .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
+                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
+                        .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
+                        .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
+                        .{ ._, ._c, .de, .tmp5d, ._, ._, ._ },
+                        .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
+                        .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
+                        .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
+                        .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .@"test", .tmp4q, .tmp4q, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"2:", ._, .mov, .tmp0q, .si(-1), ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
+                        .{ ._, ._, .mov, .src1d, .sa(.dst0, .add_size_div_8), ._, ._ },
+                        .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
+                        .{ .exact_signed_int = 32 },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .reg = .rax } },
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .reg = .rdi } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
+                        .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
+                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
+                        .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
+                        .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ },
+                        .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                        .{ ._, ._, .sub, .tmp6d, .si(1), ._, ._ },
+                        .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
+                        .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
+                        .{ ._, ._, .xor, .tmp3q, .tmp1q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"2:", ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
+                        .{ ._, ._, .not, .tmp0q, ._, ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
+                        .{ ._, ._, .mov, .src1d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
+                        .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp1q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
+                        .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
+                        .{ .exact_signed_int = 32 },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .reg = .rax } },
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .reg = .rdi } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
+                        .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
+                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
+                        .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
+                        .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ },
+                        .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                        .{ ._, ._c, .de, .tmp6d, ._, ._, ._ },
+                        .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
+                        .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ },
+                        .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
+                        .{ ._, ._, .xor, .tmp3q, .tmp1q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"2:", ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
+                        .{ ._, ._, .not, .tmp0q, ._, ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
+                        .{ ._, ._, .mov, .src1d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
+                        .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp1q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
+                        .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
+                        .{ .exact_signed_int = 32 },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .reg = .rax } },
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .reg = .rdi } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .unused },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
+                        .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
+                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
+                        .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
+                        .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
+                        .{ ._, ._, .sub, .tmp5d, .si(1), ._, ._ },
+                        .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
+                        .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .@"test", .tmp4q, .tmp4q, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"2:", ._, .mov, .tmp0q, .si(-1), ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
+                        .{ ._, ._, .mov, .src1d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
+                        .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
+                        .{ .exact_signed_int = 32 },
                         .any,
                     },
                     .patterns = &.{
                         .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
                     },
                     .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .reg = .rax } },
                         .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .reg = .rdi } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
-                        .unused,
                         .unused,
                         .unused,
                         .unused,
@@ -58023,44 +61085,70 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .mem, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
-                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
-                        .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ },
-                        .{ ._, ._, .not, .tmp0p, ._, ._, ._ },
-                        .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ },
-                        .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
-                        .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
-                        .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
-                        .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ },
-                        .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ },
-                        .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ },
-                        .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ },
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
+                        .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
                         .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
-                        .{ ._, ._r, .sa, .tmp3q, .src1b, ._, ._ },
-                        .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ },
-                        .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
-                        .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
+                        .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
+                        .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
+                        .{ ._, ._c, .de, .tmp5d, ._, ._, ._ },
                         .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
+                        .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
+                        .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
+                        .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .@"test", .tmp4q, .tmp4q, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"2:", ._, .mov, .tmp0q, .si(-1), ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
+                        .{ ._, ._, .mov, .src1d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
+                        .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
                     } },
                 }, .{
                     .required_features = .{ .@"64bit", .slow_incdec, null, null },
                     .src_constraints = .{
-                        .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } },
-                        .{ .unsigned_int = .byte },
+                        .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
+                        .{ .exact_signed_int = 32 },
                         .any,
                     },
                     .patterns = &.{
                         .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
                     },
                     .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .reg = .rax } },
                         .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
-                        .unused,
-                        .unused,
-                        .unused,
+                        .{ .type = .usize, .kind = .{ .reg = .rdi } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
                         .unused,
                         .unused,
                         .unused,
@@ -58068,44 +61156,90 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .mem, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
-                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
-                        .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ },
-                        .{ ._, ._, .not, .tmp0p, ._, ._, ._ },
-                        .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ },
-                        .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
-                        .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
-                        .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
-                        .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ },
-                        .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ },
-                        .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ },
-                        .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ },
-                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
-                        .{ ._, ._r, .sh, .tmp3q, .src1b, ._, ._ },
-                        .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ },
-                        .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
-                        .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
+                        .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
                         .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
+                        .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
+                        .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ },
+                        .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                        .{ ._, ._, .sub, .tmp6d, .si(1), ._, ._ },
+                        .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
+                        .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._, .mov, .tmp7q, .tmp1q, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp1q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp1q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .tmp1q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0q, .tmp1q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp0q, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"2:", ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
+                        .{ ._, ._, .not, .tmp0q, ._, ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
+                        .{ ._, ._, .mov, .src1d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
+                        .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -16), .tmp1q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
                     } },
                 }, .{
                     .required_features = .{ .@"64bit", null, null, null },
                     .src_constraints = .{
-                        .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } },
-                        .{ .unsigned_int = .byte },
+                        .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
+                        .{ .exact_signed_int = 32 },
                         .any,
                     },
                     .patterns = &.{
                         .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
                     },
                     .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .reg = .rax } },
                         .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
-                        .unused,
-                        .unused,
-                        .unused,
+                        .{ .type = .usize, .kind = .{ .reg = .rdi } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
                         .unused,
                         .unused,
                         .unused,
@@ -58113,42 +61247,88 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .mem, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
-                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
-                        .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ },
-                        .{ ._, ._, .not, .tmp0p, ._, ._, ._ },
-                        .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ },
-                        .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
-                        .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
-                        .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
-                        .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ },
-                        .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ },
-                        .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ },
-                        .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ },
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
+                        .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
                         .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
-                        .{ ._, ._r, .sh, .tmp3q, .src1b, ._, ._ },
-                        .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ },
-                        .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
-                        .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
+                        .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
+                        .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ },
+                        .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                        .{ ._, ._c, .de, .tmp6d, ._, ._, ._ },
                         .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
+                        .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ },
+                        .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._, .mov, .tmp7q, .tmp1q, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp1q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp1q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .tmp1q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0q, .tmp1q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp0q, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"2:", ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
+                        .{ ._, ._, .not, .tmp0q, ._, ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
+                        .{ ._, ._, .mov, .src1d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
+                        .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -16), .tmp1q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
                     } },
                 }, .{
-                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .required_features = .{ .@"64bit", .bmi, .slow_incdec, null },
                     .src_constraints = .{
-                        .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } },
-                        .{ .unsigned_int = .word },
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
+                        .{ .exact_signed_int = 32 },
                         .any,
                     },
                     .patterns = &.{
-                        .{ .src = .{ .to_mem, .{ .to_reg = .cx }, .none } },
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
                     },
                     .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .reg = .rax } },
                         .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .reg = .rdi } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
-                        .unused,
                         .unused,
                         .unused,
                         .unused,
@@ -58158,42 +61338,75 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .mem, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
-                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
-                        .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ },
-                        .{ ._, ._, .not, .tmp0p, ._, ._, ._ },
-                        .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ },
-                        .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
-                        .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
-                        .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
-                        .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ },
-                        .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ },
-                        .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ },
-                        .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ },
-                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
-                        .{ ._, ._r, .sa, .tmp3q, .src1b, ._, ._ },
-                        .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ },
-                        .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
-                        .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
+                        .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
                         .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
+                        .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
+                        .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
+                        .{ ._, ._, .sub, .tmp5d, .si(1), ._, ._ },
+                        .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
+                        .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._, .andn, .tmp5q, .tmp1q, .tmp3q, ._ },
+                        .{ ._, ._, .@"and", .tmp1q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"2:", ._, .mov, .tmp0q, .si(-1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
+                        .{ ._, ._, .mov, .src1d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
+                        .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -16), .tmp1q, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
                     } },
                 }, .{
-                    .required_features = .{ .@"64bit", null, null, null },
+                    .required_features = .{ .@"64bit", .bmi, null, null },
                     .src_constraints = .{
-                        .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } },
-                        .{ .unsigned_int = .word },
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
+                        .{ .exact_signed_int = 32 },
                         .any,
                     },
                     .patterns = &.{
-                        .{ .src = .{ .to_mem, .{ .to_reg = .cx }, .none } },
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
                     },
                     .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .reg = .rax } },
                         .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .reg = .rdi } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
-                        .unused,
                         .unused,
                         .unused,
                         .unused,
@@ -58203,42 +61416,75 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .mem, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
-                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
-                        .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ },
-                        .{ ._, ._, .not, .tmp0p, ._, ._, ._ },
-                        .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ },
-                        .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
-                        .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
-                        .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
-                        .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ },
-                        .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ },
-                        .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ },
-                        .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ },
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
+                        .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
                         .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
-                        .{ ._, ._r, .sa, .tmp3q, .src1b, ._, ._ },
-                        .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ },
-                        .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
-                        .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
+                        .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
+                        .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
+                        .{ ._, ._c, .de, .tmp5d, ._, ._, ._ },
                         .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
+                        .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
+                        .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
+                        .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._, .andn, .tmp5q, .tmp1q, .tmp3q, ._ },
+                        .{ ._, ._, .@"and", .tmp1q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"2:", ._, .mov, .tmp0q, .si(-1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
+                        .{ ._, ._, .mov, .src1d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
+                        .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -16), .tmp1q, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
                     } },
                 }, .{
                     .required_features = .{ .@"64bit", .slow_incdec, null, null },
                     .src_constraints = .{
-                        .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } },
-                        .{ .unsigned_int = .word },
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
+                        .{ .exact_signed_int = 32 },
                         .any,
                     },
                     .patterns = &.{
-                        .{ .src = .{ .to_mem, .{ .to_reg = .cx }, .none } },
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
                     },
                     .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .reg = .rax } },
                         .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .reg = .rdi } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
-                        .unused,
                         .unused,
                         .unused,
                         .unused,
@@ -58248,42 +61494,75 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .mem, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
-                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
-                        .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ },
-                        .{ ._, ._, .not, .tmp0p, ._, ._, ._ },
-                        .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ },
-                        .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
-                        .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
-                        .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
-                        .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ },
-                        .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ },
-                        .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ },
-                        .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ },
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
+                        .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
                         .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
-                        .{ ._, ._r, .sh, .tmp3q, .src1b, ._, ._ },
-                        .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
+                        .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
+                        .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
+                        .{ ._, ._, .sub, .tmp5d, .si(1), ._, ._ },
+                        .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
+                        .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
                         .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
-                        .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
-                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._, .@"and", .tmp1q, .tmp5q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp5q, .tmp1q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"2:", ._, .mov, .tmp0q, .si(-1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
+                        .{ ._, ._, .mov, .src1d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
+                        .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -16), .tmp1q, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
                     } },
                 }, .{
                     .required_features = .{ .@"64bit", null, null, null },
                     .src_constraints = .{
-                        .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } },
-                        .{ .unsigned_int = .word },
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
+                        .{ .exact_signed_int = 32 },
                         .any,
                     },
                     .patterns = &.{
-                        .{ .src = .{ .to_mem, .{ .to_reg = .cx }, .none } },
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
                     },
                     .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .reg = .rax } },
                         .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .reg = .rdi } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
-                        .unused,
                         .unused,
                         .unused,
                         .unused,
@@ -58293,225 +61572,255 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .mem, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
-                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
-                        .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ },
-                        .{ ._, ._, .not, .tmp0p, ._, ._, ._ },
-                        .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ },
-                        .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
-                        .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
-                        .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ },
-                        .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ },
-                        .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ },
-                        .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ },
-                        .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ },
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
+                        .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
                         .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
-                        .{ ._, ._r, .sh, .tmp3q, .src1b, ._, ._ },
-                        .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ },
-                        .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
-                        .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
+                        .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
+                        .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
+                        .{ ._, ._c, .de, .tmp5d, ._, ._, ._ },
                         .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
-                    } },
-                } }) catch |err| switch (err) {
-                    error.SelectFailed => return cg.fail("failed to select {s} {} {} {} {}", .{
-                        @tagName(air_tag),
-                        cg.typeOf(bin_op.lhs).fmt(pt),
-                        cg.typeOf(bin_op.rhs).fmt(pt),
-                        ops[0].tracking(cg),
-                        ops[1].tracking(cg),
-                    }),
-                    else => |e| return e,
-                };
-                try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
-            },
-            .shl, .shl_exact => |air_tag| if (use_old) try cg.airShlShrBinOp(inst) else fallback: {
-                const bin_op = air_datas[@intFromEnum(inst)].bin_op;
-                if (cg.typeOf(bin_op.lhs).isVector(zcu)) break :fallback try cg.airShlShrBinOp(inst);
-                var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
-                var res: [1]Temp = undefined;
-                cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
-                    .src_constraints = .{ .{ .signed_int = .byte }, .{ .unsigned_int = .byte }, .any },
-                    .patterns = &.{
-                        .{ .src = .{ .mut_mem, .imm8, .none } },
-                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
-                        .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } },
-                        .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } },
-                    },
-                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
-                    .clobbers = .{ .eflags = true },
-                    .each = .{ .once = &.{
-                        .{ ._, ._l, .sa, .dst0b, .src1b, ._, ._ },
-                    } },
-                }, .{
-                    .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
-                    .patterns = &.{
-                        .{ .src = .{ .mut_mem, .imm8, .none } },
-                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
-                        .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } },
-                        .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } },
-                    },
-                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
-                    .clobbers = .{ .eflags = true },
-                    .each = .{ .once = &.{
-                        .{ ._, ._l, .sh, .dst0b, .src1b, ._, ._ },
-                    } },
-                }, .{
-                    .src_constraints = .{ .{ .signed_int = .word }, .{ .exact_unsigned_int = 4 }, .any },
-                    .patterns = &.{
-                        .{ .src = .{ .mut_mem, .imm8, .none } },
-                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
-                        .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } },
-                        .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } },
-                    },
-                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
-                    .clobbers = .{ .eflags = true },
-                    .each = .{ .once = &.{
-                        .{ ._, ._l, .sa, .dst0w, .src1b, ._, ._ },
-                    } },
-                }, .{
-                    .src_constraints = .{ .{ .unsigned_int = .word }, .{ .exact_unsigned_int = 4 }, .any },
-                    .patterns = &.{
-                        .{ .src = .{ .mut_mem, .imm8, .none } },
-                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
-                        .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } },
-                        .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } },
-                    },
-                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
-                    .clobbers = .{ .eflags = true },
-                    .each = .{ .once = &.{
-                        .{ ._, ._l, .sh, .dst0w, .src1b, ._, ._ },
-                    } },
-                }, .{
-                    .src_constraints = .{ .{ .signed_int = .dword }, .{ .exact_unsigned_int = 5 }, .any },
-                    .patterns = &.{
-                        .{ .src = .{ .mut_mem, .imm8, .none } },
-                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
-                    },
-                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
-                    .clobbers = .{ .eflags = true },
-                    .each = .{ .once = &.{
-                        .{ ._, ._l, .sa, .dst0d, .src1b, ._, ._ },
-                    } },
-                }, .{
-                    .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .exact_unsigned_int = 5 }, .any },
-                    .patterns = &.{
-                        .{ .src = .{ .mut_mem, .imm8, .none } },
-                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
-                    },
-                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
-                    .clobbers = .{ .eflags = true },
-                    .each = .{ .once = &.{
-                        .{ ._, ._l, .sh, .dst0d, .src1b, ._, ._ },
-                    } },
-                }, .{
-                    .required_features = .{ .bmi2, null, null, null },
-                    .src_constraints = .{ .{ .int = .dword }, .{ .exact_unsigned_int = 5 }, .any },
-                    .patterns = &.{
-                        .{ .src = .{ .mem, .to_gpr, .none } },
-                        .{ .src = .{ .to_gpr, .to_gpr, .none } },
-                    },
-                    .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }, .unused },
-                    .each = .{ .once = &.{
-                        .{ ._, ._lx, .sh, .dst0d, .src0d, .src1d, ._ },
+                        .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
+                        .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
+                        .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
+                        .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._, .@"and", .tmp1q, .tmp5q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp5q, .tmp1q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"2:", ._, .mov, .tmp0q, .si(-1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
+                        .{ ._, ._, .mov, .src1d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
+                        .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -16), .tmp1q, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
                     } },
                 }, .{
-                    .src_constraints = .{ .{ .signed_int = .dword }, .{ .exact_unsigned_int = 5 }, .any },
-                    .patterns = &.{
-                        .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } },
-                        .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } },
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
+                        .{ .exact_signed_int = 32 },
+                        .any,
                     },
-                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
-                    .clobbers = .{ .eflags = true },
-                    .each = .{ .once = &.{
-                        .{ ._, ._l, .sa, .dst0d, .src1b, ._, ._ },
-                    } },
-                }, .{
-                    .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .exact_unsigned_int = 5 }, .any },
                     .patterns = &.{
-                        .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } },
-                        .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } },
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
                     },
-                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
-                    .clobbers = .{ .eflags = true },
-                    .each = .{ .once = &.{
-                        .{ ._, ._l, .sh, .dst0d, .src1b, ._, ._ },
-                    } },
-                }, .{
-                    .required_features = .{ .@"64bit", null, null, null },
-                    .src_constraints = .{ .{ .signed_int = .qword }, .{ .exact_unsigned_int = 6 }, .any },
-                    .patterns = &.{
-                        .{ .src = .{ .mut_mem, .imm8, .none } },
-                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .reg = .rax } },
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .reg = .rdi } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
                     },
-                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .dst_temps = .{ .mem, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._l, .sa, .dst0q, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
+                        .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
+                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
+                        .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ },
+                        .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                        .{ ._, ._, .sub, .tmp6d, .si(1), ._, ._ },
+                        .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
+                        .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .mov, .tmp7q, .tmp1q, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp1q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp1q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .tmp1q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0q, .tmp1q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp0q, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"2:", ._, .mov, .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
+                        .{ ._, ._, .not, .tmp0q, ._, ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
+                        .{ ._, ._, .mov, .src1d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
+                        .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
                     } },
                 }, .{
                     .required_features = .{ .@"64bit", null, null, null },
-                    .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .exact_unsigned_int = 6 }, .any },
-                    .patterns = &.{
-                        .{ .src = .{ .mut_mem, .imm8, .none } },
-                        .{ .src = .{ .to_mut_gpr, .imm8, .none } },
-                    },
-                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
-                    .clobbers = .{ .eflags = true },
-                    .each = .{ .once = &.{
-                        .{ ._, ._l, .sh, .dst0q, .src1b, ._, ._ },
-                    } },
-                }, .{
-                    .required_features = .{ .@"64bit", .bmi2, null, null },
-                    .src_constraints = .{ .{ .int = .qword }, .{ .exact_unsigned_int = 6 }, .any },
-                    .patterns = &.{
-                        .{ .src = .{ .mem, .to_gpr, .none } },
-                        .{ .src = .{ .to_gpr, .to_gpr, .none } },
+                    .src_constraints = .{
+                        .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
+                        .{ .exact_signed_int = 32 },
+                        .any,
                     },
-                    .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }, .unused },
-                    .each = .{ .once = &.{
-                        .{ ._, ._lx, .sh, .dst0q, .src0q, .src1q, ._ },
-                    } },
-                }, .{
-                    .required_features = .{ .@"64bit", null, null, null },
-                    .src_constraints = .{ .{ .signed_int = .qword }, .{ .exact_unsigned_int = 6 }, .any },
                     .patterns = &.{
-                        .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } },
-                        .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } },
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
                     },
-                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
-                    .clobbers = .{ .eflags = true },
-                    .each = .{ .once = &.{
-                        .{ ._, ._l, .sa, .dst0q, .src1b, ._, ._ },
-                    } },
-                }, .{
-                    .required_features = .{ .@"64bit", null, null, null },
-                    .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .exact_unsigned_int = 6 }, .any },
-                    .patterns = &.{
-                        .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } },
-                        .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .reg = .rax } },
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .reg = .rdi } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
                     },
-                    .dst_temps = .{ .{ .ref = .src0 }, .unused },
+                    .dst_temps = .{ .mem, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._l, .sh, .dst0q, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
+                        .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
+                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
+                        .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ },
+                        .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                        .{ ._, ._c, .de, .tmp6d, ._, ._, ._ },
+                        .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
+                        .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
+                        .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ },
+                        .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ },
+                        .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .mov, .tmp7q, .tmp1q, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp1q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp1q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .tmp1q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0q, .tmp1q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp0q, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"2:", ._, .mov, .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ },
+                        .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
+                        .{ ._, ._, .not, .tmp0q, ._, ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
+                        .{ ._, ._, .mov, .src1d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
+                        .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
                     } },
                 }, .{
-                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .required_features = .{ .@"64bit", .bmi, .slow_incdec, null },
                     .src_constraints = .{
-                        .{ .remainder_int = .{ .of = .qword, .is = .qword } },
-                        .{ .unsigned_int = .byte },
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .{ .exact_signed_int = 32 },
                         .any,
                     },
                     .patterns = &.{
                         .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
                     },
                     .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .reg = .rax } },
                         .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .reg = .rdi } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
-                        .unused,
                         .unused,
                         .unused,
                         .unused,
@@ -58521,42 +61830,74 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .mem, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
+                        .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
+                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ },
                         .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
                         .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
                         .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
+                        .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
+                        .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
+                        .{ ._, ._, .sub, .tmp5d, .si(1), ._, ._ },
+                        .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
+                        .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
                         .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
-                        .{ ._, ._, .mov, .tmp3q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
-                        .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
-                        .{ .@"0:", ._, .mov, .tmp4q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
-                        .{ ._, ._ld, .sh, .tmp3q, .tmp4q, .src1b, ._ },
+                        .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
                         .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
-                        .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ },
-                        .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
                         .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
-                        .{ ._, ._l, .sh, .tmp3q, .src1b, ._, ._ },
+                        .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
                         .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
                         .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
                         .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
                         .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .andn, .tmp5q, .tmp1q, .tmp3q, ._ },
+                        .{ ._, ._, .@"and", .tmp1q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"2:", ._, .mov, .tmp0q, .si(-1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
+                        .{ ._, ._, .mov, .src1d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
+                        .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
                     } },
                 }, .{
-                    .required_features = .{ .@"64bit", null, null, null },
+                    .required_features = .{ .@"64bit", .bmi, null, null },
                     .src_constraints = .{
-                        .{ .remainder_int = .{ .of = .qword, .is = .qword } },
-                        .{ .unsigned_int = .byte },
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .{ .exact_signed_int = 32 },
                         .any,
                     },
                     .patterns = &.{
                         .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
                     },
                     .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .reg = .rax } },
                         .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .reg = .rdi } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
-                        .unused,
                         .unused,
                         .unused,
                         .unused,
@@ -58566,42 +61907,74 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .mem, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
+                        .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
+                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ },
                         .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
                         .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
                         .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
+                        .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
+                        .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
+                        .{ ._, ._c, .de, .tmp5d, ._, ._, ._ },
+                        .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
+                        .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
                         .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
-                        .{ ._, ._, .mov, .tmp3q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
-                        .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
-                        .{ .@"0:", ._, .mov, .tmp4q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
-                        .{ ._, ._ld, .sh, .tmp3q, .tmp4q, .src1b, ._ },
+                        .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
                         .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
-                        .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ },
-                        .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
+                        .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
                         .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
-                        .{ ._, ._l, .sh, .tmp3q, .src1b, ._, ._ },
+                        .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
                         .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
                         .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
                         .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
                         .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .andn, .tmp5q, .tmp1q, .tmp3q, ._ },
+                        .{ ._, ._, .@"and", .tmp1q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"2:", ._, .mov, .tmp0q, .si(-1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
+                        .{ ._, ._, .mov, .src1d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
+                        .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
                     } },
                 }, .{
                     .required_features = .{ .@"64bit", .slow_incdec, null, null },
                     .src_constraints = .{
-                        .{ .remainder_int = .{ .of = .qword, .is = .qword } },
-                        .{ .unsigned_int = .word },
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .{ .exact_signed_int = 32 },
                         .any,
                     },
                     .patterns = &.{
-                        .{ .src = .{ .to_mem, .{ .to_reg = .cx }, .none } },
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
                     },
                     .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .reg = .rax } },
                         .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .reg = .rdi } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
-                        .unused,
                         .unused,
                         .unused,
                         .unused,
@@ -58611,42 +61984,74 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .mem, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
+                        .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
+                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ },
                         .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
                         .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
                         .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
+                        .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
+                        .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
+                        .{ ._, ._, .sub, .tmp5d, .si(1), ._, ._ },
+                        .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
+                        .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
                         .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
-                        .{ ._, ._, .mov, .tmp3q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
-                        .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
-                        .{ .@"0:", ._, .mov, .tmp4q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
-                        .{ ._, ._ld, .sh, .tmp3q, .tmp4q, .src1b, ._ },
+                        .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
                         .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
-                        .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ },
-                        .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
+                        .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
                         .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
-                        .{ ._, ._l, .sh, .tmp3q, .src1b, ._, ._ },
+                        .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
                         .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
                         .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
                         .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
                         .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .@"and", .tmp1q, .tmp5q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp5q, .tmp1q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"2:", ._, .mov, .tmp0q, .si(-1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
+                        .{ ._, ._, .mov, .src1d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
+                        .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
                     } },
                 }, .{
                     .required_features = .{ .@"64bit", null, null, null },
                     .src_constraints = .{
-                        .{ .remainder_int = .{ .of = .qword, .is = .qword } },
-                        .{ .unsigned_int = .word },
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .{ .exact_signed_int = 32 },
                         .any,
                     },
                     .patterns = &.{
-                        .{ .src = .{ .to_mem, .{ .to_reg = .cx }, .none } },
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
                     },
                     .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .reg = .rax } },
                         .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .reg = .rdi } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
-                        .unused,
                         .unused,
                         .unused,
                         .unused,
@@ -58656,48 +62061,66 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .dst_temps = .{ .mem, .unused },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
+                        .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
+                        .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
+                        .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
+                        .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ },
                         .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
                         .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
                         .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
+                        .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
+                        .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
+                        .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
+                        .{ ._, ._c, .de, .tmp5d, ._, ._, ._ },
+                        .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
+                        .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
+                        .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
                         .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
-                        .{ ._, ._, .mov, .tmp3q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
-                        .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
-                        .{ .@"0:", ._, .mov, .tmp4q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
-                        .{ ._, ._ld, .sh, .tmp3q, .tmp4q, .src1b, ._ },
+                        .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
+                        .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
                         .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
-                        .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ },
-                        .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
+                        .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
                         .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
-                        .{ ._, ._l, .sh, .tmp3q, .src1b, ._, ._ },
+                        .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
                         .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
                         .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
                         .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
                         .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .@"and", .tmp1q, .tmp5q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp5q, .tmp1q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
+                        .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
+                        .{ .@"2:", ._, .mov, .tmp0q, .si(-1), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
+                        .{ ._, ._, .mov, .src1d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
+                        .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+                        .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
                     } },
                 } }) catch |err| switch (err) {
-                    error.SelectFailed => return cg.fail("failed to select {s} {} {} {} {}", .{
+                    error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
                         @tagName(air_tag),
-                        cg.typeOf(bin_op.lhs).fmt(pt),
-                        cg.typeOf(bin_op.rhs).fmt(pt),
+                        lhs_ty.fmt(pt),
                         ops[0].tracking(cg),
                         ops[1].tracking(cg),
                     }),
                     else => |e| return e,
                 };
-                switch (air_tag) {
-                    else => unreachable,
-                    .shl => res[0].wrapInt(cg) catch |err| switch (err) {
-                        error.SelectFailed => return cg.fail("failed to select wrap {} {} {} {}", .{
-                            cg.typeOf(bin_op.lhs).fmt(pt),
-                            cg.typeOf(bin_op.rhs).fmt(pt),
-                            ops[0].tracking(cg),
-                            ops[1].tracking(cg),
-                        }),
-                        else => |e| return e,
-                    },
-                    .shl_exact => {},
-                }
                 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
             },
             .not => |air_tag| if (use_old) try cg.airUnOp(inst, air_tag) else {
@@ -139465,7 +142888,7 @@ const Select = struct {
     temps: [@intFromEnum(Select.Operand.Ref.none)]Temp,
     labels: [@intFromEnum(Label._)]struct {
         backward: ?Mir.Inst.Index,
-        forward: [1]?Mir.Inst.Index,
+        forward: [3]?Mir.Inst.Index,
     },
     top: u3,
 
@@ -140108,7 +143531,7 @@ const Select = struct {
             none,
             undef,
             cc: Condition,
-            imm: u32,
+            imm: i32,
             ref: Select.Operand.Ref,
             reg: Register,
             reg_pair: [2]Register,
@@ -140198,7 +143621,7 @@ const Select = struct {
                 .any => .{ try cg.tempAlloc(spec.type), true },
                 .none => .{ try cg.tempInit(spec.type, .none), true },
                 .undef => .{ try cg.tempInit(spec.type, .undef), true },
-                .imm => |imm| .{ try cg.tempInit(spec.type, .{ .immediate = imm }), true },
+                .imm => |imm| .{ try cg.tempInit(spec.type, .{ .immediate = @bitCast(@as(i64, imm)) }), true },
                 .cc => |cc| .{ try cg.tempInit(spec.type, .{ .eflags = cc }), true },
                 .ref => |ref| .{ ref.tempOf(s), false },
                 .reg => |reg| .{ try cg.tempInit(spec.type, .{ .register = reg }), true },
@@ -140565,6 +143988,8 @@ const Select = struct {
                 smin,
                 smax,
                 umax,
+                smin_shr_src1,
+                smax_shr_src1,
                 umax_shr_src1,
                 repeat,
             },
@@ -140630,8 +144055,9 @@ const Select = struct {
             const sub_smin: Adjust = .{ .sign = .neg, .lhs = .smin, .op = .mul, .rhs = .@"1" };
             const add_smax: Adjust = .{ .sign = .pos, .lhs = .smax, .op = .mul, .rhs = .@"1" };
             const add_umax: Adjust = .{ .sign = .pos, .lhs = .umax, .op = .mul, .rhs = .@"1" };
-            const add_umax_shr_src1: Adjust = .{ .sign = .pos, .lhs = .umax_shr_src1, .op = .mul, .rhs = .@"1" };
             const sub_umax: Adjust = .{ .sign = .neg, .lhs = .umax, .op = .mul, .rhs = .@"1" };
+            const add_smax_shr_src1: Adjust = .{ .sign = .pos, .lhs = .smax_shr_src1, .op = .mul, .rhs = .@"1" };
+            const add_umax_shr_src1: Adjust = .{ .sign = .pos, .lhs = .umax_shr_src1, .op = .mul, .rhs = .@"1" };
             const repeat: Adjust = .{ .sign = .pos, .lhs = .repeat, .op = .mul, .rhs = .@"1" };
         };
         const Ref = enum(u5) {
@@ -141410,6 +144836,12 @@ const Select = struct {
                 .umax => @bitCast(@as(UnsignedImm, std.math.maxInt(UnsignedImm)) >> @truncate(
                     -%op.flags.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu),
                 )),
+                .smax_shr_src1 => @as(SignedImm, std.math.maxInt(SignedImm)) >> @truncate(
+                    Select.Operand.Ref.src1.valueOf(s).immediate -% op.flags.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu),
+                ),
+                .smin_shr_src1 => @as(SignedImm, std.math.minInt(SignedImm)) >> @truncate(
+                    Select.Operand.Ref.src1.valueOf(s).immediate -% op.flags.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu),
+                ),
                 .umax_shr_src1 => @bitCast(@as(UnsignedImm, std.math.maxInt(UnsignedImm)) >> @truncate(
                     Select.Operand.Ref.src1.valueOf(s).immediate -% op.flags.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu),
                 )),
src/codegen/llvm.zig
@@ -9023,19 +9023,25 @@ pub const FuncGen = struct {
         const rhs = try self.resolveInst(bin_op.rhs);
 
         const lhs_ty = self.typeOf(bin_op.lhs);
-        const lhs_scalar_ty = lhs_ty.scalarType(zcu);
-        const lhs_bits = lhs_scalar_ty.bitSize(zcu);
-
-        const casted_rhs = try self.wip.conv(.unsigned, rhs, try o.lowerType(lhs_ty), "");
-
+        const lhs_info = lhs_ty.intInfo(zcu);
         const llvm_lhs_ty = try o.lowerType(lhs_ty);
         const llvm_lhs_scalar_ty = llvm_lhs_ty.scalarType(&o.builder);
+
+        const rhs_ty = self.typeOf(bin_op.rhs);
+        const rhs_info = rhs_ty.intInfo(zcu);
+        assert(rhs_info.signedness == .unsigned);
+        const llvm_rhs_ty = try o.lowerType(rhs_ty);
+        const llvm_rhs_scalar_ty = llvm_rhs_ty.scalarType(&o.builder);
+
         const result = try self.wip.callIntrinsic(
             .normal,
             .none,
-            if (lhs_scalar_ty.isSignedInt(zcu)) .@"sshl.sat" else .@"ushl.sat",
+            switch (lhs_info.signedness) {
+                .signed => .@"sshl.sat",
+                .unsigned => .@"ushl.sat",
+            },
             &.{llvm_lhs_ty},
-            &.{ lhs, casted_rhs },
+            &.{ lhs, try self.wip.conv(.unsigned, rhs, llvm_lhs_ty, "") },
             "",
         );
 
@@ -9044,16 +9050,45 @@ pub const FuncGen = struct {
         // poison value."
         // However Zig semantics says that saturating shift left can never produce
         // undefined; instead it saturates.
+        if (rhs_info.bits <= math.log2_int(u16, lhs_info.bits)) return result;
         const bits = try o.builder.splatValue(
-            llvm_lhs_ty,
-            try o.builder.intConst(llvm_lhs_scalar_ty, lhs_bits),
-        );
-        const lhs_max = try o.builder.splatValue(
-            llvm_lhs_ty,
-            try o.builder.intConst(llvm_lhs_scalar_ty, -1),
+            llvm_rhs_ty,
+            try o.builder.intConst(llvm_rhs_scalar_ty, lhs_info.bits),
         );
-        const in_range = try self.wip.icmp(.ult, casted_rhs, bits, "");
-        return self.wip.select(.normal, in_range, result, lhs_max, "");
+        const in_range = try self.wip.icmp(.ult, rhs, bits, "");
+        const lhs_sat = lhs_sat: switch (lhs_info.signedness) {
+            .signed => {
+                const zero = try o.builder.splatValue(
+                    llvm_lhs_ty,
+                    try o.builder.intConst(llvm_lhs_scalar_ty, 0),
+                );
+                const smin = try o.builder.splatValue(
+                    llvm_lhs_ty,
+                    try minIntConst(&o.builder, lhs_ty, llvm_lhs_ty, zcu),
+                );
+                const smax = try o.builder.splatValue(
+                    llvm_lhs_ty,
+                    try maxIntConst(&o.builder, lhs_ty, llvm_lhs_ty, zcu),
+                );
+                const lhs_lt_zero = try self.wip.icmp(.slt, lhs, zero, "");
+                const slimit = try self.wip.select(.normal, lhs_lt_zero, smin, smax, "");
+                const lhs_eq_zero = try self.wip.icmp(.eq, lhs, zero, "");
+                break :lhs_sat try self.wip.select(.normal, lhs_eq_zero, zero, slimit, "");
+            },
+            .unsigned => {
+                const zero = try o.builder.splatValue(
+                    llvm_lhs_ty,
+                    try o.builder.intConst(llvm_lhs_scalar_ty, 0),
+                );
+                const umax = try o.builder.splatValue(
+                    llvm_lhs_ty,
+                    try o.builder.intConst(llvm_lhs_scalar_ty, -1),
+                );
+                const lhs_eq_zero = try self.wip.icmp(.eq, lhs, zero, "");
+                break :lhs_sat try self.wip.select(.normal, lhs_eq_zero, zero, umax, "");
+            },
+        };
+        return self.wip.select(.normal, in_range, result, lhs_sat, "");
     }
 
     fn airShr(self: *FuncGen, inst: Air.Inst.Index, is_exact: bool) !Builder.Value {
src/Air.zig
@@ -257,7 +257,9 @@ pub const Inst = struct {
         /// it shifts out any bits that disagree with the resultant sign bit.
         /// Uses the `bin_op` field.
         shl_exact,
-        /// Saturating integer shift left. `<<|`
+        /// Saturating integer shift left. `<<|`. The result is the same type as the `lhs`.
+        /// The `rhs` must have the same vector shape as the `lhs`, but with any unsigned
+        /// integer as the scalar type.
         /// Uses the `bin_op` field.
         shl_sat,
         /// Bitwise XOR. `^`
src/Sema.zig
@@ -14215,14 +14215,15 @@ fn zirShl(
     const rhs_ty = sema.typeOf(rhs);
 
     const src = block.nodeOffset(inst_data.src_node);
-    const lhs_src = switch (air_tag) {
-        .shl, .shl_sat => block.src(.{ .node_offset_bin_lhs = inst_data.src_node }),
-        .shl_exact => block.builtinCallArgSrc(inst_data.src_node, 0),
-        else => unreachable,
-    };
-    const rhs_src = switch (air_tag) {
-        .shl, .shl_sat => block.src(.{ .node_offset_bin_rhs = inst_data.src_node }),
-        .shl_exact => block.builtinCallArgSrc(inst_data.src_node, 1),
+    const lhs_src, const rhs_src = switch (air_tag) {
+        .shl, .shl_sat => .{
+            block.src(.{ .node_offset_bin_lhs = inst_data.src_node }),
+            block.src(.{ .node_offset_bin_rhs = inst_data.src_node }),
+        },
+        .shl_exact => .{
+            block.builtinCallArgSrc(inst_data.src_node, 0),
+            block.builtinCallArgSrc(inst_data.src_node, 1),
+        },
         else => unreachable,
     };
 
@@ -14231,8 +14232,7 @@ fn zirShl(
     const scalar_ty = lhs_ty.scalarType(zcu);
     const scalar_rhs_ty = rhs_ty.scalarType(zcu);
 
-    // TODO coerce rhs if air_tag is not shl_sat
-    const rhs_is_comptime_int = try sema.checkIntType(block, rhs_src, scalar_rhs_ty);
+    _ = try sema.checkIntType(block, rhs_src, scalar_rhs_ty);
 
     const maybe_lhs_val = try sema.resolveValueResolveLazy(lhs);
     const maybe_rhs_val = try sema.resolveValueResolveLazy(rhs);
@@ -14245,7 +14245,7 @@ fn zirShl(
         if (try rhs_val.compareAllWithZeroSema(.eq, pt)) {
             return lhs;
         }
-        if (scalar_ty.zigTypeTag(zcu) != .comptime_int and air_tag != .shl_sat) {
+        if (air_tag != .shl_sat and scalar_ty.zigTypeTag(zcu) != .comptime_int) {
             const bit_value = try pt.intValue(Type.comptime_int, scalar_ty.intInfo(zcu).bits);
             if (rhs_ty.zigTypeTag(zcu) == .vector) {
                 var i: usize = 0;
@@ -14282,6 +14282,8 @@ fn zirShl(
                 rhs_val.fmtValueSema(pt, sema),
             });
         }
+    } else if (scalar_rhs_ty.isSignedInt(zcu)) {
+        return sema.fail(block, rhs_src, "shift by signed type '{}'", .{rhs_ty.fmt(pt)});
     }
 
     const runtime_src = if (maybe_lhs_val) |lhs_val| rs: {
@@ -14309,18 +14311,34 @@ fn zirShl(
         return Air.internedToRef(val.toIntern());
     } else lhs_src;
 
-    const new_rhs = if (air_tag == .shl_sat) rhs: {
-        // Limit the RHS type for saturating shl to be an integer as small as the LHS.
-        if (rhs_is_comptime_int or
-            scalar_rhs_ty.intInfo(zcu).bits > scalar_ty.intInfo(zcu).bits)
-        {
-            const max_int = Air.internedToRef((try lhs_ty.maxInt(pt, lhs_ty)).toIntern());
-            const rhs_limited = try sema.analyzeMinMax(block, rhs_src, .min, &.{ rhs, max_int }, &.{ rhs_src, rhs_src });
-            break :rhs try sema.intCast(block, src, lhs_ty, rhs_src, rhs_limited, rhs_src, false, false);
-        } else {
-            break :rhs rhs;
-        }
-    } else rhs;
+    const rt_rhs = switch (air_tag) {
+        else => unreachable,
+        .shl, .shl_exact => rhs,
+        // The backend can handle a large runtime rhs better than we can, but
+        // we can limit a large comptime rhs better here. This also has the
+        // necessary side effect of preventing rhs from being a `comptime_int`.
+        .shl_sat => if (maybe_rhs_val) |rhs_val| Air.internedToRef(rt_rhs: {
+            const bit_count = scalar_ty.intInfo(zcu).bits;
+            const rt_rhs_scalar_ty = try pt.smallestUnsignedInt(bit_count);
+            if (!rhs_ty.isVector(zcu)) break :rt_rhs (try pt.intValue(
+                rt_rhs_scalar_ty,
+                @min(try rhs_val.getUnsignedIntSema(pt) orelse bit_count, bit_count),
+            )).toIntern();
+            const rhs_len = rhs_ty.vectorLen(zcu);
+            const rhs_elems = try sema.arena.alloc(InternPool.Index, rhs_len);
+            for (rhs_elems, 0..) |*rhs_elem, i| rhs_elem.* = (try pt.intValue(
+                rt_rhs_scalar_ty,
+                @min(try (try rhs_val.elemValue(pt, i)).getUnsignedIntSema(pt) orelse bit_count, bit_count),
+            )).toIntern();
+            break :rt_rhs try pt.intern(.{ .aggregate = .{
+                .ty = (try pt.vectorType(.{
+                    .len = rhs_len,
+                    .child = rt_rhs_scalar_ty.toIntern(),
+                })).toIntern(),
+                .storage = .{ .elems = rhs_elems },
+            } });
+        }) else rhs,
+    };
 
     try sema.requireRuntimeBlock(block, src, runtime_src);
     if (block.wantSafety()) {
@@ -14374,7 +14392,7 @@ fn zirShl(
             return sema.tupleFieldValByIndex(block, op_ov, 0, op_ov_tuple_ty);
         }
     }
-    return block.addBinOp(air_tag, lhs, new_rhs);
+    return block.addBinOp(air_tag, lhs, rt_rhs);
 }
 
 fn zirShr(
@@ -36432,10 +36450,7 @@ fn generateUnionTagTypeSimple(
     const enum_ty = try ip.getGeneratedTagEnumType(gpa, pt.tid, .{
         .name = name,
         .owner_union_ty = union_type,
-        .tag_ty = if (enum_field_names.len == 0)
-            (try pt.intType(.unsigned, 0)).toIntern()
-        else
-            (try pt.smallestUnsignedInt(enum_field_names.len - 1)).toIntern(),
+        .tag_ty = (try pt.smallestUnsignedInt(enum_field_names.len -| 1)).toIntern(),
         .names = enum_field_names,
         .values = &.{},
         .tag_mode = .auto,
src/Type.zig
@@ -4132,10 +4132,10 @@ pub const empty_tuple: Type = .{ .ip_index = .empty_tuple_type };
 pub const generic_poison: Type = .{ .ip_index = .generic_poison_type };
 
 pub fn smallestUnsignedBits(max: u64) u16 {
-    if (max == 0) return 0;
-    const base = std.math.log2(max);
-    const upper = (@as(u64, 1) << @as(u6, @intCast(base))) - 1;
-    return @as(u16, @intCast(base + @intFromBool(upper < max)));
+    return switch (max) {
+        0 => 0,
+        else => 1 + std.math.log2_int(u64, max),
+    };
 }
 
 /// This is only used for comptime asserts. Bump this number when you make a change
test/behavior/x86_64/binary.zig
@@ -6,6 +6,7 @@ const DoubleBits = math.DoubleBits;
 const fmax = math.fmax;
 const fmin = math.fmin;
 const Gpr = math.Gpr;
+const imax = math.imax;
 const inf = math.inf;
 const Log2Int = math.Log2Int;
 const math = @import("math.zig");
@@ -5388,6 +5389,22 @@ test shlExactUnsafe {
     try test_shl_exact_unsafe.testInts();
 }
 
+inline fn shlSat(comptime Type: type, lhs: Type, rhs: Type) Type {
+    // workaround https://github.com/ziglang/zig/issues/23034
+    if (@inComptime()) {
+        // workaround https://github.com/ziglang/zig/issues/23139
+        //return lhs <<| @min(@abs(rhs), imax(u64));
+        return lhs <<| @min(@abs(rhs), @as(u64, imax(u64)));
+    }
+    // workaround https://github.com/ziglang/zig/issues/23033
+    @setRuntimeSafety(false);
+    return lhs <<| @abs(rhs);
+}
+test shlSat {
+    const test_shl_sat = binary(shlSat, .{});
+    try test_shl_sat.testInts();
+}
+
 inline fn bitXor(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs ^ rhs) {
     return lhs ^ rhs;
 }
test/behavior/bit_shifting.zig
@@ -128,12 +128,12 @@ test "Saturating Shift Left where lhs is of a computed type" {
             });
         }
 
-        pub fn FixedPoint(comptime value_type: type) type {
+        pub fn FixedPoint(comptime ValueType: type) type {
             return struct {
-                value: value_type,
+                value: ValueType,
                 exponent: ShiftType,
 
-                const ShiftType: type = getIntShiftType(value_type);
+                const ShiftType: type = getIntShiftType(ValueType);
 
                 pub fn shiftExponent(self: @This(), shift: ShiftType) @This() {
                     const shiftAbs = @abs(shift);
@@ -199,8 +199,7 @@ test "Saturating Shift Left" {
     try expectEqual(0xffffffffffffffffffffffffffffffff, S.shlSat(@as(u128, 0x0fffffffffffffff0fffffffffffffff), 5));
     try expectEqual(-0x80000000000000000000000000000000, S.shlSat(@as(i128, -0x0fffffffffffffff0fffffffffffffff), 5));
 
-    // TODO
-    // try expectEqual(51146728248377216718956089012931236753385031969422887335676427626502090568823039920051095192592252455482604439493126109519019633529459266458258243583, S.shlSat(@as(i495, 0x2fe6bc5448c55ce18252e2c9d44777505dfe63ff249a8027a6626c7d8dd9893fd5731e51474727be556f757facb586a4e04bbc0148c6c7ad692302f46fbd), 0x31));
+    try expectEqual(51146728248377216718956089012931236753385031969422887335676427626502090568823039920051095192592252455482604439493126109519019633529459266458258243583, S.shlSat(@as(i495, 0x2fe6bc5448c55ce18252e2c9d44777505dfe63ff249a8027a6626c7d8dd9893fd5731e51474727be556f757facb586a4e04bbc0148c6c7ad692302f46fbd), 0x31));
     try expectEqual(-57896044618658097711785492504343953926634992332820282019728792003956564819968, S.shlSat(@as(i256, -0x53d4148cee74ea43477a65b3daa7b8fdadcbf4508e793f4af113b8d8da5a7eb6), 0x91));
     try expectEqual(170141183460469231731687303715884105727, S.shlSat(@as(i128, 0x2fe6bc5448c55ce18252e2c9d4477750), 0x31));
     try expectEqual(0, S.shlSat(@as(i128, 0), 127));
test/behavior/saturating_arithmetic.zig
@@ -230,9 +230,10 @@ test "saturating multiplication <= 32 bits" {
     try testSatMul(i32, 10, -12, -120);
 }
 
-// TODO: remove this test, integrate into general test
-test "saturating mul i64, i128, wasm only" {
-    if (builtin.zig_backend != .stage2_wasm) return error.SkipZigTest;
+test "saturating mul i64, i128" {
+    if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
 
     try testSatMul(i64, 0, maxInt(i64), 0);
     try testSatMul(i64, 0, minInt(i64), 0);
@@ -298,29 +299,34 @@ test "saturating multiplication" {
 }
 
 test "saturating shift-left" {
-    if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
     if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
 
     const S = struct {
         fn doTheTest() !void {
-            try testSatShl(i8, 1, 2, 4);
-            try testSatShl(i8, 127, 1, 127);
-            try testSatShl(i8, -128, 1, -128);
+            try testSatShl(i8, 1, u8, 2, 4);
+            try testSatShl(i8, 127, u8, 1, 127);
+            try testSatShl(i8, -128, u8, 1, -128);
             // TODO: remove this check once #9668 is completed
             if (!builtin.cpu.arch.isWasm()) {
                 // skip testing ints > 64 bits on wasm due to miscompilation / wasmtime ci error
-                try testSatShl(i128, maxInt(i128), 64, maxInt(i128));
-                try testSatShl(u128, maxInt(u128), 64, maxInt(u128));
+                try testSatShl(i128, maxInt(i128), u128, 64, maxInt(i128));
+                try testSatShl(u128, maxInt(u128), u128, 64, maxInt(u128));
             }
-            try testSatShl(u8, 1, 2, 4);
-            try testSatShl(u8, 255, 1, 255);
+            try testSatShl(u8, 1, u8, 2, 4);
+            try testSatShl(u8, 255, u8, 1, 255);
+            try testSatShl(i8, -3, u4, 8, minInt(i8));
+            try testSatShl(i8, 0, u4, 8, 0);
+            try testSatShl(i8, 3, u4, 8, maxInt(i8));
+            try testSatShl(u8, 0, u4, 8, 0);
+            try testSatShl(u8, 3, u4, 8, maxInt(u8));
         }
 
-        fn testSatShl(comptime T: type, lhs: T, rhs: T, expected: T) !void {
+        fn testSatShl(comptime Lhs: type, lhs: Lhs, comptime Rhs: type, rhs: Rhs, expected: Lhs) !void {
             try expect((lhs <<| rhs) == expected);
 
             var x = lhs;
@@ -332,19 +338,37 @@ test "saturating shift-left" {
     try S.doTheTest();
     try comptime S.doTheTest();
 
-    try comptime S.testSatShl(comptime_int, 0, 0, 0);
-    try comptime S.testSatShl(comptime_int, 1, 2, 4);
-    try comptime S.testSatShl(comptime_int, 13, 150, 18554220005177478453757717602843436772975706112);
-    try comptime S.testSatShl(comptime_int, -582769, 180, -893090893854873184096635538665358532628308979495815656505344);
+    try comptime S.testSatShl(comptime_int, 0, comptime_int, 0, 0);
+    try comptime S.testSatShl(comptime_int, 1, comptime_int, 2, 4);
+    try comptime S.testSatShl(comptime_int, 13, comptime_int, 150, 18554220005177478453757717602843436772975706112);
+    try comptime S.testSatShl(comptime_int, -582769, comptime_int, 180, -893090893854873184096635538665358532628308979495815656505344);
+}
+
+test "saturating shift-left large rhs" {
+    if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
+
+    {
+        var lhs: u8 = undefined;
+        lhs = 1;
+        const ct_rhs: u1024 = 1 << 1023;
+        var rt_rhs: u1024 = undefined;
+        rt_rhs = ct_rhs;
+        try expect(lhs <<| ct_rhs == maxInt(u8));
+        try expect(lhs <<| rt_rhs == maxInt(u8));
+    }
 }
 
 test "saturating shl uses the LHS type" {
-    if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
     if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
 
     const lhs_const: u8 = 1;
     var lhs_var: u8 = 1;
test/cases/compile_errors/saturating_shl_assign_does_not_allow_negative_rhs_at_comptime.zig
@@ -1,12 +0,0 @@
-export fn a() void {
-    comptime {
-        var x = @as(i32, 1);
-        x <<|= @as(i32, -2);
-    }
-}
-
-// error
-// backend=stage2
-// target=native
-//
-// :4:16: error: shift by negative amount '-2'
test/cases/compile_errors/saturating_shl_does_not_allow_negative_rhs.zig
@@ -0,0 +1,36 @@
+export fn a() void {
+    _ = @as(i32, 1) <<| @as(i32, -1);
+}
+
+comptime {
+    var x: i32 = 1;
+    x <<|= @as(i32, -2);
+}
+
+export fn b() void {
+    _ = @Vector(1, i32){1} <<| @Vector(1, i32){-3};
+}
+
+comptime {
+    var x: @Vector(2, i32) = .{ 1, 2 };
+    x <<|= @Vector(2, i32){ 0, -4 };
+}
+
+export fn c(rhs: i32) void {
+    _ = @as(i32, 1) <<| rhs;
+}
+
+export fn d(rhs: @Vector(3, i32)) void {
+    _ = @Vector(3, i32){ 1, 2, 3 } <<| rhs;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:25: error: shift by negative amount '-1'
+// :7:12: error: shift by negative amount '-2'
+// :11:47: error: shift by negative amount '-3' at index '0'
+// :16:27: error: shift by negative amount '-4' at index '1'
+// :20:25: error: shift by signed type 'i32'
+// :24:40: error: shift by signed type '@Vector(3, i32)'
test/cases/compile_errors/saturating_shl_does_not_allow_negative_rhs_at_comptime.zig
@@ -1,9 +0,0 @@
-export fn a() void {
-    _ = @as(i32, 1) <<| @as(i32, -2);
-}
-
-// error
-// backend=stage2
-// target=native
-//
-// :2:25: error: shift by negative amount '-2'