| ... | @@ -2408,7 +2408,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -2408,7 +2408,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2408 | } | 2408 | } |
| 2409 | | 2409 | |
| 2410 | fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | 2410 | fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2411 | @setEvalBranchQuota(16_900); | 2411 | @setEvalBranchQuota(17_100); |
| 2412 | const pt = cg.pt; | 2412 | const pt = cg.pt; |
| 2413 | const zcu = pt.zcu; | 2413 | const zcu = pt.zcu; |
| 2414 | const ip = &zcu.intern_pool; | 2414 | const ip = &zcu.intern_pool; |
| ... | @@ -2444,7 +2444,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -2444,7 +2444,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2444 | try cg.inst_tracking.ensureUnusedCapacity(cg.gpa, 1); | 2444 | try cg.inst_tracking.ensureUnusedCapacity(cg.gpa, 1); |
| 2445 | switch (air_tags[@intFromEnum(inst)]) { | 2445 | switch (air_tags[@intFromEnum(inst)]) { |
| 2446 | // zig fmt: off | 2446 | // zig fmt: off |
| 2447 | .sub_sat => try cg.airSubSat(inst), | | |
| 2448 | .mul_sat => try cg.airMulSat(inst), | 2447 | .mul_sat => try cg.airMulSat(inst), |
| 2449 | .shl_sat => try cg.airShlSat(inst), | 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,6 +14814,1720 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14815 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); | 14814 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| 14816 | }, | 14815 | }, |
| 14817 | .sub_safe => unreachable, | 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 | .mul, .mul_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, .mul) else { | 16531 | .mul, .mul_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, .mul) else { |
| 14819 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; | 16532 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; |
| 14820 | const ty = cg.typeOf(bin_op.lhs); | 16533 | const ty = cg.typeOf(bin_op.lhs); |
| ... | @@ -127883,6 +129596,7 @@ const Select = struct { | ... | @@ -127883,6 +129596,7 @@ const Select = struct { |
| 127883 | | 129596 | |
| 127884 | const Src = union(enum) { | 129597 | const Src = union(enum) { |
| 127885 | none, | 129598 | none, |
| | 129599 | any, |
| 127886 | imm: i16, | 129600 | imm: i16, |
| 127887 | imm8, | 129601 | imm8, |
| 127888 | imm16, | 129602 | imm16, |
| ... | @@ -127931,6 +129645,7 @@ const Select = struct { | ... | @@ -127931,6 +129645,7 @@ const Select = struct { |
| 127931 | fn matches(src: Src, temp: Temp, cg: *CodeGen) bool { | 129645 | fn matches(src: Src, temp: Temp, cg: *CodeGen) bool { |
| 127932 | return switch (src) { | 129646 | return switch (src) { |
| 127933 | .none => temp.tracking(cg).short == .none, | 129647 | .none => temp.tracking(cg).short == .none, |
| | 129648 | .any => true, |
| 127934 | .imm => |specific_imm| switch (temp.tracking(cg).short) { | 129649 | .imm => |specific_imm| switch (temp.tracking(cg).short) { |
| 127935 | .immediate => |imm| @as(i64, @bitCast(imm)) == specific_imm, | 129650 | .immediate => |imm| @as(i64, @bitCast(imm)) == specific_imm, |
| 127936 | else => false, | 129651 | else => false, |
| ... | @@ -128045,7 +129760,7 @@ const Select = struct { | ... | @@ -128045,7 +129760,7 @@ const Select = struct { |
| 128045 | | 129760 | |
| 128046 | fn convert(src: Src, temp: *Temp, cg: *CodeGen) InnerError!bool { | 129761 | fn convert(src: Src, temp: *Temp, cg: *CodeGen) InnerError!bool { |
| 128047 | return switch (src) { | 129762 | return switch (src) { |
| 128048 | .none, .imm, .imm8, .imm16, .imm32, .simm32 => false, | 129763 | .none, .any, .imm, .imm8, .imm16, .imm32, .simm32 => false, |
| 128049 | .mem, .to_mem => try temp.toBase(false, cg), | 129764 | .mem, .to_mem => try temp.toBase(false, cg), |
| 128050 | .mut_mem, .to_mut_mem => try temp.toBase(true, cg), | 129765 | .mut_mem, .to_mut_mem => try temp.toBase(true, cg), |
| 128051 | .to_reg => |reg| try temp.toReg(reg, cg), | 129766 | .to_reg => |reg| try temp.toReg(reg, cg), |
| ... | @@ -128079,6 +129794,7 @@ const Select = struct { | ... | @@ -128079,6 +129794,7 @@ const Select = struct { |
| 128079 | none, | 129794 | none, |
| 128080 | undef, | 129795 | undef, |
| 128081 | cc: Condition, | 129796 | cc: Condition, |
| | 129797 | imm: u32, |
| 128082 | ref: Select.Operand.Ref, | 129798 | ref: Select.Operand.Ref, |
| 128083 | reg: Register, | 129799 | reg: Register, |
| 128084 | reg_pair: [2]Register, | 129800 | reg_pair: [2]Register, |
| ... | @@ -128168,6 +129884,7 @@ const Select = struct { | ... | @@ -128168,6 +129884,7 @@ const Select = struct { |
| 128168 | .any => .{ try cg.tempAlloc(spec.type), true }, | 129884 | .any => .{ try cg.tempAlloc(spec.type), true }, |
| 128169 | .none => .{ try cg.tempInit(spec.type, .none), true }, | 129885 | .none => .{ try cg.tempInit(spec.type, .none), true }, |
| 128170 | .undef => .{ try cg.tempInit(spec.type, .undef), true }, | 129886 | .undef => .{ try cg.tempInit(spec.type, .undef), true }, |
| | 129887 | .imm => |imm| .{ try cg.tempInit(spec.type, .{ .immediate = imm }), true }, |
| 128171 | .cc => |cc| .{ try cg.tempInit(spec.type, .{ .eflags = cc }), true }, | 129888 | .cc => |cc| .{ try cg.tempInit(spec.type, .{ .eflags = cc }), true }, |
| 128172 | .ref => |ref| .{ ref.tempOf(s), false }, | 129889 | .ref => |ref| .{ ref.tempOf(s), false }, |
| 128173 | .reg => |reg| .{ try cg.tempInit(spec.type, .{ .register = reg }), true }, | 129890 | .reg => |reg| .{ try cg.tempInit(spec.type, .{ .register = reg }), true }, |