authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-04-17 21:34:49-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-05-17 02:08:41-04:00
log932298679fdcefd1e4329e90697d91ae77fa0e21
treef9d79c34cf534d968033ca3e96b9af0021cd91f8
parent8e72a25285b5e782ee44828b6d1904d91fb16a29

x86_64: rewrite scalar `@shlWithOverflow`


2 files changed, 3718 insertions(+), 326 deletions(-)

src/arch/x86_64/CodeGen.zig+3708-326
......@@ -73,10 +73,6 @@ mir_instructions: std.MultiArrayList(Mir.Inst) = .empty,
7373mir_extra: std.ArrayListUnmanaged(u32) = .empty,
7474mir_table: std.ArrayListUnmanaged(Mir.Inst.Index) = .empty,
7575
76/// Byte offset within the source file of the ending curly.
77end_di_line: u32,
78end_di_column: u32,
79
8076/// The value is an offset into the `Function` `code` from the beginning.
8177/// To perform the reloc, write 32-bit signed little-endian integer
8278/// which is a relative jump, based on the address following the reloc.
......@@ -912,8 +908,6 @@ pub fn generate(
912908 .err_ret_trace_reg = undefined, // populated after `resolveCallingConventionValues`
913909 .fn_type = fn_type,
914910 .src_loc = src_loc,
915 .end_di_line = func.rbrace_line,
916 .end_di_column = func.rbrace_column,
917911 };
918912 defer {
919913 function.frame_allocs.deinit(gpa);
......@@ -1000,6 +994,16 @@ pub fn generate(
1000994 else => |e| return e,
1001995 };
1002996
997 // Drop them off at the rbrace.
998 if (debug_output != .none) _ = try function.addInst(.{
999 .tag = .pseudo,
1000 .ops = .pseudo_dbg_line_line_column,
1001 .data = .{ .line_column = .{
1002 .line = func.rbrace_line,
1003 .column = func.rbrace_column,
1004 } },
1005 });
1006
10031007 var mir: Mir = .{
10041008 .instructions = function.mir_instructions.toOwnedSlice(),
10051009 .extra = try function.mir_extra.toOwnedSlice(gpa),
......@@ -1076,8 +1080,6 @@ pub fn generateLazy(
10761080 .err_ret_trace_reg = undefined,
10771081 .fn_type = undefined,
10781082 .src_loc = src_loc,
1079 .end_di_line = undefined, // no debug info yet
1080 .end_di_column = undefined, // no debug info yet
10811083 };
10821084 defer {
10831085 function.inst_tracking.deinit(gpa);
......@@ -2381,16 +2383,6 @@ fn gen(self: *CodeGen) InnerError!void {
23812383 try self.genBody(self.air.getMainBody());
23822384 if (self.debug_output != .none) try self.asmPseudo(.pseudo_dbg_epilogue_begin_none);
23832385 }
2384
2385 // Drop them off at the rbrace.
2386 if (self.debug_output != .none) _ = try self.addInst(.{
2387 .tag = .pseudo,
2388 .ops = .pseudo_dbg_line_line_column,
2389 .data = .{ .line_column = .{
2390 .line = self.end_di_line,
2391 .column = self.end_di_column,
2392 } },
2393 });
23942386}
23952387
23962388fn checkInvariantsAfterAirInst(self: *CodeGen) void {
......@@ -2416,7 +2408,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24162408}
24172409
24182410fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2419 @setEvalBranchQuota(15_100);
2411 @setEvalBranchQuota(15_800);
24202412 const pt = cg.pt;
24212413 const zcu = pt.zcu;
24222414 const ip = &zcu.intern_pool;
......@@ -2457,8 +2449,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24572449 .mul_sat => try cg.airMulSat(inst),
24582450 .shl_sat => try cg.airShlSat(inst),
24592451
2460 .shl_with_overflow => try cg.airShlWithOverflow(inst),
2461
24622452 .bitcast => try cg.airBitCast(inst),
24632453
24642454 .splat => try cg.airSplat(inst),
......@@ -32923,455 +32913,3801 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3292332913 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
3292432914 } },
3292532915 }, .{
32926 .required_features = .{ .@"64bit", .slow_incdec, null, null },
32916 .required_features = .{ .@"64bit", .slow_incdec, null, null },
32917 .src_constraints = .{
32918 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32919 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32920 .any,
32921 },
32922 .patterns = &.{
32923 .{ .src = .{ .to_mem, .to_mem, .none } },
32924 },
32925 .extra_temps = .{
32926 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32927 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32928 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32929 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32930 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32931 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32932 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32933 .{ .type = .u64, .kind = .{ .reg = .rax } },
32934 .{ .type = .u64, .kind = .{ .reg = .rdx } },
32935 .unused,
32936 .unused,
32937 },
32938 .dst_temps = .{ .mem, .{ .cc = .nz } },
32939 .clobbers = .{ .eflags = true },
32940 .each = .{ .once = &.{
32941 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
32942 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
32943 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
32944 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
32945 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
32946 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
32947 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
32948 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
32949 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
32950 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
32951 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
32952 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
32953 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
32954 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
32955 .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
32956 .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
32957 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
32958 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
32959 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
32960 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
32961 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
32962 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
32963 .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
32964 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
32965 .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
32966 .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
32967 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
32968 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
32969 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
32970 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
32971 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
32972 .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
32973 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
32974 .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
32975 .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
32976 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
32977 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
32978 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
32979 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
32980 } },
32981 }, .{
32982 .required_features = .{ .@"64bit", null, null, null },
32983 .src_constraints = .{
32984 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32985 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32986 .any,
32987 },
32988 .patterns = &.{
32989 .{ .src = .{ .to_mem, .to_mem, .none } },
32990 },
32991 .extra_temps = .{
32992 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32993 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32994 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32995 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32996 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32997 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32998 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32999 .{ .type = .u64, .kind = .{ .reg = .rax } },
33000 .{ .type = .u64, .kind = .{ .reg = .rdx } },
33001 .unused,
33002 .unused,
33003 },
33004 .dst_temps = .{ .mem, .{ .cc = .nz } },
33005 .clobbers = .{ .eflags = true },
33006 .each = .{ .once = &.{
33007 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
33008 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
33009 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
33010 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
33011 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
33012 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
33013 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
33014 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
33015 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
33016 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
33017 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
33018 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
33019 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
33020 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
33021 .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
33022 .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
33023 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
33024 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
33025 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
33026 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
33027 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
33028 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
33029 .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
33030 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
33031 .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
33032 .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
33033 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
33034 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
33035 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
33036 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
33037 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
33038 .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
33039 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
33040 .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
33041 .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
33042 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33043 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
33044 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
33045 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
33046 } },
33047 }, .{
33048 .required_features = .{ .@"64bit", .bmi2, .adx, null },
33049 .src_constraints = .{
33050 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33051 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33052 .any,
33053 },
33054 .patterns = &.{
33055 .{ .src = .{ .to_mem, .to_mem, .none } },
33056 },
33057 .extra_temps = .{
33058 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33059 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
33060 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33061 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33062 .{ .type = .u64, .kind = .{ .reg = .rdx } },
33063 .{ .type = .isize, .kind = .{ .reg = .rcx } },
33064 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33065 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33066 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33067 .unused,
33068 .unused,
33069 },
33070 .dst_temps = .{ .mem, .{ .cc = .nz } },
33071 .clobbers = .{ .eflags = true },
33072 .each = .{ .once = &.{
33073 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
33074 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
33075 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
33076 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
33077 .{ .@"0:", ._, .xor, .tmp4d, .tmp4d, ._, ._ },
33078 .{ ._, ._, .@"or", .tmp4q, .memi(.src0q, .tmp0), ._, ._ },
33079 .{ ._, ._z, .j, .@"2f", ._, ._, ._ },
33080 .{ ._, ._, .lea, .tmp5p, .leaad(.tmp0, .sub_src0_size, 8), ._, ._ },
33081 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
33082 .{ .@"1:", ._x, .mul, .tmp8q, .tmp7q, .leai(.tmp1q, .tmp5), ._ },
33083 .{ ._, ._x, .adc, .tmp7q, .tmp6q, ._, ._ },
33084 .{ ._, ._, .mov, .memiad(.dst0q, .tmp5, .add_src0_size, -8), .tmp7q, ._, ._ },
33085 .{ ._, ._rcxz, .j, .@"1f", ._, ._, ._ },
33086 .{ ._, ._x, .ado, .tmp8q, .memia(.dst0q, .tmp5, .add_src0_size), ._, ._ },
33087 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
33088 .{ ._, ._, .lea, .tmp5p, .lead(.tmp5, 8), ._, ._ },
33089 .{ ._, ._mp, .j, .@"1b", ._, ._, ._ },
33090 .{ .@"2:", ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
33091 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
33092 .{ .@"1:", ._, .mov, .tmp4d, .tmp0d, ._, ._ },
33093 .{ ._, ._x, .ado, .tmp8q, .tmp3q, ._, ._ },
33094 .{ ._, ._x, .adc, .tmp8q, .tmp3q, ._, ._ },
33095 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
33096 .{ .@"1:", ._, .@"or", .tmp8q, .leai(.tmp1q, .tmp4), ._, ._ },
33097 .{ .@"2:", ._, .sub, .tmp4d, .si(8), ._, ._ },
33098 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
33099 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
33100 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
33101 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
33102 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
33103 .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33104 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
33105 .{ ._, ._, .bzhi, .tmp0q, .tmp1q, .tmp0q, ._ },
33106 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33107 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
33108 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
33109 } },
33110 }, .{
33111 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
33112 .src_constraints = .{
33113 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33114 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33115 .any,
33116 },
33117 .patterns = &.{
33118 .{ .src = .{ .to_mem, .to_mem, .none } },
33119 },
33120 .extra_temps = .{
33121 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33122 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
33123 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33124 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33125 .{ .type = .u64, .kind = .{ .reg = .rdx } },
33126 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
33127 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33128 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33129 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33130 .unused,
33131 .unused,
33132 },
33133 .dst_temps = .{ .mem, .{ .cc = .nz } },
33134 .clobbers = .{ .eflags = true },
33135 .each = .{ .once = &.{
33136 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
33137 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
33138 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
33139 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
33140 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
33141 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
33142 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
33143 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
33144 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
33145 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
33146 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
33147 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
33148 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
33149 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
33150 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
33151 .{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
33152 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
33153 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
33154 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
33155 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
33156 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
33157 .{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
33158 .{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
33159 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
33160 .{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
33161 .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
33162 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
33163 .{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
33164 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
33165 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
33166 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
33167 .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33168 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
33169 .{ ._, ._, .bzhi, .tmp0q, .tmp1q, .tmp0q, ._ },
33170 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33171 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
33172 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
33173 } },
33174 }, .{
33175 .required_features = .{ .@"64bit", .bmi2, null, null },
33176 .src_constraints = .{
33177 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33178 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33179 .any,
33180 },
33181 .patterns = &.{
33182 .{ .src = .{ .to_mem, .to_mem, .none } },
33183 },
33184 .extra_temps = .{
33185 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33186 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
33187 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33188 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33189 .{ .type = .u64, .kind = .{ .reg = .rdx } },
33190 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
33191 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33192 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33193 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33194 .unused,
33195 .unused,
33196 },
33197 .dst_temps = .{ .mem, .{ .cc = .nz } },
33198 .clobbers = .{ .eflags = true },
33199 .each = .{ .once = &.{
33200 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
33201 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
33202 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
33203 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
33204 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
33205 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
33206 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
33207 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
33208 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
33209 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
33210 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
33211 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
33212 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
33213 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
33214 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
33215 .{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
33216 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
33217 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
33218 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
33219 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
33220 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
33221 .{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
33222 .{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
33223 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
33224 .{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
33225 .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
33226 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
33227 .{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
33228 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
33229 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
33230 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
33231 .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33232 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
33233 .{ ._, ._, .bzhi, .tmp0q, .tmp1q, .tmp0q, ._ },
33234 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33235 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
33236 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
33237 } },
33238 }, .{
33239 .required_features = .{ .@"64bit", .slow_incdec, null, null },
33240 .src_constraints = .{
33241 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33242 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33243 .any,
33244 },
33245 .patterns = &.{
33246 .{ .src = .{ .to_mem, .to_mem, .none } },
33247 },
33248 .extra_temps = .{
33249 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33250 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
33251 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33252 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33253 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33254 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
33255 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33256 .{ .type = .u64, .kind = .{ .reg = .rax } },
33257 .{ .type = .u64, .kind = .{ .reg = .rdx } },
33258 .unused,
33259 .unused,
33260 },
33261 .dst_temps = .{ .mem, .{ .cc = .nz } },
33262 .clobbers = .{ .eflags = true },
33263 .each = .{ .once = &.{
33264 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
33265 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
33266 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
33267 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
33268 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
33269 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
33270 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
33271 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
33272 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
33273 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
33274 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
33275 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
33276 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
33277 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
33278 .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
33279 .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
33280 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
33281 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
33282 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
33283 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
33284 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
33285 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
33286 .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
33287 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
33288 .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
33289 .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
33290 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
33291 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
33292 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
33293 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
33294 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
33295 .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
33296 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
33297 .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
33298 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33299 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
33300 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
33301 } },
33302 }, .{
33303 .required_features = .{ .@"64bit", null, null, null },
33304 .src_constraints = .{
33305 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33306 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33307 .any,
33308 },
33309 .patterns = &.{
33310 .{ .src = .{ .to_mem, .to_mem, .none } },
33311 },
33312 .extra_temps = .{
33313 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33314 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
33315 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33316 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33317 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33318 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
33319 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33320 .{ .type = .u64, .kind = .{ .reg = .rax } },
33321 .{ .type = .u64, .kind = .{ .reg = .rdx } },
33322 .unused,
33323 .unused,
33324 },
33325 .dst_temps = .{ .mem, .{ .cc = .nz } },
33326 .clobbers = .{ .eflags = true },
33327 .each = .{ .once = &.{
33328 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
33329 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
33330 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
33331 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
33332 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
33333 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
33334 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
33335 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
33336 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
33337 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
33338 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
33339 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
33340 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
33341 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
33342 .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
33343 .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
33344 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
33345 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
33346 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
33347 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
33348 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
33349 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
33350 .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
33351 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
33352 .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
33353 .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
33354 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
33355 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
33356 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
33357 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
33358 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
33359 .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
33360 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
33361 .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
33362 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33363 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
33364 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
33365 } },
33366 } }) catch |err| switch (err) {
33367 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
33368 @tagName(air_tag),
33369 ty_pl.ty.toType().fmt(pt),
33370 ops[0].tracking(cg),
33371 ops[1].tracking(cg),
33372 }),
33373 else => |e| return e,
33374 };
33375 try res[0].withOverflow(&res[1], cg);
33376 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
33377 },
33378 .shl_with_overflow => |air_tag| if (use_old) try cg.airShlWithOverflow(inst) else fallback: {
33379 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
33380 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
33381 if (cg.typeOf(bin_op.lhs).isVector(zcu)) break :fallback try cg.airShlWithOverflow(inst);
33382 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
33383 var res: [2]Temp = undefined;
33384 cg.select(&res, &.{ ty_pl.ty.toType(), .u1 }, &ops, comptime &.{ .{
33385 .src_constraints = .{ .{ .exact_signed_int = 8 }, .{ .unsigned_int = .byte }, .any },
33386 .patterns = &.{
33387 .{ .src = .{ .mut_mem, .{ .imm = 1 }, .none } },
33388 },
33389 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .o } },
33390 .clobbers = .{ .eflags = true },
33391 .each = .{ .once = &.{
33392 .{ ._, ._l, .sa, .dst0b, .src1b, ._, ._ },
33393 } },
33394 }, .{
33395 .src_constraints = .{ .{ .exact_unsigned_int = 8 }, .{ .unsigned_int = .byte }, .any },
33396 .patterns = &.{
33397 .{ .src = .{ .mut_mem, .{ .imm = 1 }, .none } },
33398 },
33399 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
33400 .clobbers = .{ .eflags = true },
33401 .each = .{ .once = &.{
33402 .{ ._, ._l, .sh, .dst0b, .src1b, ._, ._ },
33403 } },
33404 }, .{
33405 .src_constraints = .{ .{ .exact_signed_int = 8 }, .{ .unsigned_int = .byte }, .any },
33406 .patterns = &.{
33407 .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
33408 },
33409 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .o } },
33410 .clobbers = .{ .eflags = true },
33411 .each = .{ .once = &.{
33412 .{ ._, ._, .add, .dst0b, .src0b, ._, ._ },
33413 } },
33414 }, .{
33415 .src_constraints = .{ .{ .exact_unsigned_int = 8 }, .{ .unsigned_int = .byte }, .any },
33416 .patterns = &.{
33417 .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
33418 },
33419 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
33420 .clobbers = .{ .eflags = true },
33421 .each = .{ .once = &.{
33422 .{ ._, ._, .add, .dst0b, .src0b, ._, ._ },
33423 } },
33424 }, .{
33425 .src_constraints = .{ .{ .signed_int = .byte }, .{ .unsigned_int = .byte }, .any },
33426 .patterns = &.{
33427 .{ .src = .{ .to_gpr, .imm8, .none } },
33428 },
33429 .extra_temps = .{
33430 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
33431 .unused,
33432 .unused,
33433 .unused,
33434 .unused,
33435 .unused,
33436 .unused,
33437 .unused,
33438 .unused,
33439 .unused,
33440 .unused,
33441 },
33442 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
33443 .clobbers = .{ .eflags = true },
33444 .each = .{ .once = &.{
33445 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
33446 .{ ._, ._l, .sa, .tmp0b, .uia(8, .src0, .add_src1_sub_bit_size), ._, ._ },
33447 .{ ._, ._r, .sa, .tmp0b, .uia(8, .src0, .sub_bit_size), ._, ._ },
33448 .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
33449 .{ ._, ._r, .sa, .tmp0b, .src1b, ._, ._ },
33450 .{ ._, ._, .cmp, .tmp0b, .src0b, ._, ._ },
33451 } },
33452 }, .{
33453 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
33454 .patterns = &.{
33455 .{ .src = .{ .to_gpr, .imm8, .none } },
33456 },
33457 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .nbe } },
33458 .clobbers = .{ .eflags = true },
33459 .each = .{ .once = &.{
33460 .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ },
33461 .{ ._, ._, .@"and", .dst0b, .ua(.src0, .add_umax_shr_src1), ._, ._ },
33462 .{ ._, ._l, .sh, .dst0b, .src1b, ._, ._ },
33463 .{ ._, ._, .cmp, .src0b, .ua(.src0, .add_umax_shr_src1), ._, ._ },
33464 } },
33465 }, .{
33466 .src_constraints = .{ .{ .exact_signed_int = 8 }, .{ .unsigned_int = .byte }, .any },
33467 .patterns = &.{
33468 .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
33469 },
33470 .extra_temps = .{
33471 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
33472 .unused,
33473 .unused,
33474 .unused,
33475 .unused,
33476 .unused,
33477 .unused,
33478 .unused,
33479 .unused,
33480 .unused,
33481 .unused,
33482 },
33483 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
33484 .clobbers = .{ .eflags = true },
33485 .each = .{ .once = &.{
33486 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
33487 .{ ._, ._l, .sa, .tmp0b, .src1b, ._, ._ },
33488 .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
33489 .{ ._, ._r, .sa, .tmp0b, .src1b, ._, ._ },
33490 .{ ._, ._, .cmp, .tmp0b, .src0b, ._, ._ },
33491 } },
33492 }, .{
33493 .src_constraints = .{ .{ .exact_unsigned_int = 8 }, .{ .unsigned_int = .byte }, .any },
33494 .patterns = &.{
33495 .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
33496 },
33497 .extra_temps = .{
33498 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
33499 .unused,
33500 .unused,
33501 .unused,
33502 .unused,
33503 .unused,
33504 .unused,
33505 .unused,
33506 .unused,
33507 .unused,
33508 .unused,
33509 },
33510 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
33511 .clobbers = .{ .eflags = true },
33512 .each = .{ .once = &.{
33513 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
33514 .{ ._, ._l, .sh, .tmp0b, .src1b, ._, ._ },
33515 .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
33516 .{ ._, ._r, .sh, .tmp0b, .src1b, ._, ._ },
33517 .{ ._, ._, .cmp, .tmp0b, .src0b, ._, ._ },
33518 } },
33519 }, .{
33520 .src_constraints = .{ .{ .signed_int = .byte }, .{ .unsigned_int = .byte }, .any },
33521 .patterns = &.{
33522 .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
33523 },
33524 .extra_temps = .{
33525 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
33526 .unused,
33527 .unused,
33528 .unused,
33529 .unused,
33530 .unused,
33531 .unused,
33532 .unused,
33533 .unused,
33534 .unused,
33535 .unused,
33536 },
33537 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
33538 .clobbers = .{ .eflags = true },
33539 .each = .{ .once = &.{
33540 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
33541 .{ ._, ._l, .sa, .tmp0b, .src1b, ._, ._ },
33542 .{ ._, ._l, .sa, .tmp0b, .uia(8, .src0, .sub_bit_size), ._, ._ },
33543 .{ ._, ._r, .sa, .tmp0b, .uia(8, .src0, .sub_bit_size), ._, ._ },
33544 .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
33545 .{ ._, ._r, .sa, .tmp0b, .src1b, ._, ._ },
33546 .{ ._, ._, .cmp, .tmp0b, .src0b, ._, ._ },
33547 } },
33548 }, .{
33549 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
33550 .patterns = &.{
33551 .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
33552 },
33553 .extra_temps = .{
33554 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
33555 .unused,
33556 .unused,
33557 .unused,
33558 .unused,
33559 .unused,
33560 .unused,
33561 .unused,
33562 .unused,
33563 .unused,
33564 .unused,
33565 },
33566 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
33567 .clobbers = .{ .eflags = true },
33568 .each = .{ .once = &.{
33569 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
33570 .{ ._, ._l, .sh, .tmp0b, .src1b, ._, ._ },
33571 .{ ._, ._, .@"and", .tmp0b, .ua(.src0, .add_umax), ._, ._ },
33572 .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
33573 .{ ._, ._r, .sh, .tmp0b, .src1b, ._, ._ },
33574 .{ ._, ._, .cmp, .tmp0b, .src0b, ._, ._ },
33575 } },
33576 }, .{
33577 .src_constraints = .{ .{ .exact_signed_int = 16 }, .{ .unsigned_int = .byte }, .any },
33578 .patterns = &.{
33579 .{ .src = .{ .mut_mem, .{ .imm = 1 }, .none } },
33580 },
33581 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .o } },
33582 .clobbers = .{ .eflags = true },
33583 .each = .{ .once = &.{
33584 .{ ._, ._l, .sa, .dst0w, .src1b, ._, ._ },
33585 } },
33586 }, .{
33587 .src_constraints = .{ .{ .exact_unsigned_int = 16 }, .{ .unsigned_int = .byte }, .any },
33588 .patterns = &.{
33589 .{ .src = .{ .mut_mem, .{ .imm = 1 }, .none } },
33590 },
33591 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
33592 .clobbers = .{ .eflags = true },
33593 .each = .{ .once = &.{
33594 .{ ._, ._l, .sh, .dst0w, .src1b, ._, ._ },
33595 } },
33596 }, .{
33597 .src_constraints = .{ .{ .exact_signed_int = 8 }, .{ .unsigned_int = .byte }, .any },
33598 .patterns = &.{
33599 .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
33600 },
33601 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .o } },
33602 .clobbers = .{ .eflags = true },
33603 .each = .{ .once = &.{
33604 .{ ._, ._, .add, .dst0w, .src0w, ._, ._ },
33605 } },
33606 }, .{
33607 .src_constraints = .{ .{ .exact_unsigned_int = 8 }, .{ .unsigned_int = .byte }, .any },
33608 .patterns = &.{
33609 .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
33610 },
33611 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
33612 .clobbers = .{ .eflags = true },
33613 .each = .{ .once = &.{
33614 .{ ._, ._, .add, .dst0w, .src0w, ._, ._ },
33615 } },
33616 }, .{
33617 .src_constraints = .{ .{ .signed_int = .word }, .{ .unsigned_int = .byte }, .any },
33618 .patterns = &.{
33619 .{ .src = .{ .to_gpr, .imm8, .none } },
33620 },
33621 .extra_temps = .{
33622 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
33623 .unused,
33624 .unused,
33625 .unused,
33626 .unused,
33627 .unused,
33628 .unused,
33629 .unused,
33630 .unused,
33631 .unused,
33632 .unused,
33633 },
33634 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
33635 .clobbers = .{ .eflags = true },
33636 .each = .{ .once = &.{
33637 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
33638 .{ ._, ._l, .sa, .tmp0d, .uia(32, .src0, .add_src1_sub_bit_size), ._, ._ },
33639 .{ ._, ._r, .sa, .tmp0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
33640 .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
33641 .{ ._, ._r, .sa, .tmp0d, .src1b, ._, ._ },
33642 .{ ._, ._, .cmp, .tmp0w, .src0w, ._, ._ },
33643 } },
33644 }, .{
33645 .required_features = .{ .fast_imm16, null, null, null },
33646 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .byte }, .any },
33647 .patterns = &.{
33648 .{ .src = .{ .to_gpr, .imm8, .none } },
33649 },
33650 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .nbe } },
33651 .clobbers = .{ .eflags = true },
33652 .each = .{ .once = &.{
33653 .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ },
33654 .{ ._, ._, .@"and", .dst0w, .ua(.src0, .add_umax_shr_src1), ._, ._ },
33655 .{ ._, ._l, .sh, .dst0d, .src1b, ._, ._ },
33656 .{ ._, ._, .cmp, .src0w, .ua(.src0, .add_umax_shr_src1), ._, ._ },
33657 } },
33658 }, .{
33659 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .byte }, .any },
33660 .patterns = &.{
33661 .{ .src = .{ .to_gpr, .imm8, .none } },
33662 },
33663 .extra_temps = .{
33664 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
33665 .unused,
33666 .unused,
33667 .unused,
33668 .unused,
33669 .unused,
33670 .unused,
33671 .unused,
33672 .unused,
33673 .unused,
33674 .unused,
33675 },
33676 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .nbe } },
33677 .clobbers = .{ .eflags = true },
33678 .each = .{ .once = &.{
33679 .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ },
33680 .{ ._, ._, .@"and", .dst0d, .ua(.src0, .add_umax_shr_src1), ._, ._ },
33681 .{ ._, ._l, .sh, .dst0d, .src1b, ._, ._ },
33682 .{ ._, ._, .cmp, .src0w, .ua(.src0, .add_umax_shr_src1), ._, ._ },
33683 } },
33684 }, .{
33685 .src_constraints = .{ .{ .exact_signed_int = 16 }, .{ .unsigned_int = .byte }, .any },
33686 .patterns = &.{
33687 .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
33688 },
33689 .extra_temps = .{
33690 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
33691 .unused,
33692 .unused,
33693 .unused,
33694 .unused,
33695 .unused,
33696 .unused,
33697 .unused,
33698 .unused,
33699 .unused,
33700 .unused,
33701 },
33702 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
33703 .clobbers = .{ .eflags = true },
33704 .each = .{ .once = &.{
33705 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
33706 .{ ._, ._l, .sa, .tmp0d, .src1b, ._, ._ },
33707 .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
33708 .{ ._, ._r, .sa, .tmp0w, .src1b, ._, ._ },
33709 .{ ._, ._, .cmp, .tmp0w, .src0w, ._, ._ },
33710 } },
33711 }, .{
33712 .src_constraints = .{ .{ .exact_unsigned_int = 16 }, .{ .unsigned_int = .byte }, .any },
33713 .patterns = &.{
33714 .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
33715 },
33716 .extra_temps = .{
33717 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
33718 .unused,
33719 .unused,
33720 .unused,
33721 .unused,
33722 .unused,
33723 .unused,
33724 .unused,
33725 .unused,
33726 .unused,
33727 .unused,
33728 },
33729 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
33730 .clobbers = .{ .eflags = true },
33731 .each = .{ .once = &.{
33732 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
33733 .{ ._, ._l, .sh, .tmp0d, .src1b, ._, ._ },
33734 .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
33735 .{ ._, ._r, .sh, .tmp0w, .src1b, ._, ._ },
33736 .{ ._, ._, .cmp, .tmp0w, .src0w, ._, ._ },
33737 } },
33738 }, .{
33739 .src_constraints = .{ .{ .signed_int = .word }, .{ .unsigned_int = .byte }, .any },
33740 .patterns = &.{
33741 .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
33742 },
33743 .extra_temps = .{
33744 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
33745 .unused,
33746 .unused,
33747 .unused,
33748 .unused,
33749 .unused,
33750 .unused,
33751 .unused,
33752 .unused,
33753 .unused,
33754 .unused,
33755 },
33756 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
33757 .clobbers = .{ .eflags = true },
33758 .each = .{ .once = &.{
33759 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
33760 .{ ._, ._l, .sa, .tmp0d, .src1b, ._, ._ },
33761 .{ ._, ._l, .sa, .tmp0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
33762 .{ ._, ._r, .sa, .tmp0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
33763 .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
33764 .{ ._, ._r, .sa, .tmp0d, .src1b, ._, ._ },
33765 .{ ._, ._, .cmp, .tmp0w, .src0w, ._, ._ },
33766 } },
33767 }, .{
33768 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .byte }, .any },
33769 .patterns = &.{
33770 .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
33771 },
33772 .extra_temps = .{
33773 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
33774 .unused,
33775 .unused,
33776 .unused,
33777 .unused,
33778 .unused,
33779 .unused,
33780 .unused,
33781 .unused,
33782 .unused,
33783 .unused,
33784 },
33785 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
33786 .clobbers = .{ .eflags = true },
33787 .each = .{ .once = &.{
33788 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
33789 .{ ._, ._l, .sh, .tmp0d, .src1b, ._, ._ },
33790 .{ ._, ._, .@"and", .tmp0d, .ua(.src0, .add_umax), ._, ._ },
33791 .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
33792 .{ ._, ._r, .sh, .tmp0d, .src1b, ._, ._ },
33793 .{ ._, ._, .cmp, .tmp0w, .src0w, ._, ._ },
33794 } },
33795 }, .{
33796 .src_constraints = .{ .{ .exact_signed_int = 32 }, .{ .unsigned_int = .byte }, .any },
33797 .patterns = &.{
33798 .{ .src = .{ .mut_mem, .{ .imm = 1 }, .none } },
33799 },
33800 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .o } },
33801 .clobbers = .{ .eflags = true },
33802 .each = .{ .once = &.{
33803 .{ ._, ._l, .sa, .dst0d, .src1b, ._, ._ },
33804 } },
33805 }, .{
33806 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .{ .unsigned_int = .byte }, .any },
33807 .patterns = &.{
33808 .{ .src = .{ .mut_mem, .{ .imm = 1 }, .none } },
33809 },
33810 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
33811 .clobbers = .{ .eflags = true },
33812 .each = .{ .once = &.{
33813 .{ ._, ._l, .sh, .dst0d, .src1b, ._, ._ },
33814 } },
33815 }, .{
33816 .src_constraints = .{ .{ .exact_signed_int = 32 }, .{ .unsigned_int = .byte }, .any },
33817 .patterns = &.{
33818 .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
33819 },
33820 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .o } },
33821 .clobbers = .{ .eflags = true },
33822 .each = .{ .once = &.{
33823 .{ ._, ._, .add, .dst0d, .src0d, ._, ._ },
33824 } },
33825 }, .{
33826 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .{ .unsigned_int = .byte }, .any },
33827 .patterns = &.{
33828 .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
33829 },
33830 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
33831 .clobbers = .{ .eflags = true },
33832 .each = .{ .once = &.{
33833 .{ ._, ._, .add, .dst0d, .src0d, ._, ._ },
33834 } },
33835 }, .{
33836 .src_constraints = .{ .{ .signed_int = .dword }, .{ .unsigned_int = .byte }, .any },
33837 .patterns = &.{
33838 .{ .src = .{ .to_gpr, .imm8, .none } },
33839 },
33840 .extra_temps = .{
33841 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
33842 .unused,
33843 .unused,
33844 .unused,
33845 .unused,
33846 .unused,
33847 .unused,
33848 .unused,
33849 .unused,
33850 .unused,
33851 .unused,
33852 },
33853 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
33854 .clobbers = .{ .eflags = true },
33855 .each = .{ .once = &.{
33856 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
33857 .{ ._, ._l, .sa, .tmp0d, .uia(32, .src0, .add_src1_sub_bit_size), ._, ._ },
33858 .{ ._, ._r, .sa, .tmp0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
33859 .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
33860 .{ ._, ._r, .sa, .tmp0d, .src1b, ._, ._ },
33861 .{ ._, ._, .cmp, .tmp0d, .src0d, ._, ._ },
33862 } },
33863 }, .{
33864 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .byte }, .any },
33865 .patterns = &.{
33866 .{ .src = .{ .to_gpr, .imm8, .none } },
33867 },
33868 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .nbe } },
33869 .clobbers = .{ .eflags = true },
33870 .each = .{ .once = &.{
33871 .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ },
33872 .{ ._, ._, .@"and", .dst0d, .ua(.src0, .add_umax_shr_src1), ._, ._ },
33873 .{ ._, ._l, .sh, .dst0d, .src1b, ._, ._ },
33874 .{ ._, ._, .cmp, .src0d, .ua(.src0, .add_umax_shr_src1), ._, ._ },
33875 } },
33876 }, .{
33877 .src_constraints = .{ .{ .exact_signed_int = 32 }, .{ .unsigned_int = .byte }, .any },
33878 .patterns = &.{
33879 .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
33880 },
33881 .extra_temps = .{
33882 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
33883 .unused,
33884 .unused,
33885 .unused,
33886 .unused,
33887 .unused,
33888 .unused,
33889 .unused,
33890 .unused,
33891 .unused,
33892 .unused,
33893 },
33894 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
33895 .clobbers = .{ .eflags = true },
33896 .each = .{ .once = &.{
33897 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
33898 .{ ._, ._l, .sa, .tmp0d, .src1b, ._, ._ },
33899 .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
33900 .{ ._, ._r, .sa, .tmp0d, .src1b, ._, ._ },
33901 .{ ._, ._, .cmp, .tmp0d, .src0d, ._, ._ },
33902 } },
33903 }, .{
33904 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .{ .unsigned_int = .byte }, .any },
33905 .patterns = &.{
33906 .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
33907 },
33908 .extra_temps = .{
33909 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
33910 .unused,
33911 .unused,
33912 .unused,
33913 .unused,
33914 .unused,
33915 .unused,
33916 .unused,
33917 .unused,
33918 .unused,
33919 .unused,
33920 },
33921 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
33922 .clobbers = .{ .eflags = true },
33923 .each = .{ .once = &.{
33924 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
33925 .{ ._, ._l, .sh, .tmp0d, .src1b, ._, ._ },
33926 .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
33927 .{ ._, ._r, .sh, .tmp0d, .src1b, ._, ._ },
33928 .{ ._, ._, .cmp, .tmp0d, .src0d, ._, ._ },
33929 } },
33930 }, .{
33931 .src_constraints = .{ .{ .signed_int = .dword }, .{ .unsigned_int = .byte }, .any },
33932 .patterns = &.{
33933 .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
33934 },
33935 .extra_temps = .{
33936 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
33937 .unused,
33938 .unused,
33939 .unused,
33940 .unused,
33941 .unused,
33942 .unused,
33943 .unused,
33944 .unused,
33945 .unused,
33946 .unused,
33947 },
33948 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
33949 .clobbers = .{ .eflags = true },
33950 .each = .{ .once = &.{
33951 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
33952 .{ ._, ._l, .sa, .tmp0d, .src1b, ._, ._ },
33953 .{ ._, ._l, .sa, .tmp0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
33954 .{ ._, ._r, .sa, .tmp0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
33955 .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
33956 .{ ._, ._r, .sa, .tmp0d, .src1b, ._, ._ },
33957 .{ ._, ._, .cmp, .tmp0d, .src0d, ._, ._ },
33958 } },
33959 }, .{
33960 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .byte }, .any },
33961 .patterns = &.{
33962 .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
33963 },
33964 .extra_temps = .{
33965 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
33966 .unused,
33967 .unused,
33968 .unused,
33969 .unused,
33970 .unused,
33971 .unused,
33972 .unused,
33973 .unused,
33974 .unused,
33975 .unused,
33976 },
33977 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
33978 .clobbers = .{ .eflags = true },
33979 .each = .{ .once = &.{
33980 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
33981 .{ ._, ._l, .sh, .tmp0d, .src1b, ._, ._ },
33982 .{ ._, ._, .@"and", .tmp0d, .ua(.src0, .add_umax), ._, ._ },
33983 .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
33984 .{ ._, ._r, .sh, .tmp0d, .src1b, ._, ._ },
33985 .{ ._, ._, .cmp, .tmp0d, .src0d, ._, ._ },
33986 } },
33987 }, .{
33988 .required_features = .{ .@"64bit", null, null, null },
33989 .src_constraints = .{ .{ .exact_signed_int = 64 }, .{ .unsigned_int = .byte }, .any },
33990 .patterns = &.{
33991 .{ .src = .{ .mut_mem, .{ .imm = 1 }, .none } },
33992 },
33993 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .o } },
33994 .clobbers = .{ .eflags = true },
33995 .each = .{ .once = &.{
33996 .{ ._, ._l, .sa, .dst0q, .src1b, ._, ._ },
33997 } },
33998 }, .{
33999 .required_features = .{ .@"64bit", null, null, null },
34000 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .{ .unsigned_int = .byte }, .any },
34001 .patterns = &.{
34002 .{ .src = .{ .mut_mem, .{ .imm = 1 }, .none } },
34003 },
34004 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
34005 .clobbers = .{ .eflags = true },
34006 .each = .{ .once = &.{
34007 .{ ._, ._l, .sh, .dst0q, .src1b, ._, ._ },
34008 } },
34009 }, .{
34010 .required_features = .{ .@"64bit", null, null, null },
34011 .src_constraints = .{ .{ .exact_signed_int = 64 }, .{ .unsigned_int = .byte }, .any },
34012 .patterns = &.{
34013 .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
34014 },
34015 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .o } },
34016 .clobbers = .{ .eflags = true },
34017 .each = .{ .once = &.{
34018 .{ ._, ._, .add, .dst0q, .src0q, ._, ._ },
34019 } },
34020 }, .{
34021 .required_features = .{ .@"64bit", null, null, null },
34022 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .{ .unsigned_int = .byte }, .any },
34023 .patterns = &.{
34024 .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } },
34025 },
34026 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
34027 .clobbers = .{ .eflags = true },
34028 .each = .{ .once = &.{
34029 .{ ._, ._, .add, .dst0q, .src0q, ._, ._ },
34030 } },
34031 }, .{
34032 .required_features = .{ .@"64bit", null, null, null },
34033 .src_constraints = .{ .{ .signed_int = .qword }, .{ .unsigned_int = .byte }, .any },
34034 .patterns = &.{
34035 .{ .src = .{ .to_gpr, .imm8, .none } },
34036 },
34037 .extra_temps = .{
34038 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34039 .unused,
34040 .unused,
34041 .unused,
34042 .unused,
34043 .unused,
34044 .unused,
34045 .unused,
34046 .unused,
34047 .unused,
34048 .unused,
34049 },
34050 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
34051 .clobbers = .{ .eflags = true },
34052 .each = .{ .once = &.{
34053 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
34054 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .add_src1_sub_bit_size), ._, ._ },
34055 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size), ._, ._ },
34056 .{ ._, ._, .mov, .dst0q, .tmp0q, ._, ._ },
34057 .{ ._, ._r, .sa, .tmp0q, .src1b, ._, ._ },
34058 .{ ._, ._, .cmp, .tmp0q, .src0q, ._, ._ },
34059 } },
34060 }, .{
34061 .required_features = .{ .@"64bit", null, null, null },
34062 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .byte }, .any },
34063 .patterns = &.{
34064 .{ .src = .{ .to_gpr, .imm8, .none } },
34065 },
34066 .extra_temps = .{
34067 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
34068 .unused,
34069 .unused,
34070 .unused,
34071 .unused,
34072 .unused,
34073 .unused,
34074 .unused,
34075 .unused,
34076 .unused,
34077 .unused,
34078 },
34079 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .nbe } },
34080 .clobbers = .{ .eflags = true },
34081 .each = .{ .once = &.{
34082 .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax_shr_src1), ._, ._ },
34083 .{ ._, ._, .mov, .dst0q, .src0q, ._, ._ },
34084 .{ ._, ._, .@"and", .dst0q, .tmp0q, ._, ._ },
34085 .{ ._, ._l, .sh, .dst0q, .src1b, ._, ._ },
34086 .{ ._, ._, .cmp, .src0q, .tmp0q, ._, ._ },
34087 } },
34088 }, .{
34089 .required_features = .{ .@"64bit", null, null, null },
34090 .src_constraints = .{ .{ .exact_signed_int = 64 }, .{ .unsigned_int = .byte }, .any },
34091 .patterns = &.{
34092 .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
34093 },
34094 .extra_temps = .{
34095 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34096 .unused,
34097 .unused,
34098 .unused,
34099 .unused,
34100 .unused,
34101 .unused,
34102 .unused,
34103 .unused,
34104 .unused,
34105 .unused,
34106 },
34107 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
34108 .clobbers = .{ .eflags = true },
34109 .each = .{ .once = &.{
34110 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
34111 .{ ._, ._l, .sa, .tmp0q, .src1b, ._, ._ },
34112 .{ ._, ._, .mov, .dst0q, .tmp0q, ._, ._ },
34113 .{ ._, ._r, .sa, .tmp0q, .src1b, ._, ._ },
34114 .{ ._, ._, .cmp, .tmp0q, .src0q, ._, ._ },
34115 } },
34116 }, .{
34117 .required_features = .{ .@"64bit", null, null, null },
34118 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .{ .unsigned_int = .byte }, .any },
34119 .patterns = &.{
34120 .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
34121 },
34122 .extra_temps = .{
34123 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
34124 .unused,
34125 .unused,
34126 .unused,
34127 .unused,
34128 .unused,
34129 .unused,
34130 .unused,
34131 .unused,
34132 .unused,
34133 .unused,
34134 },
34135 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
34136 .clobbers = .{ .eflags = true },
34137 .each = .{ .once = &.{
34138 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
34139 .{ ._, ._l, .sh, .tmp0q, .src1b, ._, ._ },
34140 .{ ._, ._, .mov, .dst0q, .tmp0q, ._, ._ },
34141 .{ ._, ._r, .sh, .tmp0q, .src1b, ._, ._ },
34142 .{ ._, ._, .cmp, .tmp0q, .src0q, ._, ._ },
34143 } },
34144 }, .{
34145 .required_features = .{ .@"64bit", null, null, null },
34146 .src_constraints = .{ .{ .signed_int = .qword }, .{ .unsigned_int = .byte }, .any },
34147 .patterns = &.{
34148 .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
34149 },
34150 .extra_temps = .{
34151 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34152 .unused,
34153 .unused,
34154 .unused,
34155 .unused,
34156 .unused,
34157 .unused,
34158 .unused,
34159 .unused,
34160 .unused,
34161 .unused,
34162 },
34163 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
34164 .clobbers = .{ .eflags = true },
34165 .each = .{ .once = &.{
34166 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
34167 .{ ._, ._l, .sa, .tmp0q, .src1b, ._, ._ },
34168 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size), ._, ._ },
34169 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size), ._, ._ },
34170 .{ ._, ._, .mov, .dst0q, .tmp0q, ._, ._ },
34171 .{ ._, ._r, .sa, .tmp0q, .src1b, ._, ._ },
34172 .{ ._, ._, .cmp, .tmp0q, .src0q, ._, ._ },
34173 } },
34174 }, .{
34175 .required_features = .{ .@"64bit", null, null, null },
34176 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .byte }, .any },
34177 .patterns = &.{
34178 .{ .src = .{ .to_gpr, .{ .to_reg = .cl }, .none } },
34179 },
34180 .extra_temps = .{
34181 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
34182 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
34183 .unused,
34184 .unused,
34185 .unused,
34186 .unused,
34187 .unused,
34188 .unused,
34189 .unused,
34190 .unused,
34191 .unused,
34192 },
34193 .dst_temps = .{ .{ .rc = .general_purpose }, .{ .cc = .ne } },
34194 .clobbers = .{ .eflags = true },
34195 .each = .{ .once = &.{
34196 .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ },
34197 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
34198 .{ ._, ._l, .sh, .tmp0q, .src1b, ._, ._ },
34199 .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
34200 .{ ._, ._, .mov, .dst0q, .tmp0q, ._, ._ },
34201 .{ ._, ._r, .sh, .tmp0q, .src1b, ._, ._ },
34202 .{ ._, ._, .cmp, .tmp0q, .src0q, ._, ._ },
34203 } },
34204 }, .{
34205 .required_features = .{ .@"64bit", .slow_incdec, null, null },
34206 .src_constraints = .{
34207 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
34208 .{ .unsigned_int = .byte },
34209 .any,
34210 },
34211 .patterns = &.{
34212 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
34213 },
34214 .extra_temps = .{
34215 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34216 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34217 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
34218 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34219 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34220 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34221 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34222 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34223 .unused,
34224 .unused,
34225 .unused,
34226 },
34227 .dst_temps = .{ .mem, .{ .cc = .nz } },
34228 .clobbers = .{ .eflags = true },
34229 .each = .{ .once = &.{
34230 .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
34231 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
34232 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
34233 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
34234 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34235 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
34236 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
34237 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
34238 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
34239 .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ },
34240 .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
34241 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
34242 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
34243 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
34244 .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ },
34245 .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ },
34246 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
34247 .{ ._, ._, .sub, .tmp6d, .si(1), ._, ._ },
34248 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
34249 .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
34250 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
34251 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
34252 .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34253 .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ },
34254 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ },
34255 .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ },
34256 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
34257 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
34258 .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ },
34259 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
34260 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
34261 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
34262 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
34263 .{ ._, ._, .mov, .tmp7q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
34264 .{ ._, ._r, .sa, .tmp7q, .ui(63), ._, ._ },
34265 .{ ._, ._, .xor, .tmp7q, .tmp3q, ._, ._ },
34266 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
34267 } },
34268 }, .{
34269 .required_features = .{ .@"64bit", null, null, null },
34270 .src_constraints = .{
34271 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
34272 .{ .unsigned_int = .byte },
34273 .any,
34274 },
34275 .patterns = &.{
34276 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
34277 },
34278 .extra_temps = .{
34279 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34280 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34281 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
34282 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34283 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34284 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34285 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34286 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34287 .unused,
34288 .unused,
34289 .unused,
34290 },
34291 .dst_temps = .{ .mem, .{ .cc = .nz } },
34292 .clobbers = .{ .eflags = true },
34293 .each = .{ .once = &.{
34294 .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
34295 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
34296 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
34297 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
34298 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34299 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
34300 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
34301 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
34302 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
34303 .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ },
34304 .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
34305 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
34306 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
34307 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
34308 .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ },
34309 .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ },
34310 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
34311 .{ ._, ._c, .de, .tmp6d, ._, ._, ._ },
34312 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
34313 .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
34314 .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
34315 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
34316 .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34317 .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ },
34318 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ },
34319 .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ },
34320 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
34321 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
34322 .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ },
34323 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
34324 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
34325 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
34326 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
34327 .{ ._, ._, .mov, .tmp7q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
34328 .{ ._, ._r, .sa, .tmp7q, .ui(63), ._, ._ },
34329 .{ ._, ._, .xor, .tmp7q, .tmp3q, ._, ._ },
34330 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
34331 } },
34332 }, .{
34333 .required_features = .{ .@"64bit", .slow_incdec, null, null },
34334 .src_constraints = .{
34335 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
34336 .{ .unsigned_int = .word },
34337 .any,
34338 },
34339 .patterns = &.{
34340 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
34341 },
34342 .extra_temps = .{
34343 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34344 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34345 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
34346 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34347 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34348 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34349 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34350 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34351 .unused,
34352 .unused,
34353 .unused,
34354 },
34355 .dst_temps = .{ .mem, .{ .cc = .nz } },
34356 .clobbers = .{ .eflags = true },
34357 .each = .{ .once = &.{
34358 .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
34359 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
34360 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
34361 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
34362 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34363 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
34364 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
34365 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
34366 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
34367 .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ },
34368 .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
34369 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
34370 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
34371 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
34372 .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ },
34373 .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ },
34374 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
34375 .{ ._, ._, .sub, .tmp6d, .si(1), ._, ._ },
34376 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
34377 .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
34378 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
34379 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
34380 .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34381 .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ },
34382 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ },
34383 .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ },
34384 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
34385 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
34386 .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ },
34387 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
34388 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
34389 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
34390 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
34391 .{ ._, ._, .mov, .tmp7q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
34392 .{ ._, ._r, .sa, .tmp7q, .ui(63), ._, ._ },
34393 .{ ._, ._, .xor, .tmp7q, .tmp3q, ._, ._ },
34394 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
34395 } },
34396 }, .{
34397 .required_features = .{ .@"64bit", null, null, null },
34398 .src_constraints = .{
34399 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
34400 .{ .unsigned_int = .word },
34401 .any,
34402 },
34403 .patterns = &.{
34404 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
34405 },
34406 .extra_temps = .{
34407 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34408 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34409 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
34410 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34411 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34412 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34413 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34414 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34415 .unused,
34416 .unused,
34417 .unused,
34418 },
34419 .dst_temps = .{ .mem, .{ .cc = .nz } },
34420 .clobbers = .{ .eflags = true },
34421 .each = .{ .once = &.{
34422 .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
34423 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
34424 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
34425 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
34426 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34427 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
34428 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
34429 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
34430 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
34431 .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ },
34432 .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
34433 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
34434 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
34435 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
34436 .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ },
34437 .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ },
34438 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
34439 .{ ._, ._c, .de, .tmp6d, ._, ._, ._ },
34440 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
34441 .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
34442 .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
34443 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
34444 .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34445 .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ },
34446 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ },
34447 .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ },
34448 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
34449 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
34450 .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ },
34451 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
34452 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
34453 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
34454 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
34455 .{ ._, ._, .mov, .tmp7q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
34456 .{ ._, ._r, .sa, .tmp7q, .ui(63), ._, ._ },
34457 .{ ._, ._, .xor, .tmp7q, .tmp3q, ._, ._ },
34458 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
34459 } },
34460 }, .{
34461 .required_features = .{ .@"64bit", .slow_incdec, null, null },
34462 .src_constraints = .{
34463 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
34464 .{ .unsigned_int = .byte },
34465 .any,
34466 },
34467 .patterns = &.{
34468 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
34469 },
34470 .extra_temps = .{
34471 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34472 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34473 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
34474 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
34475 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
34476 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
34477 .unused,
34478 .unused,
34479 .unused,
34480 .unused,
34481 .unused,
34482 },
34483 .dst_temps = .{ .mem, .{ .cc = .nz } },
34484 .clobbers = .{ .eflags = true },
34485 .each = .{ .once = &.{
34486 .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
34487 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
34488 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
34489 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
34490 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34491 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
34492 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
34493 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
34494 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
34495 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
34496 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
34497 .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
34498 .{ ._, ._, .sub, .tmp5d, .si(1), ._, ._ },
34499 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
34500 .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
34501 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
34502 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
34503 .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34504 .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
34505 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
34506 .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
34507 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
34508 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
34509 .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
34510 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
34511 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
34512 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
34513 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
34514 .{ ._, ._, .@"test", .tmp4q, .tmp4q, ._, ._ },
34515 } },
34516 }, .{
34517 .required_features = .{ .@"64bit", null, null, null },
34518 .src_constraints = .{
34519 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
34520 .{ .unsigned_int = .byte },
34521 .any,
34522 },
34523 .patterns = &.{
34524 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
34525 },
34526 .extra_temps = .{
34527 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34528 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34529 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
34530 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
34531 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
34532 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
34533 .unused,
34534 .unused,
34535 .unused,
34536 .unused,
34537 .unused,
34538 },
34539 .dst_temps = .{ .mem, .{ .cc = .nz } },
34540 .clobbers = .{ .eflags = true },
34541 .each = .{ .once = &.{
34542 .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
34543 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
34544 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
34545 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
34546 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34547 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
34548 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
34549 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
34550 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
34551 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
34552 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
34553 .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
34554 .{ ._, ._c, .de, .tmp5d, ._, ._, ._ },
34555 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
34556 .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
34557 .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
34558 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
34559 .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34560 .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
34561 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
34562 .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
34563 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
34564 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
34565 .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
34566 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
34567 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
34568 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
34569 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
34570 .{ ._, ._, .@"test", .tmp4q, .tmp4q, ._, ._ },
34571 } },
34572 }, .{
34573 .required_features = .{ .@"64bit", .slow_incdec, null, null },
34574 .src_constraints = .{
34575 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
34576 .{ .unsigned_int = .word },
34577 .any,
34578 },
34579 .patterns = &.{
34580 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
34581 },
34582 .extra_temps = .{
34583 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34584 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34585 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
34586 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
34587 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
34588 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
34589 .unused,
34590 .unused,
34591 .unused,
34592 .unused,
34593 .unused,
34594 },
34595 .dst_temps = .{ .mem, .{ .cc = .nz } },
34596 .clobbers = .{ .eflags = true },
34597 .each = .{ .once = &.{
34598 .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
34599 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
34600 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
34601 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
34602 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34603 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
34604 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
34605 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
34606 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
34607 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
34608 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
34609 .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
34610 .{ ._, ._, .sub, .tmp5d, .si(1), ._, ._ },
34611 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
34612 .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
34613 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
34614 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
34615 .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34616 .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
34617 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
34618 .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
34619 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
34620 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
34621 .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
34622 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
34623 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
34624 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
34625 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
34626 .{ ._, ._, .@"test", .tmp4q, .tmp4q, ._, ._ },
34627 } },
34628 }, .{
34629 .required_features = .{ .@"64bit", null, null, null },
34630 .src_constraints = .{
34631 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
34632 .{ .unsigned_int = .word },
34633 .any,
34634 },
34635 .patterns = &.{
34636 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
34637 },
34638 .extra_temps = .{
34639 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34640 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34641 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
34642 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
34643 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
34644 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
34645 .unused,
34646 .unused,
34647 .unused,
34648 .unused,
34649 .unused,
34650 },
34651 .dst_temps = .{ .mem, .{ .cc = .nz } },
34652 .clobbers = .{ .eflags = true },
34653 .each = .{ .once = &.{
34654 .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
34655 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
34656 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
34657 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
34658 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34659 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
34660 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
34661 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
34662 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
34663 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
34664 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
34665 .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
34666 .{ ._, ._c, .de, .tmp5d, ._, ._, ._ },
34667 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
34668 .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
34669 .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
34670 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
34671 .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34672 .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
34673 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
34674 .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
34675 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
34676 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
34677 .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
34678 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
34679 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
34680 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
34681 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
34682 .{ ._, ._, .@"test", .tmp4q, .tmp4q, ._, ._ },
34683 } },
34684 }, .{
34685 .required_features = .{ .@"64bit", .slow_incdec, null, null },
34686 .src_constraints = .{
34687 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
34688 .{ .unsigned_int = .byte },
34689 .any,
34690 },
34691 .patterns = &.{
34692 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
34693 },
34694 .extra_temps = .{
34695 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34696 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34697 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
34698 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34699 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34700 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34701 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34702 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34703 .unused,
34704 .unused,
34705 .unused,
34706 },
34707 .dst_temps = .{ .mem, .{ .cc = .nz } },
34708 .clobbers = .{ .eflags = true },
34709 .each = .{ .once = &.{
34710 .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
34711 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
34712 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
34713 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
34714 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34715 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
34716 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
34717 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
34718 .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ },
34719 .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
34720 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
34721 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
34722 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
34723 .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ },
34724 .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ },
34725 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
34726 .{ ._, ._, .sub, .tmp6d, .si(1), ._, ._ },
34727 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
34728 .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
34729 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
34730 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
34731 .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34732 .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ },
34733 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ },
34734 .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ },
34735 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
34736 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
34737 .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ },
34738 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
34739 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
34740 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
34741 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
34742 .{ ._, ._, .mov, .tmp7q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
34743 .{ ._, ._r, .sa, .tmp7q, .ui(63), ._, ._ },
34744 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp7q, ._, ._ },
34745 .{ ._, ._, .xor, .tmp7q, .tmp3q, ._, ._ },
34746 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
34747 } },
34748 }, .{
34749 .required_features = .{ .@"64bit", null, null, null },
34750 .src_constraints = .{
34751 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
34752 .{ .unsigned_int = .byte },
34753 .any,
34754 },
34755 .patterns = &.{
34756 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
34757 },
34758 .extra_temps = .{
34759 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34760 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34761 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
34762 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34763 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34764 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34765 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34766 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34767 .unused,
34768 .unused,
34769 .unused,
34770 },
34771 .dst_temps = .{ .mem, .{ .cc = .nz } },
34772 .clobbers = .{ .eflags = true },
34773 .each = .{ .once = &.{
34774 .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
34775 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
34776 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
34777 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
34778 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34779 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
34780 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
34781 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
34782 .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ },
34783 .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
34784 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
34785 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
34786 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
34787 .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ },
34788 .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ },
34789 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
34790 .{ ._, ._c, .de, .tmp6d, ._, ._, ._ },
34791 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
34792 .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
34793 .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
34794 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
34795 .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34796 .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ },
34797 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ },
34798 .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ },
34799 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
34800 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
34801 .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ },
34802 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
34803 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
34804 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
34805 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
34806 .{ ._, ._, .mov, .tmp7q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
34807 .{ ._, ._r, .sa, .tmp7q, .ui(63), ._, ._ },
34808 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp7q, ._, ._ },
34809 .{ ._, ._, .xor, .tmp7q, .tmp3q, ._, ._ },
34810 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
34811 } },
34812 }, .{
34813 .required_features = .{ .@"64bit", .slow_incdec, null, null },
34814 .src_constraints = .{
34815 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
34816 .{ .unsigned_int = .word },
34817 .any,
34818 },
34819 .patterns = &.{
34820 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
34821 },
34822 .extra_temps = .{
34823 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34824 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34825 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
34826 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34827 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34828 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34829 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34830 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34831 .unused,
34832 .unused,
34833 .unused,
34834 },
34835 .dst_temps = .{ .mem, .{ .cc = .nz } },
34836 .clobbers = .{ .eflags = true },
34837 .each = .{ .once = &.{
34838 .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
34839 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
34840 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
34841 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
34842 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34843 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
34844 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
34845 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
34846 .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ },
34847 .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
34848 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
34849 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
34850 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
34851 .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ },
34852 .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ },
34853 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
34854 .{ ._, ._, .sub, .tmp6d, .si(1), ._, ._ },
34855 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
34856 .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
34857 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
34858 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
34859 .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34860 .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ },
34861 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ },
34862 .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ },
34863 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
34864 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
34865 .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ },
34866 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
34867 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
34868 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
34869 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
34870 .{ ._, ._, .mov, .tmp7q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
34871 .{ ._, ._r, .sa, .tmp7q, .ui(63), ._, ._ },
34872 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp7q, ._, ._ },
34873 .{ ._, ._, .xor, .tmp7q, .tmp3q, ._, ._ },
34874 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
34875 } },
34876 }, .{
34877 .required_features = .{ .@"64bit", null, null, null },
34878 .src_constraints = .{
34879 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
34880 .{ .unsigned_int = .word },
34881 .any,
34882 },
34883 .patterns = &.{
34884 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
34885 },
34886 .extra_temps = .{
34887 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34888 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34889 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
34890 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34891 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34892 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34893 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34894 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
34895 .unused,
34896 .unused,
34897 .unused,
34898 },
34899 .dst_temps = .{ .mem, .{ .cc = .nz } },
34900 .clobbers = .{ .eflags = true },
34901 .each = .{ .once = &.{
34902 .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
34903 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
34904 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
34905 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
34906 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34907 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
34908 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
34909 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
34910 .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ },
34911 .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
34912 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
34913 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
34914 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
34915 .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ },
34916 .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ },
34917 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
34918 .{ ._, ._c, .de, .tmp6d, ._, ._, ._ },
34919 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
34920 .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
34921 .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
34922 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
34923 .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34924 .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ },
34925 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ },
34926 .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ },
34927 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
34928 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
34929 .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ },
34930 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
34931 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
34932 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
34933 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
34934 .{ ._, ._, .mov, .tmp7q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
34935 .{ ._, ._r, .sa, .tmp7q, .ui(63), ._, ._ },
34936 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp7q, ._, ._ },
34937 .{ ._, ._, .xor, .tmp7q, .tmp3q, ._, ._ },
34938 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
34939 } },
34940 }, .{
34941 .required_features = .{ .@"64bit", .slow_incdec, null, null },
34942 .src_constraints = .{
34943 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
34944 .{ .unsigned_int = .byte },
34945 .any,
34946 },
34947 .patterns = &.{
34948 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
34949 },
34950 .extra_temps = .{
34951 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34952 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34953 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
34954 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
34955 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
34956 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
34957 .unused,
34958 .unused,
34959 .unused,
34960 .unused,
34961 .unused,
34962 },
34963 .dst_temps = .{ .mem, .{ .cc = .nz } },
34964 .clobbers = .{ .eflags = true },
34965 .each = .{ .once = &.{
34966 .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
34967 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
34968 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
34969 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
34970 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34971 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
34972 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
34973 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
34974 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
34975 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
34976 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
34977 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
34978 .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
34979 .{ ._, ._, .sub, .tmp5d, .si(1), ._, ._ },
34980 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
34981 .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
34982 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
34983 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
34984 .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
34985 .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
34986 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
34987 .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
34988 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
34989 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
34990 .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
34991 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
34992 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
34993 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
34994 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
34995 .{ ._, ._, .@"test", .tmp4q, .tmp4q, ._, ._ },
34996 } },
34997 }, .{
34998 .required_features = .{ .@"64bit", null, null, null },
34999 .src_constraints = .{
35000 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
35001 .{ .unsigned_int = .byte },
35002 .any,
35003 },
35004 .patterns = &.{
35005 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
35006 },
35007 .extra_temps = .{
35008 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35009 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35010 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
35011 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35012 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35013 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35014 .unused,
35015 .unused,
35016 .unused,
35017 .unused,
35018 .unused,
35019 },
35020 .dst_temps = .{ .mem, .{ .cc = .nz } },
35021 .clobbers = .{ .eflags = true },
35022 .each = .{ .once = &.{
35023 .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
35024 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
35025 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
35026 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
35027 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35028 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
35029 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
35030 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
35031 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
35032 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
35033 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
35034 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
35035 .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
35036 .{ ._, ._c, .de, .tmp5d, ._, ._, ._ },
35037 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
35038 .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
35039 .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
35040 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
35041 .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35042 .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
35043 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
35044 .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
35045 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
35046 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
35047 .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
35048 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
35049 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
35050 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
35051 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
35052 .{ ._, ._, .@"test", .tmp4q, .tmp4q, ._, ._ },
35053 } },
35054 }, .{
35055 .required_features = .{ .@"64bit", .slow_incdec, null, null },
35056 .src_constraints = .{
35057 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
35058 .{ .unsigned_int = .word },
35059 .any,
35060 },
35061 .patterns = &.{
35062 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
35063 },
35064 .extra_temps = .{
35065 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35066 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35067 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
35068 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35069 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35070 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35071 .unused,
35072 .unused,
35073 .unused,
35074 .unused,
35075 .unused,
35076 },
35077 .dst_temps = .{ .mem, .{ .cc = .nz } },
35078 .clobbers = .{ .eflags = true },
35079 .each = .{ .once = &.{
35080 .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
35081 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
35082 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
35083 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
35084 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35085 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
35086 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
35087 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
35088 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
35089 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
35090 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
35091 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
35092 .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
35093 .{ ._, ._, .sub, .tmp5d, .si(1), ._, ._ },
35094 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
35095 .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
35096 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
35097 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
35098 .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35099 .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
35100 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
35101 .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
35102 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
35103 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
35104 .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
35105 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
35106 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
35107 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
35108 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
35109 .{ ._, ._, .@"test", .tmp4q, .tmp4q, ._, ._ },
35110 } },
35111 }, .{
35112 .required_features = .{ .@"64bit", null, null, null },
35113 .src_constraints = .{
35114 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
35115 .{ .unsigned_int = .word },
35116 .any,
35117 },
35118 .patterns = &.{
35119 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
35120 },
35121 .extra_temps = .{
35122 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35123 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35124 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
35125 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35126 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35127 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35128 .unused,
35129 .unused,
35130 .unused,
35131 .unused,
35132 .unused,
35133 },
35134 .dst_temps = .{ .mem, .{ .cc = .nz } },
35135 .clobbers = .{ .eflags = true },
35136 .each = .{ .once = &.{
35137 .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
35138 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
35139 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
35140 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
35141 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35142 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
35143 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
35144 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
35145 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
35146 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
35147 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
35148 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
35149 .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
35150 .{ ._, ._c, .de, .tmp5d, ._, ._, ._ },
35151 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
35152 .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
35153 .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
35154 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
35155 .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35156 .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
35157 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
35158 .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
35159 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
35160 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
35161 .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
35162 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
35163 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
35164 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
35165 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
35166 .{ ._, ._, .@"test", .tmp4q, .tmp4q, ._, ._ },
35167 } },
35168 }, .{
35169 .required_features = .{ .@"64bit", .slow_incdec, null, null },
35170 .src_constraints = .{
35171 .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
35172 .{ .unsigned_int = .byte },
35173 .any,
35174 },
35175 .patterns = &.{
35176 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
35177 },
35178 .extra_temps = .{
35179 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35180 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35181 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
35182 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35183 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35184 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35185 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35186 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35187 .unused,
35188 .unused,
35189 .unused,
35190 },
35191 .dst_temps = .{ .mem, .{ .cc = .nz } },
35192 .clobbers = .{ .eflags = true },
35193 .each = .{ .once = &.{
35194 .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
35195 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
35196 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
35197 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
35198 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35199 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
35200 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
35201 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
35202 .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ },
35203 .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
35204 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
35205 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
35206 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
35207 .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ },
35208 .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ },
35209 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
35210 .{ ._, ._, .sub, .tmp6d, .si(1), ._, ._ },
35211 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
35212 .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
35213 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
35214 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
35215 .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35216 .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ },
35217 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ },
35218 .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ },
35219 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
35220 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
35221 .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ },
35222 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
35223 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
35224 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
35225 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
35226 .{ ._, ._, .mov, .tmp6q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
35227 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
35228 .{ ._, ._l, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
35229 .{ ._, ._r, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
35230 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp6q, ._, ._ },
35231 .{ ._, ._, .xor, .tmp7q, .tmp6q, ._, ._ },
35232 .{ ._, ._r, .sa, .tmp6q, .ui(63), ._, ._ },
35233 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp6q, ._, ._ },
35234 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
35235 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
35236 .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
35237 } },
35238 }, .{
35239 .required_features = .{ .@"64bit", null, null, null },
35240 .src_constraints = .{
35241 .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
35242 .{ .unsigned_int = .byte },
35243 .any,
35244 },
35245 .patterns = &.{
35246 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
35247 },
35248 .extra_temps = .{
35249 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35250 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35251 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
35252 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35253 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35254 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35255 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35256 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35257 .unused,
35258 .unused,
35259 .unused,
35260 },
35261 .dst_temps = .{ .mem, .{ .cc = .nz } },
35262 .clobbers = .{ .eflags = true },
35263 .each = .{ .once = &.{
35264 .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
35265 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
35266 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
35267 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
35268 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35269 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
35270 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
35271 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
35272 .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ },
35273 .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
35274 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
35275 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
35276 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
35277 .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ },
35278 .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ },
35279 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
35280 .{ ._, ._c, .de, .tmp6d, ._, ._, ._ },
35281 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
35282 .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
35283 .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
35284 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
35285 .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35286 .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ },
35287 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ },
35288 .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ },
35289 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
35290 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
35291 .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ },
35292 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
35293 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
35294 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
35295 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
35296 .{ ._, ._, .mov, .tmp6q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
35297 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
35298 .{ ._, ._l, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
35299 .{ ._, ._r, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
35300 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp6q, ._, ._ },
35301 .{ ._, ._, .xor, .tmp7q, .tmp6q, ._, ._ },
35302 .{ ._, ._r, .sa, .tmp6q, .ui(63), ._, ._ },
35303 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp6q, ._, ._ },
35304 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
35305 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
35306 .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
35307 } },
35308 }, .{
35309 .required_features = .{ .@"64bit", .slow_incdec, null, null },
35310 .src_constraints = .{
35311 .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
35312 .{ .unsigned_int = .word },
35313 .any,
35314 },
35315 .patterns = &.{
35316 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
35317 },
35318 .extra_temps = .{
35319 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35320 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35321 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
35322 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35323 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35324 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35325 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35326 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35327 .unused,
35328 .unused,
35329 .unused,
35330 },
35331 .dst_temps = .{ .mem, .{ .cc = .nz } },
35332 .clobbers = .{ .eflags = true },
35333 .each = .{ .once = &.{
35334 .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
35335 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
35336 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
35337 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
35338 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35339 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
35340 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
35341 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
35342 .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ },
35343 .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
35344 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
35345 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
35346 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
35347 .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ },
35348 .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ },
35349 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
35350 .{ ._, ._, .sub, .tmp6d, .si(1), ._, ._ },
35351 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
35352 .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
35353 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
35354 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
35355 .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35356 .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ },
35357 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ },
35358 .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ },
35359 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
35360 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
35361 .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ },
35362 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
35363 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
35364 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
35365 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
35366 .{ ._, ._, .mov, .tmp6q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
35367 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
35368 .{ ._, ._l, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
35369 .{ ._, ._r, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
35370 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp6q, ._, ._ },
35371 .{ ._, ._, .xor, .tmp7q, .tmp6q, ._, ._ },
35372 .{ ._, ._r, .sa, .tmp6q, .ui(63), ._, ._ },
35373 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp6q, ._, ._ },
35374 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
35375 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
35376 .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
35377 } },
35378 }, .{
35379 .required_features = .{ .@"64bit", null, null, null },
35380 .src_constraints = .{
35381 .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
35382 .{ .unsigned_int = .word },
35383 .any,
35384 },
35385 .patterns = &.{
35386 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
35387 },
35388 .extra_temps = .{
35389 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35390 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35391 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
35392 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35393 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35394 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35395 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35396 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35397 .unused,
35398 .unused,
35399 .unused,
35400 },
35401 .dst_temps = .{ .mem, .{ .cc = .nz } },
35402 .clobbers = .{ .eflags = true },
35403 .each = .{ .once = &.{
35404 .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
35405 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
35406 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
35407 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
35408 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35409 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
35410 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
35411 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
35412 .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ },
35413 .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
35414 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
35415 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
35416 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
35417 .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ },
35418 .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ },
35419 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
35420 .{ ._, ._c, .de, .tmp6d, ._, ._, ._ },
35421 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
35422 .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
35423 .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
35424 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
35425 .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35426 .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ },
35427 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ },
35428 .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ },
35429 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
35430 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
35431 .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ },
35432 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
35433 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
35434 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
35435 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
35436 .{ ._, ._, .mov, .tmp6q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
35437 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
35438 .{ ._, ._l, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
35439 .{ ._, ._r, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
35440 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp6q, ._, ._ },
35441 .{ ._, ._, .xor, .tmp7q, .tmp6q, ._, ._ },
35442 .{ ._, ._r, .sa, .tmp6q, .ui(63), ._, ._ },
35443 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp6q, ._, ._ },
35444 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
35445 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
35446 .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
35447 } },
35448 }, .{
35449 .required_features = .{ .@"64bit", .bmi, .slow_incdec, null },
35450 .src_constraints = .{
35451 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
35452 .{ .unsigned_int = .byte },
35453 .any,
35454 },
35455 .patterns = &.{
35456 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
35457 },
35458 .extra_temps = .{
35459 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35460 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35461 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
35462 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35463 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35464 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35465 .unused,
35466 .unused,
35467 .unused,
35468 .unused,
35469 .unused,
35470 },
35471 .dst_temps = .{ .mem, .{ .cc = .nz } },
35472 .clobbers = .{ .eflags = true },
35473 .each = .{ .once = &.{
35474 .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
35475 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
35476 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
35477 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
35478 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35479 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
35480 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
35481 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
35482 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
35483 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
35484 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
35485 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
35486 .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
35487 .{ ._, ._, .sub, .tmp5d, .si(1), ._, ._ },
35488 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
35489 .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
35490 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
35491 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
35492 .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35493 .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
35494 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
35495 .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
35496 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
35497 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
35498 .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
35499 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
35500 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
35501 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
35502 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
35503 .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_umax), ._, ._ },
35504 .{ ._, ._, .mov, .tmp3q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
35505 .{ ._, ._, .andn, .tmp5q, .tmp2q, .tmp3q, ._ },
35506 .{ ._, ._, .@"and", .tmp2q, .tmp3q, ._, ._ },
35507 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp2q, ._, ._ },
35508 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
35509 } },
35510 }, .{
35511 .required_features = .{ .@"64bit", .bmi, null, null },
35512 .src_constraints = .{
35513 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
35514 .{ .unsigned_int = .byte },
35515 .any,
35516 },
35517 .patterns = &.{
35518 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
35519 },
35520 .extra_temps = .{
35521 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35522 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35523 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
35524 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35525 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35526 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35527 .unused,
35528 .unused,
35529 .unused,
35530 .unused,
35531 .unused,
35532 },
35533 .dst_temps = .{ .mem, .{ .cc = .nz } },
35534 .clobbers = .{ .eflags = true },
35535 .each = .{ .once = &.{
35536 .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
35537 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
35538 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
35539 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
35540 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35541 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
35542 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
35543 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
35544 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
35545 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
35546 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
35547 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
35548 .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
35549 .{ ._, ._c, .de, .tmp5d, ._, ._, ._ },
35550 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
35551 .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
35552 .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
35553 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
35554 .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35555 .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
35556 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
35557 .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
35558 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
35559 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
35560 .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
35561 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
35562 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
35563 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
35564 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
35565 .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_umax), ._, ._ },
35566 .{ ._, ._, .mov, .tmp3q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
35567 .{ ._, ._, .andn, .tmp5q, .tmp2q, .tmp3q, ._ },
35568 .{ ._, ._, .@"and", .tmp2q, .tmp3q, ._, ._ },
35569 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp2q, ._, ._ },
35570 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
35571 } },
35572 }, .{
35573 .required_features = .{ .@"64bit", .slow_incdec, null, null },
35574 .src_constraints = .{
35575 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
35576 .{ .unsigned_int = .byte },
35577 .any,
35578 },
35579 .patterns = &.{
35580 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
35581 },
35582 .extra_temps = .{
35583 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35584 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35585 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
35586 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35587 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35588 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35589 .unused,
35590 .unused,
35591 .unused,
35592 .unused,
35593 .unused,
35594 },
35595 .dst_temps = .{ .mem, .{ .cc = .nz } },
35596 .clobbers = .{ .eflags = true },
35597 .each = .{ .once = &.{
35598 .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
35599 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
35600 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
35601 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
35602 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35603 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
35604 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
35605 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
35606 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
35607 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
35608 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
35609 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
35610 .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
35611 .{ ._, ._, .sub, .tmp5d, .si(1), ._, ._ },
35612 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
35613 .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
35614 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
35615 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
35616 .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35617 .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
35618 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
35619 .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
35620 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
35621 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
35622 .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
35623 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
35624 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
35625 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
35626 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
35627 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
35628 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
35629 .{ ._, ._, .@"and", .tmp3q, .tmp5q, ._, ._ },
35630 .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
35631 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp3q, ._, ._ },
35632 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
35633 } },
35634 }, .{
35635 .required_features = .{ .@"64bit", null, null, null },
35636 .src_constraints = .{
35637 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
35638 .{ .unsigned_int = .byte },
35639 .any,
35640 },
35641 .patterns = &.{
35642 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
35643 },
35644 .extra_temps = .{
35645 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35646 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35647 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
35648 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35649 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35650 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35651 .unused,
35652 .unused,
35653 .unused,
35654 .unused,
35655 .unused,
35656 },
35657 .dst_temps = .{ .mem, .{ .cc = .nz } },
35658 .clobbers = .{ .eflags = true },
35659 .each = .{ .once = &.{
35660 .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
35661 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
35662 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
35663 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
35664 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35665 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
35666 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
35667 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
35668 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
35669 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
35670 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
35671 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
35672 .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
35673 .{ ._, ._c, .de, .tmp5d, ._, ._, ._ },
35674 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
35675 .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
35676 .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
35677 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
35678 .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35679 .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
35680 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
35681 .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
35682 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
35683 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
35684 .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
35685 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
35686 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
35687 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
35688 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
35689 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
35690 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
35691 .{ ._, ._, .@"and", .tmp3q, .tmp5q, ._, ._ },
35692 .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
35693 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp3q, ._, ._ },
35694 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
35695 } },
35696 }, .{
35697 .required_features = .{ .@"64bit", .bmi, .slow_incdec, null },
35698 .src_constraints = .{
35699 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
35700 .{ .unsigned_int = .word },
35701 .any,
35702 },
35703 .patterns = &.{
35704 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
35705 },
35706 .extra_temps = .{
35707 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35708 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35709 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
35710 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35711 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35712 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35713 .unused,
35714 .unused,
35715 .unused,
35716 .unused,
35717 .unused,
35718 },
35719 .dst_temps = .{ .mem, .{ .cc = .nz } },
35720 .clobbers = .{ .eflags = true },
35721 .each = .{ .once = &.{
35722 .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
35723 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
35724 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
35725 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
35726 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35727 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
35728 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
35729 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
35730 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
35731 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
35732 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
35733 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
35734 .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
35735 .{ ._, ._, .sub, .tmp5d, .si(1), ._, ._ },
35736 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
35737 .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
35738 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
35739 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
35740 .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35741 .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
35742 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
35743 .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
35744 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
35745 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
35746 .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
35747 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
35748 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
35749 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
35750 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
35751 .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_umax), ._, ._ },
35752 .{ ._, ._, .mov, .tmp3q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
35753 .{ ._, ._, .andn, .tmp5q, .tmp2q, .tmp3q, ._ },
35754 .{ ._, ._, .@"and", .tmp2q, .tmp3q, ._, ._ },
35755 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp2q, ._, ._ },
35756 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
35757 } },
35758 }, .{
35759 .required_features = .{ .@"64bit", .bmi, null, null },
35760 .src_constraints = .{
35761 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
35762 .{ .unsigned_int = .word },
35763 .any,
35764 },
35765 .patterns = &.{
35766 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
35767 },
35768 .extra_temps = .{
35769 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35770 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35771 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
35772 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35773 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35774 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35775 .unused,
35776 .unused,
35777 .unused,
35778 .unused,
35779 .unused,
35780 },
35781 .dst_temps = .{ .mem, .{ .cc = .nz } },
35782 .clobbers = .{ .eflags = true },
35783 .each = .{ .once = &.{
35784 .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
35785 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
35786 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
35787 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
35788 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35789 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
35790 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
35791 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
35792 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
35793 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
35794 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
35795 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
35796 .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
35797 .{ ._, ._c, .de, .tmp5d, ._, ._, ._ },
35798 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
35799 .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
35800 .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
35801 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
35802 .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35803 .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
35804 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
35805 .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
35806 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
35807 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
35808 .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
35809 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
35810 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
35811 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
35812 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
35813 .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_umax), ._, ._ },
35814 .{ ._, ._, .mov, .tmp3q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
35815 .{ ._, ._, .andn, .tmp5q, .tmp2q, .tmp3q, ._ },
35816 .{ ._, ._, .@"and", .tmp2q, .tmp3q, ._, ._ },
35817 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp2q, ._, ._ },
35818 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
35819 } },
35820 }, .{
35821 .required_features = .{ .@"64bit", .slow_incdec, null, null },
35822 .src_constraints = .{
35823 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
35824 .{ .unsigned_int = .word },
35825 .any,
35826 },
35827 .patterns = &.{
35828 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
35829 },
35830 .extra_temps = .{
35831 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35832 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35833 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
35834 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35835 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35836 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35837 .unused,
35838 .unused,
35839 .unused,
35840 .unused,
35841 .unused,
35842 },
35843 .dst_temps = .{ .mem, .{ .cc = .nz } },
35844 .clobbers = .{ .eflags = true },
35845 .each = .{ .once = &.{
35846 .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
35847 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
35848 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
35849 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
35850 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35851 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
35852 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
35853 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
35854 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
35855 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
35856 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
35857 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
35858 .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
35859 .{ ._, ._, .sub, .tmp5d, .si(1), ._, ._ },
35860 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
35861 .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
35862 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
35863 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
35864 .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35865 .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
35866 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
35867 .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
35868 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
35869 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
35870 .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
35871 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
35872 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
35873 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
35874 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
35875 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
35876 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
35877 .{ ._, ._, .@"and", .tmp3q, .tmp5q, ._, ._ },
35878 .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
35879 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp3q, ._, ._ },
35880 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
35881 } },
35882 }, .{
35883 .required_features = .{ .@"64bit", null, null, null },
35884 .src_constraints = .{
35885 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
35886 .{ .unsigned_int = .word },
35887 .any,
35888 },
35889 .patterns = &.{
35890 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
35891 },
35892 .extra_temps = .{
35893 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35894 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35895 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
35896 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35897 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35898 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
35899 .unused,
35900 .unused,
35901 .unused,
35902 .unused,
35903 .unused,
35904 },
35905 .dst_temps = .{ .mem, .{ .cc = .nz } },
35906 .clobbers = .{ .eflags = true },
35907 .each = .{ .once = &.{
35908 .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
35909 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
35910 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
35911 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
35912 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35913 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
35914 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
35915 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
35916 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
35917 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
35918 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
35919 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
35920 .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
35921 .{ ._, ._c, .de, .tmp5d, ._, ._, ._ },
35922 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
35923 .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
35924 .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
35925 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
35926 .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35927 .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
35928 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
35929 .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
35930 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
35931 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
35932 .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
35933 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
35934 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
35935 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
35936 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
35937 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
35938 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
35939 .{ ._, ._, .@"and", .tmp3q, .tmp5q, ._, ._ },
35940 .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
35941 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp3q, ._, ._ },
35942 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
35943 } },
35944 }, .{
35945 .required_features = .{ .@"64bit", .slow_incdec, null, null },
35946 .src_constraints = .{
35947 .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
35948 .{ .unsigned_int = .byte },
35949 .any,
35950 },
35951 .patterns = &.{
35952 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
35953 },
35954 .extra_temps = .{
35955 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35956 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
35957 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
35958 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35959 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35960 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35961 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35962 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35963 .unused,
35964 .unused,
35965 .unused,
35966 },
35967 .dst_temps = .{ .mem, .{ .cc = .nz } },
35968 .clobbers = .{ .eflags = true },
35969 .each = .{ .once = &.{
35970 .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
35971 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
35972 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
35973 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
35974 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35975 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
35976 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
35977 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
35978 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
35979 .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ },
35980 .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
35981 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
35982 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
35983 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
35984 .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ },
35985 .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ },
35986 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
35987 .{ ._, ._, .sub, .tmp6d, .si(1), ._, ._ },
35988 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
35989 .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
35990 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
35991 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
35992 .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
35993 .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ },
35994 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ },
35995 .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ },
35996 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
35997 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
35998 .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ },
35999 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
36000 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
36001 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
36002 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
36003 .{ ._, ._, .mov, .tmp6q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
36004 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
36005 .{ ._, ._l, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
36006 .{ ._, ._r, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
36007 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp6q, ._, ._ },
36008 .{ ._, ._, .xor, .tmp7q, .tmp6q, ._, ._ },
36009 .{ ._, ._r, .sa, .tmp6q, .ui(63), ._, ._ },
36010 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
36011 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
36012 .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
36013 } },
36014 }, .{
36015 .required_features = .{ .@"64bit", null, null, null },
36016 .src_constraints = .{
36017 .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
36018 .{ .unsigned_int = .byte },
36019 .any,
36020 },
36021 .patterns = &.{
36022 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
36023 },
36024 .extra_temps = .{
36025 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
36026 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
36027 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
36028 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
36029 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
36030 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
36031 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
36032 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
36033 .unused,
36034 .unused,
36035 .unused,
36036 },
36037 .dst_temps = .{ .mem, .{ .cc = .nz } },
36038 .clobbers = .{ .eflags = true },
36039 .each = .{ .once = &.{
36040 .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
36041 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
36042 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
36043 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
36044 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
36045 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
36046 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
36047 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
36048 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
36049 .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ },
36050 .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
36051 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
36052 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
36053 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
36054 .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ },
36055 .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ },
36056 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
36057 .{ ._, ._c, .de, .tmp6d, ._, ._, ._ },
36058 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
36059 .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
36060 .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
36061 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
36062 .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
36063 .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ },
36064 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ },
36065 .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ },
36066 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
36067 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
36068 .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ },
36069 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
36070 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
36071 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
36072 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
36073 .{ ._, ._, .mov, .tmp6q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
36074 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
36075 .{ ._, ._l, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
36076 .{ ._, ._r, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
36077 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp6q, ._, ._ },
36078 .{ ._, ._, .xor, .tmp7q, .tmp6q, ._, ._ },
36079 .{ ._, ._r, .sa, .tmp6q, .ui(63), ._, ._ },
36080 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
36081 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
36082 .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
36083 } },
36084 }, .{
36085 .required_features = .{ .@"64bit", .slow_incdec, null, null },
36086 .src_constraints = .{
36087 .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
36088 .{ .unsigned_int = .word },
36089 .any,
36090 },
36091 .patterns = &.{
36092 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
36093 },
36094 .extra_temps = .{
36095 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
36096 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
36097 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
36098 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
36099 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
36100 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
36101 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
36102 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
36103 .unused,
36104 .unused,
36105 .unused,
36106 },
36107 .dst_temps = .{ .mem, .{ .cc = .nz } },
36108 .clobbers = .{ .eflags = true },
36109 .each = .{ .once = &.{
36110 .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
36111 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
36112 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
36113 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
36114 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
36115 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
36116 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
36117 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
36118 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
36119 .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ },
36120 .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
36121 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
36122 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
36123 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
36124 .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ },
36125 .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ },
36126 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
36127 .{ ._, ._, .sub, .tmp6d, .si(1), ._, ._ },
36128 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
36129 .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
36130 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
36131 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
36132 .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
36133 .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ },
36134 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ },
36135 .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ },
36136 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
36137 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
36138 .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ },
36139 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
36140 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
36141 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
36142 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
36143 .{ ._, ._, .mov, .tmp6q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
36144 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
36145 .{ ._, ._l, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
36146 .{ ._, ._r, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
36147 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp6q, ._, ._ },
36148 .{ ._, ._, .xor, .tmp7q, .tmp6q, ._, ._ },
36149 .{ ._, ._r, .sa, .tmp6q, .ui(63), ._, ._ },
36150 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
36151 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
36152 .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
36153 } },
36154 }, .{
36155 .required_features = .{ .@"64bit", null, null, null },
36156 .src_constraints = .{
36157 .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
36158 .{ .unsigned_int = .word },
36159 .any,
36160 },
36161 .patterns = &.{
36162 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
36163 },
36164 .extra_temps = .{
36165 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
36166 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
36167 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
36168 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
36169 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
36170 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
36171 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
36172 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
36173 .unused,
36174 .unused,
36175 .unused,
36176 },
36177 .dst_temps = .{ .mem, .{ .cc = .nz } },
36178 .clobbers = .{ .eflags = true },
36179 .each = .{ .once = &.{
36180 .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
36181 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
36182 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
36183 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
36184 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
36185 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
36186 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
36187 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
36188 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
36189 .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ },
36190 .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
36191 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
36192 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
36193 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
36194 .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ },
36195 .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ },
36196 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
36197 .{ ._, ._c, .de, .tmp6d, ._, ._, ._ },
36198 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
36199 .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
36200 .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
36201 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
36202 .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
36203 .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ },
36204 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ },
36205 .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ },
36206 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
36207 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
36208 .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ },
36209 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
36210 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
36211 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
36212 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
36213 .{ ._, ._, .mov, .tmp6q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
36214 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
36215 .{ ._, ._l, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
36216 .{ ._, ._r, .sa, .tmp6q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
36217 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp6q, ._, ._ },
36218 .{ ._, ._, .xor, .tmp7q, .tmp6q, ._, ._ },
36219 .{ ._, ._r, .sa, .tmp6q, .ui(63), ._, ._ },
36220 .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ },
36221 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
36222 .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
36223 } },
36224 }, .{
36225 .required_features = .{ .@"64bit", .bmi, .slow_incdec, null },
36226 .src_constraints = .{
36227 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
36228 .{ .unsigned_int = .byte },
36229 .any,
36230 },
36231 .patterns = &.{
36232 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
36233 },
36234 .extra_temps = .{
36235 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
36236 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
36237 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
36238 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
36239 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
36240 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
36241 .unused,
36242 .unused,
36243 .unused,
36244 .unused,
36245 .unused,
36246 },
36247 .dst_temps = .{ .mem, .{ .cc = .nz } },
36248 .clobbers = .{ .eflags = true },
36249 .each = .{ .once = &.{
36250 .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
36251 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
36252 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
36253 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
36254 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
36255 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
36256 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
36257 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
36258 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
36259 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
36260 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
36261 .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
36262 .{ ._, ._, .sub, .tmp5d, .si(1), ._, ._ },
36263 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
36264 .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
36265 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
36266 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
36267 .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
36268 .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
36269 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
36270 .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
36271 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
36272 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
36273 .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
36274 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
36275 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
36276 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
36277 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
36278 .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_umax), ._, ._ },
36279 .{ ._, ._, .mov, .tmp3q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
36280 .{ ._, ._, .andn, .tmp5q, .tmp2q, .tmp3q, ._ },
36281 .{ ._, ._, .@"and", .tmp2q, .tmp3q, ._, ._ },
36282 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp2q, ._, ._ },
36283 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
36284 } },
36285 }, .{
36286 .required_features = .{ .@"64bit", .bmi, null, null },
3292736287 .src_constraints = .{
32928 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32929 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
36288 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
36289 .{ .unsigned_int = .byte },
3293036290 .any,
3293136291 },
3293236292 .patterns = &.{
32933 .{ .src = .{ .to_mem, .to_mem, .none } },
36293 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
3293436294 },
3293536295 .extra_temps = .{
32936 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36296 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
36297 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3293736298 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
3293836299 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32939 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3294036300 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32941 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
3294236301 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32943 .{ .type = .u64, .kind = .{ .reg = .rax } },
32944 .{ .type = .u64, .kind = .{ .reg = .rdx } },
36302 .unused,
36303 .unused,
36304 .unused,
3294536305 .unused,
3294636306 .unused,
3294736307 },
3294836308 .dst_temps = .{ .mem, .{ .cc = .nz } },
3294936309 .clobbers = .{ .eflags = true },
3295036310 .each = .{ .once = &.{
32951 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
32952 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
32953 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
32954 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
36311 .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
36312 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
36313 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
36314 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
36315 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
36316 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
3295536317 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
32956 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
32957 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
32958 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
32959 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
32960 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
32961 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
32962 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
32963 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
32964 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
32965 .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
32966 .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
32967 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
32968 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
32969 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
32970 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
32971 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
32972 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
32973 .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
32974 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
32975 .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
32976 .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
32977 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
32978 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
32979 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
32980 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
32981 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
32982 .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
32983 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
32984 .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
32985 .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
32986 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
32987 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
32988 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
32989 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
36318 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
36319 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
36320 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
36321 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
36322 .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
36323 .{ ._, ._c, .de, .tmp5d, ._, ._, ._ },
36324 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
36325 .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
36326 .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
36327 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
36328 .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
36329 .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
36330 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
36331 .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
36332 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
36333 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
36334 .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
36335 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
36336 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
36337 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
36338 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
36339 .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_umax), ._, ._ },
36340 .{ ._, ._, .mov, .tmp3q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
36341 .{ ._, ._, .andn, .tmp5q, .tmp2q, .tmp3q, ._ },
36342 .{ ._, ._, .@"and", .tmp2q, .tmp3q, ._, ._ },
36343 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp2q, ._, ._ },
36344 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
3299036345 } },
3299136346 }, .{
32992 .required_features = .{ .@"64bit", null, null, null },
36347 .required_features = .{ .@"64bit", .slow_incdec, null, null },
3299336348 .src_constraints = .{
32994 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32995 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
36349 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
36350 .{ .unsigned_int = .byte },
3299636351 .any,
3299736352 },
3299836353 .patterns = &.{
32999 .{ .src = .{ .to_mem, .to_mem, .none } },
36354 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
3300036355 },
3300136356 .extra_temps = .{
33002 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36357 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
36358 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3300336359 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
3300436360 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33005 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3300636361 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33007 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
3300836362 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33009 .{ .type = .u64, .kind = .{ .reg = .rax } },
33010 .{ .type = .u64, .kind = .{ .reg = .rdx } },
36363 .unused,
36364 .unused,
36365 .unused,
3301136366 .unused,
3301236367 .unused,
3301336368 },
3301436369 .dst_temps = .{ .mem, .{ .cc = .nz } },
3301536370 .clobbers = .{ .eflags = true },
3301636371 .each = .{ .once = &.{
33017 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
33018 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
33019 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
33020 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
36372 .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
36373 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
36374 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
36375 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
36376 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
36377 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
3302136378 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
33022 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
33023 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
33024 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
33025 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
33026 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
33027 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
33028 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
33029 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
33030 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
33031 .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
33032 .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
33033 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
33034 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
33035 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
33036 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
33037 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
33038 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
33039 .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
33040 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
33041 .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
33042 .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
33043 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
33044 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
33045 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
33046 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
33047 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
33048 .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
33049 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
33050 .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
33051 .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
33052 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33053 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
33054 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
33055 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
36379 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
36380 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
36381 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
36382 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
36383 .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
36384 .{ ._, ._, .sub, .tmp5d, .si(1), ._, ._ },
36385 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
36386 .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
36387 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
36388 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
36389 .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
36390 .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
36391 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
36392 .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
36393 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
36394 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
36395 .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
36396 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
36397 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
36398 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
36399 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
36400 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
36401 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
36402 .{ ._, ._, .@"and", .tmp3q, .tmp5q, ._, ._ },
36403 .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
36404 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp3q, ._, ._ },
36405 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
3305636406 } },
3305736407 }, .{
33058 .required_features = .{ .@"64bit", .bmi2, .adx, null },
36408 .required_features = .{ .@"64bit", null, null, null },
3305936409 .src_constraints = .{
3306036410 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33061 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
36411 .{ .unsigned_int = .byte },
3306236412 .any,
3306336413 },
3306436414 .patterns = &.{
33065 .{ .src = .{ .to_mem, .to_mem, .none } },
36415 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
3306636416 },
3306736417 .extra_temps = .{
33068 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36418 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
36419 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3306936420 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
3307036421 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
3307136422 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33072 .{ .type = .u64, .kind = .{ .reg = .rdx } },
33073 .{ .type = .isize, .kind = .{ .reg = .rcx } },
33074 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33075 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
3307636423 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
3307736424 .unused,
3307836425 .unused,
36426 .unused,
36427 .unused,
36428 .unused,
3307936429 },
3308036430 .dst_temps = .{ .mem, .{ .cc = .nz } },
3308136431 .clobbers = .{ .eflags = true },
3308236432 .each = .{ .once = &.{
33083 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
33084 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
33085 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
36433 .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ },
36434 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
36435 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
36436 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
36437 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
36438 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
36439 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
36440 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
36441 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
36442 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
36443 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
36444 .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
36445 .{ ._, ._c, .de, .tmp5d, ._, ._, ._ },
36446 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
36447 .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
36448 .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
36449 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
36450 .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
36451 .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
36452 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
36453 .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
36454 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
36455 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
36456 .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
36457 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
3308636458 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
33087 .{ .@"0:", ._, .xor, .tmp4d, .tmp4d, ._, ._ },
33088 .{ ._, ._, .@"or", .tmp4q, .memi(.src0q, .tmp0), ._, ._ },
33089 .{ ._, ._z, .j, .@"2f", ._, ._, ._ },
33090 .{ ._, ._, .lea, .tmp5p, .leaad(.tmp0, .sub_src0_size, 8), ._, ._ },
33091 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
33092 .{ .@"1:", ._x, .mul, .tmp8q, .tmp7q, .leai(.tmp1q, .tmp5), ._ },
33093 .{ ._, ._x, .adc, .tmp7q, .tmp6q, ._, ._ },
33094 .{ ._, ._, .mov, .memiad(.dst0q, .tmp5, .add_src0_size, -8), .tmp7q, ._, ._ },
33095 .{ ._, ._rcxz, .j, .@"1f", ._, ._, ._ },
33096 .{ ._, ._x, .ado, .tmp8q, .memia(.dst0q, .tmp5, .add_src0_size), ._, ._ },
33097 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
33098 .{ ._, ._, .lea, .tmp5p, .lead(.tmp5, 8), ._, ._ },
33099 .{ ._, ._mp, .j, .@"1b", ._, ._, ._ },
33100 .{ .@"2:", ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
33101 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
33102 .{ .@"1:", ._, .mov, .tmp4d, .tmp0d, ._, ._ },
33103 .{ ._, ._x, .ado, .tmp8q, .tmp3q, ._, ._ },
33104 .{ ._, ._x, .adc, .tmp8q, .tmp3q, ._, ._ },
33105 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
33106 .{ .@"1:", ._, .@"or", .tmp8q, .leai(.tmp1q, .tmp4), ._, ._ },
33107 .{ .@"2:", ._, .sub, .tmp4d, .si(8), ._, ._ },
33108 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
33109 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
33110 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
33111 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
33112 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
33113 .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33114 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
33115 .{ ._, ._, .bzhi, .tmp0q, .tmp1q, .tmp0q, ._ },
33116 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33117 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
33118 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
36459 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
36460 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
36461 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
36462 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
36463 .{ ._, ._, .@"and", .tmp3q, .tmp5q, ._, ._ },
36464 .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
36465 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp3q, ._, ._ },
36466 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
3311936467 } },
3312036468 }, .{
33121 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
36469 .required_features = .{ .@"64bit", .bmi, .slow_incdec, null },
3312236470 .src_constraints = .{
3312336471 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33124 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
36472 .{ .unsigned_int = .word },
3312536473 .any,
3312636474 },
3312736475 .patterns = &.{
33128 .{ .src = .{ .to_mem, .to_mem, .none } },
36476 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
3312936477 },
3313036478 .extra_temps = .{
33131 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36479 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
36480 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3313236481 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
3313336482 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33134 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33135 .{ .type = .u64, .kind = .{ .reg = .rdx } },
33136 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
33137 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
3313836483 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
3313936484 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
3314036485 .unused,
3314136486 .unused,
36487 .unused,
36488 .unused,
36489 .unused,
3314236490 },
3314336491 .dst_temps = .{ .mem, .{ .cc = .nz } },
3314436492 .clobbers = .{ .eflags = true },
3314536493 .each = .{ .once = &.{
33146 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
33147 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
33148 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
33149 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
36494 .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
36495 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
36496 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
36497 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
36498 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
36499 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
3315036500 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
33151 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
33152 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
33153 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
33154 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
33155 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
33156 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
33157 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
33158 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
33159 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
33160 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
33161 .{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
33162 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
33163 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
33164 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
33165 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
33166 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
33167 .{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
33168 .{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
33169 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
33170 .{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
33171 .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
33172 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
33173 .{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
33174 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
36501 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
36502 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
36503 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
36504 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
36505 .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
36506 .{ ._, ._, .sub, .tmp5d, .si(1), ._, ._ },
36507 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
36508 .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
36509 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
36510 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
36511 .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
36512 .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
36513 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
36514 .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
36515 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
36516 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
36517 .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
36518 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
36519 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
3317536520 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
3317636521 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
33177 .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33178 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
33179 .{ ._, ._, .bzhi, .tmp0q, .tmp1q, .tmp0q, ._ },
33180 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33181 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
33182 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
36522 .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_umax), ._, ._ },
36523 .{ ._, ._, .mov, .tmp3q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
36524 .{ ._, ._, .andn, .tmp5q, .tmp2q, .tmp3q, ._ },
36525 .{ ._, ._, .@"and", .tmp2q, .tmp3q, ._, ._ },
36526 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp2q, ._, ._ },
36527 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
3318336528 } },
3318436529 }, .{
33185 .required_features = .{ .@"64bit", .bmi2, null, null },
36530 .required_features = .{ .@"64bit", .bmi, null, null },
3318636531 .src_constraints = .{
3318736532 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33188 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
36533 .{ .unsigned_int = .word },
3318936534 .any,
3319036535 },
3319136536 .patterns = &.{
33192 .{ .src = .{ .to_mem, .to_mem, .none } },
36537 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
3319336538 },
3319436539 .extra_temps = .{
33195 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36540 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
36541 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3319636542 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
3319736543 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33198 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33199 .{ .type = .u64, .kind = .{ .reg = .rdx } },
33200 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
33201 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
3320236544 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
3320336545 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
3320436546 .unused,
3320536547 .unused,
36548 .unused,
36549 .unused,
36550 .unused,
3320636551 },
3320736552 .dst_temps = .{ .mem, .{ .cc = .nz } },
3320836553 .clobbers = .{ .eflags = true },
3320936554 .each = .{ .once = &.{
33210 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
33211 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
33212 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
33213 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
36555 .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
36556 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
36557 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
36558 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
36559 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
36560 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
3321436561 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
33215 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
33216 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
33217 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
33218 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
33219 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
33220 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
33221 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
33222 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
33223 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
33224 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
33225 .{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
33226 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
33227 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
33228 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
33229 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
33230 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
33231 .{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
33232 .{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
33233 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
33234 .{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
33235 .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
33236 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
33237 .{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
33238 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
36562 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
36563 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
36564 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
36565 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
36566 .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
36567 .{ ._, ._c, .de, .tmp5d, ._, ._, ._ },
36568 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
36569 .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
36570 .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
36571 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
36572 .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
36573 .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
36574 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
36575 .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
36576 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
36577 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
36578 .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
36579 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
36580 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
3323936581 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
3324036582 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
33241 .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33242 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
33243 .{ ._, ._, .bzhi, .tmp0q, .tmp1q, .tmp0q, ._ },
33244 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33245 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
33246 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
36583 .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_umax), ._, ._ },
36584 .{ ._, ._, .mov, .tmp3q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
36585 .{ ._, ._, .andn, .tmp5q, .tmp2q, .tmp3q, ._ },
36586 .{ ._, ._, .@"and", .tmp2q, .tmp3q, ._, ._ },
36587 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp2q, ._, ._ },
36588 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
3324736589 } },
3324836590 }, .{
3324936591 .required_features = .{ .@"64bit", .slow_incdec, null, null },
3325036592 .src_constraints = .{
3325136593 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33252 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
36594 .{ .unsigned_int = .word },
3325336595 .any,
3325436596 },
3325536597 .patterns = &.{
33256 .{ .src = .{ .to_mem, .to_mem, .none } },
36598 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
3325736599 },
3325836600 .extra_temps = .{
33259 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36601 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
36602 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3326036603 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
3326136604 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33262 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3326336605 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33264 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
3326536606 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33266 .{ .type = .u64, .kind = .{ .reg = .rax } },
33267 .{ .type = .u64, .kind = .{ .reg = .rdx } },
36607 .unused,
36608 .unused,
36609 .unused,
3326836610 .unused,
3326936611 .unused,
3327036612 },
3327136613 .dst_temps = .{ .mem, .{ .cc = .nz } },
3327236614 .clobbers = .{ .eflags = true },
3327336615 .each = .{ .once = &.{
33274 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
33275 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
33276 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
33277 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
36616 .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
36617 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
36618 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
36619 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
36620 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
36621 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
3327836622 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
33279 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
33280 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
33281 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
33282 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
33283 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
33284 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
33285 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
33286 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
33287 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
33288 .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
33289 .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
33290 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
33291 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
33292 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
33293 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
33294 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
33295 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
33296 .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
33297 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
33298 .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
33299 .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
33300 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
33301 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
33302 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
36623 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
36624 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
36625 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
36626 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
36627 .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
36628 .{ ._, ._, .sub, .tmp5d, .si(1), ._, ._ },
36629 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
36630 .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ },
36631 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
36632 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
36633 .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
36634 .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
36635 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
36636 .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
36637 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
36638 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
36639 .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
36640 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
36641 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
3330336642 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
3330436643 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
33305 .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
33306 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
33307 .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
33308 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33309 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
33310 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
36644 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
36645 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
36646 .{ ._, ._, .@"and", .tmp3q, .tmp5q, ._, ._ },
36647 .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
36648 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp3q, ._, ._ },
36649 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
3331136650 } },
3331236651 }, .{
3331336652 .required_features = .{ .@"64bit", null, null, null },
3331436653 .src_constraints = .{
3331536654 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33316 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
36655 .{ .unsigned_int = .word },
3331736656 .any,
3331836657 },
3331936658 .patterns = &.{
33320 .{ .src = .{ .to_mem, .to_mem, .none } },
36659 .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } },
3332136660 },
3332236661 .extra_temps = .{
33323 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36662 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
36663 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3332436664 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
3332536665 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33326 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3332736666 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33328 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
3332936667 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33330 .{ .type = .u64, .kind = .{ .reg = .rax } },
33331 .{ .type = .u64, .kind = .{ .reg = .rdx } },
36668 .unused,
36669 .unused,
36670 .unused,
3333236671 .unused,
3333336672 .unused,
3333436673 },
3333536674 .dst_temps = .{ .mem, .{ .cc = .nz } },
3333636675 .clobbers = .{ .eflags = true },
3333736676 .each = .{ .once = &.{
33338 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
33339 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
33340 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
33341 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
36677 .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ },
36678 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
36679 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
36680 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
36681 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
36682 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
3334236683 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
33343 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
33344 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
33345 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
33346 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
33347 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
33348 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
33349 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
33350 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
33351 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
33352 .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
33353 .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
33354 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
33355 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
33356 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
33357 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
33358 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
33359 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
33360 .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
33361 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
33362 .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
33363 .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
33364 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
33365 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
33366 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
36684 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
36685 .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ },
36686 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
36687 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
36688 .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
36689 .{ ._, ._c, .de, .tmp5d, ._, ._, ._ },
36690 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
36691 .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ },
36692 .{ ._, ._s, .j, .@"1f", ._, ._, ._ },
36693 .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ },
36694 .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
36695 .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ },
36696 .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ },
36697 .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ },
36698 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
36699 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
36700 .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ },
36701 .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ },
36702 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
3336736703 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
3336836704 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
33369 .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
33370 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
33371 .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
33372 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33373 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
33374 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
36705 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
36706 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
36707 .{ ._, ._, .@"and", .tmp3q, .tmp5q, ._, ._ },
36708 .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ },
36709 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp3q, ._, ._ },
36710 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
3337536711 } },
3337636712 } }) catch |err| switch (err) {
3337736713 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
......@@ -104574,7 +107910,6 @@ fn genSetReg(
104574107910 .none,
104575107911 .unreach,
104576107912 .dead,
104577 .register_overflow,
104578107913 .elementwise_regs_then_frame,
104579107914 .reserved_frame,
104580107915 => unreachable,
......@@ -104886,6 +108221,39 @@ fn genSetReg(
104886108221 },
104887108222 else => unreachable,
104888108223 }),
108224 .register_overflow => |src_reg_ov| {
108225 const ip = &zcu.intern_pool;
108226 const first_ty: Type = .fromInterned(first_ty: switch (ip.indexToKey(ty.toIntern())) {
108227 .tuple_type => |tuple_type| {
108228 const tuple_field_types = tuple_type.types.get(ip);
108229 assert(tuple_field_types.len == 2 and tuple_field_types[1] == .u1_type);
108230 break :first_ty tuple_field_types[0];
108231 },
108232 .opt_type => |opt_child| {
108233 assert(!ty.optionalReprIsPayload(zcu));
108234 break :first_ty opt_child;
108235 },
108236 else => std.debug.panic("{s}: {}\n", .{ @src().fn_name, ty.fmt(pt) }),
108237 });
108238 const first_size: u31 = @intCast(first_ty.abiSize(zcu));
108239 const frame_size = std.math.ceilPowerOfTwoAssert(u32, abi_size);
108240 const frame_index = try self.allocFrameIndex(.init(.{
108241 .size = frame_size,
108242 .alignment = .fromNonzeroByteUnits(frame_size),
108243 }));
108244 try self.asmMemoryRegister(.{ ._, .mov }, .{
108245 .base = .{ .frame = frame_index },
108246 .mod = .{ .rm = .{ .size = .fromSize(first_size) } },
108247 }, registerAlias(src_reg_ov.reg, first_size));
108248 try self.asmSetccMemory(src_reg_ov.eflags, .{
108249 .base = .{ .frame = frame_index },
108250 .mod = .{ .rm = .{ .size = .byte, .disp = first_size } },
108251 });
108252 try self.asmRegisterMemory(.{ ._, .mov }, registerAlias(dst_reg, abi_size), .{
108253 .base = .{ .frame = frame_index },
108254 .mod = .{ .rm = .{ .size = .fromSize(frame_size) } },
108255 });
108256 },
104889108257 .register_mask => |src_reg_mask| {
104890108258 assert(src_reg_mask.reg.class() == .sse);
104891108259 const has_avx = self.hasFeature(.avx);
......@@ -115808,6 +119176,7 @@ const Select = struct {
115808119176
115809119177 const Src = union(enum) {
115810119178 none,
119179 imm: i16,
115811119180 imm8,
115812119181 imm16,
115813119182 imm32,
......@@ -115855,6 +119224,10 @@ const Select = struct {
115855119224 fn matches(src: Src, temp: Temp, cg: *CodeGen) bool {
115856119225 return switch (src) {
115857119226 .none => temp.tracking(cg).short == .none,
119227 .imm => |specific_imm| switch (temp.tracking(cg).short) {
119228 .immediate => |imm| @as(i64, @bitCast(imm)) == specific_imm,
119229 else => false,
119230 },
115858119231 .imm8 => switch (temp.tracking(cg).short) {
115859119232 .immediate => |imm| std.math.cast(u8, imm) != null or
115860119233 std.math.cast(i8, @as(i64, @bitCast(imm))) != null,
......@@ -115965,7 +119338,7 @@ const Select = struct {
115965119338
115966119339 fn convert(src: Src, temp: *Temp, cg: *CodeGen) InnerError!bool {
115967119340 return switch (src) {
115968 .none, .imm8, .imm16, .imm32, .simm32 => false,
119341 .none, .imm, .imm8, .imm16, .imm32, .simm32 => false,
115969119342 .mem, .to_mem => try temp.toBase(false, cg),
115970119343 .mut_mem, .to_mut_mem => try temp.toBase(true, cg),
115971119344 .to_reg => |reg| try temp.toReg(reg, cg),
......@@ -116414,10 +119787,12 @@ const Select = struct {
116414119787 dst0_elem_size,
116415119788 src0_elem_size_mul_src1,
116416119789 src1,
119790 src1_sub_bit_size,
116417119791 log2_src0_elem_size,
116418119792 smin,
116419119793 smax,
116420119794 umax,
119795 umax_shr_src1,
116421119796 repeat,
116422119797 },
116423119798 op: enum(u2) { mul, div, div_8_down, rem_8_mul },
......@@ -116473,6 +119848,7 @@ const Select = struct {
116473119848 const add_src1_div_8_down_4: Adjust = .{ .sign = .pos, .lhs = .src1, .op = .div_8_down, .rhs = .@"4" };
116474119849 const add_src1_rem_32: Adjust = .{ .sign = .pos, .lhs = .src1, .op = .rem_8_mul, .rhs = .@"4" };
116475119850 const add_src1_rem_64: Adjust = .{ .sign = .pos, .lhs = .src1, .op = .rem_8_mul, .rhs = .@"8" };
119851 const add_src1_sub_bit_size: Adjust = .{ .sign = .pos, .lhs = .src1_sub_bit_size, .op = .mul, .rhs = .@"1" };
116476119852 const add_log2_src0_elem_size: Adjust = .{ .sign = .pos, .lhs = .log2_src0_elem_size, .op = .mul, .rhs = .@"1" };
116477119853 const add_dst0_elem_size: Adjust = .{ .sign = .pos, .lhs = .dst0_elem_size, .op = .mul, .rhs = .@"1" };
116478119854 const add_elem_limbs: Adjust = .{ .sign = .pos, .lhs = .elem_limbs, .op = .mul, .rhs = .@"1" };
......@@ -116480,6 +119856,7 @@ const Select = struct {
116480119856 const sub_smin: Adjust = .{ .sign = .neg, .lhs = .smin, .op = .mul, .rhs = .@"1" };
116481119857 const add_umax: Adjust = .{ .sign = .pos, .lhs = .umax, .op = .mul, .rhs = .@"1" };
116482119858 const sub_umax: Adjust = .{ .sign = .neg, .lhs = .umax, .op = .mul, .rhs = .@"1" };
119859 const add_umax_shr_src1: Adjust = .{ .sign = .pos, .lhs = .umax_shr_src1, .op = .mul, .rhs = .@"1" };
116483119860 const repeat: Adjust = .{ .sign = .pos, .lhs = .repeat, .op = .mul, .rhs = .@"1" };
116484119861 };
116485119862 const Ref = enum(u5) {
......@@ -117182,6 +120559,8 @@ const Select = struct {
117182120559 .src0_elem_size_mul_src1 => @intCast(Select.Operand.Ref.src0.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu) *
117183120560 Select.Operand.Ref.src1.valueOf(s).immediate),
117184120561 .src1 => @intCast(Select.Operand.Ref.src1.valueOf(s).immediate),
120562 .src1_sub_bit_size => @as(SignedImm, @intCast(Select.Operand.Ref.src1.valueOf(s).immediate)) -
120563 @as(SignedImm, @intCast(op.flags.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu))),
117185120564 .log2_src0_elem_size => @intCast(std.math.log2(Select.Operand.Ref.src0.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu))),
117186120565 .smin => @as(SignedImm, std.math.minInt(SignedImm)) >> @truncate(
117187120566 -%op.flags.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu),
......@@ -117192,6 +120571,9 @@ const Select = struct {
117192120571 .umax => @bitCast(@as(UnsignedImm, std.math.maxInt(UnsignedImm)) >> @truncate(
117193120572 -%op.flags.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu),
117194120573 )),
120574 .umax_shr_src1 => @bitCast(@as(UnsignedImm, std.math.maxInt(UnsignedImm)) >> @truncate(
120575 Select.Operand.Ref.src1.valueOf(s).immediate -% op.flags.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu),
120576 )),
117195120577 .repeat => switch (SignedImm) {
117196120578 else => unreachable,
117197120579 i64 => return @as(i64, op.imm) << 32 | @as(u32, @bitCast(op.imm)),
test/behavior/x86_64/binary.zig+10
......@@ -5477,6 +5477,16 @@ test mulWithOverflow {
54775477 try test_mul_with_overflow.testInts();
54785478}
54795479
5480inline fn shlWithOverflow(comptime Type: type, lhs: Type, rhs: Type) struct { Type, u1 } {
5481 const bit_cast_rhs: @Type(.{ .int = .{ .signedness = .unsigned, .bits = @bitSizeOf(Type) } }) = @bitCast(rhs);
5482 const truncate_rhs: Log2Int(Type) = @truncate(bit_cast_rhs);
5483 return @shlWithOverflow(lhs, if (comptime cast(Log2Int(Type), @bitSizeOf(Type))) |bits| truncate_rhs % bits else truncate_rhs);
5484}
5485test shlWithOverflow {
5486 const test_shl_with_overflow = binary(shlWithOverflow, .{});
5487 try test_shl_with_overflow.testInts();
5488}
5489
54805490inline fn equal(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs == rhs) {
54815491 return lhs == rhs;
54825492}