| ... | ... | @@ -2408,7 +2408,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2408 | 2408 | } |
| 2409 | 2409 | |
| 2410 | 2410 | fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2411 | | @setEvalBranchQuota(16_900); |
| 2411 | @setEvalBranchQuota(17_100); |
| 2412 | 2412 | const pt = cg.pt; |
| 2413 | 2413 | const zcu = pt.zcu; |
| 2414 | 2414 | const ip = &zcu.intern_pool; |
| ... | ... | @@ -2444,7 +2444,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2444 | 2444 | try cg.inst_tracking.ensureUnusedCapacity(cg.gpa, 1); |
| 2445 | 2445 | switch (air_tags[@intFromEnum(inst)]) { |
| 2446 | 2446 | // zig fmt: off |
| 2447 | | .sub_sat => try cg.airSubSat(inst), |
| 2448 | 2447 | .mul_sat => try cg.airMulSat(inst), |
| 2449 | 2448 | .shl_sat => try cg.airShlSat(inst), |
| 2450 | 2449 | |
| ... | ... | @@ -14815,6 +14814,1720 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14815 | 14814 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| 14816 | 14815 | }, |
| 14817 | 14816 | .sub_safe => unreachable, |
| 14817 | .sub_sat => |air_tag| if (use_old) try cg.airSubSat(inst) else fallback: { |
| 14818 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; |
| 14819 | if (cg.typeOf(bin_op.lhs).isVector(zcu)) break :fallback try cg.airSubSat(inst); |
| 14820 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| 14821 | var res: [1]Temp = undefined; |
| 14822 | cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{ |
| 14823 | .src_constraints = .{ .{ .exact_int = 1 }, .{ .exact_int = 1 }, .any }, |
| 14824 | .patterns = &.{ |
| 14825 | .{ .src = .{ .to_mut_gpr, .{ .imm = 0 }, .none } }, |
| 14826 | }, |
| 14827 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 14828 | .each = .{ .once = &.{} }, |
| 14829 | }, .{ |
| 14830 | .src_constraints = .{ .{ .exact_int = 1 }, .{ .exact_int = 1 }, .any }, |
| 14831 | .patterns = &.{ |
| 14832 | .{ .src = .{ .any, .imm8, .none } }, |
| 14833 | }, |
| 14834 | .dst_temps = .{ .{ .imm = 0 }, .unused }, |
| 14835 | .each = .{ .once = &.{} }, |
| 14836 | }, .{ |
| 14837 | .required_features = .{ .bmi, null, null, null }, |
| 14838 | .src_constraints = .{ .{ .exact_int = 1 }, .{ .exact_int = 1 }, .any }, |
| 14839 | .patterns = &.{ |
| 14840 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 14841 | }, |
| 14842 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }, .unused }, |
| 14843 | .clobbers = .{ .eflags = true }, |
| 14844 | .each = .{ .once = &.{ |
| 14845 | .{ ._, ._, .andn, .dst0d, .src1d, .src0d, ._ }, |
| 14846 | } }, |
| 14847 | }, .{ |
| 14848 | .src_constraints = .{ .{ .exact_int = 1 }, .{ .exact_int = 1 }, .any }, |
| 14849 | .patterns = &.{ |
| 14850 | .{ .src = .{ .mem, .to_mut_gpr, .none } }, |
| 14851 | .{ .src = .{ .to_gpr, .to_mut_gpr, .none } }, |
| 14852 | }, |
| 14853 | .dst_temps = .{ .{ .ref = .src1 }, .unused }, |
| 14854 | .clobbers = .{ .eflags = true }, |
| 14855 | .each = .{ .once = &.{ |
| 14856 | .{ ._, ._, .not, .src1b, ._, ._, ._ }, |
| 14857 | .{ ._, ._, .@"and", .dst0b, .src0b, ._, ._ }, |
| 14858 | } }, |
| 14859 | }, .{ |
| 14860 | .required_features = .{ .cmov, null, null, null }, |
| 14861 | .src_constraints = .{ .{ .exact_signed_int = 8 }, .{ .exact_signed_int = 8 }, .any }, |
| 14862 | .patterns = &.{ |
| 14863 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 14864 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 14865 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 14866 | }, |
| 14867 | .extra_temps = .{ |
| 14868 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| 14869 | .unused, |
| 14870 | .unused, |
| 14871 | .unused, |
| 14872 | .unused, |
| 14873 | .unused, |
| 14874 | .unused, |
| 14875 | .unused, |
| 14876 | .unused, |
| 14877 | .unused, |
| 14878 | .unused, |
| 14879 | }, |
| 14880 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 14881 | .clobbers = .{ .eflags = true }, |
| 14882 | .each = .{ .once = &.{ |
| 14883 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 14884 | .{ ._, ._r, .sa, .tmp0b, .ui(7), ._, ._ }, |
| 14885 | .{ ._, ._, .xor, .tmp0b, .sa(.src0, .add_smax), ._, ._ }, |
| 14886 | .{ ._, ._, .sub, .dst0b, .src1b, ._, ._ }, |
| 14887 | .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 14888 | } }, |
| 14889 | }, .{ |
| 14890 | .src_constraints = .{ .{ .exact_signed_int = 8 }, .{ .exact_signed_int = 8 }, .any }, |
| 14891 | .patterns = &.{ |
| 14892 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 14893 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 14894 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 14895 | }, |
| 14896 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 14897 | .clobbers = .{ .eflags = true }, |
| 14898 | .each = .{ .once = &.{ |
| 14899 | .{ ._, ._, .sub, .dst0b, .src1b, ._, ._ }, |
| 14900 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 14901 | .{ ._, ._r, .sa, .dst0b, .ui(7), ._, ._ }, |
| 14902 | .{ ._, ._, .xor, .dst0b, .sa(.src0, .add_smin), ._, ._ }, |
| 14903 | } }, |
| 14904 | }, .{ |
| 14905 | .required_features = .{ .cmov, null, null, null }, |
| 14906 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any }, |
| 14907 | .patterns = &.{ |
| 14908 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 14909 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 14910 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 14911 | }, |
| 14912 | .extra_temps = .{ |
| 14913 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| 14914 | .unused, |
| 14915 | .unused, |
| 14916 | .unused, |
| 14917 | .unused, |
| 14918 | .unused, |
| 14919 | .unused, |
| 14920 | .unused, |
| 14921 | .unused, |
| 14922 | .unused, |
| 14923 | .unused, |
| 14924 | }, |
| 14925 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 14926 | .clobbers = .{ .eflags = true }, |
| 14927 | .each = .{ .once = &.{ |
| 14928 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 14929 | .{ ._, ._r, .sa, .tmp0b, .ui(7), ._, ._ }, |
| 14930 | .{ ._, ._, .sub, .dst0b, .src1b, ._, ._ }, |
| 14931 | .{ ._, ._, .xor, .tmp0b, .sa(.src0, .add_smax), ._, ._ }, |
| 14932 | .{ ._, ._, .@"test", .dst0b, .sia(-1 << 7, .src0, .sub_smin), ._, ._ }, |
| 14933 | .{ ._, ._po, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 14934 | } }, |
| 14935 | }, .{ |
| 14936 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any }, |
| 14937 | .patterns = &.{ |
| 14938 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 14939 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 14940 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 14941 | }, |
| 14942 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 14943 | .clobbers = .{ .eflags = true }, |
| 14944 | .each = .{ .once = &.{ |
| 14945 | .{ ._, ._, .sub, .dst0b, .src1b, ._, ._ }, |
| 14946 | .{ ._, ._, .@"test", .dst0b, .sia(-1 << 7, .src0, .sub_smin), ._, ._ }, |
| 14947 | .{ ._, ._pe, .j, .@"0f", ._, ._, ._ }, |
| 14948 | .{ ._, ._r, .sa, .dst0b, .ui(7), ._, ._ }, |
| 14949 | .{ ._, ._, .xor, .dst0b, .sa(.src0, .add_smax), ._, ._ }, |
| 14950 | } }, |
| 14951 | }, .{ |
| 14952 | .required_features = .{ .cmov, null, null, null }, |
| 14953 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any }, |
| 14954 | .patterns = &.{ |
| 14955 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 14956 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 14957 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 14958 | }, |
| 14959 | .extra_temps = .{ |
| 14960 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 14961 | .unused, |
| 14962 | .unused, |
| 14963 | .unused, |
| 14964 | .unused, |
| 14965 | .unused, |
| 14966 | .unused, |
| 14967 | .unused, |
| 14968 | .unused, |
| 14969 | .unused, |
| 14970 | .unused, |
| 14971 | }, |
| 14972 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 14973 | .clobbers = .{ .eflags = true }, |
| 14974 | .each = .{ .once = &.{ |
| 14975 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 14976 | .{ ._, ._, .sub, .dst0b, .src1b, ._, ._ }, |
| 14977 | .{ ._, ._c, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 14978 | } }, |
| 14979 | }, .{ |
| 14980 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any }, |
| 14981 | .patterns = &.{ |
| 14982 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 14983 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 14984 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 14985 | }, |
| 14986 | .extra_temps = .{ |
| 14987 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 14988 | .unused, |
| 14989 | .unused, |
| 14990 | .unused, |
| 14991 | .unused, |
| 14992 | .unused, |
| 14993 | .unused, |
| 14994 | .unused, |
| 14995 | .unused, |
| 14996 | .unused, |
| 14997 | .unused, |
| 14998 | }, |
| 14999 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15000 | .clobbers = .{ .eflags = true }, |
| 15001 | .each = .{ .once = &.{ |
| 15002 | .{ ._, ._, .sub, .dst0b, .src1b, ._, ._ }, |
| 15003 | .{ ._, ._, .cmc, ._, ._, ._, ._ }, |
| 15004 | .{ ._, ._, .sbb, .tmp0d, .tmp0d, ._, ._ }, |
| 15005 | .{ ._, ._, .@"and", .dst0b, .tmp0b, ._, ._ }, |
| 15006 | } }, |
| 15007 | }, .{ |
| 15008 | .required_features = .{ .cmov, .fast_imm16, null, null }, |
| 15009 | .src_constraints = .{ .{ .exact_signed_int = 16 }, .{ .exact_signed_int = 16 }, .any }, |
| 15010 | .patterns = &.{ |
| 15011 | .{ .src = .{ .to_mut_gpr, .imm16, .none } }, |
| 15012 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15013 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15014 | }, |
| 15015 | .extra_temps = .{ |
| 15016 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15017 | .unused, |
| 15018 | .unused, |
| 15019 | .unused, |
| 15020 | .unused, |
| 15021 | .unused, |
| 15022 | .unused, |
| 15023 | .unused, |
| 15024 | .unused, |
| 15025 | .unused, |
| 15026 | .unused, |
| 15027 | }, |
| 15028 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15029 | .clobbers = .{ .eflags = true }, |
| 15030 | .each = .{ .once = &.{ |
| 15031 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15032 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15033 | .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ }, |
| 15034 | .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ }, |
| 15035 | .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 15036 | } }, |
| 15037 | }, .{ |
| 15038 | .required_features = .{ .cmov, null, null, null }, |
| 15039 | .src_constraints = .{ .{ .exact_signed_int = 16 }, .{ .exact_signed_int = 16 }, .any }, |
| 15040 | .patterns = &.{ |
| 15041 | .{ .src = .{ .to_mut_gpr, .imm16, .none } }, |
| 15042 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15043 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15044 | }, |
| 15045 | .extra_temps = .{ |
| 15046 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15047 | .unused, |
| 15048 | .unused, |
| 15049 | .unused, |
| 15050 | .unused, |
| 15051 | .unused, |
| 15052 | .unused, |
| 15053 | .unused, |
| 15054 | .unused, |
| 15055 | .unused, |
| 15056 | .unused, |
| 15057 | }, |
| 15058 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15059 | .clobbers = .{ .eflags = true }, |
| 15060 | .each = .{ .once = &.{ |
| 15061 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15062 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15063 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| 15064 | .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ }, |
| 15065 | .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 15066 | } }, |
| 15067 | }, .{ |
| 15068 | .required_features = .{ .fast_imm16, null, null, null }, |
| 15069 | .src_constraints = .{ .{ .exact_signed_int = 16 }, .{ .exact_signed_int = 16 }, .any }, |
| 15070 | .patterns = &.{ |
| 15071 | .{ .src = .{ .to_mut_gpr, .imm16, .none } }, |
| 15072 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15073 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15074 | }, |
| 15075 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15076 | .clobbers = .{ .eflags = true }, |
| 15077 | .each = .{ .once = &.{ |
| 15078 | .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ }, |
| 15079 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 15080 | .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ }, |
| 15081 | .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_smin), ._, ._ }, |
| 15082 | } }, |
| 15083 | }, .{ |
| 15084 | .src_constraints = .{ .{ .exact_signed_int = 16 }, .{ .exact_signed_int = 16 }, .any }, |
| 15085 | .patterns = &.{ |
| 15086 | .{ .src = .{ .to_mut_gpr, .imm16, .none } }, |
| 15087 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15088 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15089 | }, |
| 15090 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15091 | .clobbers = .{ .eflags = true }, |
| 15092 | .each = .{ .once = &.{ |
| 15093 | .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ }, |
| 15094 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 15095 | .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ }, |
| 15096 | .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smin), ._, ._ }, |
| 15097 | } }, |
| 15098 | }, .{ |
| 15099 | .required_features = .{ .cmov, .fast_imm16, null, null }, |
| 15100 | .src_constraints = .{ .{ .exact_signed_int = 15 }, .{ .exact_signed_int = 15 }, .any }, |
| 15101 | .patterns = &.{ |
| 15102 | .{ .src = .{ .to_mut_gpr, .imm16, .none } }, |
| 15103 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15104 | }, |
| 15105 | .extra_temps = .{ |
| 15106 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15107 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15108 | .unused, |
| 15109 | .unused, |
| 15110 | .unused, |
| 15111 | .unused, |
| 15112 | .unused, |
| 15113 | .unused, |
| 15114 | .unused, |
| 15115 | .unused, |
| 15116 | .unused, |
| 15117 | }, |
| 15118 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15119 | .clobbers = .{ .eflags = true }, |
| 15120 | .each = .{ .once = &.{ |
| 15121 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15122 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15123 | .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ }, |
| 15124 | .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ }, |
| 15125 | .{ ._, ._, .mov, .tmp1d, .dst0d, ._, ._ }, |
| 15126 | .{ ._, ._, .add, .tmp1w, .tmp1w, ._, ._ }, |
| 15127 | .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 15128 | } }, |
| 15129 | }, .{ |
| 15130 | .required_features = .{ .cmov, .fast_imm16, null, null }, |
| 15131 | .src_constraints = .{ .{ .exact_signed_int = 15 }, .{ .exact_signed_int = 15 }, .any }, |
| 15132 | .patterns = &.{ |
| 15133 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15134 | }, |
| 15135 | .extra_temps = .{ |
| 15136 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15137 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15138 | .unused, |
| 15139 | .unused, |
| 15140 | .unused, |
| 15141 | .unused, |
| 15142 | .unused, |
| 15143 | .unused, |
| 15144 | .unused, |
| 15145 | .unused, |
| 15146 | .unused, |
| 15147 | }, |
| 15148 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15149 | .clobbers = .{ .eflags = true }, |
| 15150 | .each = .{ .once = &.{ |
| 15151 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15152 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15153 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15154 | .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ }, |
| 15155 | .{ ._, ._, .mov, .tmp1d, .dst0d, ._, ._ }, |
| 15156 | .{ ._, ._, .add, .tmp1w, .tmp1w, ._, ._ }, |
| 15157 | .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 15158 | } }, |
| 15159 | }, .{ |
| 15160 | .required_features = .{ .cmov, null, null, null }, |
| 15161 | .src_constraints = .{ .{ .exact_signed_int = 15 }, .{ .exact_signed_int = 15 }, .any }, |
| 15162 | .patterns = &.{ |
| 15163 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15164 | }, |
| 15165 | .extra_temps = .{ |
| 15166 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15167 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15168 | .unused, |
| 15169 | .unused, |
| 15170 | .unused, |
| 15171 | .unused, |
| 15172 | .unused, |
| 15173 | .unused, |
| 15174 | .unused, |
| 15175 | .unused, |
| 15176 | .unused, |
| 15177 | }, |
| 15178 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15179 | .clobbers = .{ .eflags = true }, |
| 15180 | .each = .{ .once = &.{ |
| 15181 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15182 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15183 | .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ }, |
| 15184 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| 15185 | .{ ._, ._, .mov, .tmp1d, .dst0d, ._, ._ }, |
| 15186 | .{ ._, ._, .add, .tmp1w, .tmp1w, ._, ._ }, |
| 15187 | .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 15188 | } }, |
| 15189 | }, .{ |
| 15190 | .required_features = .{ .cmov, null, null, null }, |
| 15191 | .src_constraints = .{ .{ .exact_signed_int = 15 }, .{ .exact_signed_int = 15 }, .any }, |
| 15192 | .patterns = &.{ |
| 15193 | .{ .src = .{ .to_mut_gpr, .imm16, .none } }, |
| 15194 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15195 | }, |
| 15196 | .extra_temps = .{ |
| 15197 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15198 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15199 | .unused, |
| 15200 | .unused, |
| 15201 | .unused, |
| 15202 | .unused, |
| 15203 | .unused, |
| 15204 | .unused, |
| 15205 | .unused, |
| 15206 | .unused, |
| 15207 | .unused, |
| 15208 | }, |
| 15209 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15210 | .clobbers = .{ .eflags = true }, |
| 15211 | .each = .{ .once = &.{ |
| 15212 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15213 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15214 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15215 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| 15216 | .{ ._, ._, .mov, .tmp1d, .dst0d, ._, ._ }, |
| 15217 | .{ ._, ._, .add, .tmp1w, .tmp1w, ._, ._ }, |
| 15218 | .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 15219 | } }, |
| 15220 | }, .{ |
| 15221 | .required_features = .{ .fast_imm16, null, null, null }, |
| 15222 | .src_constraints = .{ .{ .exact_signed_int = 15 }, .{ .exact_signed_int = 15 }, .any }, |
| 15223 | .patterns = &.{ |
| 15224 | .{ .src = .{ .to_mut_gpr, .imm16, .none } }, |
| 15225 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15226 | }, |
| 15227 | .extra_temps = .{ |
| 15228 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15229 | .unused, |
| 15230 | .unused, |
| 15231 | .unused, |
| 15232 | .unused, |
| 15233 | .unused, |
| 15234 | .unused, |
| 15235 | .unused, |
| 15236 | .unused, |
| 15237 | .unused, |
| 15238 | .unused, |
| 15239 | }, |
| 15240 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15241 | .clobbers = .{ .eflags = true }, |
| 15242 | .each = .{ .once = &.{ |
| 15243 | .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ }, |
| 15244 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15245 | .{ ._, ._, .add, .tmp0w, .tmp0w, ._, ._ }, |
| 15246 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 15247 | .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ }, |
| 15248 | .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_smax), ._, ._ }, |
| 15249 | } }, |
| 15250 | }, .{ |
| 15251 | .required_features = .{ .fast_imm16, null, null, null }, |
| 15252 | .src_constraints = .{ .{ .exact_signed_int = 15 }, .{ .exact_signed_int = 15 }, .any }, |
| 15253 | .patterns = &.{ |
| 15254 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15255 | }, |
| 15256 | .extra_temps = .{ |
| 15257 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15258 | .unused, |
| 15259 | .unused, |
| 15260 | .unused, |
| 15261 | .unused, |
| 15262 | .unused, |
| 15263 | .unused, |
| 15264 | .unused, |
| 15265 | .unused, |
| 15266 | .unused, |
| 15267 | .unused, |
| 15268 | }, |
| 15269 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15270 | .clobbers = .{ .eflags = true }, |
| 15271 | .each = .{ .once = &.{ |
| 15272 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15273 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15274 | .{ ._, ._, .add, .tmp0w, .tmp0w, ._, ._ }, |
| 15275 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 15276 | .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ }, |
| 15277 | .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_smax), ._, ._ }, |
| 15278 | } }, |
| 15279 | }, .{ |
| 15280 | .src_constraints = .{ .{ .exact_signed_int = 15 }, .{ .exact_signed_int = 15 }, .any }, |
| 15281 | .patterns = &.{ |
| 15282 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15283 | }, |
| 15284 | .extra_temps = .{ |
| 15285 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15286 | .unused, |
| 15287 | .unused, |
| 15288 | .unused, |
| 15289 | .unused, |
| 15290 | .unused, |
| 15291 | .unused, |
| 15292 | .unused, |
| 15293 | .unused, |
| 15294 | .unused, |
| 15295 | .unused, |
| 15296 | }, |
| 15297 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15298 | .clobbers = .{ .eflags = true }, |
| 15299 | .each = .{ .once = &.{ |
| 15300 | .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ }, |
| 15301 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15302 | .{ ._, ._, .add, .tmp0w, .tmp0w, ._, ._ }, |
| 15303 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 15304 | .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ }, |
| 15305 | .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smax), ._, ._ }, |
| 15306 | } }, |
| 15307 | }, .{ |
| 15308 | .src_constraints = .{ .{ .exact_signed_int = 15 }, .{ .exact_signed_int = 15 }, .any }, |
| 15309 | .patterns = &.{ |
| 15310 | .{ .src = .{ .to_mut_gpr, .imm16, .none } }, |
| 15311 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15312 | }, |
| 15313 | .extra_temps = .{ |
| 15314 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15315 | .unused, |
| 15316 | .unused, |
| 15317 | .unused, |
| 15318 | .unused, |
| 15319 | .unused, |
| 15320 | .unused, |
| 15321 | .unused, |
| 15322 | .unused, |
| 15323 | .unused, |
| 15324 | .unused, |
| 15325 | }, |
| 15326 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15327 | .clobbers = .{ .eflags = true }, |
| 15328 | .each = .{ .once = &.{ |
| 15329 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15330 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15331 | .{ ._, ._, .add, .tmp0w, .tmp0w, ._, ._ }, |
| 15332 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 15333 | .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ }, |
| 15334 | .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smax), ._, ._ }, |
| 15335 | } }, |
| 15336 | }, .{ |
| 15337 | .required_features = .{ .bmi2, .cmov, .fast_imm16, null }, |
| 15338 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, |
| 15339 | .patterns = &.{ |
| 15340 | .{ .src = .{ .to_mut_gpr, .imm16, .none } }, |
| 15341 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15342 | }, |
| 15343 | .extra_temps = .{ |
| 15344 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15345 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15346 | .unused, |
| 15347 | .unused, |
| 15348 | .unused, |
| 15349 | .unused, |
| 15350 | .unused, |
| 15351 | .unused, |
| 15352 | .unused, |
| 15353 | .unused, |
| 15354 | .unused, |
| 15355 | }, |
| 15356 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15357 | .clobbers = .{ .eflags = true }, |
| 15358 | .each = .{ .once = &.{ |
| 15359 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15360 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15361 | .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ }, |
| 15362 | .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ }, |
| 15363 | .{ ._, ._rx, .ro, .tmp1d, .dst0d, .uia(1, .src0, .add_bit_size), ._ }, |
| 15364 | .{ ._, ._, .add, .tmp1d, .tmp1d, ._, ._ }, |
| 15365 | .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 15366 | } }, |
| 15367 | }, .{ |
| 15368 | .required_features = .{ .bmi2, .cmov, .fast_imm16, null }, |
| 15369 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, |
| 15370 | .patterns = &.{ |
| 15371 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15372 | }, |
| 15373 | .extra_temps = .{ |
| 15374 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15375 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15376 | .unused, |
| 15377 | .unused, |
| 15378 | .unused, |
| 15379 | .unused, |
| 15380 | .unused, |
| 15381 | .unused, |
| 15382 | .unused, |
| 15383 | .unused, |
| 15384 | .unused, |
| 15385 | }, |
| 15386 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15387 | .clobbers = .{ .eflags = true }, |
| 15388 | .each = .{ .once = &.{ |
| 15389 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15390 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15391 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15392 | .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ }, |
| 15393 | .{ ._, ._rx, .ro, .tmp1d, .dst0d, .uia(1, .src0, .add_bit_size), ._ }, |
| 15394 | .{ ._, ._, .add, .tmp1d, .tmp1d, ._, ._ }, |
| 15395 | .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 15396 | } }, |
| 15397 | }, .{ |
| 15398 | .required_features = .{ .bmi2, .cmov, null, null }, |
| 15399 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, |
| 15400 | .patterns = &.{ |
| 15401 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15402 | }, |
| 15403 | .extra_temps = .{ |
| 15404 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15405 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15406 | .unused, |
| 15407 | .unused, |
| 15408 | .unused, |
| 15409 | .unused, |
| 15410 | .unused, |
| 15411 | .unused, |
| 15412 | .unused, |
| 15413 | .unused, |
| 15414 | .unused, |
| 15415 | }, |
| 15416 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15417 | .clobbers = .{ .eflags = true }, |
| 15418 | .each = .{ .once = &.{ |
| 15419 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15420 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15421 | .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ }, |
| 15422 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| 15423 | .{ ._, ._rx, .ro, .tmp1d, .dst0d, .uia(1, .src0, .add_bit_size), ._ }, |
| 15424 | .{ ._, ._, .add, .tmp1d, .tmp1d, ._, ._ }, |
| 15425 | .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 15426 | } }, |
| 15427 | }, .{ |
| 15428 | .required_features = .{ .bmi2, .cmov, null, null }, |
| 15429 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, |
| 15430 | .patterns = &.{ |
| 15431 | .{ .src = .{ .to_mut_gpr, .imm16, .none } }, |
| 15432 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15433 | }, |
| 15434 | .extra_temps = .{ |
| 15435 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15436 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15437 | .unused, |
| 15438 | .unused, |
| 15439 | .unused, |
| 15440 | .unused, |
| 15441 | .unused, |
| 15442 | .unused, |
| 15443 | .unused, |
| 15444 | .unused, |
| 15445 | .unused, |
| 15446 | }, |
| 15447 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15448 | .clobbers = .{ .eflags = true }, |
| 15449 | .each = .{ .once = &.{ |
| 15450 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15451 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15452 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15453 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| 15454 | .{ ._, ._rx, .ro, .tmp1d, .dst0d, .uia(1, .src0, .add_bit_size), ._ }, |
| 15455 | .{ ._, ._, .add, .tmp1d, .tmp1d, ._, ._ }, |
| 15456 | .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 15457 | } }, |
| 15458 | }, .{ |
| 15459 | .required_features = .{ .cmov, .fast_imm16, null, null }, |
| 15460 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, |
| 15461 | .patterns = &.{ |
| 15462 | .{ .src = .{ .to_mut_gpr, .imm16, .none } }, |
| 15463 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15464 | }, |
| 15465 | .extra_temps = .{ |
| 15466 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15467 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15468 | .unused, |
| 15469 | .unused, |
| 15470 | .unused, |
| 15471 | .unused, |
| 15472 | .unused, |
| 15473 | .unused, |
| 15474 | .unused, |
| 15475 | .unused, |
| 15476 | .unused, |
| 15477 | }, |
| 15478 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15479 | .clobbers = .{ .eflags = true }, |
| 15480 | .each = .{ .once = &.{ |
| 15481 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15482 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15483 | .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ }, |
| 15484 | .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ }, |
| 15485 | .{ ._, ._, .mov, .tmp1d, .dst0d, ._, ._ }, |
| 15486 | .{ ._, ._l, .sa, .tmp1d, .uia(31, .src0, .sub_bit_size), ._, ._ }, |
| 15487 | .{ ._, ._, .add, .tmp1d, .tmp1d, ._, ._ }, |
| 15488 | .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 15489 | } }, |
| 15490 | }, .{ |
| 15491 | .required_features = .{ .cmov, .fast_imm16, null, null }, |
| 15492 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, |
| 15493 | .patterns = &.{ |
| 15494 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15495 | }, |
| 15496 | .extra_temps = .{ |
| 15497 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15498 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15499 | .unused, |
| 15500 | .unused, |
| 15501 | .unused, |
| 15502 | .unused, |
| 15503 | .unused, |
| 15504 | .unused, |
| 15505 | .unused, |
| 15506 | .unused, |
| 15507 | .unused, |
| 15508 | }, |
| 15509 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15510 | .clobbers = .{ .eflags = true }, |
| 15511 | .each = .{ .once = &.{ |
| 15512 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15513 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15514 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15515 | .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ }, |
| 15516 | .{ ._, ._, .mov, .tmp1d, .dst0d, ._, ._ }, |
| 15517 | .{ ._, ._l, .sa, .tmp1d, .uia(31, .src0, .sub_bit_size), ._, ._ }, |
| 15518 | .{ ._, ._, .add, .tmp1d, .tmp1d, ._, ._ }, |
| 15519 | .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 15520 | } }, |
| 15521 | }, .{ |
| 15522 | .required_features = .{ .cmov, null, null, null }, |
| 15523 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, |
| 15524 | .patterns = &.{ |
| 15525 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15526 | }, |
| 15527 | .extra_temps = .{ |
| 15528 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15529 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15530 | .unused, |
| 15531 | .unused, |
| 15532 | .unused, |
| 15533 | .unused, |
| 15534 | .unused, |
| 15535 | .unused, |
| 15536 | .unused, |
| 15537 | .unused, |
| 15538 | .unused, |
| 15539 | }, |
| 15540 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15541 | .clobbers = .{ .eflags = true }, |
| 15542 | .each = .{ .once = &.{ |
| 15543 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15544 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15545 | .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ }, |
| 15546 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| 15547 | .{ ._, ._, .mov, .tmp1d, .dst0d, ._, ._ }, |
| 15548 | .{ ._, ._l, .sa, .tmp1d, .uia(31, .src0, .sub_bit_size), ._, ._ }, |
| 15549 | .{ ._, ._, .add, .tmp1d, .tmp1d, ._, ._ }, |
| 15550 | .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 15551 | } }, |
| 15552 | }, .{ |
| 15553 | .required_features = .{ .cmov, null, null, null }, |
| 15554 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, |
| 15555 | .patterns = &.{ |
| 15556 | .{ .src = .{ .to_mut_gpr, .imm16, .none } }, |
| 15557 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15558 | }, |
| 15559 | .extra_temps = .{ |
| 15560 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15561 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15562 | .unused, |
| 15563 | .unused, |
| 15564 | .unused, |
| 15565 | .unused, |
| 15566 | .unused, |
| 15567 | .unused, |
| 15568 | .unused, |
| 15569 | .unused, |
| 15570 | .unused, |
| 15571 | }, |
| 15572 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15573 | .clobbers = .{ .eflags = true }, |
| 15574 | .each = .{ .once = &.{ |
| 15575 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15576 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15577 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15578 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| 15579 | .{ ._, ._, .mov, .tmp1d, .dst0d, ._, ._ }, |
| 15580 | .{ ._, ._l, .sa, .tmp1d, .uia(31, .src0, .sub_bit_size), ._, ._ }, |
| 15581 | .{ ._, ._, .add, .tmp1d, .tmp1d, ._, ._ }, |
| 15582 | .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 15583 | } }, |
| 15584 | }, .{ |
| 15585 | .required_features = .{ .fast_imm16, null, null, null }, |
| 15586 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, |
| 15587 | .patterns = &.{ |
| 15588 | .{ .src = .{ .to_mut_gpr, .imm16, .none } }, |
| 15589 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15590 | }, |
| 15591 | .extra_temps = .{ |
| 15592 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15593 | .unused, |
| 15594 | .unused, |
| 15595 | .unused, |
| 15596 | .unused, |
| 15597 | .unused, |
| 15598 | .unused, |
| 15599 | .unused, |
| 15600 | .unused, |
| 15601 | .unused, |
| 15602 | .unused, |
| 15603 | }, |
| 15604 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15605 | .clobbers = .{ .eflags = true }, |
| 15606 | .each = .{ .once = &.{ |
| 15607 | .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ }, |
| 15608 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15609 | .{ ._, ._l, .sa, .tmp0d, .uia(31, .src0, .sub_bit_size), ._, ._ }, |
| 15610 | .{ ._, ._, .add, .tmp0d, .tmp0d, ._, ._ }, |
| 15611 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 15612 | .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ }, |
| 15613 | .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_smax), ._, ._ }, |
| 15614 | } }, |
| 15615 | }, .{ |
| 15616 | .required_features = .{ .fast_imm16, null, null, null }, |
| 15617 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, |
| 15618 | .patterns = &.{ |
| 15619 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15620 | }, |
| 15621 | .extra_temps = .{ |
| 15622 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15623 | .unused, |
| 15624 | .unused, |
| 15625 | .unused, |
| 15626 | .unused, |
| 15627 | .unused, |
| 15628 | .unused, |
| 15629 | .unused, |
| 15630 | .unused, |
| 15631 | .unused, |
| 15632 | .unused, |
| 15633 | }, |
| 15634 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15635 | .clobbers = .{ .eflags = true }, |
| 15636 | .each = .{ .once = &.{ |
| 15637 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15638 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15639 | .{ ._, ._l, .sa, .tmp0d, .uia(31, .src0, .sub_bit_size), ._, ._ }, |
| 15640 | .{ ._, ._, .add, .tmp0d, .tmp0d, ._, ._ }, |
| 15641 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 15642 | .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ }, |
| 15643 | .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_smax), ._, ._ }, |
| 15644 | } }, |
| 15645 | }, .{ |
| 15646 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, |
| 15647 | .patterns = &.{ |
| 15648 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15649 | }, |
| 15650 | .extra_temps = .{ |
| 15651 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15652 | .unused, |
| 15653 | .unused, |
| 15654 | .unused, |
| 15655 | .unused, |
| 15656 | .unused, |
| 15657 | .unused, |
| 15658 | .unused, |
| 15659 | .unused, |
| 15660 | .unused, |
| 15661 | .unused, |
| 15662 | }, |
| 15663 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15664 | .clobbers = .{ .eflags = true }, |
| 15665 | .each = .{ .once = &.{ |
| 15666 | .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ }, |
| 15667 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15668 | .{ ._, ._l, .sa, .tmp0d, .uia(31, .src0, .sub_bit_size), ._, ._ }, |
| 15669 | .{ ._, ._, .add, .tmp0d, .tmp0d, ._, ._ }, |
| 15670 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 15671 | .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ }, |
| 15672 | .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smax), ._, ._ }, |
| 15673 | } }, |
| 15674 | }, .{ |
| 15675 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, |
| 15676 | .patterns = &.{ |
| 15677 | .{ .src = .{ .to_mut_gpr, .imm16, .none } }, |
| 15678 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15679 | }, |
| 15680 | .extra_temps = .{ |
| 15681 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 15682 | .unused, |
| 15683 | .unused, |
| 15684 | .unused, |
| 15685 | .unused, |
| 15686 | .unused, |
| 15687 | .unused, |
| 15688 | .unused, |
| 15689 | .unused, |
| 15690 | .unused, |
| 15691 | .unused, |
| 15692 | }, |
| 15693 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15694 | .clobbers = .{ .eflags = true }, |
| 15695 | .each = .{ .once = &.{ |
| 15696 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15697 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15698 | .{ ._, ._l, .sa, .tmp0d, .uia(31, .src0, .sub_bit_size), ._, ._ }, |
| 15699 | .{ ._, ._, .add, .tmp0d, .tmp0d, ._, ._ }, |
| 15700 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 15701 | .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ }, |
| 15702 | .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smax), ._, ._ }, |
| 15703 | } }, |
| 15704 | }, .{ |
| 15705 | .required_features = .{ .cmov, null, null, null }, |
| 15706 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any }, |
| 15707 | .patterns = &.{ |
| 15708 | .{ .src = .{ .to_mut_gpr, .imm16, .none } }, |
| 15709 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15710 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15711 | }, |
| 15712 | .extra_temps = .{ |
| 15713 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 15714 | .unused, |
| 15715 | .unused, |
| 15716 | .unused, |
| 15717 | .unused, |
| 15718 | .unused, |
| 15719 | .unused, |
| 15720 | .unused, |
| 15721 | .unused, |
| 15722 | .unused, |
| 15723 | .unused, |
| 15724 | }, |
| 15725 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15726 | .clobbers = .{ .eflags = true }, |
| 15727 | .each = .{ .once = &.{ |
| 15728 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 15729 | .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ }, |
| 15730 | .{ ._, ._c, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 15731 | } }, |
| 15732 | }, .{ |
| 15733 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any }, |
| 15734 | .patterns = &.{ |
| 15735 | .{ .src = .{ .to_mut_gpr, .imm16, .none } }, |
| 15736 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15737 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15738 | }, |
| 15739 | .extra_temps = .{ |
| 15740 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 15741 | .unused, |
| 15742 | .unused, |
| 15743 | .unused, |
| 15744 | .unused, |
| 15745 | .unused, |
| 15746 | .unused, |
| 15747 | .unused, |
| 15748 | .unused, |
| 15749 | .unused, |
| 15750 | .unused, |
| 15751 | }, |
| 15752 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15753 | .clobbers = .{ .eflags = true }, |
| 15754 | .each = .{ .once = &.{ |
| 15755 | .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ }, |
| 15756 | .{ ._, ._, .cmc, ._, ._, ._, ._ }, |
| 15757 | .{ ._, ._, .sbb, .tmp0d, .tmp0d, ._, ._ }, |
| 15758 | .{ ._, ._, .@"and", .dst0d, .tmp0d, ._, ._ }, |
| 15759 | } }, |
| 15760 | }, .{ |
| 15761 | .required_features = .{ .cmov, null, null, null }, |
| 15762 | .src_constraints = .{ .{ .exact_signed_int = 32 }, .{ .exact_signed_int = 32 }, .any }, |
| 15763 | .patterns = &.{ |
| 15764 | .{ .src = .{ .to_mut_gpr, .imm32, .none } }, |
| 15765 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15766 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15767 | }, |
| 15768 | .extra_temps = .{ |
| 15769 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| 15770 | .unused, |
| 15771 | .unused, |
| 15772 | .unused, |
| 15773 | .unused, |
| 15774 | .unused, |
| 15775 | .unused, |
| 15776 | .unused, |
| 15777 | .unused, |
| 15778 | .unused, |
| 15779 | .unused, |
| 15780 | }, |
| 15781 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15782 | .clobbers = .{ .eflags = true }, |
| 15783 | .each = .{ .once = &.{ |
| 15784 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15785 | .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ }, |
| 15786 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| 15787 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15788 | .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 15789 | } }, |
| 15790 | }, .{ |
| 15791 | .src_constraints = .{ .{ .exact_signed_int = 32 }, .{ .exact_signed_int = 32 }, .any }, |
| 15792 | .patterns = &.{ |
| 15793 | .{ .src = .{ .to_mut_gpr, .imm32, .none } }, |
| 15794 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15795 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15796 | }, |
| 15797 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15798 | .clobbers = .{ .eflags = true }, |
| 15799 | .each = .{ .once = &.{ |
| 15800 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15801 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 15802 | .{ ._, ._r, .sa, .dst0d, .ui(31), ._, ._ }, |
| 15803 | .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smin), ._, ._ }, |
| 15804 | } }, |
| 15805 | }, .{ |
| 15806 | .required_features = .{ .cmov, null, null, null }, |
| 15807 | .src_constraints = .{ .{ .exact_signed_int = 31 }, .{ .exact_signed_int = 31 }, .any }, |
| 15808 | .patterns = &.{ |
| 15809 | .{ .src = .{ .to_mut_gpr, .imm32, .none } }, |
| 15810 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15811 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15812 | }, |
| 15813 | .extra_temps = .{ |
| 15814 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| 15815 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| 15816 | .unused, |
| 15817 | .unused, |
| 15818 | .unused, |
| 15819 | .unused, |
| 15820 | .unused, |
| 15821 | .unused, |
| 15822 | .unused, |
| 15823 | .unused, |
| 15824 | .unused, |
| 15825 | }, |
| 15826 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15827 | .clobbers = .{ .eflags = true }, |
| 15828 | .each = .{ .once = &.{ |
| 15829 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15830 | .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ }, |
| 15831 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15832 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| 15833 | .{ ._, ._, .mov, .tmp1d, .dst0d, ._, ._ }, |
| 15834 | .{ ._, ._, .add, .tmp1d, .tmp1d, ._, ._ }, |
| 15835 | .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 15836 | } }, |
| 15837 | }, .{ |
| 15838 | .src_constraints = .{ .{ .exact_signed_int = 31 }, .{ .exact_signed_int = 31 }, .any }, |
| 15839 | .patterns = &.{ |
| 15840 | .{ .src = .{ .to_mut_gpr, .imm32, .none } }, |
| 15841 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15842 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15843 | }, |
| 15844 | .extra_temps = .{ |
| 15845 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| 15846 | .unused, |
| 15847 | .unused, |
| 15848 | .unused, |
| 15849 | .unused, |
| 15850 | .unused, |
| 15851 | .unused, |
| 15852 | .unused, |
| 15853 | .unused, |
| 15854 | .unused, |
| 15855 | .unused, |
| 15856 | }, |
| 15857 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15858 | .clobbers = .{ .eflags = true }, |
| 15859 | .each = .{ .once = &.{ |
| 15860 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15861 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15862 | .{ ._, ._, .add, .tmp0d, .tmp0d, ._, ._ }, |
| 15863 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 15864 | .{ ._, ._r, .sa, .dst0d, .ui(31), ._, ._ }, |
| 15865 | .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smax), ._, ._ }, |
| 15866 | } }, |
| 15867 | }, .{ |
| 15868 | .required_features = .{ .bmi2, .cmov, null, null }, |
| 15869 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any }, |
| 15870 | .patterns = &.{ |
| 15871 | .{ .src = .{ .to_mut_gpr, .imm32, .none } }, |
| 15872 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15873 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15874 | }, |
| 15875 | .extra_temps = .{ |
| 15876 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| 15877 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| 15878 | .unused, |
| 15879 | .unused, |
| 15880 | .unused, |
| 15881 | .unused, |
| 15882 | .unused, |
| 15883 | .unused, |
| 15884 | .unused, |
| 15885 | .unused, |
| 15886 | .unused, |
| 15887 | }, |
| 15888 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15889 | .clobbers = .{ .eflags = true }, |
| 15890 | .each = .{ .once = &.{ |
| 15891 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15892 | .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ }, |
| 15893 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15894 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| 15895 | .{ ._, ._rx, .ro, .tmp1d, .dst0d, .uia(1, .src0, .add_bit_size), ._ }, |
| 15896 | .{ ._, ._, .add, .tmp1d, .tmp1d, ._, ._ }, |
| 15897 | .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 15898 | } }, |
| 15899 | }, .{ |
| 15900 | .required_features = .{ .cmov, null, null, null }, |
| 15901 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any }, |
| 15902 | .patterns = &.{ |
| 15903 | .{ .src = .{ .to_mut_gpr, .imm32, .none } }, |
| 15904 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15905 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15906 | }, |
| 15907 | .extra_temps = .{ |
| 15908 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| 15909 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| 15910 | .unused, |
| 15911 | .unused, |
| 15912 | .unused, |
| 15913 | .unused, |
| 15914 | .unused, |
| 15915 | .unused, |
| 15916 | .unused, |
| 15917 | .unused, |
| 15918 | .unused, |
| 15919 | }, |
| 15920 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15921 | .clobbers = .{ .eflags = true }, |
| 15922 | .each = .{ .once = &.{ |
| 15923 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15924 | .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ }, |
| 15925 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15926 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| 15927 | .{ ._, ._, .mov, .tmp1d, .dst0d, ._, ._ }, |
| 15928 | .{ ._, ._l, .sa, .tmp1d, .uia(31, .src0, .sub_bit_size), ._, ._ }, |
| 15929 | .{ ._, ._, .add, .tmp1d, .tmp1d, ._, ._ }, |
| 15930 | .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 15931 | } }, |
| 15932 | }, .{ |
| 15933 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any }, |
| 15934 | .patterns = &.{ |
| 15935 | .{ .src = .{ .to_mut_gpr, .imm32, .none } }, |
| 15936 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15937 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15938 | }, |
| 15939 | .extra_temps = .{ |
| 15940 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| 15941 | .unused, |
| 15942 | .unused, |
| 15943 | .unused, |
| 15944 | .unused, |
| 15945 | .unused, |
| 15946 | .unused, |
| 15947 | .unused, |
| 15948 | .unused, |
| 15949 | .unused, |
| 15950 | .unused, |
| 15951 | }, |
| 15952 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15953 | .clobbers = .{ .eflags = true }, |
| 15954 | .each = .{ .once = &.{ |
| 15955 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15956 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15957 | .{ ._, ._l, .sa, .tmp0d, .uia(31, .src0, .sub_bit_size), ._, ._ }, |
| 15958 | .{ ._, ._, .add, .tmp0d, .tmp0d, ._, ._ }, |
| 15959 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 15960 | .{ ._, ._r, .sa, .dst0d, .ui(31), ._, ._ }, |
| 15961 | .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smax), ._, ._ }, |
| 15962 | } }, |
| 15963 | }, .{ |
| 15964 | .required_features = .{ .cmov, null, null, null }, |
| 15965 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any }, |
| 15966 | .patterns = &.{ |
| 15967 | .{ .src = .{ .to_mut_gpr, .imm32, .none } }, |
| 15968 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15969 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15970 | }, |
| 15971 | .extra_temps = .{ |
| 15972 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 15973 | .unused, |
| 15974 | .unused, |
| 15975 | .unused, |
| 15976 | .unused, |
| 15977 | .unused, |
| 15978 | .unused, |
| 15979 | .unused, |
| 15980 | .unused, |
| 15981 | .unused, |
| 15982 | .unused, |
| 15983 | }, |
| 15984 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15985 | .clobbers = .{ .eflags = true }, |
| 15986 | .each = .{ .once = &.{ |
| 15987 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 15988 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15989 | .{ ._, ._c, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 15990 | } }, |
| 15991 | }, .{ |
| 15992 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any }, |
| 15993 | .patterns = &.{ |
| 15994 | .{ .src = .{ .to_mut_gpr, .imm32, .none } }, |
| 15995 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 15996 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 15997 | }, |
| 15998 | .extra_temps = .{ |
| 15999 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 16000 | .unused, |
| 16001 | .unused, |
| 16002 | .unused, |
| 16003 | .unused, |
| 16004 | .unused, |
| 16005 | .unused, |
| 16006 | .unused, |
| 16007 | .unused, |
| 16008 | .unused, |
| 16009 | .unused, |
| 16010 | }, |
| 16011 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 16012 | .clobbers = .{ .eflags = true }, |
| 16013 | .each = .{ .once = &.{ |
| 16014 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 16015 | .{ ._, ._, .cmc, ._, ._, ._, ._ }, |
| 16016 | .{ ._, ._, .sbb, .tmp0d, .tmp0d, ._, ._ }, |
| 16017 | .{ ._, ._, .@"and", .dst0d, .tmp0d, ._, ._ }, |
| 16018 | } }, |
| 16019 | }, .{ |
| 16020 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| 16021 | .src_constraints = .{ .{ .exact_signed_int = 64 }, .{ .exact_signed_int = 64 }, .any }, |
| 16022 | .patterns = &.{ |
| 16023 | .{ .src = .{ .to_mut_gpr, .simm32, .none } }, |
| 16024 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 16025 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 16026 | }, |
| 16027 | .extra_temps = .{ |
| 16028 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 16029 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 16030 | .unused, |
| 16031 | .unused, |
| 16032 | .unused, |
| 16033 | .unused, |
| 16034 | .unused, |
| 16035 | .unused, |
| 16036 | .unused, |
| 16037 | .unused, |
| 16038 | .unused, |
| 16039 | }, |
| 16040 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 16041 | .clobbers = .{ .eflags = true }, |
| 16042 | .each = .{ .once = &.{ |
| 16043 | .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ }, |
| 16044 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 16045 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ }, |
| 16046 | .{ ._, ._, .xor, .tmp0q, .tmp1q, ._, ._ }, |
| 16047 | .{ ._, ._, .sub, .dst0q, .src1q, ._, ._ }, |
| 16048 | .{ ._, ._o, .cmov, .dst0q, .tmp0q, ._, ._ }, |
| 16049 | } }, |
| 16050 | }, .{ |
| 16051 | .required_features = .{ .@"64bit", null, null, null }, |
| 16052 | .src_constraints = .{ .{ .exact_signed_int = 64 }, .{ .exact_signed_int = 64 }, .any }, |
| 16053 | .patterns = &.{ |
| 16054 | .{ .src = .{ .to_mut_gpr, .simm32, .none } }, |
| 16055 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 16056 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 16057 | }, |
| 16058 | .extra_temps = .{ |
| 16059 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 16060 | .unused, |
| 16061 | .unused, |
| 16062 | .unused, |
| 16063 | .unused, |
| 16064 | .unused, |
| 16065 | .unused, |
| 16066 | .unused, |
| 16067 | .unused, |
| 16068 | .unused, |
| 16069 | .unused, |
| 16070 | }, |
| 16071 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 16072 | .clobbers = .{ .eflags = true }, |
| 16073 | .each = .{ .once = &.{ |
| 16074 | .{ ._, ._, .sub, .dst0q, .src1q, ._, ._ }, |
| 16075 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 16076 | .{ ._, ._r, .sa, .dst0q, .ui(63), ._, ._ }, |
| 16077 | .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_smin), ._, ._ }, |
| 16078 | .{ ._, ._, .xor, .dst0q, .tmp0q, ._, ._ }, |
| 16079 | } }, |
| 16080 | }, .{ |
| 16081 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| 16082 | .src_constraints = .{ .{ .exact_signed_int = 63 }, .{ .exact_signed_int = 63 }, .any }, |
| 16083 | .patterns = &.{ |
| 16084 | .{ .src = .{ .to_mut_gpr, .simm32, .none } }, |
| 16085 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 16086 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 16087 | }, |
| 16088 | .extra_temps = .{ |
| 16089 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 16090 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 16091 | .unused, |
| 16092 | .unused, |
| 16093 | .unused, |
| 16094 | .unused, |
| 16095 | .unused, |
| 16096 | .unused, |
| 16097 | .unused, |
| 16098 | .unused, |
| 16099 | .unused, |
| 16100 | }, |
| 16101 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 16102 | .clobbers = .{ .eflags = true }, |
| 16103 | .each = .{ .once = &.{ |
| 16104 | .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ }, |
| 16105 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 16106 | .{ ._, ._, .sub, .dst0q, .src1q, ._, ._ }, |
| 16107 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ }, |
| 16108 | .{ ._, ._, .xor, .tmp0q, .tmp1q, ._, ._ }, |
| 16109 | .{ ._, ._, .mov, .tmp1q, .dst0q, ._, ._ }, |
| 16110 | .{ ._, ._, .add, .tmp1q, .tmp1q, ._, ._ }, |
| 16111 | .{ ._, ._o, .cmov, .dst0q, .tmp0q, ._, ._ }, |
| 16112 | } }, |
| 16113 | }, .{ |
| 16114 | .required_features = .{ .@"64bit", null, null, null }, |
| 16115 | .src_constraints = .{ .{ .exact_signed_int = 63 }, .{ .exact_signed_int = 63 }, .any }, |
| 16116 | .patterns = &.{ |
| 16117 | .{ .src = .{ .to_mut_gpr, .simm32, .none } }, |
| 16118 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 16119 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 16120 | }, |
| 16121 | .extra_temps = .{ |
| 16122 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 16123 | .unused, |
| 16124 | .unused, |
| 16125 | .unused, |
| 16126 | .unused, |
| 16127 | .unused, |
| 16128 | .unused, |
| 16129 | .unused, |
| 16130 | .unused, |
| 16131 | .unused, |
| 16132 | .unused, |
| 16133 | }, |
| 16134 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 16135 | .clobbers = .{ .eflags = true }, |
| 16136 | .each = .{ .once = &.{ |
| 16137 | .{ ._, ._, .sub, .dst0q, .src1q, ._, ._ }, |
| 16138 | .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ }, |
| 16139 | .{ ._, ._, .add, .tmp0q, .tmp0q, ._, ._ }, |
| 16140 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 16141 | .{ ._, ._r, .sa, .dst0q, .ui(63), ._, ._ }, |
| 16142 | .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_smax), ._, ._ }, |
| 16143 | .{ ._, ._, .xor, .dst0q, .tmp0q, ._, ._ }, |
| 16144 | } }, |
| 16145 | }, .{ |
| 16146 | .required_features = .{ .@"64bit", .bmi2, .cmov, null }, |
| 16147 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any }, |
| 16148 | .patterns = &.{ |
| 16149 | .{ .src = .{ .to_mut_gpr, .simm32, .none } }, |
| 16150 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 16151 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 16152 | }, |
| 16153 | .extra_temps = .{ |
| 16154 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 16155 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 16156 | .unused, |
| 16157 | .unused, |
| 16158 | .unused, |
| 16159 | .unused, |
| 16160 | .unused, |
| 16161 | .unused, |
| 16162 | .unused, |
| 16163 | .unused, |
| 16164 | .unused, |
| 16165 | }, |
| 16166 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 16167 | .clobbers = .{ .eflags = true }, |
| 16168 | .each = .{ .once = &.{ |
| 16169 | .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ }, |
| 16170 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 16171 | .{ ._, ._, .sub, .dst0q, .src1q, ._, ._ }, |
| 16172 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ }, |
| 16173 | .{ ._, ._, .xor, .tmp0q, .tmp1q, ._, ._ }, |
| 16174 | .{ ._, ._rx, .ro, .tmp1q, .dst0q, .sia(-31, .src0, .add_bit_size), ._ }, |
| 16175 | .{ ._, ._, .add, .tmp1d, .tmp1d, ._, ._ }, |
| 16176 | .{ ._, ._o, .cmov, .dst0q, .tmp0q, ._, ._ }, |
| 16177 | } }, |
| 16178 | }, .{ |
| 16179 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| 16180 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any }, |
| 16181 | .patterns = &.{ |
| 16182 | .{ .src = .{ .to_mut_gpr, .simm32, .none } }, |
| 16183 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 16184 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 16185 | }, |
| 16186 | .extra_temps = .{ |
| 16187 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 16188 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 16189 | .unused, |
| 16190 | .unused, |
| 16191 | .unused, |
| 16192 | .unused, |
| 16193 | .unused, |
| 16194 | .unused, |
| 16195 | .unused, |
| 16196 | .unused, |
| 16197 | .unused, |
| 16198 | }, |
| 16199 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 16200 | .clobbers = .{ .eflags = true }, |
| 16201 | .each = .{ .once = &.{ |
| 16202 | .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ }, |
| 16203 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 16204 | .{ ._, ._, .sub, .dst0q, .src1q, ._, ._ }, |
| 16205 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ }, |
| 16206 | .{ ._, ._, .xor, .tmp0q, .tmp1q, ._, ._ }, |
| 16207 | .{ ._, ._, .mov, .tmp1q, .dst0q, ._, ._ }, |
| 16208 | .{ ._, ._r, .sh, .tmp1q, .sia(-31, .src0, .add_bit_size), ._, ._ }, |
| 16209 | .{ ._, ._, .add, .tmp1d, .tmp1d, ._, ._ }, |
| 16210 | .{ ._, ._o, .cmov, .dst0q, .tmp0q, ._, ._ }, |
| 16211 | } }, |
| 16212 | }, .{ |
| 16213 | .required_features = .{ .@"64bit", null, null, null }, |
| 16214 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any }, |
| 16215 | .patterns = &.{ |
| 16216 | .{ .src = .{ .to_mut_gpr, .simm32, .none } }, |
| 16217 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 16218 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 16219 | }, |
| 16220 | .extra_temps = .{ |
| 16221 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 16222 | .unused, |
| 16223 | .unused, |
| 16224 | .unused, |
| 16225 | .unused, |
| 16226 | .unused, |
| 16227 | .unused, |
| 16228 | .unused, |
| 16229 | .unused, |
| 16230 | .unused, |
| 16231 | .unused, |
| 16232 | }, |
| 16233 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 16234 | .clobbers = .{ .eflags = true }, |
| 16235 | .each = .{ .once = &.{ |
| 16236 | .{ ._, ._, .sub, .dst0q, .src1q, ._, ._ }, |
| 16237 | .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ }, |
| 16238 | .{ ._, ._r, .sh, .tmp0q, .sia(-31, .src0, .add_bit_size), ._, ._ }, |
| 16239 | .{ ._, ._, .add, .tmp0d, .tmp0d, ._, ._ }, |
| 16240 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 16241 | .{ ._, ._r, .sa, .dst0q, .ui(63), ._, ._ }, |
| 16242 | .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_smax), ._, ._ }, |
| 16243 | .{ ._, ._, .xor, .dst0q, .tmp0q, ._, ._ }, |
| 16244 | } }, |
| 16245 | }, .{ |
| 16246 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| 16247 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any }, |
| 16248 | .patterns = &.{ |
| 16249 | .{ .src = .{ .to_mut_gpr, .simm32, .none } }, |
| 16250 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 16251 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 16252 | }, |
| 16253 | .extra_temps = .{ |
| 16254 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 16255 | .unused, |
| 16256 | .unused, |
| 16257 | .unused, |
| 16258 | .unused, |
| 16259 | .unused, |
| 16260 | .unused, |
| 16261 | .unused, |
| 16262 | .unused, |
| 16263 | .unused, |
| 16264 | .unused, |
| 16265 | }, |
| 16266 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 16267 | .clobbers = .{ .eflags = true }, |
| 16268 | .each = .{ .once = &.{ |
| 16269 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 16270 | .{ ._, ._, .sub, .dst0q, .src1q, ._, ._ }, |
| 16271 | .{ ._, ._c, .cmov, .dst0q, .tmp0q, ._, ._ }, |
| 16272 | } }, |
| 16273 | }, .{ |
| 16274 | .required_features = .{ .@"64bit", null, null, null }, |
| 16275 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any }, |
| 16276 | .patterns = &.{ |
| 16277 | .{ .src = .{ .to_mut_gpr, .simm32, .none } }, |
| 16278 | .{ .src = .{ .to_mut_gpr, .mem, .none } }, |
| 16279 | .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, |
| 16280 | }, |
| 16281 | .extra_temps = .{ |
| 16282 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 16283 | .unused, |
| 16284 | .unused, |
| 16285 | .unused, |
| 16286 | .unused, |
| 16287 | .unused, |
| 16288 | .unused, |
| 16289 | .unused, |
| 16290 | .unused, |
| 16291 | .unused, |
| 16292 | .unused, |
| 16293 | }, |
| 16294 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 16295 | .clobbers = .{ .eflags = true }, |
| 16296 | .each = .{ .once = &.{ |
| 16297 | .{ ._, ._, .sub, .dst0q, .src1q, ._, ._ }, |
| 16298 | .{ ._, ._, .cmc, ._, ._, ._, ._ }, |
| 16299 | .{ ._, ._, .sbb, .tmp0q, .tmp0q, ._, ._ }, |
| 16300 | .{ ._, ._, .@"and", .dst0q, .tmp0q, ._, ._ }, |
| 16301 | } }, |
| 16302 | }, .{ |
| 16303 | .required_features = .{ .@"64bit", null, null, null }, |
| 16304 | .src_constraints = .{ |
| 16305 | .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } }, |
| 16306 | .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } }, |
| 16307 | .any, |
| 16308 | }, |
| 16309 | .patterns = &.{ |
| 16310 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16311 | }, |
| 16312 | .extra_temps = .{ |
| 16313 | .{ .type = .isize, .kind = .{ .reg = .rdi } }, |
| 16314 | .{ .type = .i64, .kind = .{ .reg = .rax } }, |
| 16315 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, |
| 16316 | .unused, |
| 16317 | .unused, |
| 16318 | .unused, |
| 16319 | .unused, |
| 16320 | .unused, |
| 16321 | .unused, |
| 16322 | .unused, |
| 16323 | .unused, |
| 16324 | }, |
| 16325 | .dst_temps = .{ .mem, .unused }, |
| 16326 | .clobbers = .{ .eflags = true }, |
| 16327 | .each = .{ .once = &.{ |
| 16328 | .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ }, |
| 16329 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 16330 | .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ }, |
| 16331 | .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ }, |
| 16332 | .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp1q, ._, ._ }, |
| 16333 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 16334 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 16335 | .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ }, |
| 16336 | .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ }, |
| 16337 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 16338 | .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, |
| 16339 | .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ }, |
| 16340 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .src0, .add_size_div_8), ._, ._ }, |
| 16341 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 16342 | .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_smin), ._, ._ }, |
| 16343 | .{ ._, ._, .xor, .tmp1q, .tmp2q, ._, ._ }, |
| 16344 | .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ }, |
| 16345 | } }, |
| 16346 | }, .{ |
| 16347 | .required_features = .{ .@"64bit", null, null, null }, |
| 16348 | .src_constraints = .{ |
| 16349 | .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }, |
| 16350 | .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }, |
| 16351 | .any, |
| 16352 | }, |
| 16353 | .patterns = &.{ |
| 16354 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16355 | }, |
| 16356 | .extra_temps = .{ |
| 16357 | .{ .type = .isize, .kind = .{ .reg = .rdi } }, |
| 16358 | .{ .type = .i64, .kind = .{ .reg = .rax } }, |
| 16359 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, |
| 16360 | .unused, |
| 16361 | .unused, |
| 16362 | .unused, |
| 16363 | .unused, |
| 16364 | .unused, |
| 16365 | .unused, |
| 16366 | .unused, |
| 16367 | .unused, |
| 16368 | }, |
| 16369 | .dst_temps = .{ .mem, .unused }, |
| 16370 | .clobbers = .{ .eflags = true }, |
| 16371 | .each = .{ .once = &.{ |
| 16372 | .{ ._, ._, .mov, .tmp0p, .sia(2, .src0, .sub_size_div_8), ._, ._ }, |
| 16373 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 16374 | .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -16), ._, ._ }, |
| 16375 | .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -16), ._, ._ }, |
| 16376 | .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -16), .tmp1q, ._, ._ }, |
| 16377 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 16378 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 16379 | .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -16), ._, ._ }, |
| 16380 | .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -16), ._, ._ }, |
| 16381 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 16382 | .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, |
| 16383 | .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ }, |
| 16384 | .{ ._, ._, .mov, .tmp2d, .sia(-2, .src0, .add_size_div_8), ._, ._ }, |
| 16385 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 16386 | .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_smin), ._, ._ }, |
| 16387 | .{ ._, ._, .xor, .tmp1q, .tmp2q, ._, ._ }, |
| 16388 | .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -16), .tmp1q, ._, ._ }, |
| 16389 | .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ }, |
| 16390 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ }, |
| 16391 | } }, |
| 16392 | }, .{ |
| 16393 | .required_features = .{ .@"64bit", null, null, null }, |
| 16394 | .src_constraints = .{ |
| 16395 | .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } }, |
| 16396 | .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } }, |
| 16397 | .any, |
| 16398 | }, |
| 16399 | .patterns = &.{ |
| 16400 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16401 | }, |
| 16402 | .extra_temps = .{ |
| 16403 | .{ .type = .isize, .kind = .{ .reg = .rdi } }, |
| 16404 | .{ .type = .i64, .kind = .{ .reg = .rax } }, |
| 16405 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, |
| 16406 | .unused, |
| 16407 | .unused, |
| 16408 | .unused, |
| 16409 | .unused, |
| 16410 | .unused, |
| 16411 | .unused, |
| 16412 | .unused, |
| 16413 | .unused, |
| 16414 | }, |
| 16415 | .dst_temps = .{ .mem, .unused }, |
| 16416 | .clobbers = .{ .eflags = true }, |
| 16417 | .each = .{ .once = &.{ |
| 16418 | .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ }, |
| 16419 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 16420 | .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ }, |
| 16421 | .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ }, |
| 16422 | .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp1q, ._, ._ }, |
| 16423 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 16424 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 16425 | .{ ._, ._l, .sa, .tmp1q, .uia(63, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| 16426 | .{ ._, ._, .add, .tmp1q, .tmp1q, ._, ._ }, |
| 16427 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 16428 | .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, |
| 16429 | .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ }, |
| 16430 | .{ ._, ._, .mov, .tmp2d, .sia(-2, .src0, .add_size_div_8), ._, ._ }, |
| 16431 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 16432 | .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_smin), ._, ._ }, |
| 16433 | .{ ._, ._, .xor, .tmp1q, .tmp2q, ._, ._ }, |
| 16434 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp1q, ._, ._ }, |
| 16435 | .{ .@"0:", ._r, .sa, .tmp1q, .ui(63), ._, ._ }, |
| 16436 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ }, |
| 16437 | } }, |
| 16438 | }, .{ |
| 16439 | .required_features = .{ .@"64bit", null, null, null }, |
| 16440 | .src_constraints = .{ |
| 16441 | .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } }, |
| 16442 | .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } }, |
| 16443 | .any, |
| 16444 | }, |
| 16445 | .patterns = &.{ |
| 16446 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16447 | }, |
| 16448 | .extra_temps = .{ |
| 16449 | .{ .type = .isize, .kind = .{ .reg = .rdi } }, |
| 16450 | .{ .type = .i64, .kind = .{ .reg = .rax } }, |
| 16451 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, |
| 16452 | .unused, |
| 16453 | .unused, |
| 16454 | .unused, |
| 16455 | .unused, |
| 16456 | .unused, |
| 16457 | .unused, |
| 16458 | .unused, |
| 16459 | .unused, |
| 16460 | }, |
| 16461 | .dst_temps = .{ .mem, .unused }, |
| 16462 | .clobbers = .{ .eflags = true }, |
| 16463 | .each = .{ .once = &.{ |
| 16464 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ }, |
| 16465 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 16466 | .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ }, |
| 16467 | .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ }, |
| 16468 | .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp1q, ._, ._ }, |
| 16469 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 16470 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 16471 | .{ ._, ._l, .sa, .tmp1q, .uia(63, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| 16472 | .{ ._, ._, .add, .tmp1q, .tmp1q, ._, ._ }, |
| 16473 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 16474 | .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, |
| 16475 | .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ }, |
| 16476 | .{ ._, ._, .mov, .tmp2d, .sia(-1, .src0, .add_size_div_8), ._, ._ }, |
| 16477 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 16478 | .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_smin), ._, ._ }, |
| 16479 | .{ ._, ._, .xor, .tmp1q, .tmp2q, ._, ._ }, |
| 16480 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ }, |
| 16481 | } }, |
| 16482 | }, .{ |
| 16483 | .required_features = .{ .@"64bit", null, null, null }, |
| 16484 | .src_constraints = .{ |
| 16485 | .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| 16486 | .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| 16487 | .any, |
| 16488 | }, |
| 16489 | .patterns = &.{ |
| 16490 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 16491 | }, |
| 16492 | .extra_temps = .{ |
| 16493 | .{ .type = .isize, .kind = .{ .reg = .rdi } }, |
| 16494 | .{ .type = .u64, .kind = .{ .reg = .rax } }, |
| 16495 | .{ .type = .u64, .kind = .{ .reg = .rcx } }, |
| 16496 | .unused, |
| 16497 | .unused, |
| 16498 | .unused, |
| 16499 | .unused, |
| 16500 | .unused, |
| 16501 | .unused, |
| 16502 | .unused, |
| 16503 | .unused, |
| 16504 | }, |
| 16505 | .dst_temps = .{ .mem, .unused }, |
| 16506 | .clobbers = .{ .eflags = true }, |
| 16507 | .each = .{ .once = &.{ |
| 16508 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ }, |
| 16509 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 16510 | .{ .@"0:", ._, .mov, .tmp2q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ }, |
| 16511 | .{ ._, ._, .sbb, .tmp2q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ }, |
| 16512 | .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp2q, ._, ._ }, |
| 16513 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 16514 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 16515 | .{ ._, ._nc, .j, .@"0f", ._, ._, ._ }, |
| 16516 | .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, |
| 16517 | .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ }, |
| 16518 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 16519 | } }, |
| 16520 | } }) catch |err| switch (err) { |
| 16521 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ |
| 16522 | @tagName(air_tag), |
| 16523 | cg.typeOf(bin_op.lhs).fmt(pt), |
| 16524 | ops[0].tracking(cg), |
| 16525 | ops[1].tracking(cg), |
| 16526 | }), |
| 16527 | else => |e| return e, |
| 16528 | }; |
| 16529 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| 16530 | }, |
| 14818 | 16531 | .mul, .mul_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, .mul) else { |
| 14819 | 16532 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; |
| 14820 | 16533 | const ty = cg.typeOf(bin_op.lhs); |
| ... | ... | @@ -127883,6 +129596,7 @@ const Select = struct { |
| 127883 | 129596 | |
| 127884 | 129597 | const Src = union(enum) { |
| 127885 | 129598 | none, |
| 129599 | any, |
| 127886 | 129600 | imm: i16, |
| 127887 | 129601 | imm8, |
| 127888 | 129602 | imm16, |
| ... | ... | @@ -127931,6 +129645,7 @@ const Select = struct { |
| 127931 | 129645 | fn matches(src: Src, temp: Temp, cg: *CodeGen) bool { |
| 127932 | 129646 | return switch (src) { |
| 127933 | 129647 | .none => temp.tracking(cg).short == .none, |
| 129648 | .any => true, |
| 127934 | 129649 | .imm => |specific_imm| switch (temp.tracking(cg).short) { |
| 127935 | 129650 | .immediate => |imm| @as(i64, @bitCast(imm)) == specific_imm, |
| 127936 | 129651 | else => false, |
| ... | ... | @@ -128045,7 +129760,7 @@ const Select = struct { |
| 128045 | 129760 | |
| 128046 | 129761 | fn convert(src: Src, temp: *Temp, cg: *CodeGen) InnerError!bool { |
| 128047 | 129762 | return switch (src) { |
| 128048 | | .none, .imm, .imm8, .imm16, .imm32, .simm32 => false, |
| 129763 | .none, .any, .imm, .imm8, .imm16, .imm32, .simm32 => false, |
| 128049 | 129764 | .mem, .to_mem => try temp.toBase(false, cg), |
| 128050 | 129765 | .mut_mem, .to_mut_mem => try temp.toBase(true, cg), |
| 128051 | 129766 | .to_reg => |reg| try temp.toReg(reg, cg), |
| ... | ... | @@ -128079,6 +129794,7 @@ const Select = struct { |
| 128079 | 129794 | none, |
| 128080 | 129795 | undef, |
| 128081 | 129796 | cc: Condition, |
| 129797 | imm: u32, |
| 128082 | 129798 | ref: Select.Operand.Ref, |
| 128083 | 129799 | reg: Register, |
| 128084 | 129800 | reg_pair: [2]Register, |
| ... | ... | @@ -128168,6 +129884,7 @@ const Select = struct { |
| 128168 | 129884 | .any => .{ try cg.tempAlloc(spec.type), true }, |
| 128169 | 129885 | .none => .{ try cg.tempInit(spec.type, .none), true }, |
| 128170 | 129886 | .undef => .{ try cg.tempInit(spec.type, .undef), true }, |
| 129887 | .imm => |imm| .{ try cg.tempInit(spec.type, .{ .immediate = imm }), true }, |
| 128171 | 129888 | .cc => |cc| .{ try cg.tempInit(spec.type, .{ .eflags = cc }), true }, |
| 128172 | 129889 | .ref => |ref| .{ ref.tempOf(s), false }, |
| 128173 | 129890 | .reg => |reg| .{ try cg.tempInit(spec.type, .{ .register = reg }), true }, |