authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-03-26 14:17:10-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-04-09 20:14:12-04:00
logbc10131db11fad281163a53c4702873047cb9223
tree9ace16c4420a1f6c14bfd9c74b792d6605212538
parent55ce756868fbe2cfc6cec956122d27af762b78f6

x86_64: rewrite scalar `@mulWithOverflow`

Closes #19607

3 files changed, 3645 insertions(+), 5 deletions(-)

src/arch/x86_64/CodeGen.zig+3616-2
......@@ -2418,7 +2418,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24182418}
24192419
24202420fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2421 @setEvalBranchQuota(14_200);
2421 @setEvalBranchQuota(15_100);
24222422 const pt = cg.pt;
24232423 const zcu = pt.zcu;
24242424 const ip = &zcu.intern_pool;
......@@ -2459,7 +2459,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24592459 .mul_sat => try cg.airMulSat(inst),
24602460 .shl_sat => try cg.airShlSat(inst),
24612461
2462 .mul_with_overflow => try cg.airMulWithOverflow(inst),
24632462 .shl_with_overflow => try cg.airShlWithOverflow(inst),
24642463
24652464 .bitcast => try cg.airBitCast(inst),
......@@ -29774,6 +29773,3620 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2977429773 try res[0].withOverflow(&res[1], cg);
2977529774 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
2977629775 },
29776 .mul_with_overflow => |air_tag| if (use_old) try cg.airMulWithOverflow(inst) else fallback: {
29777 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
29778 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
29779 if (cg.typeOf(bin_op.lhs).isVector(zcu)) break :fallback try cg.airMulWithOverflow(inst);
29780 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
29781 var res: [2]Temp = undefined;
29782 cg.select(&res, &.{ ty_pl.ty.toType(), .u1 }, &ops, comptime &.{ .{
29783 .src_constraints = .{ .{ .exact_signed_int = 8 }, .{ .exact_signed_int = 8 }, .any },
29784 .patterns = &.{
29785 .{ .src = .{ .{ .to_reg = .al }, .mem, .none } },
29786 .{ .src = .{ .mem, .{ .to_reg = .al }, .none }, .commute = .{ 0, 1 } },
29787 .{ .src = .{ .{ .to_reg = .al }, .to_gpr, .none } },
29788 },
29789 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
29790 .clobbers = .{ .eflags = true },
29791 .each = .{ .once = &.{
29792 .{ ._, .i_, .mul, .src1b, ._, ._, ._ },
29793 } },
29794 }, .{
29795 .src_constraints = .{ .{ .exact_unsigned_int = 8 }, .{ .exact_unsigned_int = 8 }, .any },
29796 .patterns = &.{
29797 .{ .src = .{ .{ .to_reg = .al }, .mem, .none } },
29798 .{ .src = .{ .mem, .{ .to_reg = .al }, .none }, .commute = .{ 0, 1 } },
29799 .{ .src = .{ .{ .to_reg = .al }, .to_gpr, .none } },
29800 },
29801 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
29802 .clobbers = .{ .eflags = true },
29803 .each = .{ .once = &.{
29804 .{ ._, ._, .mul, .src1b, ._, ._, ._ },
29805 } },
29806 }, .{
29807 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any },
29808 .patterns = &.{
29809 .{ .src = .{ .{ .to_reg = .al }, .mem, .none } },
29810 .{ .src = .{ .mem, .{ .to_reg = .al }, .none }, .commute = .{ 0, 1 } },
29811 .{ .src = .{ .{ .to_reg = .al }, .to_gpr, .none } },
29812 },
29813 .extra_temps = .{
29814 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
29815 .unused,
29816 .unused,
29817 .unused,
29818 .unused,
29819 .unused,
29820 .unused,
29821 .unused,
29822 .unused,
29823 .unused,
29824 .unused,
29825 },
29826 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .ne } },
29827 .clobbers = .{ .eflags = true },
29828 .each = .{ .once = &.{
29829 .{ ._, .i_, .mul, .src1b, ._, ._, ._ },
29830 .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
29831 .{ ._, ._l, .sa, .dst0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
29832 .{ ._, ._r, .sa, .dst0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
29833 .{ ._, ._, .cmp, .dst0w, .tmp0w, ._, ._ },
29834 } },
29835 }, .{
29836 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
29837 .patterns = &.{
29838 .{ .src = .{ .{ .to_reg = .al }, .mem, .none } },
29839 .{ .src = .{ .mem, .{ .to_reg = .al }, .none }, .commute = .{ 0, 1 } },
29840 .{ .src = .{ .{ .to_reg = .al }, .to_gpr, .none } },
29841 },
29842 .extra_temps = .{
29843 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
29844 .unused,
29845 .unused,
29846 .unused,
29847 .unused,
29848 .unused,
29849 .unused,
29850 .unused,
29851 .unused,
29852 .unused,
29853 .unused,
29854 },
29855 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .nbe } },
29856 .clobbers = .{ .eflags = true },
29857 .each = .{ .once = &.{
29858 .{ ._, ._, .mul, .src1b, ._, ._, ._ },
29859 .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
29860 .{ ._, ._, .@"and", .dst0b, .ua(.src0, .add_umax), ._, ._ },
29861 .{ ._, ._, .cmp, .tmp0w, .ua(.src0, .add_umax), ._, ._ },
29862 } },
29863 }, .{
29864 .src_constraints = .{ .{ .exact_signed_int = 16 }, .{ .exact_signed_int = 16 }, .any },
29865 .patterns = &.{
29866 .{ .src = .{ .mem, .imm16, .none } },
29867 .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } },
29868 .{ .src = .{ .to_gpr, .imm16, .none } },
29869 .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } },
29870 },
29871 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }, .{ .cc = .c } },
29872 .clobbers = .{ .eflags = true },
29873 .each = .{ .once = &.{
29874 .{ ._, .i_, .mul, .dst0w, .src0w, .src1w, ._ },
29875 } },
29876 }, .{
29877 .src_constraints = .{ .{ .exact_signed_int = 16 }, .{ .exact_signed_int = 16 }, .any },
29878 .patterns = &.{
29879 .{ .src = .{ .to_mut_gpr, .mem, .none } },
29880 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
29881 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
29882 },
29883 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
29884 .clobbers = .{ .eflags = true },
29885 .each = .{ .once = &.{
29886 .{ ._, .i_, .mul, .dst0w, .src1w, ._, ._ },
29887 } },
29888 }, .{
29889 .src_constraints = .{ .{ .exact_unsigned_int = 16 }, .{ .exact_unsigned_int = 16 }, .any },
29890 .patterns = &.{
29891 .{ .src = .{ .{ .to_reg = .ax }, .mem, .none } },
29892 .{ .src = .{ .mem, .{ .to_reg = .ax }, .none }, .commute = .{ 0, 1 } },
29893 .{ .src = .{ .{ .to_reg = .ax }, .to_gpr, .none } },
29894 },
29895 .extra_temps = .{
29896 .{ .type = .u16, .kind = .{ .reg = .dx } },
29897 .unused,
29898 .unused,
29899 .unused,
29900 .unused,
29901 .unused,
29902 .unused,
29903 .unused,
29904 .unused,
29905 .unused,
29906 .unused,
29907 },
29908 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
29909 .clobbers = .{ .eflags = true },
29910 .each = .{ .once = &.{
29911 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
29912 .{ ._, ._, .mul, .src1w, ._, ._, ._ },
29913 } },
29914 }, .{
29915 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any },
29916 .patterns = &.{
29917 .{ .src = .{ .{ .to_reg = .ax }, .mem, .none } },
29918 .{ .src = .{ .mem, .{ .to_reg = .ax }, .none }, .commute = .{ 0, 1 } },
29919 .{ .src = .{ .{ .to_reg = .ax }, .to_gpr, .none } },
29920 },
29921 .extra_temps = .{
29922 .{ .type = .i32, .kind = .{ .reg = .edx } },
29923 .unused,
29924 .unused,
29925 .unused,
29926 .unused,
29927 .unused,
29928 .unused,
29929 .unused,
29930 .unused,
29931 .unused,
29932 .unused,
29933 },
29934 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .ne } },
29935 .clobbers = .{ .eflags = true },
29936 .each = .{ .once = &.{
29937 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
29938 .{ ._, .i_, .mul, .src1w, ._, ._, ._ },
29939 .{ ._, ._l, .sh, .tmp0d, .ui(16), ._, ._ },
29940 .{ ._, ._, .mov, .tmp0w, .dst0w, ._, ._ },
29941 .{ ._, ._l, .sa, .dst0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
29942 .{ ._, ._r, .sa, .dst0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
29943 .{ ._, ._, .cmp, .dst0d, .tmp0d, ._, ._ },
29944 } },
29945 }, .{
29946 .required_features = .{ .fast_imm16, null, null, null },
29947 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
29948 .patterns = &.{
29949 .{ .src = .{ .{ .to_reg = .ax }, .mem, .none } },
29950 .{ .src = .{ .mem, .{ .to_reg = .ax }, .none }, .commute = .{ 0, 1 } },
29951 .{ .src = .{ .{ .to_reg = .ax }, .to_gpr, .none } },
29952 },
29953 .extra_temps = .{
29954 .{ .type = .u16, .kind = .{ .reg = .dx } },
29955 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
29956 .unused,
29957 .unused,
29958 .unused,
29959 .unused,
29960 .unused,
29961 .unused,
29962 .unused,
29963 .unused,
29964 .unused,
29965 },
29966 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .nz } },
29967 .clobbers = .{ .eflags = true },
29968 .each = .{ .once = &.{
29969 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
29970 .{ ._, ._, .mul, .src1w, ._, ._, ._ },
29971 .{ ._, ._, .mov, .tmp1d, .dst0d, ._, ._ },
29972 .{ ._, ._, .@"and", .dst0w, .ua(.src0, .add_umax), ._, ._ },
29973 .{ ._, ._, .@"and", .tmp1w, .uia(std.math.maxInt(u16), .src0, .sub_umax), ._, ._ },
29974 .{ ._, ._, .@"or", .tmp1w, .tmp0w, ._, ._ },
29975 } },
29976 }, .{
29977 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
29978 .patterns = &.{
29979 .{ .src = .{ .{ .to_reg = .ax }, .mem, .none } },
29980 .{ .src = .{ .mem, .{ .to_reg = .ax }, .none }, .commute = .{ 0, 1 } },
29981 .{ .src = .{ .{ .to_reg = .ax }, .to_gpr, .none } },
29982 },
29983 .extra_temps = .{
29984 .{ .type = .u16, .kind = .{ .reg = .dx } },
29985 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
29986 .unused,
29987 .unused,
29988 .unused,
29989 .unused,
29990 .unused,
29991 .unused,
29992 .unused,
29993 .unused,
29994 .unused,
29995 },
29996 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .nz } },
29997 .clobbers = .{ .eflags = true },
29998 .each = .{ .once = &.{
29999 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
30000 .{ ._, ._, .mul, .src1w, ._, ._, ._ },
30001 .{ ._, ._, .mov, .tmp1d, .dst0d, ._, ._ },
30002 .{ ._, ._, .@"and", .dst0d, .ua(.src0, .add_umax), ._, ._ },
30003 .{ ._, ._, .@"and", .tmp1d, .uia(std.math.maxInt(u16), .src0, .sub_umax), ._, ._ },
30004 .{ ._, ._, .@"or", .tmp1d, .tmp0d, ._, ._ },
30005 } },
30006 }, .{
30007 .src_constraints = .{ .{ .exact_signed_int = 32 }, .{ .exact_signed_int = 32 }, .any },
30008 .patterns = &.{
30009 .{ .src = .{ .mem, .imm32, .none } },
30010 .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } },
30011 .{ .src = .{ .to_gpr, .imm32, .none } },
30012 .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
30013 },
30014 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }, .{ .cc = .c } },
30015 .clobbers = .{ .eflags = true },
30016 .each = .{ .once = &.{
30017 .{ ._, .i_, .mul, .dst0d, .src0d, .src1d, ._ },
30018 } },
30019 }, .{
30020 .src_constraints = .{ .{ .exact_signed_int = 32 }, .{ .exact_signed_int = 32 }, .any },
30021 .patterns = &.{
30022 .{ .src = .{ .to_mut_gpr, .mem, .none } },
30023 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
30024 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
30025 },
30026 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
30027 .clobbers = .{ .eflags = true },
30028 .each = .{ .once = &.{
30029 .{ ._, .i_, .mul, .dst0d, .src1d, ._, ._ },
30030 } },
30031 }, .{
30032 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .{ .exact_unsigned_int = 32 }, .any },
30033 .patterns = &.{
30034 .{ .src = .{ .{ .to_reg = .eax }, .mem, .none } },
30035 .{ .src = .{ .mem, .{ .to_reg = .eax }, .none }, .commute = .{ 0, 1 } },
30036 .{ .src = .{ .{ .to_reg = .eax }, .to_gpr, .none } },
30037 },
30038 .extra_temps = .{
30039 .{ .type = .u32, .kind = .{ .reg = .edx } },
30040 .unused,
30041 .unused,
30042 .unused,
30043 .unused,
30044 .unused,
30045 .unused,
30046 .unused,
30047 .unused,
30048 .unused,
30049 .unused,
30050 },
30051 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
30052 .clobbers = .{ .eflags = true },
30053 .each = .{ .once = &.{
30054 .{ ._, ._, .mul, .src1d, ._, ._, ._ },
30055 } },
30056 }, .{
30057 .required_features = .{ .@"64bit", null, null, null },
30058 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any },
30059 .patterns = &.{
30060 .{ .src = .{ .{ .to_reg = .eax }, .mem, .none } },
30061 .{ .src = .{ .mem, .{ .to_reg = .eax }, .none }, .commute = .{ 0, 1 } },
30062 .{ .src = .{ .{ .to_reg = .eax }, .to_gpr, .none } },
30063 },
30064 .extra_temps = .{
30065 .{ .type = .i32, .kind = .{ .reg = .edx } },
30066 .unused,
30067 .unused,
30068 .unused,
30069 .unused,
30070 .unused,
30071 .unused,
30072 .unused,
30073 .unused,
30074 .unused,
30075 .unused,
30076 },
30077 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .ne } },
30078 .clobbers = .{ .eflags = true },
30079 .each = .{ .once = &.{
30080 .{ ._, .i_, .mul, .src1d, ._, ._, ._ },
30081 .{ ._, ._l, .sh, .tmp0q, .ui(32), ._, ._ },
30082 .{ ._, ._, .@"or", .tmp0q, .dst0q, ._, ._ },
30083 .{ ._, ._l, .sa, .dst0q, .uia(64, .src0, .sub_bit_size), ._, ._ },
30084 .{ ._, ._r, .sa, .dst0q, .uia(64, .src0, .sub_bit_size), ._, ._ },
30085 .{ ._, ._, .cmp, .dst0q, .tmp0q, ._, ._ },
30086 } },
30087 }, .{
30088 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any },
30089 .patterns = &.{
30090 .{ .src = .{ .{ .to_reg = .eax }, .mem, .none } },
30091 .{ .src = .{ .mem, .{ .to_reg = .eax }, .none }, .commute = .{ 0, 1 } },
30092 .{ .src = .{ .{ .to_reg = .eax }, .to_gpr, .none } },
30093 },
30094 .extra_temps = .{
30095 .{ .type = .u32, .kind = .{ .ref = .src0 } },
30096 .{ .type = .u32, .kind = .{ .reg = .edx } },
30097 .unused,
30098 .unused,
30099 .unused,
30100 .unused,
30101 .unused,
30102 .unused,
30103 .unused,
30104 .unused,
30105 .unused,
30106 },
30107 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } }, .{ .cc = .nz } },
30108 .clobbers = .{ .eflags = true },
30109 .each = .{ .once = &.{
30110 .{ ._, ._, .mul, .src1d, ._, ._, ._ },
30111 .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
30112 .{ ._, ._r, .sh, .tmp0d, .sa(.src0, .add_bit_size), ._, ._ },
30113 .{ ._, ._, .@"and", .dst0d, .ua(.src0, .add_umax), ._, ._ },
30114 .{ ._, ._, .@"or", .tmp0d, .tmp1d, ._, ._ },
30115 } },
30116 }, .{
30117 .required_features = .{ .@"64bit", null, null, null },
30118 .src_constraints = .{ .{ .exact_signed_int = 64 }, .{ .exact_signed_int = 64 }, .any },
30119 .patterns = &.{
30120 .{ .src = .{ .mem, .simm32, .none } },
30121 .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } },
30122 .{ .src = .{ .to_gpr, .simm32, .none } },
30123 .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
30124 },
30125 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }, .{ .cc = .c } },
30126 .clobbers = .{ .eflags = true },
30127 .each = .{ .once = &.{
30128 .{ ._, .i_, .mul, .dst0q, .src0q, .src1d, ._ },
30129 } },
30130 }, .{
30131 .required_features = .{ .@"64bit", null, null, null },
30132 .src_constraints = .{ .{ .exact_signed_int = 64 }, .{ .exact_signed_int = 64 }, .any },
30133 .patterns = &.{
30134 .{ .src = .{ .to_mut_gpr, .mem, .none } },
30135 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
30136 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
30137 },
30138 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
30139 .clobbers = .{ .eflags = true },
30140 .each = .{ .once = &.{
30141 .{ ._, .i_, .mul, .dst0q, .src1q, ._, ._ },
30142 } },
30143 }, .{
30144 .required_features = .{ .@"64bit", null, null, null },
30145 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .{ .exact_unsigned_int = 64 }, .any },
30146 .patterns = &.{
30147 .{ .src = .{ .{ .to_reg = .eax }, .mem, .none } },
30148 .{ .src = .{ .mem, .{ .to_reg = .eax }, .none }, .commute = .{ 0, 1 } },
30149 .{ .src = .{ .{ .to_reg = .eax }, .to_gpr, .none } },
30150 },
30151 .extra_temps = .{
30152 .{ .type = .u64, .kind = .{ .reg = .rdx } },
30153 .unused,
30154 .unused,
30155 .unused,
30156 .unused,
30157 .unused,
30158 .unused,
30159 .unused,
30160 .unused,
30161 .unused,
30162 .unused,
30163 },
30164 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
30165 .clobbers = .{ .eflags = true },
30166 .each = .{ .once = &.{
30167 .{ ._, ._, .mul, .src1q, ._, ._, ._ },
30168 } },
30169 }, .{
30170 .required_features = .{ .@"64bit", null, null, null },
30171 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any },
30172 .patterns = &.{
30173 .{ .src = .{ .{ .to_reg = .rax }, .mem, .none } },
30174 .{ .src = .{ .mem, .{ .to_reg = .rax }, .none }, .commute = .{ 0, 1 } },
30175 .{ .src = .{ .{ .to_reg = .rax }, .to_gpr, .none } },
30176 },
30177 .extra_temps = .{
30178 .{ .type = .i64, .kind = .{ .reg = .rdx } },
30179 .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
30180 .unused,
30181 .unused,
30182 .unused,
30183 .unused,
30184 .unused,
30185 .unused,
30186 .unused,
30187 .unused,
30188 .unused,
30189 },
30190 .dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .nz } },
30191 .clobbers = .{ .eflags = true },
30192 .each = .{ .once = &.{
30193 .{ ._, .i_, .mul, .src1q, ._, ._, ._ },
30194 .{ ._, ._, .sbb, .tmp0d, .tmp0d, ._, ._ },
30195 .{ ._, ._, .mov, .tmp1q, .dst0q, ._, ._ },
30196 .{ ._, ._l, .sa, .dst0q, .uia(64, .src0, .sub_bit_size), ._, ._ },
30197 .{ ._, ._r, .sa, .dst0q, .uia(64, .src0, .sub_bit_size), ._, ._ },
30198 .{ ._, ._, .xor, .tmp1q, .dst0q, ._, ._ },
30199 .{ ._, ._, .@"or", .tmp1q, .tmp0q, ._, ._ },
30200 } },
30201 }, .{
30202 .required_features = .{ .@"64bit", .bmi2, null, null },
30203 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any },
30204 .patterns = &.{
30205 .{ .src = .{ .{ .to_reg = .rax }, .mem, .none } },
30206 .{ .src = .{ .mem, .{ .to_reg = .rax }, .none }, .commute = .{ 0, 1 } },
30207 .{ .src = .{ .{ .to_reg = .rax }, .to_gpr, .none } },
30208 },
30209 .extra_temps = .{
30210 .{ .type = .u64, .kind = .{ .ref = .src0 } },
30211 .{ .type = .u64, .kind = .{ .reg = .rdx } },
30212 .unused,
30213 .unused,
30214 .unused,
30215 .unused,
30216 .unused,
30217 .unused,
30218 .unused,
30219 .unused,
30220 .unused,
30221 },
30222 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } }, .{ .cc = .nz } },
30223 .clobbers = .{ .eflags = true },
30224 .each = .{ .once = &.{
30225 .{ ._, ._, .mul, .src1q, ._, ._, ._ },
30226 .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_bit_size), ._, ._ },
30227 .{ ._, ._, .bzhi, .dst0q, .tmp0q, .dst0q, ._ },
30228 .{ ._, ._, .xor, .tmp0q, .dst0q, ._, ._ },
30229 .{ ._, ._, .@"or", .tmp0q, .tmp1q, ._, ._ },
30230 } },
30231 }, .{
30232 .required_features = .{ .@"64bit", null, null, null },
30233 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any },
30234 .patterns = &.{
30235 .{ .src = .{ .{ .to_reg = .rax }, .mem, .none } },
30236 .{ .src = .{ .mem, .{ .to_reg = .rax }, .none }, .commute = .{ 0, 1 } },
30237 .{ .src = .{ .{ .to_reg = .rax }, .to_gpr, .none } },
30238 },
30239 .extra_temps = .{
30240 .{ .type = .u64, .kind = .{ .ref = .src0 } },
30241 .{ .type = .u64, .kind = .{ .reg = .rdx } },
30242 .unused,
30243 .unused,
30244 .unused,
30245 .unused,
30246 .unused,
30247 .unused,
30248 .unused,
30249 .unused,
30250 .unused,
30251 },
30252 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } }, .{ .cc = .nz } },
30253 .clobbers = .{ .eflags = true },
30254 .each = .{ .once = &.{
30255 .{ ._, ._, .mul, .src1q, ._, ._, ._ },
30256 .{ ._, ._, .mov, .dst0q, .ua(.src0, .add_umax), ._, ._ },
30257 .{ ._, ._, .@"and", .dst0q, .tmp0q, ._, ._ },
30258 .{ ._, ._, .xor, .tmp0q, .dst0q, ._, ._ },
30259 .{ ._, ._, .@"or", .tmp0q, .tmp1q, ._, ._ },
30260 } },
30261 }, .{
30262 .required_features = .{ .@"64bit", .cmov, .slow_incdec, null },
30263 .src_constraints = .{
30264 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
30265 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
30266 .any,
30267 },
30268 .patterns = &.{
30269 .{ .src = .{ .to_mem, .to_mem, .none } },
30270 },
30271 .extra_temps = .{
30272 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30273 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30274 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
30275 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30276 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30277 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30278 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30279 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30280 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30281 .{ .type = .u64, .kind = .{ .reg = .rax } },
30282 .{ .type = .u64, .kind = .{ .reg = .rdx } },
30283 },
30284 .dst_temps = .{ .mem, .{ .cc = .nz } },
30285 .clobbers = .{ .eflags = true },
30286 .each = .{ .once = &.{
30287 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
30288 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
30289 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
30290 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
30291 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
30292 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
30293 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
30294 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
30295 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
30296 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30297 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
30298 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
30299 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
30300 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
30301 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
30302 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
30303 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
30304 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
30305 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30306 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
30307 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
30308 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
30309 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
30310 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
30311 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
30312 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
30313 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
30314 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
30315 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30316 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30317 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
30318 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
30319 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
30320 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
30321 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
30322 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
30323 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
30324 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
30325 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
30326 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
30327 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
30328 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30329 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
30330 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
30331 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
30332 .{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
30333 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30334 .{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
30335 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30336 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
30337 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30338 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
30339 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30340 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
30341 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30342 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30343 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30344 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
30345 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30346 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
30347 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30348 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30349 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
30350 .{ ._, ._c, .st, ._, ._, ._, ._ },
30351 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
30352 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30353 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30354 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30355 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30356 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
30357 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30358 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30359 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
30360 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
30361 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
30362 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30363 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30364 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30365 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
30366 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
30367 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
30368 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30369 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
30370 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
30371 } },
30372 }, .{
30373 .required_features = .{ .@"64bit", .cmov, null, null },
30374 .src_constraints = .{
30375 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
30376 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
30377 .any,
30378 },
30379 .patterns = &.{
30380 .{ .src = .{ .to_mem, .to_mem, .none } },
30381 },
30382 .extra_temps = .{
30383 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30384 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30385 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
30386 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30387 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30388 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30389 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30390 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30391 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30392 .{ .type = .u64, .kind = .{ .reg = .rax } },
30393 .{ .type = .u64, .kind = .{ .reg = .rdx } },
30394 },
30395 .dst_temps = .{ .mem, .{ .cc = .nz } },
30396 .clobbers = .{ .eflags = true },
30397 .each = .{ .once = &.{
30398 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
30399 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
30400 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
30401 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
30402 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
30403 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
30404 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
30405 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
30406 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
30407 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30408 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
30409 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
30410 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
30411 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
30412 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
30413 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
30414 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
30415 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
30416 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30417 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
30418 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
30419 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
30420 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
30421 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
30422 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
30423 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
30424 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
30425 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
30426 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30427 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30428 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
30429 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
30430 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
30431 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
30432 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
30433 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
30434 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
30435 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
30436 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
30437 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
30438 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
30439 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30440 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
30441 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
30442 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
30443 .{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
30444 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30445 .{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
30446 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30447 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
30448 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30449 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
30450 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30451 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
30452 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30453 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30454 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30455 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
30456 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30457 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
30458 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30459 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30460 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
30461 .{ ._, ._c, .st, ._, ._, ._, ._ },
30462 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
30463 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30464 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30465 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30466 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30467 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
30468 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30469 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30470 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
30471 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
30472 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
30473 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30474 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30475 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30476 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
30477 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
30478 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
30479 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30480 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
30481 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
30482 } },
30483 }, .{
30484 .required_features = .{ .@"64bit", .slow_incdec, null, null },
30485 .src_constraints = .{
30486 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
30487 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
30488 .any,
30489 },
30490 .patterns = &.{
30491 .{ .src = .{ .to_mem, .to_mem, .none } },
30492 },
30493 .extra_temps = .{
30494 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30495 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30496 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
30497 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30498 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30499 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30500 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30501 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30502 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30503 .{ .type = .u64, .kind = .{ .reg = .rax } },
30504 .{ .type = .u64, .kind = .{ .reg = .rdx } },
30505 },
30506 .dst_temps = .{ .mem, .{ .cc = .nz } },
30507 .clobbers = .{ .eflags = true },
30508 .each = .{ .once = &.{
30509 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
30510 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
30511 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
30512 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
30513 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
30514 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
30515 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
30516 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
30517 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
30518 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30519 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
30520 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
30521 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
30522 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
30523 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
30524 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
30525 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
30526 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
30527 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30528 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
30529 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
30530 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
30531 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
30532 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
30533 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
30534 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
30535 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
30536 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
30537 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30538 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30539 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
30540 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
30541 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
30542 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
30543 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
30544 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
30545 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
30546 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
30547 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
30548 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
30549 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
30550 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30551 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
30552 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
30553 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
30554 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30555 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
30556 .{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
30557 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30558 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
30559 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30560 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
30561 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30562 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
30563 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30564 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30565 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30566 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
30567 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30568 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
30569 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30570 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30571 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
30572 .{ ._, ._c, .st, ._, ._, ._, ._ },
30573 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
30574 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30575 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30576 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30577 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30578 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
30579 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30580 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30581 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
30582 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
30583 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
30584 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30585 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30586 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30587 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
30588 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
30589 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
30590 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30591 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
30592 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
30593 } },
30594 }, .{
30595 .required_features = .{ .@"64bit", null, null, null },
30596 .src_constraints = .{
30597 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
30598 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
30599 .any,
30600 },
30601 .patterns = &.{
30602 .{ .src = .{ .to_mem, .to_mem, .none } },
30603 },
30604 .extra_temps = .{
30605 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30606 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30607 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
30608 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30609 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30610 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30611 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30612 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30613 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30614 .{ .type = .u64, .kind = .{ .reg = .rax } },
30615 .{ .type = .u64, .kind = .{ .reg = .rdx } },
30616 },
30617 .dst_temps = .{ .mem, .{ .cc = .nz } },
30618 .clobbers = .{ .eflags = true },
30619 .each = .{ .once = &.{
30620 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
30621 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
30622 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
30623 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
30624 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
30625 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
30626 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
30627 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
30628 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
30629 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30630 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
30631 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
30632 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
30633 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
30634 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
30635 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
30636 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
30637 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
30638 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30639 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
30640 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
30641 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
30642 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
30643 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
30644 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
30645 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
30646 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
30647 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
30648 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30649 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30650 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
30651 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
30652 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
30653 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
30654 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
30655 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
30656 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
30657 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
30658 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
30659 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
30660 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
30661 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30662 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
30663 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
30664 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
30665 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30666 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
30667 .{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
30668 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30669 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
30670 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30671 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
30672 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30673 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
30674 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30675 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30676 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30677 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
30678 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30679 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
30680 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30681 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30682 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
30683 .{ ._, ._c, .st, ._, ._, ._, ._ },
30684 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
30685 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30686 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30687 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30688 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30689 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
30690 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30691 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30692 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
30693 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
30694 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
30695 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30696 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30697 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30698 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
30699 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
30700 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
30701 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30702 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
30703 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
30704 } },
30705 }, .{
30706 .required_features = .{ .@"64bit", .cmov, .slow_incdec, null },
30707 .src_constraints = .{
30708 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
30709 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
30710 .any,
30711 },
30712 .patterns = &.{
30713 .{ .src = .{ .to_mem, .to_mem, .none } },
30714 },
30715 .extra_temps = .{
30716 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30717 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30718 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
30719 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30720 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30721 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30722 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30723 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30724 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30725 .{ .type = .u64, .kind = .{ .reg = .rax } },
30726 .{ .type = .u64, .kind = .{ .reg = .rdx } },
30727 },
30728 .dst_temps = .{ .mem, .{ .cc = .nz } },
30729 .clobbers = .{ .eflags = true },
30730 .each = .{ .once = &.{
30731 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
30732 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
30733 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
30734 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
30735 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
30736 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
30737 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
30738 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
30739 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
30740 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30741 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
30742 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
30743 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
30744 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
30745 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
30746 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
30747 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
30748 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
30749 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30750 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
30751 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
30752 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
30753 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
30754 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
30755 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
30756 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
30757 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
30758 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
30759 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30760 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30761 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
30762 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
30763 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
30764 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
30765 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
30766 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
30767 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
30768 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
30769 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
30770 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
30771 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
30772 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30773 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
30774 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
30775 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
30776 .{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
30777 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30778 .{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
30779 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30780 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
30781 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30782 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
30783 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30784 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
30785 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30786 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30787 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30788 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
30789 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30790 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
30791 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30792 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30793 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
30794 .{ ._, ._c, .st, ._, ._, ._, ._ },
30795 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
30796 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30797 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30798 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30799 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30800 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
30801 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30802 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30803 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
30804 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
30805 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
30806 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30807 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30808 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30809 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
30810 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
30811 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
30812 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30813 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
30814 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
30815 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
30816 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
30817 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
30818 .{ ._, ._, .xor, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
30819 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
30820 .{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
30821 } },
30822 }, .{
30823 .required_features = .{ .@"64bit", .cmov, null, null },
30824 .src_constraints = .{
30825 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
30826 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
30827 .any,
30828 },
30829 .patterns = &.{
30830 .{ .src = .{ .to_mem, .to_mem, .none } },
30831 },
30832 .extra_temps = .{
30833 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30834 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30835 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
30836 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30837 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30838 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30839 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30840 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30841 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30842 .{ .type = .u64, .kind = .{ .reg = .rax } },
30843 .{ .type = .u64, .kind = .{ .reg = .rdx } },
30844 },
30845 .dst_temps = .{ .mem, .{ .cc = .nz } },
30846 .clobbers = .{ .eflags = true },
30847 .each = .{ .once = &.{
30848 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
30849 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
30850 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
30851 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
30852 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
30853 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
30854 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
30855 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
30856 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
30857 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30858 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
30859 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
30860 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
30861 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
30862 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
30863 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
30864 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
30865 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
30866 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30867 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
30868 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
30869 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
30870 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
30871 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
30872 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
30873 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
30874 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
30875 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
30876 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30877 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30878 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
30879 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
30880 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
30881 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
30882 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
30883 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
30884 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
30885 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
30886 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
30887 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
30888 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
30889 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30890 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
30891 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
30892 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
30893 .{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
30894 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30895 .{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
30896 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30897 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
30898 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30899 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
30900 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30901 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
30902 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30903 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30904 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30905 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
30906 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30907 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
30908 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30909 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30910 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
30911 .{ ._, ._c, .st, ._, ._, ._, ._ },
30912 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
30913 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30914 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30915 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30916 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30917 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
30918 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30919 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30920 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
30921 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
30922 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
30923 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30924 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30925 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30926 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
30927 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
30928 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
30929 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30930 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
30931 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
30932 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
30933 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
30934 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
30935 .{ ._, ._, .xor, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
30936 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
30937 .{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
30938 } },
30939 }, .{
30940 .required_features = .{ .@"64bit", .slow_incdec, null, null },
30941 .src_constraints = .{
30942 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
30943 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
30944 .any,
30945 },
30946 .patterns = &.{
30947 .{ .src = .{ .to_mem, .to_mem, .none } },
30948 },
30949 .extra_temps = .{
30950 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30951 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30952 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
30953 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30954 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30955 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30956 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30957 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30958 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30959 .{ .type = .u64, .kind = .{ .reg = .rax } },
30960 .{ .type = .u64, .kind = .{ .reg = .rdx } },
30961 },
30962 .dst_temps = .{ .mem, .{ .cc = .nz } },
30963 .clobbers = .{ .eflags = true },
30964 .each = .{ .once = &.{
30965 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
30966 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
30967 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
30968 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
30969 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
30970 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
30971 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
30972 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
30973 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
30974 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30975 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
30976 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
30977 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
30978 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
30979 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
30980 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
30981 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
30982 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
30983 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30984 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
30985 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
30986 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
30987 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
30988 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
30989 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
30990 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
30991 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
30992 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
30993 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30994 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30995 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
30996 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
30997 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
30998 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
30999 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
31000 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
31001 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
31002 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
31003 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
31004 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
31005 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
31006 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31007 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
31008 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
31009 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
31010 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
31011 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
31012 .{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
31013 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
31014 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
31015 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
31016 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
31017 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
31018 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
31019 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
31020 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
31021 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
31022 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
31023 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
31024 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
31025 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31026 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
31027 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
31028 .{ ._, ._c, .st, ._, ._, ._, ._ },
31029 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
31030 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
31031 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
31032 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
31033 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
31034 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
31035 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
31036 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
31037 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
31038 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
31039 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
31040 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
31041 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31042 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
31043 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
31044 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
31045 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
31046 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
31047 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
31048 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
31049 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
31050 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
31051 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
31052 .{ ._, ._, .xor, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
31053 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
31054 .{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
31055 } },
31056 }, .{
31057 .required_features = .{ .@"64bit", null, null, null },
31058 .src_constraints = .{
31059 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
31060 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
31061 .any,
31062 },
31063 .patterns = &.{
31064 .{ .src = .{ .to_mem, .to_mem, .none } },
31065 },
31066 .extra_temps = .{
31067 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31068 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31069 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
31070 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31071 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31072 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31073 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31074 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31075 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31076 .{ .type = .u64, .kind = .{ .reg = .rax } },
31077 .{ .type = .u64, .kind = .{ .reg = .rdx } },
31078 },
31079 .dst_temps = .{ .mem, .{ .cc = .nz } },
31080 .clobbers = .{ .eflags = true },
31081 .each = .{ .once = &.{
31082 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
31083 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
31084 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
31085 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
31086 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
31087 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
31088 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
31089 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
31090 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
31091 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31092 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
31093 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
31094 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
31095 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
31096 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
31097 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
31098 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
31099 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
31100 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
31101 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
31102 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
31103 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
31104 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
31105 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
31106 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
31107 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
31108 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
31109 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
31110 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31111 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
31112 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
31113 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
31114 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
31115 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
31116 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
31117 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
31118 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
31119 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
31120 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
31121 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
31122 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
31123 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31124 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
31125 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
31126 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
31127 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
31128 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
31129 .{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
31130 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
31131 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
31132 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
31133 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
31134 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
31135 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
31136 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
31137 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
31138 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
31139 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
31140 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
31141 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
31142 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31143 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
31144 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
31145 .{ ._, ._c, .st, ._, ._, ._, ._ },
31146 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
31147 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
31148 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
31149 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
31150 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
31151 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
31152 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
31153 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
31154 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
31155 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
31156 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
31157 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
31158 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31159 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
31160 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
31161 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
31162 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
31163 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
31164 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
31165 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
31166 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
31167 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
31168 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
31169 .{ ._, ._, .xor, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
31170 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
31171 .{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
31172 } },
31173 }, .{
31174 .required_features = .{ .@"64bit", .cmov, .slow_incdec, null },
31175 .src_constraints = .{
31176 .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
31177 .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
31178 .any,
31179 },
31180 .patterns = &.{
31181 .{ .src = .{ .to_mem, .to_mem, .none } },
31182 },
31183 .extra_temps = .{
31184 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31185 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31186 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
31187 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31188 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31189 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31190 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31191 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31192 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31193 .{ .type = .u64, .kind = .{ .reg = .rax } },
31194 .{ .type = .u64, .kind = .{ .reg = .rdx } },
31195 },
31196 .dst_temps = .{ .mem, .{ .cc = .nz } },
31197 .clobbers = .{ .eflags = true },
31198 .each = .{ .once = &.{
31199 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
31200 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
31201 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
31202 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
31203 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
31204 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
31205 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
31206 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
31207 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
31208 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31209 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
31210 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
31211 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
31212 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
31213 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
31214 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
31215 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
31216 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
31217 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
31218 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
31219 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
31220 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
31221 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
31222 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
31223 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
31224 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
31225 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
31226 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
31227 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31228 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
31229 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
31230 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
31231 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
31232 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
31233 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
31234 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
31235 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
31236 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
31237 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
31238 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
31239 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
31240 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31241 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
31242 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
31243 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
31244 .{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
31245 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
31246 .{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
31247 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
31248 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
31249 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
31250 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
31251 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
31252 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
31253 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
31254 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
31255 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
31256 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
31257 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
31258 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
31259 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31260 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
31261 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
31262 .{ ._, ._c, .st, ._, ._, ._, ._ },
31263 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
31264 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
31265 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
31266 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
31267 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
31268 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
31269 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
31270 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
31271 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
31272 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
31273 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
31274 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
31275 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31276 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
31277 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
31278 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
31279 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
31280 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
31281 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
31282 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
31283 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
31284 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
31285 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
31286 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
31287 .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
31288 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
31289 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
31290 .{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
31291 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
31292 .{ ._, ._, .xor, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
31293 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
31294 .{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
31295 } },
31296 }, .{
31297 .required_features = .{ .@"64bit", .cmov, null, null },
31298 .src_constraints = .{
31299 .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
31300 .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
31301 .any,
31302 },
31303 .patterns = &.{
31304 .{ .src = .{ .to_mem, .to_mem, .none } },
31305 },
31306 .extra_temps = .{
31307 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31308 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31309 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
31310 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31311 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31312 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31313 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31314 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31315 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31316 .{ .type = .u64, .kind = .{ .reg = .rax } },
31317 .{ .type = .u64, .kind = .{ .reg = .rdx } },
31318 },
31319 .dst_temps = .{ .mem, .{ .cc = .nz } },
31320 .clobbers = .{ .eflags = true },
31321 .each = .{ .once = &.{
31322 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
31323 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
31324 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
31325 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
31326 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
31327 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
31328 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
31329 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
31330 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
31331 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31332 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
31333 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
31334 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
31335 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
31336 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
31337 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
31338 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
31339 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
31340 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
31341 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
31342 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
31343 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
31344 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
31345 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
31346 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
31347 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
31348 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
31349 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
31350 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31351 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
31352 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
31353 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
31354 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
31355 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
31356 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
31357 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
31358 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
31359 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
31360 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
31361 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
31362 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
31363 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31364 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
31365 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
31366 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
31367 .{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
31368 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
31369 .{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
31370 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
31371 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
31372 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
31373 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
31374 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
31375 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
31376 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
31377 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
31378 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
31379 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
31380 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
31381 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
31382 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31383 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
31384 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
31385 .{ ._, ._c, .st, ._, ._, ._, ._ },
31386 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
31387 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
31388 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
31389 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
31390 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
31391 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
31392 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
31393 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
31394 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
31395 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
31396 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
31397 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
31398 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31399 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
31400 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
31401 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
31402 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
31403 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
31404 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
31405 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
31406 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
31407 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
31408 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
31409 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
31410 .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
31411 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
31412 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
31413 .{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
31414 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
31415 .{ ._, ._, .xor, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
31416 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
31417 .{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
31418 } },
31419 }, .{
31420 .required_features = .{ .@"64bit", .slow_incdec, null, null },
31421 .src_constraints = .{
31422 .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
31423 .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
31424 .any,
31425 },
31426 .patterns = &.{
31427 .{ .src = .{ .to_mem, .to_mem, .none } },
31428 },
31429 .extra_temps = .{
31430 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31431 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31432 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
31433 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31434 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31435 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31436 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31437 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31438 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31439 .{ .type = .u64, .kind = .{ .reg = .rax } },
31440 .{ .type = .u64, .kind = .{ .reg = .rdx } },
31441 },
31442 .dst_temps = .{ .mem, .{ .cc = .nz } },
31443 .clobbers = .{ .eflags = true },
31444 .each = .{ .once = &.{
31445 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
31446 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
31447 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
31448 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
31449 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
31450 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
31451 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
31452 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
31453 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
31454 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31455 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
31456 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
31457 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
31458 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
31459 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
31460 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
31461 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
31462 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
31463 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
31464 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
31465 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
31466 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
31467 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
31468 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
31469 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
31470 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
31471 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
31472 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
31473 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31474 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
31475 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
31476 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
31477 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
31478 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
31479 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
31480 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
31481 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
31482 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
31483 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
31484 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
31485 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
31486 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31487 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
31488 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
31489 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
31490 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
31491 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
31492 .{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
31493 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
31494 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
31495 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
31496 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
31497 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
31498 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
31499 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
31500 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
31501 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
31502 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
31503 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
31504 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
31505 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31506 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
31507 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
31508 .{ ._, ._c, .st, ._, ._, ._, ._ },
31509 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
31510 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
31511 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
31512 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
31513 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
31514 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
31515 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
31516 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
31517 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
31518 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
31519 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
31520 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
31521 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31522 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
31523 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
31524 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
31525 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
31526 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
31527 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
31528 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
31529 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
31530 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
31531 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
31532 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
31533 .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
31534 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
31535 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
31536 .{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
31537 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
31538 .{ ._, ._, .xor, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
31539 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
31540 .{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
31541 } },
31542 }, .{
31543 .required_features = .{ .@"64bit", null, null, null },
31544 .src_constraints = .{
31545 .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
31546 .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
31547 .any,
31548 },
31549 .patterns = &.{
31550 .{ .src = .{ .to_mem, .to_mem, .none } },
31551 },
31552 .extra_temps = .{
31553 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31554 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31555 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
31556 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31557 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31558 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31559 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31560 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31561 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31562 .{ .type = .u64, .kind = .{ .reg = .rax } },
31563 .{ .type = .u64, .kind = .{ .reg = .rdx } },
31564 },
31565 .dst_temps = .{ .mem, .{ .cc = .nz } },
31566 .clobbers = .{ .eflags = true },
31567 .each = .{ .once = &.{
31568 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
31569 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
31570 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
31571 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
31572 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
31573 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
31574 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
31575 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
31576 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
31577 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31578 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
31579 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
31580 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
31581 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
31582 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
31583 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
31584 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
31585 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
31586 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
31587 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
31588 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
31589 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
31590 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
31591 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
31592 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
31593 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
31594 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
31595 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
31596 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31597 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
31598 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
31599 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
31600 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
31601 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
31602 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
31603 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
31604 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
31605 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
31606 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
31607 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
31608 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
31609 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31610 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
31611 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
31612 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
31613 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
31614 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
31615 .{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
31616 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
31617 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
31618 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
31619 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
31620 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
31621 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
31622 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
31623 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
31624 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
31625 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
31626 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
31627 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
31628 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31629 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
31630 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
31631 .{ ._, ._c, .st, ._, ._, ._, ._ },
31632 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
31633 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
31634 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
31635 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
31636 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
31637 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
31638 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
31639 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
31640 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
31641 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
31642 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
31643 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
31644 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31645 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
31646 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
31647 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
31648 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
31649 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
31650 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
31651 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
31652 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
31653 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
31654 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
31655 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
31656 .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
31657 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
31658 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
31659 .{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
31660 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
31661 .{ ._, ._, .xor, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
31662 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
31663 .{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
31664 } },
31665 }, .{
31666 .required_features = .{ .@"64bit", .cmov, .slow_incdec, null },
31667 .src_constraints = .{
31668 .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
31669 .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
31670 .any,
31671 },
31672 .patterns = &.{
31673 .{ .src = .{ .to_mem, .to_mem, .none } },
31674 },
31675 .extra_temps = .{
31676 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31677 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31678 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
31679 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31680 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31681 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31682 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31683 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31684 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31685 .{ .type = .u64, .kind = .{ .reg = .rax } },
31686 .{ .type = .u64, .kind = .{ .reg = .rdx } },
31687 },
31688 .dst_temps = .{ .mem, .{ .cc = .nz } },
31689 .clobbers = .{ .eflags = true },
31690 .each = .{ .once = &.{
31691 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
31692 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
31693 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
31694 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
31695 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
31696 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
31697 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
31698 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
31699 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
31700 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31701 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
31702 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
31703 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
31704 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
31705 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
31706 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
31707 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
31708 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
31709 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
31710 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
31711 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
31712 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
31713 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
31714 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
31715 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
31716 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
31717 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
31718 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
31719 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31720 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
31721 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
31722 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
31723 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
31724 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
31725 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
31726 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
31727 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
31728 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
31729 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
31730 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
31731 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
31732 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31733 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
31734 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
31735 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
31736 .{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
31737 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
31738 .{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
31739 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
31740 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
31741 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
31742 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
31743 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
31744 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
31745 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
31746 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
31747 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
31748 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
31749 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
31750 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
31751 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31752 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
31753 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
31754 .{ ._, ._c, .st, ._, ._, ._, ._ },
31755 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
31756 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
31757 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
31758 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
31759 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
31760 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
31761 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
31762 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
31763 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
31764 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
31765 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
31766 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
31767 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31768 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
31769 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
31770 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
31771 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
31772 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
31773 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
31774 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
31775 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
31776 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
31777 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
31778 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
31779 .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
31780 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
31781 .{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
31782 } },
31783 }, .{
31784 .required_features = .{ .@"64bit", .cmov, null, null },
31785 .src_constraints = .{
31786 .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
31787 .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
31788 .any,
31789 },
31790 .patterns = &.{
31791 .{ .src = .{ .to_mem, .to_mem, .none } },
31792 },
31793 .extra_temps = .{
31794 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31795 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31796 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
31797 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31798 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31799 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31800 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31801 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31802 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31803 .{ .type = .u64, .kind = .{ .reg = .rax } },
31804 .{ .type = .u64, .kind = .{ .reg = .rdx } },
31805 },
31806 .dst_temps = .{ .mem, .{ .cc = .nz } },
31807 .clobbers = .{ .eflags = true },
31808 .each = .{ .once = &.{
31809 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
31810 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
31811 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
31812 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
31813 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
31814 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
31815 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
31816 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
31817 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
31818 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31819 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
31820 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
31821 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
31822 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
31823 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
31824 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
31825 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
31826 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
31827 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
31828 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
31829 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
31830 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
31831 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
31832 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
31833 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
31834 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
31835 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
31836 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
31837 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31838 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
31839 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
31840 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
31841 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
31842 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
31843 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
31844 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
31845 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
31846 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
31847 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
31848 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
31849 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
31850 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31851 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
31852 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
31853 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
31854 .{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
31855 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
31856 .{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
31857 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
31858 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
31859 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
31860 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
31861 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
31862 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
31863 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
31864 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
31865 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
31866 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
31867 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
31868 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
31869 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31870 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
31871 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
31872 .{ ._, ._c, .st, ._, ._, ._, ._ },
31873 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
31874 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
31875 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
31876 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
31877 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
31878 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
31879 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
31880 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
31881 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
31882 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
31883 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
31884 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
31885 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31886 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
31887 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
31888 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
31889 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
31890 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
31891 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
31892 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
31893 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
31894 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
31895 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
31896 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
31897 .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
31898 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
31899 .{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
31900 } },
31901 }, .{
31902 .required_features = .{ .@"64bit", .slow_incdec, null, null },
31903 .src_constraints = .{
31904 .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
31905 .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
31906 .any,
31907 },
31908 .patterns = &.{
31909 .{ .src = .{ .to_mem, .to_mem, .none } },
31910 },
31911 .extra_temps = .{
31912 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31913 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31914 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
31915 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31916 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31917 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31918 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31919 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31920 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31921 .{ .type = .u64, .kind = .{ .reg = .rax } },
31922 .{ .type = .u64, .kind = .{ .reg = .rdx } },
31923 },
31924 .dst_temps = .{ .mem, .{ .cc = .nz } },
31925 .clobbers = .{ .eflags = true },
31926 .each = .{ .once = &.{
31927 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
31928 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
31929 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
31930 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
31931 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
31932 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
31933 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
31934 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
31935 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
31936 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31937 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
31938 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
31939 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
31940 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
31941 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
31942 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
31943 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
31944 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
31945 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
31946 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
31947 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
31948 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
31949 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
31950 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
31951 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
31952 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
31953 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
31954 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
31955 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31956 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
31957 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
31958 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
31959 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
31960 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
31961 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
31962 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
31963 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
31964 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
31965 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
31966 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
31967 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
31968 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
31969 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
31970 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
31971 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
31972 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
31973 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
31974 .{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
31975 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
31976 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
31977 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
31978 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
31979 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
31980 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
31981 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
31982 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
31983 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
31984 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
31985 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
31986 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
31987 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31988 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
31989 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
31990 .{ ._, ._c, .st, ._, ._, ._, ._ },
31991 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
31992 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
31993 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
31994 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
31995 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
31996 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
31997 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
31998 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
31999 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
32000 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
32001 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
32002 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
32003 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
32004 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
32005 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
32006 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
32007 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
32008 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
32009 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
32010 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
32011 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
32012 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
32013 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
32014 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
32015 .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
32016 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
32017 .{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
32018 } },
32019 }, .{
32020 .required_features = .{ .@"64bit", null, null, null },
32021 .src_constraints = .{
32022 .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
32023 .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
32024 .any,
32025 },
32026 .patterns = &.{
32027 .{ .src = .{ .to_mem, .to_mem, .none } },
32028 },
32029 .extra_temps = .{
32030 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32031 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32032 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32033 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32034 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32035 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32036 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32037 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32038 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32039 .{ .type = .u64, .kind = .{ .reg = .rax } },
32040 .{ .type = .u64, .kind = .{ .reg = .rdx } },
32041 },
32042 .dst_temps = .{ .mem, .{ .cc = .nz } },
32043 .clobbers = .{ .eflags = true },
32044 .each = .{ .once = &.{
32045 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
32046 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
32047 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
32048 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
32049 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
32050 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
32051 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
32052 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
32053 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
32054 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
32055 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
32056 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
32057 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
32058 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
32059 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
32060 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
32061 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
32062 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
32063 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
32064 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
32065 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
32066 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
32067 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
32068 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
32069 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
32070 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
32071 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
32072 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
32073 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
32074 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
32075 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
32076 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
32077 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
32078 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
32079 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
32080 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
32081 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
32082 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
32083 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
32084 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
32085 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
32086 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
32087 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
32088 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
32089 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
32090 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
32091 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
32092 .{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
32093 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
32094 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
32095 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
32096 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
32097 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
32098 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
32099 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
32100 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
32101 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
32102 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
32103 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
32104 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
32105 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
32106 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
32107 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
32108 .{ ._, ._c, .st, ._, ._, ._, ._ },
32109 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
32110 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
32111 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
32112 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
32113 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
32114 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
32115 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
32116 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
32117 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
32118 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
32119 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
32120 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
32121 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
32122 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
32123 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
32124 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
32125 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
32126 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
32127 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
32128 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
32129 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
32130 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
32131 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
32132 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
32133 .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
32134 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
32135 .{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
32136 } },
32137 }, .{
32138 .required_features = .{ .@"64bit", .bmi2, .adx, null },
32139 .src_constraints = .{
32140 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
32141 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
32142 .any,
32143 },
32144 .patterns = &.{
32145 .{ .src = .{ .to_mem, .to_mem, .none } },
32146 },
32147 .extra_temps = .{
32148 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32149 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32150 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32151 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32152 .{ .type = .u64, .kind = .{ .reg = .rdx } },
32153 .{ .type = .isize, .kind = .{ .reg = .rcx } },
32154 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32155 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32156 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32157 .unused,
32158 .unused,
32159 },
32160 .dst_temps = .{ .mem, .{ .cc = .nz } },
32161 .clobbers = .{ .eflags = true },
32162 .each = .{ .once = &.{
32163 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
32164 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
32165 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
32166 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
32167 .{ .@"0:", ._, .xor, .tmp4d, .tmp4d, ._, ._ },
32168 .{ ._, ._, .@"or", .tmp4q, .memi(.src0q, .tmp0), ._, ._ },
32169 .{ ._, ._z, .j, .@"2f", ._, ._, ._ },
32170 .{ ._, ._, .lea, .tmp5p, .leaad(.tmp0, .sub_src0_size, 8), ._, ._ },
32171 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
32172 .{ .@"1:", ._x, .mul, .tmp8q, .tmp7q, .leai(.tmp1q, .tmp5), ._ },
32173 .{ ._, ._x, .adc, .tmp7q, .tmp6q, ._, ._ },
32174 .{ ._, ._, .mov, .memiad(.dst0q, .tmp5, .add_src0_size, -8), .tmp7q, ._, ._ },
32175 .{ ._, ._rcxz, .j, .@"1f", ._, ._, ._ },
32176 .{ ._, ._x, .ado, .tmp8q, .memia(.dst0q, .tmp5, .add_src0_size), ._, ._ },
32177 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
32178 .{ ._, ._, .lea, .tmp5p, .lead(.tmp5, 8), ._, ._ },
32179 .{ ._, ._mp, .j, .@"1b", ._, ._, ._ },
32180 .{ .@"2:", ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
32181 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
32182 .{ .@"1:", ._, .mov, .tmp4d, .tmp0d, ._, ._ },
32183 .{ ._, ._x, .ado, .tmp8q, .tmp3q, ._, ._ },
32184 .{ ._, ._x, .adc, .tmp8q, .tmp3q, ._, ._ },
32185 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
32186 .{ .@"1:", ._, .@"or", .tmp8q, .leaid(.tmp1q, .tmp4, 8), ._, ._ },
32187 .{ .@"2:", ._, .sub, .tmp4d, .si(8), ._, ._ },
32188 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
32189 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
32190 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
32191 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
32192 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
32193 .{ ._, ._, .@"test", .tmp2q, .tmp2q, ._, ._ },
32194 } },
32195 }, .{
32196 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
32197 .src_constraints = .{
32198 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
32199 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
32200 .any,
32201 },
32202 .patterns = &.{
32203 .{ .src = .{ .to_mem, .to_mem, .none } },
32204 },
32205 .extra_temps = .{
32206 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32207 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32208 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32209 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32210 .{ .type = .u64, .kind = .{ .reg = .rdx } },
32211 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32212 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32213 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32214 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32215 .unused,
32216 .unused,
32217 },
32218 .dst_temps = .{ .mem, .{ .cc = .nz } },
32219 .clobbers = .{ .eflags = true },
32220 .each = .{ .once = &.{
32221 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
32222 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
32223 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
32224 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
32225 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
32226 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
32227 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
32228 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
32229 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
32230 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
32231 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
32232 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
32233 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
32234 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
32235 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
32236 .{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
32237 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
32238 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
32239 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
32240 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
32241 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
32242 .{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
32243 .{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
32244 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
32245 .{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
32246 .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
32247 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
32248 .{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
32249 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
32250 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
32251 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
32252 .{ ._, ._, .@"test", .tmp2q, .tmp2q, ._, ._ },
32253 } },
32254 }, .{
32255 .required_features = .{ .@"64bit", .bmi2, null, null },
32256 .src_constraints = .{
32257 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
32258 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
32259 .any,
32260 },
32261 .patterns = &.{
32262 .{ .src = .{ .to_mem, .to_mem, .none } },
32263 },
32264 .extra_temps = .{
32265 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32266 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32267 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32268 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32269 .{ .type = .u64, .kind = .{ .reg = .rdx } },
32270 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32271 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32272 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32273 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32274 .unused,
32275 .unused,
32276 },
32277 .dst_temps = .{ .mem, .{ .cc = .nz } },
32278 .clobbers = .{ .eflags = true },
32279 .each = .{ .once = &.{
32280 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
32281 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
32282 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
32283 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
32284 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
32285 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
32286 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
32287 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
32288 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
32289 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
32290 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
32291 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
32292 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
32293 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
32294 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
32295 .{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
32296 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
32297 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
32298 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
32299 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
32300 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
32301 .{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
32302 .{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
32303 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
32304 .{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
32305 .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
32306 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
32307 .{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
32308 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
32309 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
32310 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
32311 .{ ._, ._, .@"test", .tmp2q, .tmp2q, ._, ._ },
32312 } },
32313 }, .{
32314 .required_features = .{ .@"64bit", .slow_incdec, null, null },
32315 .src_constraints = .{
32316 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
32317 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
32318 .any,
32319 },
32320 .patterns = &.{
32321 .{ .src = .{ .to_mem, .to_mem, .none } },
32322 },
32323 .extra_temps = .{
32324 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32325 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32326 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32327 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32328 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32329 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32330 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32331 .{ .type = .u64, .kind = .{ .reg = .rax } },
32332 .{ .type = .u64, .kind = .{ .reg = .rdx } },
32333 .unused,
32334 .unused,
32335 },
32336 .dst_temps = .{ .mem, .{ .cc = .nz } },
32337 .clobbers = .{ .eflags = true },
32338 .each = .{ .once = &.{
32339 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
32340 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
32341 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
32342 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
32343 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
32344 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
32345 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
32346 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
32347 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
32348 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
32349 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
32350 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
32351 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
32352 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
32353 .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
32354 .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
32355 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
32356 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
32357 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
32358 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
32359 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
32360 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
32361 .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
32362 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
32363 .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
32364 .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
32365 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
32366 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
32367 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
32368 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
32369 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
32370 .{ ._, ._, .@"test", .tmp2q, .tmp2q, ._, ._ },
32371 } },
32372 }, .{
32373 .required_features = .{ .@"64bit", null, null, null },
32374 .src_constraints = .{
32375 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
32376 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
32377 .any,
32378 },
32379 .patterns = &.{
32380 .{ .src = .{ .to_mem, .to_mem, .none } },
32381 },
32382 .extra_temps = .{
32383 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32384 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32385 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32386 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32387 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32388 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32389 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32390 .{ .type = .u64, .kind = .{ .reg = .rax } },
32391 .{ .type = .u64, .kind = .{ .reg = .rdx } },
32392 .unused,
32393 .unused,
32394 },
32395 .dst_temps = .{ .mem, .{ .cc = .nz } },
32396 .clobbers = .{ .eflags = true },
32397 .each = .{ .once = &.{
32398 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
32399 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
32400 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
32401 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
32402 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
32403 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
32404 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
32405 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
32406 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
32407 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
32408 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
32409 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
32410 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
32411 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
32412 .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
32413 .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
32414 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
32415 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
32416 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
32417 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
32418 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
32419 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
32420 .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
32421 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
32422 .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
32423 .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
32424 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
32425 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
32426 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
32427 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
32428 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
32429 .{ ._, ._, .@"test", .tmp2q, .tmp2q, ._, ._ },
32430 } },
32431 }, .{
32432 .required_features = .{ .@"64bit", .bmi2, .adx, null },
32433 .src_constraints = .{
32434 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32435 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32436 .any,
32437 },
32438 .patterns = &.{
32439 .{ .src = .{ .to_mem, .to_mem, .none } },
32440 },
32441 .extra_temps = .{
32442 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32443 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32444 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32445 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32446 .{ .type = .u64, .kind = .{ .reg = .rdx } },
32447 .{ .type = .isize, .kind = .{ .reg = .rcx } },
32448 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32449 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32450 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32451 .unused,
32452 .unused,
32453 },
32454 .dst_temps = .{ .mem, .{ .cc = .nz } },
32455 .clobbers = .{ .eflags = true },
32456 .each = .{ .once = &.{
32457 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
32458 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
32459 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
32460 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
32461 .{ .@"0:", ._, .xor, .tmp4d, .tmp4d, ._, ._ },
32462 .{ ._, ._, .@"or", .tmp4q, .memi(.src0q, .tmp0), ._, ._ },
32463 .{ ._, ._z, .j, .@"2f", ._, ._, ._ },
32464 .{ ._, ._, .lea, .tmp5p, .leaad(.tmp0, .sub_src0_size, 8), ._, ._ },
32465 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
32466 .{ .@"1:", ._x, .mul, .tmp8q, .tmp7q, .leai(.tmp1q, .tmp5), ._ },
32467 .{ ._, ._x, .adc, .tmp7q, .tmp6q, ._, ._ },
32468 .{ ._, ._, .mov, .memiad(.dst0q, .tmp5, .add_src0_size, -8), .tmp7q, ._, ._ },
32469 .{ ._, ._rcxz, .j, .@"1f", ._, ._, ._ },
32470 .{ ._, ._x, .ado, .tmp8q, .memia(.dst0q, .tmp5, .add_src0_size), ._, ._ },
32471 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
32472 .{ ._, ._, .lea, .tmp5p, .lead(.tmp5, 8), ._, ._ },
32473 .{ ._, ._mp, .j, .@"1b", ._, ._, ._ },
32474 .{ .@"2:", ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
32475 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
32476 .{ .@"1:", ._, .mov, .tmp4d, .tmp0d, ._, ._ },
32477 .{ ._, ._x, .ado, .tmp8q, .tmp3q, ._, ._ },
32478 .{ ._, ._x, .adc, .tmp8q, .tmp3q, ._, ._ },
32479 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
32480 .{ .@"1:", ._, .@"or", .tmp8q, .leai(.tmp1q, .tmp4), ._, ._ },
32481 .{ .@"2:", ._, .sub, .tmp4d, .si(8), ._, ._ },
32482 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
32483 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
32484 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
32485 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
32486 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
32487 .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
32488 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
32489 } },
32490 }, .{
32491 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
32492 .src_constraints = .{
32493 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32494 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32495 .any,
32496 },
32497 .patterns = &.{
32498 .{ .src = .{ .to_mem, .to_mem, .none } },
32499 },
32500 .extra_temps = .{
32501 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32502 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32503 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32504 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32505 .{ .type = .u64, .kind = .{ .reg = .rdx } },
32506 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32507 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32508 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32509 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32510 .unused,
32511 .unused,
32512 },
32513 .dst_temps = .{ .mem, .{ .cc = .nz } },
32514 .clobbers = .{ .eflags = true },
32515 .each = .{ .once = &.{
32516 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
32517 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
32518 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
32519 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
32520 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
32521 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
32522 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
32523 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
32524 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
32525 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
32526 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
32527 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
32528 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
32529 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
32530 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
32531 .{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
32532 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
32533 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
32534 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
32535 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
32536 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
32537 .{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
32538 .{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
32539 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
32540 .{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
32541 .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
32542 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
32543 .{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
32544 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
32545 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
32546 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
32547 .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
32548 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
32549 } },
32550 }, .{
32551 .required_features = .{ .@"64bit", .bmi2, null, null },
32552 .src_constraints = .{
32553 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32554 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32555 .any,
32556 },
32557 .patterns = &.{
32558 .{ .src = .{ .to_mem, .to_mem, .none } },
32559 },
32560 .extra_temps = .{
32561 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32562 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32563 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32564 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32565 .{ .type = .u64, .kind = .{ .reg = .rdx } },
32566 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32567 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32568 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32569 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32570 .unused,
32571 .unused,
32572 },
32573 .dst_temps = .{ .mem, .{ .cc = .nz } },
32574 .clobbers = .{ .eflags = true },
32575 .each = .{ .once = &.{
32576 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
32577 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
32578 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
32579 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
32580 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
32581 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
32582 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
32583 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
32584 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
32585 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
32586 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
32587 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
32588 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
32589 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
32590 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
32591 .{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
32592 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
32593 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
32594 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
32595 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
32596 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
32597 .{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
32598 .{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
32599 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
32600 .{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
32601 .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
32602 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
32603 .{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
32604 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
32605 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
32606 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
32607 .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
32608 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
32609 } },
32610 }, .{
32611 .required_features = .{ .@"64bit", .slow_incdec, null, null },
32612 .src_constraints = .{
32613 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32614 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32615 .any,
32616 },
32617 .patterns = &.{
32618 .{ .src = .{ .to_mem, .to_mem, .none } },
32619 },
32620 .extra_temps = .{
32621 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32622 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32623 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32624 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32625 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32626 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32627 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32628 .{ .type = .u64, .kind = .{ .reg = .rax } },
32629 .{ .type = .u64, .kind = .{ .reg = .rdx } },
32630 .unused,
32631 .unused,
32632 },
32633 .dst_temps = .{ .mem, .{ .cc = .nz } },
32634 .clobbers = .{ .eflags = true },
32635 .each = .{ .once = &.{
32636 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
32637 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
32638 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
32639 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
32640 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
32641 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
32642 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
32643 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
32644 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
32645 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
32646 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
32647 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
32648 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
32649 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
32650 .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
32651 .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
32652 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
32653 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
32654 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
32655 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
32656 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
32657 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
32658 .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
32659 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
32660 .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
32661 .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
32662 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
32663 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
32664 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
32665 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
32666 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
32667 .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
32668 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
32669 } },
32670 }, .{
32671 .required_features = .{ .@"64bit", null, null, null },
32672 .src_constraints = .{
32673 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32674 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32675 .any,
32676 },
32677 .patterns = &.{
32678 .{ .src = .{ .to_mem, .to_mem, .none } },
32679 },
32680 .extra_temps = .{
32681 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32682 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32683 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32684 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32685 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32686 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32687 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32688 .{ .type = .u64, .kind = .{ .reg = .rax } },
32689 .{ .type = .u64, .kind = .{ .reg = .rdx } },
32690 .unused,
32691 .unused,
32692 },
32693 .dst_temps = .{ .mem, .{ .cc = .nz } },
32694 .clobbers = .{ .eflags = true },
32695 .each = .{ .once = &.{
32696 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
32697 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
32698 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
32699 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
32700 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
32701 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
32702 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
32703 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
32704 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
32705 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
32706 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
32707 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
32708 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
32709 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
32710 .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
32711 .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
32712 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
32713 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
32714 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
32715 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
32716 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
32717 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
32718 .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
32719 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
32720 .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
32721 .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
32722 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
32723 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
32724 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
32725 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
32726 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
32727 .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
32728 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
32729 } },
32730 }, .{
32731 .required_features = .{ .@"64bit", .bmi2, .adx, null },
32732 .src_constraints = .{
32733 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32734 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32735 .any,
32736 },
32737 .patterns = &.{
32738 .{ .src = .{ .to_mem, .to_mem, .none } },
32739 },
32740 .extra_temps = .{
32741 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32742 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32743 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32744 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32745 .{ .type = .u64, .kind = .{ .reg = .rdx } },
32746 .{ .type = .isize, .kind = .{ .reg = .rcx } },
32747 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32748 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32749 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32750 .unused,
32751 .unused,
32752 },
32753 .dst_temps = .{ .mem, .{ .cc = .nz } },
32754 .clobbers = .{ .eflags = true },
32755 .each = .{ .once = &.{
32756 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
32757 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
32758 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
32759 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
32760 .{ .@"0:", ._, .xor, .tmp4d, .tmp4d, ._, ._ },
32761 .{ ._, ._, .@"or", .tmp4q, .memi(.src0q, .tmp0), ._, ._ },
32762 .{ ._, ._z, .j, .@"2f", ._, ._, ._ },
32763 .{ ._, ._, .lea, .tmp5p, .leaad(.tmp0, .sub_src0_size, 8), ._, ._ },
32764 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
32765 .{ .@"1:", ._x, .mul, .tmp8q, .tmp7q, .leai(.tmp1q, .tmp5), ._ },
32766 .{ ._, ._x, .adc, .tmp7q, .tmp6q, ._, ._ },
32767 .{ ._, ._, .mov, .memiad(.dst0q, .tmp5, .add_src0_size, -8), .tmp7q, ._, ._ },
32768 .{ ._, ._rcxz, .j, .@"1f", ._, ._, ._ },
32769 .{ ._, ._x, .ado, .tmp8q, .memia(.dst0q, .tmp5, .add_src0_size), ._, ._ },
32770 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
32771 .{ ._, ._, .lea, .tmp5p, .lead(.tmp5, 8), ._, ._ },
32772 .{ ._, ._mp, .j, .@"1b", ._, ._, ._ },
32773 .{ .@"2:", ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
32774 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
32775 .{ .@"1:", ._, .mov, .tmp4d, .tmp0d, ._, ._ },
32776 .{ ._, ._x, .ado, .tmp8q, .tmp3q, ._, ._ },
32777 .{ ._, ._x, .adc, .tmp8q, .tmp3q, ._, ._ },
32778 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
32779 .{ .@"1:", ._, .@"or", .tmp8q, .leai(.tmp1q, .tmp4), ._, ._ },
32780 .{ .@"2:", ._, .sub, .tmp4d, .si(8), ._, ._ },
32781 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
32782 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
32783 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
32784 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
32785 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
32786 .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
32787 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
32788 .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
32789 .{ ._, ._, .bzhi, .tmp0q, .tmp1q, .tmp0q, ._ },
32790 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
32791 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
32792 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
32793 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
32794 } },
32795 }, .{
32796 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
32797 .src_constraints = .{
32798 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32799 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32800 .any,
32801 },
32802 .patterns = &.{
32803 .{ .src = .{ .to_mem, .to_mem, .none } },
32804 },
32805 .extra_temps = .{
32806 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32807 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32808 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32809 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32810 .{ .type = .u64, .kind = .{ .reg = .rdx } },
32811 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32812 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32813 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32814 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32815 .unused,
32816 .unused,
32817 },
32818 .dst_temps = .{ .mem, .{ .cc = .nz } },
32819 .clobbers = .{ .eflags = true },
32820 .each = .{ .once = &.{
32821 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
32822 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
32823 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
32824 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
32825 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
32826 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
32827 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
32828 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
32829 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
32830 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
32831 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
32832 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
32833 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
32834 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
32835 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
32836 .{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
32837 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
32838 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
32839 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
32840 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
32841 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
32842 .{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
32843 .{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
32844 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
32845 .{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
32846 .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
32847 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
32848 .{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
32849 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
32850 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
32851 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
32852 .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
32853 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
32854 .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
32855 .{ ._, ._, .bzhi, .tmp0q, .tmp1q, .tmp0q, ._ },
32856 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
32857 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
32858 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
32859 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
32860 } },
32861 }, .{
32862 .required_features = .{ .@"64bit", .bmi2, null, null },
32863 .src_constraints = .{
32864 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32865 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32866 .any,
32867 },
32868 .patterns = &.{
32869 .{ .src = .{ .to_mem, .to_mem, .none } },
32870 },
32871 .extra_temps = .{
32872 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32873 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32874 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32875 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32876 .{ .type = .u64, .kind = .{ .reg = .rdx } },
32877 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32878 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32879 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32880 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32881 .unused,
32882 .unused,
32883 },
32884 .dst_temps = .{ .mem, .{ .cc = .nz } },
32885 .clobbers = .{ .eflags = true },
32886 .each = .{ .once = &.{
32887 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
32888 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
32889 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
32890 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
32891 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
32892 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
32893 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
32894 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
32895 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
32896 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
32897 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
32898 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
32899 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
32900 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
32901 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
32902 .{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
32903 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
32904 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
32905 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
32906 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
32907 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
32908 .{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
32909 .{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
32910 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
32911 .{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
32912 .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
32913 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
32914 .{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
32915 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
32916 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
32917 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
32918 .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
32919 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
32920 .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
32921 .{ ._, ._, .bzhi, .tmp0q, .tmp1q, .tmp0q, ._ },
32922 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
32923 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
32924 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
32925 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
32926 } },
32927 }, .{
32928 .required_features = .{ .@"64bit", .slow_incdec, null, null },
32929 .src_constraints = .{
32930 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32931 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32932 .any,
32933 },
32934 .patterns = &.{
32935 .{ .src = .{ .to_mem, .to_mem, .none } },
32936 },
32937 .extra_temps = .{
32938 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32939 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32940 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32941 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32942 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32943 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32944 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32945 .{ .type = .u64, .kind = .{ .reg = .rax } },
32946 .{ .type = .u64, .kind = .{ .reg = .rdx } },
32947 .unused,
32948 .unused,
32949 },
32950 .dst_temps = .{ .mem, .{ .cc = .nz } },
32951 .clobbers = .{ .eflags = true },
32952 .each = .{ .once = &.{
32953 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
32954 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
32955 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
32956 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
32957 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
32958 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
32959 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
32960 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
32961 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
32962 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
32963 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
32964 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
32965 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
32966 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
32967 .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
32968 .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
32969 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
32970 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
32971 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
32972 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
32973 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
32974 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
32975 .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
32976 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
32977 .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
32978 .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
32979 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
32980 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
32981 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
32982 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
32983 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
32984 .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
32985 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
32986 .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
32987 .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
32988 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
32989 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
32990 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
32991 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
32992 } },
32993 }, .{
32994 .required_features = .{ .@"64bit", null, null, null },
32995 .src_constraints = .{
32996 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32997 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
32998 .any,
32999 },
33000 .patterns = &.{
33001 .{ .src = .{ .to_mem, .to_mem, .none } },
33002 },
33003 .extra_temps = .{
33004 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33005 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
33006 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33007 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33008 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33009 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
33010 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33011 .{ .type = .u64, .kind = .{ .reg = .rax } },
33012 .{ .type = .u64, .kind = .{ .reg = .rdx } },
33013 .unused,
33014 .unused,
33015 },
33016 .dst_temps = .{ .mem, .{ .cc = .nz } },
33017 .clobbers = .{ .eflags = true },
33018 .each = .{ .once = &.{
33019 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
33020 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
33021 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
33022 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
33023 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
33024 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
33025 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
33026 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
33027 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
33028 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
33029 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
33030 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
33031 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
33032 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
33033 .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
33034 .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
33035 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
33036 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
33037 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
33038 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
33039 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
33040 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
33041 .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
33042 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
33043 .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
33044 .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
33045 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
33046 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
33047 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
33048 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
33049 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
33050 .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
33051 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
33052 .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
33053 .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
33054 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33055 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
33056 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
33057 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
33058 } },
33059 }, .{
33060 .required_features = .{ .@"64bit", .bmi2, .adx, null },
33061 .src_constraints = .{
33062 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33063 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33064 .any,
33065 },
33066 .patterns = &.{
33067 .{ .src = .{ .to_mem, .to_mem, .none } },
33068 },
33069 .extra_temps = .{
33070 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33071 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
33072 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33073 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33074 .{ .type = .u64, .kind = .{ .reg = .rdx } },
33075 .{ .type = .isize, .kind = .{ .reg = .rcx } },
33076 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33077 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33078 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33079 .unused,
33080 .unused,
33081 },
33082 .dst_temps = .{ .mem, .{ .cc = .nz } },
33083 .clobbers = .{ .eflags = true },
33084 .each = .{ .once = &.{
33085 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
33086 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
33087 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
33088 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
33089 .{ .@"0:", ._, .xor, .tmp4d, .tmp4d, ._, ._ },
33090 .{ ._, ._, .@"or", .tmp4q, .memi(.src0q, .tmp0), ._, ._ },
33091 .{ ._, ._z, .j, .@"2f", ._, ._, ._ },
33092 .{ ._, ._, .lea, .tmp5p, .leaad(.tmp0, .sub_src0_size, 8), ._, ._ },
33093 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
33094 .{ .@"1:", ._x, .mul, .tmp8q, .tmp7q, .leai(.tmp1q, .tmp5), ._ },
33095 .{ ._, ._x, .adc, .tmp7q, .tmp6q, ._, ._ },
33096 .{ ._, ._, .mov, .memiad(.dst0q, .tmp5, .add_src0_size, -8), .tmp7q, ._, ._ },
33097 .{ ._, ._rcxz, .j, .@"1f", ._, ._, ._ },
33098 .{ ._, ._x, .ado, .tmp8q, .memia(.dst0q, .tmp5, .add_src0_size), ._, ._ },
33099 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
33100 .{ ._, ._, .lea, .tmp5p, .lead(.tmp5, 8), ._, ._ },
33101 .{ ._, ._mp, .j, .@"1b", ._, ._, ._ },
33102 .{ .@"2:", ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
33103 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
33104 .{ .@"1:", ._, .mov, .tmp4d, .tmp0d, ._, ._ },
33105 .{ ._, ._x, .ado, .tmp8q, .tmp3q, ._, ._ },
33106 .{ ._, ._x, .adc, .tmp8q, .tmp3q, ._, ._ },
33107 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
33108 .{ .@"1:", ._, .@"or", .tmp8q, .leai(.tmp1q, .tmp4), ._, ._ },
33109 .{ .@"2:", ._, .sub, .tmp4d, .si(8), ._, ._ },
33110 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
33111 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
33112 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
33113 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
33114 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
33115 .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33116 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
33117 .{ ._, ._, .bzhi, .tmp0q, .tmp1q, .tmp0q, ._ },
33118 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33119 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
33120 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
33121 } },
33122 }, .{
33123 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
33124 .src_constraints = .{
33125 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33126 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33127 .any,
33128 },
33129 .patterns = &.{
33130 .{ .src = .{ .to_mem, .to_mem, .none } },
33131 },
33132 .extra_temps = .{
33133 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33134 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
33135 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33136 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33137 .{ .type = .u64, .kind = .{ .reg = .rdx } },
33138 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
33139 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33140 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33141 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33142 .unused,
33143 .unused,
33144 },
33145 .dst_temps = .{ .mem, .{ .cc = .nz } },
33146 .clobbers = .{ .eflags = true },
33147 .each = .{ .once = &.{
33148 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
33149 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
33150 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
33151 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
33152 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
33153 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
33154 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
33155 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
33156 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
33157 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
33158 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
33159 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
33160 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
33161 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
33162 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
33163 .{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
33164 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
33165 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
33166 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
33167 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
33168 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
33169 .{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
33170 .{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
33171 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
33172 .{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
33173 .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
33174 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
33175 .{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
33176 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
33177 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
33178 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
33179 .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33180 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
33181 .{ ._, ._, .bzhi, .tmp0q, .tmp1q, .tmp0q, ._ },
33182 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33183 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
33184 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
33185 } },
33186 }, .{
33187 .required_features = .{ .@"64bit", .bmi2, null, null },
33188 .src_constraints = .{
33189 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33190 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33191 .any,
33192 },
33193 .patterns = &.{
33194 .{ .src = .{ .to_mem, .to_mem, .none } },
33195 },
33196 .extra_temps = .{
33197 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33198 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
33199 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33200 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33201 .{ .type = .u64, .kind = .{ .reg = .rdx } },
33202 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
33203 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33204 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33205 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33206 .unused,
33207 .unused,
33208 },
33209 .dst_temps = .{ .mem, .{ .cc = .nz } },
33210 .clobbers = .{ .eflags = true },
33211 .each = .{ .once = &.{
33212 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
33213 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
33214 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
33215 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
33216 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
33217 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
33218 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
33219 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
33220 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
33221 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
33222 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
33223 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
33224 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
33225 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
33226 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
33227 .{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
33228 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
33229 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
33230 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
33231 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
33232 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
33233 .{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
33234 .{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
33235 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
33236 .{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
33237 .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
33238 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
33239 .{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
33240 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
33241 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
33242 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
33243 .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33244 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
33245 .{ ._, ._, .bzhi, .tmp0q, .tmp1q, .tmp0q, ._ },
33246 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33247 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
33248 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
33249 } },
33250 }, .{
33251 .required_features = .{ .@"64bit", .slow_incdec, null, null },
33252 .src_constraints = .{
33253 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33254 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33255 .any,
33256 },
33257 .patterns = &.{
33258 .{ .src = .{ .to_mem, .to_mem, .none } },
33259 },
33260 .extra_temps = .{
33261 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33262 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
33263 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33264 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33265 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33266 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
33267 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33268 .{ .type = .u64, .kind = .{ .reg = .rax } },
33269 .{ .type = .u64, .kind = .{ .reg = .rdx } },
33270 .unused,
33271 .unused,
33272 },
33273 .dst_temps = .{ .mem, .{ .cc = .nz } },
33274 .clobbers = .{ .eflags = true },
33275 .each = .{ .once = &.{
33276 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
33277 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
33278 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
33279 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
33280 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
33281 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
33282 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
33283 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
33284 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
33285 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
33286 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
33287 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
33288 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
33289 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
33290 .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
33291 .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
33292 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
33293 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
33294 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
33295 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
33296 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
33297 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
33298 .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
33299 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
33300 .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
33301 .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
33302 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
33303 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
33304 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
33305 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
33306 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
33307 .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
33308 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
33309 .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
33310 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33311 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
33312 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
33313 } },
33314 }, .{
33315 .required_features = .{ .@"64bit", null, null, null },
33316 .src_constraints = .{
33317 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33318 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
33319 .any,
33320 },
33321 .patterns = &.{
33322 .{ .src = .{ .to_mem, .to_mem, .none } },
33323 },
33324 .extra_temps = .{
33325 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33326 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
33327 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33328 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33329 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33330 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
33331 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33332 .{ .type = .u64, .kind = .{ .reg = .rax } },
33333 .{ .type = .u64, .kind = .{ .reg = .rdx } },
33334 .unused,
33335 .unused,
33336 },
33337 .dst_temps = .{ .mem, .{ .cc = .nz } },
33338 .clobbers = .{ .eflags = true },
33339 .each = .{ .once = &.{
33340 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
33341 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
33342 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
33343 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
33344 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
33345 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
33346 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
33347 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
33348 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
33349 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
33350 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
33351 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
33352 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
33353 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
33354 .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
33355 .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
33356 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
33357 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
33358 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
33359 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
33360 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
33361 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
33362 .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
33363 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
33364 .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
33365 .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
33366 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
33367 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
33368 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
33369 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
33370 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
33371 .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
33372 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
33373 .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
33374 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
33375 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
33376 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
33377 } },
33378 } }) catch |err| switch (err) {
33379 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
33380 @tagName(air_tag),
33381 ty_pl.ty.toType().fmt(pt),
33382 ops[0].tracking(cg),
33383 ops[1].tracking(cg),
33384 }),
33385 else => |e| return e,
33386 };
33387 try res[0].withOverflow(&res[1], cg);
33388 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
33389 },
2977733390 .alloc => if (use_old) try cg.airAlloc(inst) else {
2977833391 const ty = air_datas[@intFromEnum(inst)].ty;
2977933392 const slot = try cg.tempInit(ty, .{ .lea_frame = .{
......@@ -112826,6 +116439,7 @@ const Select = struct {
112826116439 const add_smin: Adjust = .{ .sign = .pos, .lhs = .smin, .op = .mul, .rhs = .@"1" };
112827116440 const sub_smin: Adjust = .{ .sign = .neg, .lhs = .smin, .op = .mul, .rhs = .@"1" };
112828116441 const add_umax: Adjust = .{ .sign = .pos, .lhs = .umax, .op = .mul, .rhs = .@"1" };
116442 const sub_umax: Adjust = .{ .sign = .neg, .lhs = .umax, .op = .mul, .rhs = .@"1" };
112829116443 const repeat: Adjust = .{ .sign = .pos, .lhs = .repeat, .op = .mul, .rhs = .@"1" };
112830116444 };
112831116445 const Ref = enum(u5) {
test/behavior/math.zig+12-3
......@@ -787,7 +787,6 @@ fn should_not_be_zero(x: f128) !void {
787787
788788test "umax wrapped squaring" {
789789 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
790 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
791790 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
792791
793792 {
......@@ -1050,13 +1049,13 @@ test "@mulWithOverflow bitsize > 32" {
10501049}
10511050
10521051test "@mulWithOverflow bitsize 128 bits" {
1053 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
10541052 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
10551053 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10561054 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10571055 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10581056 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10591057 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
1058 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
10601059
10611060 try testMulWithOverflow(u128, 3, 0x5555555555555555_5555555555555555, 0xffffffffffffffff_ffffffffffffffff, 0);
10621061 try testMulWithOverflow(u128, 3, 0x5555555555555555_5555555555555556, 2, 1);
......@@ -1070,13 +1069,19 @@ test "@mulWithOverflow bitsize 128 bits" {
10701069 try testMulWithOverflow(i128, 3, -0x2aaaaaaaaaaaaaaa_aaaaaaaaaaaaaaab, 0x7fffffffffffffff_ffffffffffffffff, 1);
10711070 try testMulWithOverflow(i128, -1, -1, 1, 0);
10721071 try testMulWithOverflow(i128, minInt(i128), minInt(i128), 0, 1);
1072
1073 try testMulWithOverflow(i128, 1 << 126, 1 << 1, -1 << 127, 1);
1074 try testMulWithOverflow(i128, -1 << 105, 1 << 22, -1 << 127, 0);
1075 try testMulWithOverflow(i128, 1 << 84, -1 << 43, -1 << 127, 0);
1076 try testMulWithOverflow(i128, -1 << 63, -1 << 64, -1 << 127, 1);
10731077}
10741078
1075test "@mulWithOverflow u256" {
1079test "@mulWithOverflow bitsize 256 bits" {
10761080 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
10771081 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
10781082 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10791083 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1084 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
10801085
10811086 {
10821087 const const_lhs: u256 = 8035709466408580321693645878924206181189;
......@@ -1106,6 +1111,10 @@ test "@mulWithOverflow u256" {
11061111 try std.testing.expect(var_result[0] == const_result[0]);
11071112 try std.testing.expect(var_result[1] == const_result[1]);
11081113 }
1114 try testMulWithOverflow(i256, 1 << 254, 1 << 1, -1 << 255, 1);
1115 try testMulWithOverflow(i256, -1 << 212, 1 << 43, -1 << 255, 0);
1116 try testMulWithOverflow(i256, 1 << 170, -1 << 85, -1 << 255, 0);
1117 try testMulWithOverflow(i256, -1 << 128, -1 << 127, -1 << 255, 1);
11091118}
11101119
11111120fn testSubWithOverflow(comptime T: type, a: T, b: T, sub: T, bit: u1) !void {
test/behavior/x86_64/binary.zig+17
......@@ -5338,6 +5338,15 @@ test mulUnsafe {
53385338 try test_mul_unsafe.testIntVectors();
53395339}
53405340
5341inline fn mulSafe(comptime Type: type, lhs: Type, rhs: Type) DoubleBits(Type) {
5342 @setRuntimeSafety(true);
5343 return @as(DoubleBits(Type), lhs) * rhs;
5344}
5345test mulSafe {
5346 const test_mul_safe = binary(mulSafe, .{});
5347 try test_mul_safe.testInts();
5348}
5349
53415350inline fn mulWrap(comptime Type: type, lhs: Type, rhs: Type) Type {
53425351 return lhs *% rhs;
53435352}
......@@ -5460,6 +5469,14 @@ test subWithOverflow {
54605469 try test_sub_with_overflow.testInts();
54615470}
54625471
5472inline fn mulWithOverflow(comptime Type: type, lhs: Type, rhs: Type) struct { Type, u1 } {
5473 return @mulWithOverflow(lhs, rhs);
5474}
5475test mulWithOverflow {
5476 const test_mul_with_overflow = binary(mulWithOverflow, .{});
5477 try test_mul_with_overflow.testInts();
5478}
5479
54635480inline fn equal(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs == rhs) {
54645481 return lhs == rhs;
54655482}