Commit 932298679f

Jacob Young <jacobly0@users.noreply.github.com>
2025-04-18 03:34:49
x86_64: rewrite scalar `@shlWithOverflow`
1 parent 8e72a25
Changed files (2)
src
arch
test
behavior
x86_64
src/arch/x86_64/CodeGen.zig
@@ -73,10 +73,6 @@ mir_instructions: std.MultiArrayList(Mir.Inst) = .empty,
 mir_extra: std.ArrayListUnmanaged(u32) = .empty,
 mir_table: std.ArrayListUnmanaged(Mir.Inst.Index) = .empty,
 
-/// Byte offset within the source file of the ending curly.
-end_di_line: u32,
-end_di_column: u32,
-
 /// The value is an offset into the `Function` `code` from the beginning.
 /// To perform the reloc, write 32-bit signed little-endian integer
 /// which is a relative jump, based on the address following the reloc.
@@ -912,8 +908,6 @@ pub fn generate(
         .err_ret_trace_reg = undefined, // populated after `resolveCallingConventionValues`
         .fn_type = fn_type,
         .src_loc = src_loc,
-        .end_di_line = func.rbrace_line,
-        .end_di_column = func.rbrace_column,
     };
     defer {
         function.frame_allocs.deinit(gpa);
@@ -1000,6 +994,16 @@ pub fn generate(
         else => |e| return e,
     };
 
+    // Drop them off at the rbrace.
+    if (debug_output != .none) _ = try function.addInst(.{
+        .tag = .pseudo,
+        .ops = .pseudo_dbg_line_line_column,
+        .data = .{ .line_column = .{
+            .line = func.rbrace_line,
+            .column = func.rbrace_column,
+        } },
+    });
+
     var mir: Mir = .{
         .instructions = function.mir_instructions.toOwnedSlice(),
         .extra = try function.mir_extra.toOwnedSlice(gpa),
@@ -1076,8 +1080,6 @@ pub fn generateLazy(
         .err_ret_trace_reg = undefined,
         .fn_type = undefined,
         .src_loc = src_loc,
-        .end_di_line = undefined, // no debug info yet
-        .end_di_column = undefined, // no debug info yet
     };
     defer {
         function.inst_tracking.deinit(gpa);
@@ -2381,16 +2383,6 @@ fn gen(self: *CodeGen) InnerError!void {
         try self.genBody(self.air.getMainBody());
         if (self.debug_output != .none) try self.asmPseudo(.pseudo_dbg_epilogue_begin_none);
     }
-
-    // Drop them off at the rbrace.
-    if (self.debug_output != .none) _ = try self.addInst(.{
-        .tag = .pseudo,
-        .ops = .pseudo_dbg_line_line_column,
-        .data = .{ .line_column = .{
-            .line = self.end_di_line,
-            .column = self.end_di_column,
-        } },
-    });
 }
 
 fn checkInvariantsAfterAirInst(self: *CodeGen) void {
@@ -2416,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(15_100);
+    @setEvalBranchQuota(15_800);
     const pt = cg.pt;
     const zcu = pt.zcu;
     const ip = &zcu.intern_pool;
@@ -2457,8 +2449,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
             .mul_sat         => try cg.airMulSat(inst),
             .shl_sat         => try cg.airShlSat(inst),
 
-            .shl_with_overflow => try cg.airShlWithOverflow(inst),
-
             .bitcast          => try cg.airBitCast(inst),
 
             .splat            => try cg.airSplat(inst),
@@ -32923,455 +32913,3801 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
                     } },
                 }, .{
-                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .to_mem, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .reg = .rax } },
+                        .{ .type = .u64, .kind = .{ .reg = .rdx } },
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
+                        .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
+                        .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
+                        .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
+                        .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
+                        .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
+                        .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
+                        .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
+                        .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
+                        .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
+                        .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
+                        .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
+                        .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
+                        .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .to_mem, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .reg = .rax } },
+                        .{ .type = .u64, .kind = .{ .reg = .rdx } },
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
+                        .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
+                        .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
+                        .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
+                        .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
+                        .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
+                        .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
+                        .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
+                        .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
+                        .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
+                        .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
+                        .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
+                        .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
+                        .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
+                        .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .bmi2, .adx, null },
+                    .src_constraints = .{
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .to_mem, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .reg = .rdx } },
+                        .{ .type = .isize, .kind = .{ .reg = .rcx } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
+                        .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
+                        .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
+                        .{ .@"0:", ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .memi(.src0q, .tmp0), ._, ._ },
+                        .{ ._, ._z, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .lea, .tmp5p, .leaad(.tmp0, .sub_src0_size, 8), ._, ._ },
+                        .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
+                        .{ .@"1:", ._x, .mul, .tmp8q, .tmp7q, .leai(.tmp1q, .tmp5), ._ },
+                        .{ ._, ._x, .adc, .tmp7q, .tmp6q, ._, ._ },
+                        .{ ._, ._, .mov, .memiad(.dst0q, .tmp5, .add_src0_size, -8), .tmp7q, ._, ._ },
+                        .{ ._, ._rcxz, .j, .@"1f", ._, ._, ._ },
+                        .{ ._, ._x, .ado, .tmp8q, .memia(.dst0q, .tmp5, .add_src0_size), ._, ._ },
+                        .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
+                        .{ ._, ._, .lea, .tmp5p, .lead(.tmp5, 8), ._, ._ },
+                        .{ ._, ._mp, .j, .@"1b", ._, ._, ._ },
+                        .{ .@"2:", ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .mov, .tmp4d, .tmp0d, ._, ._ },
+                        .{ ._, ._x, .ado, .tmp8q, .tmp3q, ._, ._ },
+                        .{ ._, ._x, .adc, .tmp8q, .tmp3q, ._, ._ },
+                        .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
+                        .{ .@"1:", ._, .@"or", .tmp8q, .leai(.tmp1q, .tmp4), ._, ._ },
+                        .{ .@"2:", ._, .sub, .tmp4d, .si(8), ._, ._ },
+                        .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
+                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .bzhi, .tmp0q, .tmp1q, .tmp0q, ._ },
+                        .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
+                    .src_constraints = .{
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .to_mem, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .reg = .rdx } },
+                        .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
+                        .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
+                        .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
+                        .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
+                        .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
+                        .{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
+                        .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
+                        .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
+                        .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
+                        .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
+                        .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
+                        .{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
+                        .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .bzhi, .tmp0q, .tmp1q, .tmp0q, ._ },
+                        .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .bmi2, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .to_mem, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .reg = .rdx } },
+                        .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
+                        .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
+                        .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
+                        .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
+                        .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
+                        .{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
+                        .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
+                        .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
+                        .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
+                        .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
+                        .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
+                        .{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
+                        .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
+                        .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .bzhi, .tmp0q, .tmp1q, .tmp0q, ._ },
+                        .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .to_mem, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .reg = .rax } },
+                        .{ .type = .u64, .kind = .{ .reg = .rdx } },
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
+                        .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
+                        .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
+                        .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
+                        .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
+                        .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
+                        .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
+                        .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
+                        .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
+                        .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
+                        .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
+                        .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
+                        .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
+                        .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
+                        .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
+                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .any,
+                    },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .to_mem, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .{ .type = .u64, .kind = .{ .reg = .rax } },
+                        .{ .type = .u64, .kind = .{ .reg = .rdx } },
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
+                        .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
+                        .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
+                        .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
+                        .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
+                        .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
+                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
+                        .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
+                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
+                        .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
+                        .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
+                        .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
+                        .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
+                        .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
+                        .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
+                        .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
+                        .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
+                        .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
+                        .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
+                        .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
+                        .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
+                        .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
+                        .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
+                        .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
+                    } },
+                } }) catch |err| switch (err) {
+                    error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
+                        @tagName(air_tag),
+                        ty_pl.ty.toType().fmt(pt),
+                        ops[0].tracking(cg),
+                        ops[1].tracking(cg),
+                    }),
+                    else => |e| return e,
+                };
+                try res[0].withOverflow(&res[1], cg);
+                try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
+            },
+            .shl_with_overflow => |air_tag| if (use_old) try cg.airShlWithOverflow(inst) else fallback: {
+                const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
+                const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
+                if (cg.typeOf(bin_op.lhs).isVector(zcu)) break :fallback try cg.airShlWithOverflow(inst);
+                var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
+                var res: [2]Temp = undefined;
+                cg.select(&res, &.{ ty_pl.ty.toType(), .u1 }, &ops, comptime &.{ .{
+                    .src_constraints = .{ .{ .exact_signed_int = 8 }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .mut_mem, .{ .imm = 1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .o } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._l, .sa, .dst0b, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .exact_unsigned_int = 8 }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .mut_mem, .{ .imm = 1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._l, .sh, .dst0b, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .exact_signed_int = 8 }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .o } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .add, .dst0b, .src0b, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .exact_unsigned_int = 8 }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .add, .dst0b, .src0b, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .signed_int = .byte }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .imm8, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp0b, .uia(8, .src0, .add_src1_sub_bit_size), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0b, .uia(8, .src0, .sub_bit_size), ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0b, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0b, .src0b, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .imm8, .none } },
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .nbe } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._, .@"and", .dst0b, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                        .{ ._, ._l, .sh, .dst0b, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .src0b, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .exact_signed_int = 8 }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp0b, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0b, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0b, .src0b, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .exact_unsigned_int = 8 }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp0b, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0b, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0b, .src0b, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .signed_int = .byte }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp0b, .src1b, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp0b, .uia(8, .src0, .sub_bit_size), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0b, .uia(8, .src0, .sub_bit_size), ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0b, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0b, .src0b, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp0b, .src1b, ._, ._ },
+                        .{ ._, ._, .@"and", .tmp0b, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0b, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0b, .src0b, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .exact_signed_int = 16 }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .mut_mem, .{ .imm = 1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .o } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._l, .sa, .dst0w, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .exact_unsigned_int = 16 }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .mut_mem, .{ .imm = 1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._l, .sh, .dst0w, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .exact_signed_int = 8 }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .o } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .add, .dst0w, .src0w, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .exact_unsigned_int = 8 }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .add, .dst0w, .src0w, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .signed_int = .word }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .imm8, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp0d, .uia(32, .src0, .add_src1_sub_bit_size), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0w, .src0w, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .fast_imm16, null, null, null },
+                    .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .imm8, .none } },
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .nbe } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._, .@"and", .dst0w, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                        .{ ._, ._l, .sh, .dst0d, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .src0w, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .imm8, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .nbe } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._, .@"and", .dst0d, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                        .{ ._, ._l, .sh, .dst0d, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .src0w, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .exact_signed_int = 16 }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0w, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0w, .src0w, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .exact_unsigned_int = 16 }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0w, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0w, .src0w, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .signed_int = .word }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0w, .src0w, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .@"and", .tmp0d, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0w, .src0w, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .exact_signed_int = 32 }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .mut_mem, .{ .imm = 1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .o } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._l, .sa, .dst0d, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .mut_mem, .{ .imm = 1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._l, .sh, .dst0d, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .exact_signed_int = 32 }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .o } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .add, .dst0d, .src0d, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .add, .dst0d, .src0d, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .signed_int = .dword }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .imm8, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp0d, .uia(32, .src0, .add_src1_sub_bit_size), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0d, .src0d, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .imm8, .none } },
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .nbe } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ },
+                        .{ ._, ._, .@"and", .dst0d, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                        .{ ._, ._l, .sh, .dst0d, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .src0d, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .exact_signed_int = 32 }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0d, .src0d, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0d, .src0d, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .signed_int = .dword }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0d, .src0d, ._, ._ },
+                    } },
+                }, .{
+                    .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .@"and", .tmp0d, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0d, .src0d, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{ .{ .exact_signed_int = 64 }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .mut_mem, .{ .imm = 1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .o } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._l, .sa, .dst0q, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .mut_mem, .{ .imm = 1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._l, .sh, .dst0q, .src1b, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{ .{ .exact_signed_int = 64 }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .o } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .add, .dst0q, .src0q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
+                    },
+                    .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .add, .dst0q, .src0q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{ .{ .signed_int = .qword }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .imm8, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .add_src1_sub_bit_size), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size), ._, ._ },
+                        .{ ._, ._, .mov, .dst0q, .tmp0q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0q, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0q, .src0q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_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 }, .{ .cc = .nbe } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax_shr_src1), ._, ._ },
+                        .{ ._, ._, .mov, .dst0q, .src0q, ._, ._ },
+                        .{ ._, ._, .@"and", .dst0q, .tmp0q, ._, ._ },
+                        .{ ._, ._l, .sh, .dst0q, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .src0q, .tmp0q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{ .{ .exact_signed_int = 64 }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp0q, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .dst0q, .tmp0q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0q, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0q, .src0q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp0q, .src1b, ._, ._ },
+                        .{ ._, ._, .mov, .dst0q, .tmp0q, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0q, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0q, .src0q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{ .{ .signed_int = .qword }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp0q, .src1b, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size), ._, ._ },
+                        .{ ._, ._, .mov, .dst0q, .tmp0q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp0q, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0q, .src0q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .byte }, .any },
+                    .patterns = &.{
+                        .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .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 }, .{ .cc = .ne } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
+                        .{ ._, ._l, .sh, .tmp0q, .src1b, ._, ._ },
+                        .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
+                        .{ ._, ._, .mov, .dst0q, .tmp0q, ._, ._ },
+                        .{ ._, ._r, .sh, .tmp0q, .src1b, ._, ._ },
+                        .{ ._, ._, .cmp, .tmp0q, .src0q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
+                        .{ .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 = .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, .{ .cc = .nz } },
+                    .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, .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, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
+                        .{ .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 = .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, .{ .cc = .nz } },
+                    .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, .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, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
+                        .{ .unsigned_int = .word },
+                        .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 = .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, .{ .cc = .nz } },
+                    .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, .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, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
+                        .{ .unsigned_int = .word },
+                        .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 = .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, .{ .cc = .nz } },
+                    .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, .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, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .{ .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 } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .{ .cc = .nz } },
+                    .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, .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, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .{ .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 } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .{ .cc = .nz } },
+                    .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, .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, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .{ .unsigned_int = .word },
+                        .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 } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .{ .cc = .nz } },
+                    .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, .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, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .{ .unsigned_int = .word },
+                        .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 } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .{ .cc = .nz } },
+                    .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, .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, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .exact_remainder_signed_int = .{ .of = .xword, .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 = .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, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .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, .tmp7q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp7q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp7q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .exact_remainder_signed_int = .{ .of = .xword, .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 = .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, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .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, .tmp7q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp7q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp7q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
+                        .{ .unsigned_int = .word },
+                        .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 = .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, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
+                        .{ ._, ._, .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, .tmp7q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp7q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp7q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
+                        .{ .unsigned_int = .word },
+                        .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 = .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, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
+                        .{ ._, ._, .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, .tmp7q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp7q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp7q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .exact_remainder_unsigned_int = .{ .of = .xword, .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 } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .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, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
+                        .{ ._, ._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, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .exact_remainder_unsigned_int = .{ .of = .xword, .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 } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .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, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
+                        .{ ._, ._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, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
+                        .{ .unsigned_int = .word },
+                        .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 } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
+                        .{ ._, ._, .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, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
+                        .{ ._, ._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, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
+                        .{ .unsigned_int = .word },
+                        .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 } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
+                        .{ ._, ._, .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, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
+                        .{ ._, ._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, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_signed_int = .{ .of = .xword, .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 = .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, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .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, .tmp6q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp6q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .tmp6q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp6q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp6q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_signed_int = .{ .of = .xword, .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 = .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, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .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, .tmp6q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp6q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .tmp6q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp6q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp6q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
+                        .{ .unsigned_int = .word },
+                        .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 = .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, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
+                        .{ ._, ._, .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, .tmp6q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp6q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .tmp6q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp6q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp6q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
+                        .{ .unsigned_int = .word },
+                        .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 = .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, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
+                        .{ ._, ._, .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, .tmp6q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp6q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .tmp6q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp6q, .ui(63), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp6q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .bmi, .slow_incdec, null },
+                    .src_constraints = .{
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .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 } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .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, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
+                        .{ ._, ._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, .tmp2q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._, .andn, .tmp5q, .tmp2q, .tmp3q, ._ },
+                        .{ ._, ._, .@"and", .tmp2q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp2q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .bmi, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .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 } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .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, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
+                        .{ ._, ._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, .tmp2q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._, .andn, .tmp5q, .tmp2q, .tmp3q, ._ },
+                        .{ ._, ._, .@"and", .tmp2q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp2q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .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 } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .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, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
+                        .{ ._, ._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, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._, .@"and", .tmp3q, .tmp5q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .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 } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .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, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
+                        .{ ._, ._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, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._, .@"and", .tmp3q, .tmp5q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .bmi, .slow_incdec, null },
+                    .src_constraints = .{
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
+                        .{ .unsigned_int = .word },
+                        .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 } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
+                        .{ ._, ._, .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, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
+                        .{ ._, ._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, .tmp2q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._, .andn, .tmp5q, .tmp2q, .tmp3q, ._ },
+                        .{ ._, ._, .@"and", .tmp2q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp2q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .bmi, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
+                        .{ .unsigned_int = .word },
+                        .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 } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
+                        .{ ._, ._, .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, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
+                        .{ ._, ._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, .tmp2q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._, .andn, .tmp5q, .tmp2q, .tmp3q, ._ },
+                        .{ ._, ._, .@"and", .tmp2q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp2q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
+                        .{ .unsigned_int = .word },
+                        .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 } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
+                        .{ ._, ._, .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, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
+                        .{ ._, ._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, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._, .@"and", .tmp3q, .tmp5q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
+                        .{ .unsigned_int = .word },
+                        .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 } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .{ .cc = .nz } },
+                    .clobbers = .{ .eflags = true },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
+                        .{ ._, ._, .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, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
+                        .{ ._, ._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, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
+                        .{ ._, ._, .@"and", .tmp3q, .tmp5q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
+                        .{ .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 = .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, .{ .cc = .nz } },
+                    .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, .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, .tmp6q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp6q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .tmp6q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp6q, .ui(63), ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
+                        .{ .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 = .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, .{ .cc = .nz } },
+                    .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, .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, .tmp6q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp6q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .tmp6q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp6q, .ui(63), ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
+                        .{ .unsigned_int = .word },
+                        .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 = .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, .{ .cc = .nz } },
+                    .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, .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, .tmp6q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp6q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .tmp6q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp6q, .ui(63), ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", null, null, null },
+                    .src_constraints = .{
+                        .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
+                        .{ .unsigned_int = .word },
+                        .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 = .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, .{ .cc = .nz } },
+                    .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, .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, .tmp6q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
+                        .{ ._, ._l, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._r, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp6q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp7q, .tmp6q, ._, ._ },
+                        .{ ._, ._r, .sa, .tmp6q, .ui(63), ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .bmi, .slow_incdec, null },
+                    .src_constraints = .{
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .{ .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 } },
+                        .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{ .mem, .{ .cc = .nz } },
+                    .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, .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, .tmp2q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .andn, .tmp5q, .tmp2q, .tmp3q, ._ },
+                        .{ ._, ._, .@"and", .tmp2q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp2q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .bmi, null, null },
                     .src_constraints = .{
-                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
-                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .{ .unsigned_int = .byte },
                         .any,
                     },
                     .patterns = &.{
-                        .{ .src = .{ .to_mem, .to_mem, .none } },
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
                     },
                     .extra_temps = .{
-                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .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 = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .u64, .kind = .{ .reg = .rax } },
-                        .{ .type = .u64, .kind = .{ .reg = .rdx } },
+                        .unused,
+                        .unused,
+                        .unused,
                         .unused,
                         .unused,
                     },
                     .dst_temps = .{ .mem, .{ .cc = .nz } },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
-                        .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
-                        .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
-                        .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
+                        .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .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, ._, ._ },
-                        .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
-                        .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
-                        .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
-                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
-                        .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
-                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
-                        .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
-                        .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
-                        .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
-                        .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
-                        .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
-                        .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
-                        .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
-                        .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
-                        .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
-                        .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
-                        .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
-                        .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
-                        .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
-                        .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
-                        .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
-                        .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
-                        .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
-                        .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
-                        .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
-                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
-                        .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
-                        .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
-                        .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
-                        .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
-                        .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
-                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
-                        .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
-                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
+                        .{ ._, ._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, .tmp2q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .andn, .tmp5q, .tmp2q, .tmp3q, ._ },
+                        .{ ._, ._, .@"and", .tmp2q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp2q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
                     } },
                 }, .{
-                    .required_features = .{ .@"64bit", null, null, null },
+                    .required_features = .{ .@"64bit", .slow_incdec, null, null },
                     .src_constraints = .{
-                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
-                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
+                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .{ .unsigned_int = .byte },
                         .any,
                     },
                     .patterns = &.{
-                        .{ .src = .{ .to_mem, .to_mem, .none } },
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
                     },
                     .extra_temps = .{
-                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .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 = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .u64, .kind = .{ .reg = .rax } },
-                        .{ .type = .u64, .kind = .{ .reg = .rdx } },
+                        .unused,
+                        .unused,
+                        .unused,
                         .unused,
                         .unused,
                     },
                     .dst_temps = .{ .mem, .{ .cc = .nz } },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
-                        .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
-                        .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
-                        .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
+                        .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .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, ._, ._ },
-                        .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
-                        .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
-                        .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
-                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
-                        .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
-                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
-                        .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
-                        .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
-                        .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
-                        .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
-                        .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
-                        .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
-                        .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
-                        .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
-                        .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
-                        .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
-                        .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
-                        .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
-                        .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
-                        .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
-                        .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
-                        .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
-                        .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
-                        .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
-                        .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
-                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
-                        .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
-                        .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
-                        .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
-                        .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
-                        .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
-                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
-                        .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
-                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
+                        .{ ._, ._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, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .@"and", .tmp3q, .tmp5q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
                     } },
                 }, .{
-                    .required_features = .{ .@"64bit", .bmi2, .adx, null },
+                    .required_features = .{ .@"64bit", null, null, null },
                     .src_constraints = .{
                         .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
-                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .{ .unsigned_int = .byte },
                         .any,
                     },
                     .patterns = &.{
-                        .{ .src = .{ .to_mem, .to_mem, .none } },
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
                     },
                     .extra_temps = .{
-                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .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 } },
-                        .{ .type = .u64, .kind = .{ .reg = .rdx } },
-                        .{ .type = .isize, .kind = .{ .reg = .rcx } },
-                        .{ .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, .{ .cc = .nz } },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
-                        .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
-                        .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
+                        .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
+                        .{ ._, ._, .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, ._, ._ },
-                        .{ .@"0:", ._, .xor, .tmp4d, .tmp4d, ._, ._ },
-                        .{ ._, ._, .@"or", .tmp4q, .memi(.src0q, .tmp0), ._, ._ },
-                        .{ ._, ._z, .j, .@"2f", ._, ._, ._ },
-                        .{ ._, ._, .lea, .tmp5p, .leaad(.tmp0, .sub_src0_size, 8), ._, ._ },
-                        .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
-                        .{ .@"1:", ._x, .mul, .tmp8q, .tmp7q, .leai(.tmp1q, .tmp5), ._ },
-                        .{ ._, ._x, .adc, .tmp7q, .tmp6q, ._, ._ },
-                        .{ ._, ._, .mov, .memiad(.dst0q, .tmp5, .add_src0_size, -8), .tmp7q, ._, ._ },
-                        .{ ._, ._rcxz, .j, .@"1f", ._, ._, ._ },
-                        .{ ._, ._x, .ado, .tmp8q, .memia(.dst0q, .tmp5, .add_src0_size), ._, ._ },
-                        .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
-                        .{ ._, ._, .lea, .tmp5p, .lead(.tmp5, 8), ._, ._ },
-                        .{ ._, ._mp, .j, .@"1b", ._, ._, ._ },
-                        .{ .@"2:", ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
-                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
-                        .{ .@"1:", ._, .mov, .tmp4d, .tmp0d, ._, ._ },
-                        .{ ._, ._x, .ado, .tmp8q, .tmp3q, ._, ._ },
-                        .{ ._, ._x, .adc, .tmp8q, .tmp3q, ._, ._ },
-                        .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
-                        .{ .@"1:", ._, .@"or", .tmp8q, .leai(.tmp1q, .tmp4), ._, ._ },
-                        .{ .@"2:", ._, .sub, .tmp4d, .si(8), ._, ._ },
-                        .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
-                        .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
-                        .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
-                        .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
-                        .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
-                        .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
-                        .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
-                        .{ ._, ._, .bzhi, .tmp0q, .tmp1q, .tmp0q, ._ },
-                        .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
-                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
-                        .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
+                        .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
+                        .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .@"and", .tmp3q, .tmp5q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
                     } },
                 }, .{
-                    .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
+                    .required_features = .{ .@"64bit", .bmi, .slow_incdec, null },
                     .src_constraints = .{
                         .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
-                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .{ .unsigned_int = .word },
                         .any,
                     },
                     .patterns = &.{
-                        .{ .src = .{ .to_mem, .to_mem, .none } },
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
                     },
                     .extra_temps = .{
-                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .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 = .isize, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .u64, .kind = .{ .reg = .rdx } },
-                        .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
-                        .{ .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, .{ .cc = .nz } },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
-                        .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
-                        .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
-                        .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
+                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
+                        .{ ._, ._, .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, ._, ._ },
-                        .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
-                        .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
-                        .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
-                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
-                        .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
-                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
-                        .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
-                        .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
-                        .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
-                        .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
-                        .{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
-                        .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
-                        .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
-                        .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
-                        .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
-                        .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
-                        .{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
-                        .{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
-                        .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
-                        .{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
-                        .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
-                        .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
-                        .{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
-                        .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
+                        .{ ._, ._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, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
-                        .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
-                        .{ ._, ._, .bzhi, .tmp0q, .tmp1q, .tmp0q, ._ },
-                        .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
-                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
-                        .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .andn, .tmp5q, .tmp2q, .tmp3q, ._ },
+                        .{ ._, ._, .@"and", .tmp2q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp2q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
                     } },
                 }, .{
-                    .required_features = .{ .@"64bit", .bmi2, null, null },
+                    .required_features = .{ .@"64bit", .bmi, null, null },
                     .src_constraints = .{
                         .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
-                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .{ .unsigned_int = .word },
                         .any,
                     },
                     .patterns = &.{
-                        .{ .src = .{ .to_mem, .to_mem, .none } },
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
                     },
                     .extra_temps = .{
-                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .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 = .isize, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .u64, .kind = .{ .reg = .rdx } },
-                        .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
-                        .{ .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, .{ .cc = .nz } },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
-                        .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
-                        .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
-                        .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
+                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
+                        .{ ._, ._, .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, ._, ._ },
-                        .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
-                        .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
-                        .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
-                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
-                        .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
-                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
-                        .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
-                        .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
-                        .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
-                        .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
-                        .{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
-                        .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
-                        .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
-                        .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
-                        .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
-                        .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
-                        .{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
-                        .{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
-                        .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
-                        .{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
-                        .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
-                        .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
-                        .{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
-                        .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
+                        .{ ._, ._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, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
-                        .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
-                        .{ ._, ._, .bzhi, .tmp0q, .tmp1q, .tmp0q, ._ },
-                        .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
-                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
-                        .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .andn, .tmp5q, .tmp2q, .tmp3q, ._ },
+                        .{ ._, ._, .@"and", .tmp2q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp2q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
                     } },
                 }, .{
                     .required_features = .{ .@"64bit", .slow_incdec, null, null },
                     .src_constraints = .{
                         .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
-                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .{ .unsigned_int = .word },
                         .any,
                     },
                     .patterns = &.{
-                        .{ .src = .{ .to_mem, .to_mem, .none } },
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
                     },
                     .extra_temps = .{
-                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .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 = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .u64, .kind = .{ .reg = .rax } },
-                        .{ .type = .u64, .kind = .{ .reg = .rdx } },
+                        .unused,
+                        .unused,
+                        .unused,
                         .unused,
                         .unused,
                     },
                     .dst_temps = .{ .mem, .{ .cc = .nz } },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
-                        .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
-                        .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
-                        .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
+                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
+                        .{ ._, ._, .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, ._, ._ },
-                        .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
-                        .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
-                        .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
-                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
-                        .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
-                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
-                        .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
-                        .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
-                        .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
-                        .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
-                        .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
-                        .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
-                        .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
-                        .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
-                        .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
-                        .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
-                        .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
-                        .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
-                        .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
-                        .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
-                        .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
-                        .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
-                        .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
-                        .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
+                        .{ ._, ._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, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
-                        .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
-                        .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
-                        .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
-                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
-                        .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .@"and", .tmp3q, .tmp5q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
                     } },
                 }, .{
                     .required_features = .{ .@"64bit", null, null, null },
                     .src_constraints = .{
                         .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
-                        .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
+                        .{ .unsigned_int = .word },
                         .any,
                     },
                     .patterns = &.{
-                        .{ .src = .{ .to_mem, .to_mem, .none } },
+                        .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
                     },
                     .extra_temps = .{
-                        .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
+                        .{ .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 = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .u64, .kind = .{ .reg = .rax } },
-                        .{ .type = .u64, .kind = .{ .reg = .rdx } },
+                        .unused,
+                        .unused,
+                        .unused,
                         .unused,
                         .unused,
                     },
                     .dst_temps = .{ .mem, .{ .cc = .nz } },
                     .clobbers = .{ .eflags = true },
                     .each = .{ .once = &.{
-                        .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
-                        .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
-                        .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
-                        .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
+                        .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
+                        .{ ._, ._, .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, ._, ._ },
-                        .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
-                        .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
-                        .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
-                        .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
-                        .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
-                        .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
-                        .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
-                        .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
-                        .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
-                        .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
-                        .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
-                        .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
-                        .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
-                        .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
-                        .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
-                        .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
-                        .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
-                        .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
-                        .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
-                        .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
-                        .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
-                        .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
-                        .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
-                        .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
+                        .{ ._, ._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, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
-                        .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
-                        .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
-                        .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
-                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
-                        .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
+                        .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
+                        .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
+                        .{ ._, ._, .@"and", .tmp3q, .tmp5q, ._, ._ },
+                        .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
+                        .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp3q, ._, ._ },
+                        .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
                     } },
                 } }) catch |err| switch (err) {
                     error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
@@ -104574,7 +107910,6 @@ fn genSetReg(
         .none,
         .unreach,
         .dead,
-        .register_overflow,
         .elementwise_regs_then_frame,
         .reserved_frame,
         => unreachable,
@@ -104886,6 +108221,39 @@ fn genSetReg(
             },
             else => unreachable,
         }),
+        .register_overflow => |src_reg_ov| {
+            const ip = &zcu.intern_pool;
+            const first_ty: Type = .fromInterned(first_ty: switch (ip.indexToKey(ty.toIntern())) {
+                .tuple_type => |tuple_type| {
+                    const tuple_field_types = tuple_type.types.get(ip);
+                    assert(tuple_field_types.len == 2 and tuple_field_types[1] == .u1_type);
+                    break :first_ty tuple_field_types[0];
+                },
+                .opt_type => |opt_child| {
+                    assert(!ty.optionalReprIsPayload(zcu));
+                    break :first_ty opt_child;
+                },
+                else => std.debug.panic("{s}: {}\n", .{ @src().fn_name, ty.fmt(pt) }),
+            });
+            const first_size: u31 = @intCast(first_ty.abiSize(zcu));
+            const frame_size = std.math.ceilPowerOfTwoAssert(u32, abi_size);
+            const frame_index = try self.allocFrameIndex(.init(.{
+                .size = frame_size,
+                .alignment = .fromNonzeroByteUnits(frame_size),
+            }));
+            try self.asmMemoryRegister(.{ ._, .mov }, .{
+                .base = .{ .frame = frame_index },
+                .mod = .{ .rm = .{ .size = .fromSize(first_size) } },
+            }, registerAlias(src_reg_ov.reg, first_size));
+            try self.asmSetccMemory(src_reg_ov.eflags, .{
+                .base = .{ .frame = frame_index },
+                .mod = .{ .rm = .{ .size = .byte, .disp = first_size } },
+            });
+            try self.asmRegisterMemory(.{ ._, .mov }, registerAlias(dst_reg, abi_size), .{
+                .base = .{ .frame = frame_index },
+                .mod = .{ .rm = .{ .size = .fromSize(frame_size) } },
+            });
+        },
         .register_mask => |src_reg_mask| {
             assert(src_reg_mask.reg.class() == .sse);
             const has_avx = self.hasFeature(.avx);
@@ -115808,6 +119176,7 @@ const Select = struct {
 
         const Src = union(enum) {
             none,
+            imm: i16,
             imm8,
             imm16,
             imm32,
@@ -115855,6 +119224,10 @@ const Select = struct {
             fn matches(src: Src, temp: Temp, cg: *CodeGen) bool {
                 return switch (src) {
                     .none => temp.tracking(cg).short == .none,
+                    .imm => |specific_imm| switch (temp.tracking(cg).short) {
+                        .immediate => |imm| @as(i64, @bitCast(imm)) == specific_imm,
+                        else => false,
+                    },
                     .imm8 => switch (temp.tracking(cg).short) {
                         .immediate => |imm| std.math.cast(u8, imm) != null or
                             std.math.cast(i8, @as(i64, @bitCast(imm))) != null,
@@ -115965,7 +119338,7 @@ const Select = struct {
 
             fn convert(src: Src, temp: *Temp, cg: *CodeGen) InnerError!bool {
                 return switch (src) {
-                    .none, .imm8, .imm16, .imm32, .simm32 => false,
+                    .none, .imm, .imm8, .imm16, .imm32, .simm32 => false,
                     .mem, .to_mem => try temp.toBase(false, cg),
                     .mut_mem, .to_mut_mem => try temp.toBase(true, cg),
                     .to_reg => |reg| try temp.toReg(reg, cg),
@@ -116414,10 +119787,12 @@ const Select = struct {
                 dst0_elem_size,
                 src0_elem_size_mul_src1,
                 src1,
+                src1_sub_bit_size,
                 log2_src0_elem_size,
                 smin,
                 smax,
                 umax,
+                umax_shr_src1,
                 repeat,
             },
             op: enum(u2) { mul, div, div_8_down, rem_8_mul },
@@ -116473,6 +119848,7 @@ const Select = struct {
             const add_src1_div_8_down_4: Adjust = .{ .sign = .pos, .lhs = .src1, .op = .div_8_down, .rhs = .@"4" };
             const add_src1_rem_32: Adjust = .{ .sign = .pos, .lhs = .src1, .op = .rem_8_mul, .rhs = .@"4" };
             const add_src1_rem_64: Adjust = .{ .sign = .pos, .lhs = .src1, .op = .rem_8_mul, .rhs = .@"8" };
+            const add_src1_sub_bit_size: Adjust = .{ .sign = .pos, .lhs = .src1_sub_bit_size, .op = .mul, .rhs = .@"1" };
             const add_log2_src0_elem_size: Adjust = .{ .sign = .pos, .lhs = .log2_src0_elem_size, .op = .mul, .rhs = .@"1" };
             const add_dst0_elem_size: Adjust = .{ .sign = .pos, .lhs = .dst0_elem_size, .op = .mul, .rhs = .@"1" };
             const add_elem_limbs: Adjust = .{ .sign = .pos, .lhs = .elem_limbs, .op = .mul, .rhs = .@"1" };
@@ -116480,6 +119856,7 @@ const Select = struct {
             const sub_smin: Adjust = .{ .sign = .neg, .lhs = .smin, .op = .mul, .rhs = .@"1" };
             const add_umax: Adjust = .{ .sign = .pos, .lhs = .umax, .op = .mul, .rhs = .@"1" };
             const sub_umax: Adjust = .{ .sign = .neg, .lhs = .umax, .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) {
@@ -117182,6 +120559,8 @@ const Select = struct {
                 .src0_elem_size_mul_src1 => @intCast(Select.Operand.Ref.src0.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu) *
                     Select.Operand.Ref.src1.valueOf(s).immediate),
                 .src1 => @intCast(Select.Operand.Ref.src1.valueOf(s).immediate),
+                .src1_sub_bit_size => @as(SignedImm, @intCast(Select.Operand.Ref.src1.valueOf(s).immediate)) -
+                    @as(SignedImm, @intCast(op.flags.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu))),
                 .log2_src0_elem_size => @intCast(std.math.log2(Select.Operand.Ref.src0.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu))),
                 .smin => @as(SignedImm, std.math.minInt(SignedImm)) >> @truncate(
                     -%op.flags.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu),
@@ -117192,6 +120571,9 @@ 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),
                 )),
+                .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),
+                )),
                 .repeat => switch (SignedImm) {
                     else => unreachable,
                     i64 => return @as(i64, op.imm) << 32 | @as(u32, @bitCast(op.imm)),
test/behavior/x86_64/binary.zig
@@ -5477,6 +5477,16 @@ test mulWithOverflow {
     try test_mul_with_overflow.testInts();
 }
 
+inline fn shlWithOverflow(comptime Type: type, lhs: Type, rhs: Type) struct { Type, u1 } {
+    const bit_cast_rhs: @Type(.{ .int = .{ .signedness = .unsigned, .bits = @bitSizeOf(Type) } }) = @bitCast(rhs);
+    const truncate_rhs: Log2Int(Type) = @truncate(bit_cast_rhs);
+    return @shlWithOverflow(lhs, if (comptime cast(Log2Int(Type), @bitSizeOf(Type))) |bits| truncate_rhs % bits else truncate_rhs);
+}
+test shlWithOverflow {
+    const test_shl_with_overflow = binary(shlWithOverflow, .{});
+    try test_shl_with_overflow.testInts();
+}
+
 inline fn equal(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs == rhs) {
     return lhs == rhs;
 }