| ... | @@ -2454,9 +2454,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -2454,9 +2454,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2454 | try cg.inst_tracking.ensureUnusedCapacity(cg.gpa, 1); | 2454 | try cg.inst_tracking.ensureUnusedCapacity(cg.gpa, 1); |
| 2455 | switch (air_tags[@intFromEnum(inst)]) { | 2455 | switch (air_tags[@intFromEnum(inst)]) { |
| 2456 | // zig fmt: off | 2456 | // zig fmt: off |
| 2457 | .add_wrap => try cg.airBinOp(inst, .add_wrap), | | |
| 2458 | .sub_wrap => try cg.airBinOp(inst, .sub_wrap), | | |
| 2459 | | | |
| 2460 | .shr, .shr_exact => try cg.airShlShrBinOp(inst), | 2457 | .shr, .shr_exact => try cg.airShlShrBinOp(inst), |
| 2461 | .shl, .shl_exact => try cg.airShlShrBinOp(inst), | 2458 | .shl, .shl_exact => try cg.airShlShrBinOp(inst), |
| 2462 | | 2459 | |
| ... | @@ -2497,7 +2494,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -2497,7 +2494,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2497 | if (arg != .none) break; | 2494 | if (arg != .none) break; |
| 2498 | } else try cg.airDbgVarArgs(); | 2495 | } else try cg.airDbgVarArgs(); |
| 2499 | }, | 2496 | }, |
| 2500 | .add, .add_optimized => |air_tag| if (use_old) try cg.airBinOp(inst, .add) else { | 2497 | .add, .add_optimized, .add_wrap => |air_tag| if (use_old) try cg.airBinOp(inst, switch (air_tag) { |
| | 2498 | else => unreachable, |
| | 2499 | .add, .add_optimized => .add, |
| | 2500 | .add_wrap => .add_wrap, |
| | 2501 | }) else { |
| 2501 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; | 2502 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; |
| 2502 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); | 2503 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| 2503 | var res: [1]Temp = undefined; | 2504 | var res: [1]Temp = undefined; |
| ... | @@ -3399,10 +3400,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3399,10 +3400,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3399 | }, | 3400 | }, |
| 3400 | .dst_temps = .{ .mem, .unused }, | 3401 | .dst_temps = .{ .mem, .unused }, |
| 3401 | .each = .{ .once = &.{ | 3402 | .each = .{ .once = &.{ |
| 3402 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 3403 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 3403 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_add_elem_size), ._, ._ }, | 3404 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size_add_elem_size), ._, ._ }, |
| 3404 | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_size_add_elem_size), ._, ._ }, | 3405 | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_unaligned_size_add_elem_size), ._, ._ }, |
| 3405 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_size_add_elem_size), ._, ._ }, | 3406 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_unaligned_size_add_elem_size), ._, ._ }, |
| 3406 | .{ ._, ._, .mov, .tmp4p, .sa(.src0, .sub_elem_size_div_8), ._, ._ }, | 3407 | .{ ._, ._, .mov, .tmp4p, .sa(.src0, .sub_elem_size_div_8), ._, ._ }, |
| 3407 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | 3408 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 3408 | .{ .@"1:", ._, .mov, .tmp5q, .leasi(.tmp1q, .@"8", .tmp4), ._, ._ }, | 3409 | .{ .@"1:", ._, .mov, .tmp5q, .leasi(.tmp1q, .@"8", .tmp4), ._, ._ }, |
| ... | @@ -3437,10 +3438,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3437,10 +3438,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3437 | }, | 3438 | }, |
| 3438 | .dst_temps = .{ .mem, .unused }, | 3439 | .dst_temps = .{ .mem, .unused }, |
| 3439 | .each = .{ .once = &.{ | 3440 | .each = .{ .once = &.{ |
| 3440 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 3441 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 3441 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_add_elem_size), ._, ._ }, | 3442 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size_add_elem_size), ._, ._ }, |
| 3442 | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_size_add_elem_size), ._, ._ }, | 3443 | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_unaligned_size_add_elem_size), ._, ._ }, |
| 3443 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_size_add_elem_size), ._, ._ }, | 3444 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_unaligned_size_add_elem_size), ._, ._ }, |
| 3444 | .{ ._, ._, .mov, .tmp4p, .sa(.src0, .sub_elem_size_div_4), ._, ._ }, | 3445 | .{ ._, ._, .mov, .tmp4p, .sa(.src0, .sub_elem_size_div_4), ._, ._ }, |
| 3445 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | 3446 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 3446 | .{ .@"1:", ._, .mov, .tmp5d, .leasi(.tmp1d, .@"4", .tmp4), ._, ._ }, | 3447 | .{ .@"1:", ._, .mov, .tmp5d, .leasi(.tmp1d, .@"4", .tmp4), ._, ._ }, |
| ... | @@ -4352,10 +4353,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4352,10 +4353,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4352 | }), | 4353 | }), |
| 4353 | else => |e| return e, | 4354 | else => |e| return e, |
| 4354 | }; | 4355 | }; |
| | 4356 | switch (air_tag) { |
| | 4357 | else => unreachable, |
| | 4358 | .add, .add_optimized => {}, |
| | 4359 | .add_wrap => res[0].wrapInt(cg) catch |err| switch (err) { |
| | 4360 | error.SelectFailed => return cg.fail("failed to select wrap {} {} {}", .{ |
| | 4361 | cg.typeOf(bin_op.lhs).fmt(pt), |
| | 4362 | ops[0].tracking(cg), |
| | 4363 | ops[1].tracking(cg), |
| | 4364 | }), |
| | 4365 | else => |e| return e, |
| | 4366 | }, |
| | 4367 | } |
| 4355 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); | 4368 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| 4356 | }, | 4369 | }, |
| 4357 | .add_safe => unreachable, | 4370 | .add_safe => unreachable, |
| 4358 | .sub, .sub_optimized => |air_tag| if (use_old) try cg.airBinOp(inst, .sub) else { | 4371 | .sub, .sub_optimized, .sub_wrap => |air_tag| if (use_old) try cg.airBinOp(inst, switch (air_tag) { |
| | 4372 | else => unreachable, |
| | 4373 | .sub, .sub_optimized => .sub, |
| | 4374 | .sub_wrap => .sub_wrap, |
| | 4375 | }) else { |
| 4359 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; | 4376 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; |
| 4360 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); | 4377 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| 4361 | var res: [1]Temp = undefined; | 4378 | var res: [1]Temp = undefined; |
| ... | @@ -5229,10 +5246,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5229,10 +5246,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5229 | }, | 5246 | }, |
| 5230 | .dst_temps = .{ .mem, .unused }, | 5247 | .dst_temps = .{ .mem, .unused }, |
| 5231 | .each = .{ .once = &.{ | 5248 | .each = .{ .once = &.{ |
| 5232 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 5249 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 5233 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_add_elem_size), ._, ._ }, | 5250 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size_add_elem_size), ._, ._ }, |
| 5234 | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_size_add_elem_size), ._, ._ }, | 5251 | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_unaligned_size_add_elem_size), ._, ._ }, |
| 5235 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_size_add_elem_size), ._, ._ }, | 5252 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_unaligned_size_add_elem_size), ._, ._ }, |
| 5236 | .{ ._, ._, .mov, .tmp4p, .sa(.src0, .sub_elem_size_div_8), ._, ._ }, | 5253 | .{ ._, ._, .mov, .tmp4p, .sa(.src0, .sub_elem_size_div_8), ._, ._ }, |
| 5237 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | 5254 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 5238 | .{ .@"1:", ._, .mov, .tmp5q, .leasi(.tmp1q, .@"8", .tmp4), ._, ._ }, | 5255 | .{ .@"1:", ._, .mov, .tmp5q, .leasi(.tmp1q, .@"8", .tmp4), ._, ._ }, |
| ... | @@ -5267,10 +5284,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5267,10 +5284,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5267 | }, | 5284 | }, |
| 5268 | .dst_temps = .{ .mem, .unused }, | 5285 | .dst_temps = .{ .mem, .unused }, |
| 5269 | .each = .{ .once = &.{ | 5286 | .each = .{ .once = &.{ |
| 5270 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 5287 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 5271 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_add_elem_size), ._, ._ }, | 5288 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size_add_elem_size), ._, ._ }, |
| 5272 | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_size_add_elem_size), ._, ._ }, | 5289 | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_unaligned_size_add_elem_size), ._, ._ }, |
| 5273 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_size_add_elem_size), ._, ._ }, | 5290 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_unaligned_size_add_elem_size), ._, ._ }, |
| 5274 | .{ ._, ._, .mov, .tmp4p, .sa(.src0, .sub_elem_size_div_4), ._, ._ }, | 5291 | .{ ._, ._, .mov, .tmp4p, .sa(.src0, .sub_elem_size_div_4), ._, ._ }, |
| 5275 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | 5292 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 5276 | .{ .@"1:", ._, .mov, .tmp5d, .leasi(.tmp1d, .@"4", .tmp4), ._, ._ }, | 5293 | .{ .@"1:", ._, .mov, .tmp5d, .leasi(.tmp1d, .@"4", .tmp4), ._, ._ }, |
| ... | @@ -6200,6 +6217,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6200,6 +6217,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6200 | }), | 6217 | }), |
| 6201 | else => |e| return e, | 6218 | else => |e| return e, |
| 6202 | }; | 6219 | }; |
| | 6220 | switch (air_tag) { |
| | 6221 | else => unreachable, |
| | 6222 | .sub, .sub_optimized => {}, |
| | 6223 | .sub_wrap => res[0].wrapInt(cg) catch |err| switch (err) { |
| | 6224 | error.SelectFailed => return cg.fail("failed to select wrap {} {} {}", .{ |
| | 6225 | cg.typeOf(bin_op.lhs).fmt(pt), |
| | 6226 | ops[0].tracking(cg), |
| | 6227 | ops[1].tracking(cg), |
| | 6228 | }), |
| | 6229 | else => |e| return e, |
| | 6230 | }, |
| | 6231 | } |
| 6203 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); | 6232 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| 6204 | }, | 6233 | }, |
| 6205 | .sub_safe => unreachable, | 6234 | .sub_safe => unreachable, |
| ... | @@ -18547,8 +18576,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18547,8 +18576,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18547 | }, .{ | 18576 | }, .{ |
| 18548 | .required_features = .{ .sse2, null, null, null }, | 18577 | .required_features = .{ .sse2, null, null, null }, |
| 18549 | .src_constraints = .{ | 18578 | .src_constraints = .{ |
| 18550 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 18579 | .{ .scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .dword } }, |
| 18551 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 18580 | .{ .scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .dword } }, |
| 18552 | .any, | 18581 | .any, |
| 18553 | }, | 18582 | }, |
| 18554 | .patterns = &.{ | 18583 | .patterns = &.{ |
| ... | @@ -18682,8 +18711,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18682,8 +18711,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18682 | }, .{ | 18711 | }, .{ |
| 18683 | .required_features = .{ .sse2, null, null, null }, | 18712 | .required_features = .{ .sse2, null, null, null }, |
| 18684 | .src_constraints = .{ | 18713 | .src_constraints = .{ |
| 18685 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 18714 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .dword } }, |
| 18686 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 18715 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .dword } }, |
| 18687 | .any, | 18716 | .any, |
| 18688 | }, | 18717 | }, |
| 18689 | .patterns = &.{ | 18718 | .patterns = &.{ |
| ... | @@ -18819,8 +18848,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18819,8 +18848,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18819 | }, .{ | 18848 | }, .{ |
| 18820 | .required_features = .{ .sse2, null, null, null }, | 18849 | .required_features = .{ .sse2, null, null, null }, |
| 18821 | .src_constraints = .{ | 18850 | .src_constraints = .{ |
| 18822 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 18851 | .{ .scalar_exact_unsigned_int = .{ .of = .xword, .is = 32 } }, |
| 18823 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 18852 | .{ .scalar_exact_unsigned_int = .{ .of = .xword, .is = 32 } }, |
| 18824 | .any, | 18853 | .any, |
| 18825 | }, | 18854 | }, |
| 18826 | .patterns = &.{ | 18855 | .patterns = &.{ |
| ... | @@ -18971,8 +19000,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -18971,8 +19000,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18971 | }, .{ | 19000 | }, .{ |
| 18972 | .required_features = .{ .sse2, null, null, null }, | 19001 | .required_features = .{ .sse2, null, null, null }, |
| 18973 | .src_constraints = .{ | 19002 | .src_constraints = .{ |
| 18974 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 19003 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .xword, .is = 32 } }, |
| 18975 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 19004 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .xword, .is = 32 } }, |
| 18976 | .any, | 19005 | .any, |
| 18977 | }, | 19006 | }, |
| 18978 | .patterns = &.{ | 19007 | .patterns = &.{ |
| ... | @@ -19082,8 +19111,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19082,8 +19111,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19082 | }, .{ | 19111 | }, .{ |
| 19083 | .required_features = .{ .avx, null, null, null }, | 19112 | .required_features = .{ .avx, null, null, null }, |
| 19084 | .src_constraints = .{ | 19113 | .src_constraints = .{ |
| 19085 | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 19114 | .{ .scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 19086 | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 19115 | .{ .scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 19087 | .any, | 19116 | .any, |
| 19088 | }, | 19117 | }, |
| 19089 | .patterns = &.{ | 19118 | .patterns = &.{ |
| ... | @@ -19097,8 +19126,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19097,8 +19126,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19097 | }, .{ | 19126 | }, .{ |
| 19098 | .required_features = .{ .sse4_2, null, null, null }, | 19127 | .required_features = .{ .sse4_2, null, null, null }, |
| 19099 | .src_constraints = .{ | 19128 | .src_constraints = .{ |
| 19100 | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 19129 | .{ .scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 19101 | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 19130 | .{ .scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 19102 | .any, | 19131 | .any, |
| 19103 | }, | 19132 | }, |
| 19104 | .patterns = &.{ | 19133 | .patterns = &.{ |
| ... | @@ -19128,8 +19157,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19128,8 +19157,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19128 | }, .{ | 19157 | }, .{ |
| 19129 | .required_features = .{ .avx2, null, null, null }, | 19158 | .required_features = .{ .avx2, null, null, null }, |
| 19130 | .src_constraints = .{ | 19159 | .src_constraints = .{ |
| 19131 | .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, | 19160 | .{ .scalar_signed_or_exclusive_int = .{ .of = .yword, .is = .qword } }, |
| 19132 | .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, | 19161 | .{ .scalar_signed_or_exclusive_int = .{ .of = .yword, .is = .qword } }, |
| 19133 | .any, | 19162 | .any, |
| 19134 | }, | 19163 | }, |
| 19135 | .patterns = &.{ | 19164 | .patterns = &.{ |
| ... | @@ -19143,8 +19172,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19143,8 +19172,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19143 | }, .{ | 19172 | }, .{ |
| 19144 | .required_features = .{ .avx2, null, null, null }, | 19173 | .required_features = .{ .avx2, null, null, null }, |
| 19145 | .src_constraints = .{ | 19174 | .src_constraints = .{ |
| 19146 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, | 19175 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .yword, .is = .qword } }, |
| 19147 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, | 19176 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .yword, .is = .qword } }, |
| 19148 | .any, | 19177 | .any, |
| 19149 | }, | 19178 | }, |
| 19150 | .patterns = &.{ | 19179 | .patterns = &.{ |
| ... | @@ -19178,8 +19207,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19178,8 +19207,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19178 | }, .{ | 19207 | }, .{ |
| 19179 | .required_features = .{ .avx, null, null, null }, | 19208 | .required_features = .{ .avx, null, null, null }, |
| 19180 | .src_constraints = .{ | 19209 | .src_constraints = .{ |
| 19181 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 19210 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 19182 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 19211 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 19183 | .any, | 19212 | .any, |
| 19184 | }, | 19213 | }, |
| 19185 | .patterns = &.{ | 19214 | .patterns = &.{ |
| ... | @@ -19213,8 +19242,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19213,8 +19242,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19213 | }, .{ | 19242 | }, .{ |
| 19214 | .required_features = .{ .sse4_2, null, null, null }, | 19243 | .required_features = .{ .sse4_2, null, null, null }, |
| 19215 | .src_constraints = .{ | 19244 | .src_constraints = .{ |
| 19216 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 19245 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 19217 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 19246 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 19218 | .any, | 19247 | .any, |
| 19219 | }, | 19248 | }, |
| 19220 | .patterns = &.{ | 19249 | .patterns = &.{ |
| ... | @@ -19318,8 +19347,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19318,8 +19347,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19318 | }, .{ | 19347 | }, .{ |
| 19319 | .required_features = .{ .avx, null, null, null }, | 19348 | .required_features = .{ .avx, null, null, null }, |
| 19320 | .src_constraints = .{ | 19349 | .src_constraints = .{ |
| 19321 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 19350 | .{ .scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 19322 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 19351 | .{ .scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 19323 | .any, | 19352 | .any, |
| 19324 | }, | 19353 | }, |
| 19325 | .patterns = &.{ | 19354 | .patterns = &.{ |
| ... | @@ -19352,8 +19381,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19352,8 +19381,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19352 | }, .{ | 19381 | }, .{ |
| 19353 | .required_features = .{ .sse4_2, null, null, null }, | 19382 | .required_features = .{ .sse4_2, null, null, null }, |
| 19354 | .src_constraints = .{ | 19383 | .src_constraints = .{ |
| 19355 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 19384 | .{ .scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 19356 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 19385 | .{ .scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 19357 | .any, | 19386 | .any, |
| 19358 | }, | 19387 | }, |
| 19359 | .patterns = &.{ | 19388 | .patterns = &.{ |
| ... | @@ -19387,8 +19416,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19387,8 +19416,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19387 | }, .{ | 19416 | }, .{ |
| 19388 | .required_features = .{ .avx2, null, null, null }, | 19417 | .required_features = .{ .avx2, null, null, null }, |
| 19389 | .src_constraints = .{ | 19418 | .src_constraints = .{ |
| 19390 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, | 19419 | .{ .scalar_exact_unsigned_int = .{ .of = .yword, .is = 64 } }, |
| 19391 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, | 19420 | .{ .scalar_exact_unsigned_int = .{ .of = .yword, .is = 64 } }, |
| 19392 | .any, | 19421 | .any, |
| 19393 | }, | 19422 | }, |
| 19394 | .patterns = &.{ | 19423 | .patterns = &.{ |
| ... | @@ -19421,8 +19450,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19421,8 +19450,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19421 | }, .{ | 19450 | }, .{ |
| 19422 | .required_features = .{ .avx2, null, null, null }, | 19451 | .required_features = .{ .avx2, null, null, null }, |
| 19423 | .src_constraints = .{ | 19452 | .src_constraints = .{ |
| 19424 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, | 19453 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .yword, .is = 64 } }, |
| 19425 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, | 19454 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .yword, .is = 64 } }, |
| 19426 | .any, | 19455 | .any, |
| 19427 | }, | 19456 | }, |
| 19428 | .patterns = &.{ | 19457 | .patterns = &.{ |
| ... | @@ -19460,8 +19489,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19460,8 +19489,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19460 | }, .{ | 19489 | }, .{ |
| 19461 | .required_features = .{ .avx, null, null, null }, | 19490 | .required_features = .{ .avx, null, null, null }, |
| 19462 | .src_constraints = .{ | 19491 | .src_constraints = .{ |
| 19463 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 19492 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 19464 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 19493 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 19465 | .any, | 19494 | .any, |
| 19466 | }, | 19495 | }, |
| 19467 | .patterns = &.{ | 19496 | .patterns = &.{ |
| ... | @@ -19499,8 +19528,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19499,8 +19528,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19499 | }, .{ | 19528 | }, .{ |
| 19500 | .required_features = .{ .sse4_2, null, null, null }, | 19529 | .required_features = .{ .sse4_2, null, null, null }, |
| 19501 | .src_constraints = .{ | 19530 | .src_constraints = .{ |
| 19502 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 19531 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 19503 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 19532 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 19504 | .any, | 19533 | .any, |
| 19505 | }, | 19534 | }, |
| 19506 | .patterns = &.{ | 19535 | .patterns = &.{ |
| ... | @@ -19628,20 +19657,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19628,20 +19657,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19628 | .dst_temps = .{ .mem, .unused }, | 19657 | .dst_temps = .{ .mem, .unused }, |
| 19629 | .clobbers = .{ .eflags = true }, | 19658 | .clobbers = .{ .eflags = true }, |
| 19630 | .each = .{ .once = &.{ | 19659 | .each = .{ .once = &.{ |
| 19631 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 19660 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 19632 | .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ }, | 19661 | .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ }, |
| 19633 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | 19662 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 19634 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 19663 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 19635 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | 19664 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 19636 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, | 19665 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, |
| 19637 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, | 19666 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 19638 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, | 19667 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, |
| 19639 | .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 19668 | .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 19640 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | 19669 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 19641 | .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, | 19670 | .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_unaligned_size_sub_elem_size, 8), ._, ._ }, |
| 19642 | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, | 19671 | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_unaligned_size_sub_elem_size, 8), ._, ._ }, |
| 19643 | .{ ._, ._l, .cmov, .tmp1p, .tmp2p, ._, ._ }, | 19672 | .{ ._, ._l, .cmov, .tmp1p, .tmp2p, ._, ._ }, |
| 19644 | .{ ._, ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, | 19673 | .{ ._, ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_unaligned_size_sub_elem_size, 8), ._, ._ }, |
| 19645 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, | 19674 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| 19646 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | 19675 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 19647 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 19676 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| ... | @@ -19669,20 +19698,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19669,20 +19698,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19669 | .dst_temps = .{ .mem, .unused }, | 19698 | .dst_temps = .{ .mem, .unused }, |
| 19670 | .clobbers = .{ .eflags = true }, | 19699 | .clobbers = .{ .eflags = true }, |
| 19671 | .each = .{ .once = &.{ | 19700 | .each = .{ .once = &.{ |
| 19672 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 19701 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 19673 | .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ }, | 19702 | .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ }, |
| 19674 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | 19703 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 19675 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 19704 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 19676 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | 19705 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 19677 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, | 19706 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, |
| 19678 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, | 19707 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 19679 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, | 19708 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, |
| 19680 | .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 19709 | .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 19681 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | 19710 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 19682 | .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, | 19711 | .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_unaligned_size_sub_elem_size, 8), ._, ._ }, |
| 19683 | .{ ._, ._nl, .j, .@"1f", ._, ._, ._ }, | 19712 | .{ ._, ._nl, .j, .@"1f", ._, ._, ._ }, |
| 19684 | .{ ._, ._, .lea, .tmp1p, .memiad(.src1, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, | 19713 | .{ ._, ._, .lea, .tmp1p, .memiad(.src1, .tmp0, .add_unaligned_size_sub_elem_size, 8), ._, ._ }, |
| 19685 | .{ .@"1:", ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, | 19714 | .{ .@"1:", ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_unaligned_size_sub_elem_size, 8), ._, ._ }, |
| 19686 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, | 19715 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| 19687 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | 19716 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 19688 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 19717 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| ... | @@ -19710,18 +19739,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19710,18 +19739,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19710 | .dst_temps = .{ .mem, .unused }, | 19739 | .dst_temps = .{ .mem, .unused }, |
| 19711 | .clobbers = .{ .eflags = true }, | 19740 | .clobbers = .{ .eflags = true }, |
| 19712 | .each = .{ .once = &.{ | 19741 | .each = .{ .once = &.{ |
| 19713 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 19742 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 19714 | .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, | 19743 | .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| 19715 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | 19744 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 19716 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 19745 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 19717 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | 19746 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 19718 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, | 19747 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, |
| 19719 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, | 19748 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 19720 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, | 19749 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, |
| 19721 | .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ }, | 19750 | .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size_sub_elem_size), ._, ._ }, |
| 19722 | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_size_sub_elem_size), ._, ._ }, | 19751 | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_unaligned_size_sub_elem_size), ._, ._ }, |
| 19723 | .{ ._, ._b, .cmov, .tmp1p, .tmp2p, ._, ._ }, | 19752 | .{ ._, ._b, .cmov, .tmp1p, .tmp2p, ._, ._ }, |
| 19724 | .{ ._, ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_size_sub_elem_size), ._, ._ }, | 19753 | .{ ._, ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_unaligned_size_sub_elem_size), ._, ._ }, |
| 19725 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, | 19754 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| 19726 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | 19755 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 19727 | .{ ._, ._, .@"test", .tmp0p, .tmp0p, ._, ._ }, | 19756 | .{ ._, ._, .@"test", .tmp0p, .tmp0p, ._, ._ }, |
| ... | @@ -19749,18 +19778,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -19749,18 +19778,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19749 | .dst_temps = .{ .mem, .unused }, | 19778 | .dst_temps = .{ .mem, .unused }, |
| 19750 | .clobbers = .{ .eflags = true }, | 19779 | .clobbers = .{ .eflags = true }, |
| 19751 | .each = .{ .once = &.{ | 19780 | .each = .{ .once = &.{ |
| 19752 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 19781 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 19753 | .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, | 19782 | .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| 19754 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | 19783 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 19755 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 19784 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 19756 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | 19785 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 19757 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, | 19786 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, |
| 19758 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, | 19787 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 19759 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, | 19788 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, |
| 19760 | .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ }, | 19789 | .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size_sub_elem_size), ._, ._ }, |
| 19761 | .{ ._, ._nb, .j, .@"1f", ._, ._, ._ }, | 19790 | .{ ._, ._nb, .j, .@"1f", ._, ._, ._ }, |
| 19762 | .{ ._, ._, .lea, .tmp1p, .memia(.src1, .tmp0, .add_size_sub_elem_size), ._, ._ }, | 19791 | .{ ._, ._, .lea, .tmp1p, .memia(.src1, .tmp0, .add_unaligned_size_sub_elem_size), ._, ._ }, |
| 19763 | .{ .@"1:", ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_size_sub_elem_size), ._, ._ }, | 19792 | .{ .@"1:", ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_unaligned_size_sub_elem_size), ._, ._ }, |
| 19764 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, | 19793 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| 19765 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | 19794 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 19766 | .{ ._, ._, .@"test", .tmp0p, .tmp0p, ._, ._ }, | 19795 | .{ ._, ._, .@"test", .tmp0p, .tmp0p, ._, ._ }, |
| ... | @@ -22702,8 +22731,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22702,8 +22731,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22702 | }, .{ | 22731 | }, .{ |
| 22703 | .required_features = .{ .sse2, null, null, null }, | 22732 | .required_features = .{ .sse2, null, null, null }, |
| 22704 | .src_constraints = .{ | 22733 | .src_constraints = .{ |
| 22705 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 22734 | .{ .scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .dword } }, |
| 22706 | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 22735 | .{ .scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .dword } }, |
| 22707 | .any, | 22736 | .any, |
| 22708 | }, | 22737 | }, |
| 22709 | .patterns = &.{ | 22738 | .patterns = &.{ |
| ... | @@ -22837,8 +22866,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22837,8 +22866,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22837 | }, .{ | 22866 | }, .{ |
| 22838 | .required_features = .{ .sse2, null, null, null }, | 22867 | .required_features = .{ .sse2, null, null, null }, |
| 22839 | .src_constraints = .{ | 22868 | .src_constraints = .{ |
| 22840 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 22869 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .dword } }, |
| 22841 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, | 22870 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .dword } }, |
| 22842 | .any, | 22871 | .any, |
| 22843 | }, | 22872 | }, |
| 22844 | .patterns = &.{ | 22873 | .patterns = &.{ |
| ... | @@ -22974,8 +23003,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22974,8 +23003,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22974 | }, .{ | 23003 | }, .{ |
| 22975 | .required_features = .{ .sse2, null, null, null }, | 23004 | .required_features = .{ .sse2, null, null, null }, |
| 22976 | .src_constraints = .{ | 23005 | .src_constraints = .{ |
| 22977 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 23006 | .{ .scalar_exact_unsigned_int = .{ .of = .xword, .is = 32 } }, |
| 22978 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 23007 | .{ .scalar_exact_unsigned_int = .{ .of = .xword, .is = 32 } }, |
| 22979 | .any, | 23008 | .any, |
| 22980 | }, | 23009 | }, |
| 22981 | .patterns = &.{ | 23010 | .patterns = &.{ |
| ... | @@ -23126,8 +23155,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23126,8 +23155,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23126 | }, .{ | 23155 | }, .{ |
| 23127 | .required_features = .{ .sse2, null, null, null }, | 23156 | .required_features = .{ .sse2, null, null, null }, |
| 23128 | .src_constraints = .{ | 23157 | .src_constraints = .{ |
| 23129 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 23158 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .xword, .is = 32 } }, |
| 23130 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, | 23159 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .xword, .is = 32 } }, |
| 23131 | .any, | 23160 | .any, |
| 23132 | }, | 23161 | }, |
| 23133 | .patterns = &.{ | 23162 | .patterns = &.{ |
| ... | @@ -23237,8 +23266,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23237,8 +23266,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23237 | }, .{ | 23266 | }, .{ |
| 23238 | .required_features = .{ .avx, null, null, null }, | 23267 | .required_features = .{ .avx, null, null, null }, |
| 23239 | .src_constraints = .{ | 23268 | .src_constraints = .{ |
| 23240 | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 23269 | .{ .scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 23241 | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 23270 | .{ .scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 23242 | .any, | 23271 | .any, |
| 23243 | }, | 23272 | }, |
| 23244 | .patterns = &.{ | 23273 | .patterns = &.{ |
| ... | @@ -23254,8 +23283,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23254,8 +23283,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23254 | }, .{ | 23283 | }, .{ |
| 23255 | .required_features = .{ .sse4_2, null, null, null }, | 23284 | .required_features = .{ .sse4_2, null, null, null }, |
| 23256 | .src_constraints = .{ | 23285 | .src_constraints = .{ |
| 23257 | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 23286 | .{ .scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 23258 | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 23287 | .{ .scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 23259 | .any, | 23288 | .any, |
| 23260 | }, | 23289 | }, |
| 23261 | .patterns = &.{ | 23290 | .patterns = &.{ |
| ... | @@ -23285,8 +23314,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23285,8 +23314,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23285 | }, .{ | 23314 | }, .{ |
| 23286 | .required_features = .{ .avx2, null, null, null }, | 23315 | .required_features = .{ .avx2, null, null, null }, |
| 23287 | .src_constraints = .{ | 23316 | .src_constraints = .{ |
| 23288 | .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, | 23317 | .{ .scalar_signed_or_exclusive_int = .{ .of = .yword, .is = .qword } }, |
| 23289 | .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, | 23318 | .{ .scalar_signed_or_exclusive_int = .{ .of = .yword, .is = .qword } }, |
| 23290 | .any, | 23319 | .any, |
| 23291 | }, | 23320 | }, |
| 23292 | .patterns = &.{ | 23321 | .patterns = &.{ |
| ... | @@ -23302,8 +23331,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23302,8 +23331,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23302 | }, .{ | 23331 | }, .{ |
| 23303 | .required_features = .{ .avx2, null, null, null }, | 23332 | .required_features = .{ .avx2, null, null, null }, |
| 23304 | .src_constraints = .{ | 23333 | .src_constraints = .{ |
| 23305 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, | 23334 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .yword, .is = .qword } }, |
| 23306 | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, | 23335 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .yword, .is = .qword } }, |
| 23307 | .any, | 23336 | .any, |
| 23308 | }, | 23337 | }, |
| 23309 | .patterns = &.{ | 23338 | .patterns = &.{ |
| ... | @@ -23337,8 +23366,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23337,8 +23366,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23337 | }, .{ | 23366 | }, .{ |
| 23338 | .required_features = .{ .avx, null, null, null }, | 23367 | .required_features = .{ .avx, null, null, null }, |
| 23339 | .src_constraints = .{ | 23368 | .src_constraints = .{ |
| 23340 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 23369 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 23341 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 23370 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 23342 | .any, | 23371 | .any, |
| 23343 | }, | 23372 | }, |
| 23344 | .patterns = &.{ | 23373 | .patterns = &.{ |
| ... | @@ -23372,8 +23401,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23372,8 +23401,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23372 | }, .{ | 23401 | }, .{ |
| 23373 | .required_features = .{ .sse4_2, null, null, null }, | 23402 | .required_features = .{ .sse4_2, null, null, null }, |
| 23374 | .src_constraints = .{ | 23403 | .src_constraints = .{ |
| 23375 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 23404 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 23376 | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, | 23405 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 23377 | .any, | 23406 | .any, |
| 23378 | }, | 23407 | }, |
| 23379 | .patterns = &.{ | 23408 | .patterns = &.{ |
| ... | @@ -23477,8 +23506,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23477,8 +23506,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23477 | }, .{ | 23506 | }, .{ |
| 23478 | .required_features = .{ .avx, null, null, null }, | 23507 | .required_features = .{ .avx, null, null, null }, |
| 23479 | .src_constraints = .{ | 23508 | .src_constraints = .{ |
| 23480 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 23509 | .{ .scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 23481 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 23510 | .{ .scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 23482 | .any, | 23511 | .any, |
| 23483 | }, | 23512 | }, |
| 23484 | .patterns = &.{ | 23513 | .patterns = &.{ |
| ... | @@ -23511,8 +23540,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23511,8 +23540,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23511 | }, .{ | 23540 | }, .{ |
| 23512 | .required_features = .{ .sse4_2, null, null, null }, | 23541 | .required_features = .{ .sse4_2, null, null, null }, |
| 23513 | .src_constraints = .{ | 23542 | .src_constraints = .{ |
| 23514 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 23543 | .{ .scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 23515 | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 23544 | .{ .scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 23516 | .any, | 23545 | .any, |
| 23517 | }, | 23546 | }, |
| 23518 | .patterns = &.{ | 23547 | .patterns = &.{ |
| ... | @@ -23546,8 +23575,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23546,8 +23575,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23546 | }, .{ | 23575 | }, .{ |
| 23547 | .required_features = .{ .avx2, null, null, null }, | 23576 | .required_features = .{ .avx2, null, null, null }, |
| 23548 | .src_constraints = .{ | 23577 | .src_constraints = .{ |
| 23549 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, | 23578 | .{ .scalar_exact_unsigned_int = .{ .of = .yword, .is = 64 } }, |
| 23550 | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, | 23579 | .{ .scalar_exact_unsigned_int = .{ .of = .yword, .is = 64 } }, |
| 23551 | .any, | 23580 | .any, |
| 23552 | }, | 23581 | }, |
| 23553 | .patterns = &.{ | 23582 | .patterns = &.{ |
| ... | @@ -23580,8 +23609,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23580,8 +23609,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23580 | }, .{ | 23609 | }, .{ |
| 23581 | .required_features = .{ .avx2, null, null, null }, | 23610 | .required_features = .{ .avx2, null, null, null }, |
| 23582 | .src_constraints = .{ | 23611 | .src_constraints = .{ |
| 23583 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, | 23612 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .yword, .is = 64 } }, |
| 23584 | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, | 23613 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .yword, .is = 64 } }, |
| 23585 | .any, | 23614 | .any, |
| 23586 | }, | 23615 | }, |
| 23587 | .patterns = &.{ | 23616 | .patterns = &.{ |
| ... | @@ -23619,8 +23648,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23619,8 +23648,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23619 | }, .{ | 23648 | }, .{ |
| 23620 | .required_features = .{ .avx, null, null, null }, | 23649 | .required_features = .{ .avx, null, null, null }, |
| 23621 | .src_constraints = .{ | 23650 | .src_constraints = .{ |
| 23622 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 23651 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 23623 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 23652 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 23624 | .any, | 23653 | .any, |
| 23625 | }, | 23654 | }, |
| 23626 | .patterns = &.{ | 23655 | .patterns = &.{ |
| ... | @@ -23658,8 +23687,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23658,8 +23687,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23658 | }, .{ | 23687 | }, .{ |
| 23659 | .required_features = .{ .sse4_2, null, null, null }, | 23688 | .required_features = .{ .sse4_2, null, null, null }, |
| 23660 | .src_constraints = .{ | 23689 | .src_constraints = .{ |
| 23661 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 23690 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 23662 | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, | 23691 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 23663 | .any, | 23692 | .any, |
| 23664 | }, | 23693 | }, |
| 23665 | .patterns = &.{ | 23694 | .patterns = &.{ |
| ... | @@ -23787,20 +23816,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23787,20 +23816,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23787 | .dst_temps = .{ .mem, .unused }, | 23816 | .dst_temps = .{ .mem, .unused }, |
| 23788 | .clobbers = .{ .eflags = true }, | 23817 | .clobbers = .{ .eflags = true }, |
| 23789 | .each = .{ .once = &.{ | 23818 | .each = .{ .once = &.{ |
| 23790 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 23819 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 23791 | .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ }, | 23820 | .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ }, |
| 23792 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | 23821 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 23793 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 23822 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23794 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | 23823 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23795 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, | 23824 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, |
| 23796 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, | 23825 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 23797 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, | 23826 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, |
| 23798 | .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 23827 | .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23799 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | 23828 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23800 | .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, | 23829 | .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_unaligned_size_sub_elem_size, 8), ._, ._ }, |
| 23801 | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, | 23830 | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_unaligned_size_sub_elem_size, 8), ._, ._ }, |
| 23802 | .{ ._, ._ge, .cmov, .tmp1p, .tmp2p, ._, ._ }, | 23831 | .{ ._, ._ge, .cmov, .tmp1p, .tmp2p, ._, ._ }, |
| 23803 | .{ ._, ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, | 23832 | .{ ._, ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_unaligned_size_sub_elem_size, 8), ._, ._ }, |
| 23804 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, | 23833 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| 23805 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | 23834 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 23806 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 23835 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| ... | @@ -23828,20 +23857,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23828,20 +23857,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23828 | .dst_temps = .{ .mem, .unused }, | 23857 | .dst_temps = .{ .mem, .unused }, |
| 23829 | .clobbers = .{ .eflags = true }, | 23858 | .clobbers = .{ .eflags = true }, |
| 23830 | .each = .{ .once = &.{ | 23859 | .each = .{ .once = &.{ |
| 23831 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 23860 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 23832 | .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ }, | 23861 | .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ }, |
| 23833 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | 23862 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 23834 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 23863 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23835 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | 23864 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23836 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, | 23865 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, |
| 23837 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, | 23866 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 23838 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, | 23867 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, |
| 23839 | .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 23868 | .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23840 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | 23869 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23841 | .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, | 23870 | .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_unaligned_size_sub_elem_size, 8), ._, ._ }, |
| 23842 | .{ ._, ._nge, .j, .@"1f", ._, ._, ._ }, | 23871 | .{ ._, ._nge, .j, .@"1f", ._, ._, ._ }, |
| 23843 | .{ ._, ._, .lea, .tmp1p, .memiad(.src1, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, | 23872 | .{ ._, ._, .lea, .tmp1p, .memiad(.src1, .tmp0, .add_unaligned_size_sub_elem_size, 8), ._, ._ }, |
| 23844 | .{ .@"1:", ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, | 23873 | .{ .@"1:", ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_unaligned_size_sub_elem_size, 8), ._, ._ }, |
| 23845 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, | 23874 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| 23846 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | 23875 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 23847 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 23876 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| ... | @@ -23869,18 +23898,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23869,18 +23898,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23869 | .dst_temps = .{ .mem, .unused }, | 23898 | .dst_temps = .{ .mem, .unused }, |
| 23870 | .clobbers = .{ .eflags = true }, | 23899 | .clobbers = .{ .eflags = true }, |
| 23871 | .each = .{ .once = &.{ | 23900 | .each = .{ .once = &.{ |
| 23872 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 23901 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 23873 | .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, | 23902 | .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| 23874 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | 23903 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 23875 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 23904 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23876 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | 23905 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23877 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, | 23906 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, |
| 23878 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, | 23907 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 23879 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, | 23908 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, |
| 23880 | .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ }, | 23909 | .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size_sub_elem_size), ._, ._ }, |
| 23881 | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_size_sub_elem_size), ._, ._ }, | 23910 | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_unaligned_size_sub_elem_size), ._, ._ }, |
| 23882 | .{ ._, ._ae, .cmov, .tmp1p, .tmp2p, ._, ._ }, | 23911 | .{ ._, ._ae, .cmov, .tmp1p, .tmp2p, ._, ._ }, |
| 23883 | .{ ._, ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_size_sub_elem_size), ._, ._ }, | 23912 | .{ ._, ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_unaligned_size_sub_elem_size), ._, ._ }, |
| 23884 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, | 23913 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| 23885 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | 23914 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 23886 | .{ ._, ._, .@"test", .tmp0p, .tmp0p, ._, ._ }, | 23915 | .{ ._, ._, .@"test", .tmp0p, .tmp0p, ._, ._ }, |
| ... | @@ -23908,18 +23937,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23908,18 +23937,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23908 | .dst_temps = .{ .mem, .unused }, | 23937 | .dst_temps = .{ .mem, .unused }, |
| 23909 | .clobbers = .{ .eflags = true }, | 23938 | .clobbers = .{ .eflags = true }, |
| 23910 | .each = .{ .once = &.{ | 23939 | .each = .{ .once = &.{ |
| 23911 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 23940 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 23912 | .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, | 23941 | .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| 23913 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | 23942 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 23914 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 23943 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23915 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | 23944 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23916 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, | 23945 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, |
| 23917 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, | 23946 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 23918 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, | 23947 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, |
| 23919 | .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ }, | 23948 | .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size_sub_elem_size), ._, ._ }, |
| 23920 | .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, | 23949 | .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, |
| 23921 | .{ ._, ._, .lea, .tmp1p, .memia(.src1, .tmp0, .add_size_sub_elem_size), ._, ._ }, | 23950 | .{ ._, ._, .lea, .tmp1p, .memia(.src1, .tmp0, .add_unaligned_size_sub_elem_size), ._, ._ }, |
| 23922 | .{ .@"1:", ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_size_sub_elem_size), ._, ._ }, | 23951 | .{ .@"1:", ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_unaligned_size_sub_elem_size), ._, ._ }, |
| 23923 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, | 23952 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| 23924 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, | 23953 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 23925 | .{ ._, ._, .@"test", .tmp0p, .tmp0p, ._, ._ }, | 23954 | .{ ._, ._, .@"test", .tmp0p, .tmp0p, ._, ._ }, |
| ... | @@ -39252,7 +39281,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -39252,7 +39281,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 39252 | .{ ._, ._, .@"or", .tmp3p, .tmp4p, ._, ._ }, | 39281 | .{ ._, ._, .@"or", .tmp3p, .tmp4p, ._, ._ }, |
| 39253 | .{ ._, ._, .add, .tmp0p, .sa(.tmp4, .add_size), ._, ._ }, | 39282 | .{ ._, ._, .add, .tmp0p, .sa(.tmp4, .add_size), ._, ._ }, |
| 39254 | .{ ._, ._, .sub, .tmp2d, .si(1), ._, ._ }, | 39283 | .{ ._, ._, .sub, .tmp2d, .si(1), ._, ._ }, |
| 39255 | .{ ._, ._b, .j, .@"1b", ._, ._, ._ }, | 39284 | .{ ._, ._a, .j, .@"1b", ._, ._, ._ }, |
| 39256 | .{ ._, ._, .@"test", .tmp3p, .tmp3p, ._, ._ }, | 39285 | .{ ._, ._, .@"test", .tmp3p, .tmp3p, ._, ._ }, |
| 39257 | .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ }, | 39286 | .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ }, |
| 39258 | .{ ._, ._l, .sh, .tmp2b, .tmp1b, ._, ._ }, | 39287 | .{ ._, ._l, .sh, .tmp2b, .tmp1b, ._, ._ }, |
| ... | @@ -39434,7 +39463,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -39434,7 +39463,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 39434 | .{ ._, ._, .@"or", .tmp3p, .tmp4p, ._, ._ }, | 39463 | .{ ._, ._, .@"or", .tmp3p, .tmp4p, ._, ._ }, |
| 39435 | .{ ._, ._, .add, .tmp0p, .sa(.tmp4, .add_size), ._, ._ }, | 39464 | .{ ._, ._, .add, .tmp0p, .sa(.tmp4, .add_size), ._, ._ }, |
| 39436 | .{ ._, ._, .sub, .tmp2d, .si(1), ._, ._ }, | 39465 | .{ ._, ._, .sub, .tmp2d, .si(1), ._, ._ }, |
| 39437 | .{ ._, ._b, .j, .@"1b", ._, ._, ._ }, | 39466 | .{ ._, ._a, .j, .@"1b", ._, ._, ._ }, |
| 39438 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, | 39467 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 39439 | .{ ._, ._, .@"test", .tmp3p, .tmp3p, ._, ._ }, | 39468 | .{ ._, ._, .@"test", .tmp3p, .tmp3p, ._, ._ }, |
| 39440 | .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ }, | 39469 | .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ }, |
| ... | @@ -39620,7 +39649,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -39620,7 +39649,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 39620 | .{ ._, ._, .@"or", .tmp3p, .tmp4p, ._, ._ }, | 39649 | .{ ._, ._, .@"or", .tmp3p, .tmp4p, ._, ._ }, |
| 39621 | .{ ._, ._, .add, .tmp0p, .sa(.tmp4, .add_size), ._, ._ }, | 39650 | .{ ._, ._, .add, .tmp0p, .sa(.tmp4, .add_size), ._, ._ }, |
| 39622 | .{ ._, ._, .sub, .tmp2d, .si(1), ._, ._ }, | 39651 | .{ ._, ._, .sub, .tmp2d, .si(1), ._, ._ }, |
| 39623 | .{ ._, ._b, .j, .@"1b", ._, ._, ._ }, | 39652 | .{ ._, ._a, .j, .@"1b", ._, ._, ._ }, |
| 39624 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, | 39653 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 39625 | .{ ._, ._, .@"test", .tmp3p, .tmp3p, ._, ._ }, | 39654 | .{ ._, ._, .@"test", .tmp3p, .tmp3p, ._, ._ }, |
| 39626 | .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ }, | 39655 | .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ }, |
| ... | @@ -59051,8 +59080,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -59051,8 +59080,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 59051 | .each = .{ .once = &.{ | 59080 | .each = .{ .once = &.{ |
| 59052 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 59081 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 59053 | .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, | 59082 | .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, |
| 59054 | .{ ._, .vp_d, .sll, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ }, | 59083 | .{ ._, .vp_d, .sll, .tmp1y, .tmp1y, .uia(32, .dst0, .sub_bit_size), ._ }, |
| 59055 | .{ ._, .vp_d, .sra, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ }, | 59084 | .{ ._, .vp_d, .sra, .tmp1y, .tmp1y, .uia(32, .dst0, .sub_bit_size), ._ }, |
| 59056 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, | 59085 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| 59057 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, | 59086 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 59058 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 59087 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| ... | @@ -59113,8 +59142,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -59113,8 +59142,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 59113 | .each = .{ .once = &.{ | 59142 | .each = .{ .once = &.{ |
| 59114 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 59143 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 59115 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, | 59144 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 59116 | .{ ._, .vp_d, .sll, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ }, | 59145 | .{ ._, .vp_d, .sll, .tmp1x, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._ }, |
| 59117 | .{ ._, .vp_d, .sra, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ }, | 59146 | .{ ._, .vp_d, .sra, .tmp1x, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._ }, |
| 59118 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, | 59147 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 59119 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 59148 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 59120 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 59149 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| ... | @@ -59175,8 +59204,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -59175,8 +59204,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 59175 | .each = .{ .once = &.{ | 59204 | .each = .{ .once = &.{ |
| 59176 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, | 59205 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 59177 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, | 59206 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 59178 | .{ ._, .p_d, .sll, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ }, | 59207 | .{ ._, .p_d, .sll, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 59179 | .{ ._, .p_d, .sra, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ }, | 59208 | .{ ._, .p_d, .sra, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 59180 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, | 59209 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 59181 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 59210 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 59182 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 59211 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| ... | @@ -60838,7 +60867,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -60838,7 +60867,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 60838 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, | 60867 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, |
| 60839 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, | 60868 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, |
| 60840 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ }, | 60869 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ }, |
| 60841 | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, | 60870 | .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 60842 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, | 60871 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, |
| 60843 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, | 60872 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| 60844 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, | 60873 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| ... | @@ -60875,7 +60904,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -60875,7 +60904,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 60875 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, | 60904 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, |
| 60876 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, | 60905 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, |
| 60877 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ }, | 60906 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ }, |
| 60878 | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, | 60907 | .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 60879 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, | 60908 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, |
| 60880 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, | 60909 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| 60881 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 60910 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| ... | @@ -60914,7 +60943,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -60914,7 +60943,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 60914 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, | 60943 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, |
| 60915 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, | 60944 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, |
| 60916 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ }, | 60945 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ }, |
| 60917 | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, | 60946 | .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 60918 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, | 60947 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, |
| 60919 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, | 60948 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| 60920 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, | 60949 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| ... | @@ -60953,7 +60982,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -60953,7 +60982,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 60953 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, | 60982 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, |
| 60954 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, | 60983 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, |
| 60955 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ }, | 60984 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ }, |
| 60956 | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, | 60985 | .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 60957 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, | 60986 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, |
| 60958 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, | 60987 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| 60959 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 60988 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| ... | @@ -61130,7 +61159,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -61130,7 +61159,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 61130 | .{ ._, ._, .bzhi, .tmp4q, .lea(.tmp1q), .tmp3q, ._ }, | 61159 | .{ ._, ._, .bzhi, .tmp4q, .lea(.tmp1q), .tmp3q, ._ }, |
| 61131 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp4q, ._, ._ }, | 61160 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp4q, ._, ._ }, |
| 61132 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ }, | 61161 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ }, |
| 61133 | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, | 61162 | .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 61134 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, | 61163 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, |
| 61135 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, | 61164 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| 61136 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, | 61165 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| ... | @@ -61167,7 +61196,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -61167,7 +61196,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 61167 | .{ ._, ._, .bzhi, .tmp4q, .lea(.tmp1q), .tmp3q, ._ }, | 61196 | .{ ._, ._, .bzhi, .tmp4q, .lea(.tmp1q), .tmp3q, ._ }, |
| 61168 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp4q, ._, ._ }, | 61197 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp4q, ._, ._ }, |
| 61169 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ }, | 61198 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ }, |
| 61170 | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, | 61199 | .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 61171 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, | 61200 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, |
| 61172 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, | 61201 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| 61173 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 61202 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| ... | @@ -61274,7 +61303,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -61274,7 +61303,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 61274 | .{ ._, ._, .@"and", .tmp3q, .lea(.tmp1q), ._, ._ }, | 61303 | .{ ._, ._, .@"and", .tmp3q, .lea(.tmp1q), ._, ._ }, |
| 61275 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, | 61304 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, |
| 61276 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ }, | 61305 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ }, |
| 61277 | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, | 61306 | .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 61278 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, | 61307 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, |
| 61279 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, | 61308 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| 61280 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, | 61309 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| ... | @@ -61311,7 +61340,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -61311,7 +61340,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 61311 | .{ ._, ._, .@"and", .tmp3q, .lea(.tmp1q), ._, ._ }, | 61340 | .{ ._, ._, .@"and", .tmp3q, .lea(.tmp1q), ._, ._ }, |
| 61312 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, | 61341 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, |
| 61313 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ }, | 61342 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ }, |
| 61314 | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, | 61343 | .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 61315 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, | 61344 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, |
| 61316 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, | 61345 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| 61317 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 61346 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| ... | @@ -94747,7 +94776,7 @@ const MoveStrategy = union(enum) { | ... | @@ -94747,7 +94776,7 @@ const MoveStrategy = union(enum) { |
| 94747 | }); | 94776 | }); |
| 94748 | }, | 94777 | }, |
| 94749 | .load_store => |tag| { | 94778 | .load_store => |tag| { |
| 94750 | if (tag[0] == ._ps and tag[1] == .movl) try cg.asmRegisterRegister(.{ .p_, .xor }, dst_reg, dst_reg); | 94779 | if (tag[0] == ._ps and tag[1] == .movl) try cg.asmRegisterRegister(.{ ._ps, .xor }, dst_reg, dst_reg); |
| 94751 | try cg.asmRegisterMemory(tag, switch (tag[1]) { | 94780 | try cg.asmRegisterMemory(tag, switch (tag[1]) { |
| 94752 | else => dst_reg, | 94781 | else => dst_reg, |
| 94753 | .lea => if (dst_reg.bitSize() >= 32) dst_reg else dst_reg.to32(), | 94782 | .lea => if (dst_reg.bitSize() >= 32) dst_reg else dst_reg.to32(), |
| ... | @@ -101383,454 +101412,2823 @@ const Temp = struct { | ... | @@ -101383,454 +101412,2823 @@ const Temp = struct { |
| 101383 | try cg.asmOpOnly(.{ .@"rep _sb", .sto }); | 101412 | try cg.asmOpOnly(.{ .@"rep _sb", .sto }); |
| 101384 | } | 101413 | } |
| 101385 | | 101414 | |
| 101386 | /// Supports any `op` using `cg.intInfo(lhs.typeOf(cg)).?.signedness` as the signedness. | 101415 | fn wrapInt(temp: *Temp, cg: *CodeGen) Select.Error!void { |
| 101387 | /// Returns `error.SelectFailed` when `cg.intInfo(lhs.typeOf(cg)) == null`. | 101416 | var ops: [1]Temp = .{temp.*}; |
| 101388 | fn cmpInts(lhs: *Temp, op: std.math.CompareOperator, rhs: *Temp, cg: *CodeGen) Select.Error!Temp { | | |
| 101389 | var ops: [2]Temp = .{ lhs.*, rhs.* }; | | |
| 101390 | var res: [1]Temp = undefined; | 101417 | var res: [1]Temp = undefined; |
| 101391 | switch (op) { | 101418 | try cg.select(&res, &.{temp.typeOf(cg)}, &ops, comptime &.{ .{ |
| 101392 | .lt, .lte, .gte, .gt => { | 101419 | .src_constraints = .{ .{ .exact_int = 8 }, .any, .any }, |
| 101393 | const commute = switch (op) { | 101420 | .patterns = &.{ |
| 101394 | .lt, .gte => false, | 101421 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 101395 | .lte, .gt => true, | 101422 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 101396 | else => unreachable, | | |
| 101397 | }; | | |
| 101398 | if (commute) std.mem.swap(Temp, &ops[0], &ops[1]); | | |
| 101399 | try cg.select(&res, &.{.bool}, &ops, comptime &.{ .{ | | |
| 101400 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any }, | | |
| 101401 | .patterns = &.{ | | |
| 101402 | .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } }, | | |
| 101403 | .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } }, | | |
| 101404 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, | | |
| 101405 | }, | | |
| 101406 | .dst_temps = .{ .{ .cc = .g }, .unused }, | | |
| 101407 | .clobbers = .{ .eflags = true }, | | |
| 101408 | .each = .{ .once = &.{ | | |
| 101409 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, | | |
| 101410 | } }, | | |
| 101411 | }, .{ | | |
| 101412 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any }, | | |
| 101413 | .patterns = &.{ | | |
| 101414 | .{ .src = .{ .mem, .imm8, .none } }, | | |
| 101415 | .{ .src = .{ .to_gpr, .imm8, .none } }, | | |
| 101416 | .{ .src = .{ .to_gpr, .mem, .none } }, | | |
| 101417 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, | | |
| 101418 | }, | | |
| 101419 | .dst_temps = .{ .{ .cc = .l }, .unused }, | | |
| 101420 | .clobbers = .{ .eflags = true }, | | |
| 101421 | .each = .{ .once = &.{ | | |
| 101422 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, | | |
| 101423 | } }, | | |
| 101424 | }, .{ | | |
| 101425 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any }, | | |
| 101426 | .patterns = &.{ | | |
| 101427 | .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } }, | | |
| 101428 | .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } }, | | |
| 101429 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, | | |
| 101430 | }, | | |
| 101431 | .dst_temps = .{ .{ .cc = .a }, .unused }, | | |
| 101432 | .clobbers = .{ .eflags = true }, | | |
| 101433 | .each = .{ .once = &.{ | | |
| 101434 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, | | |
| 101435 | } }, | | |
| 101436 | }, .{ | | |
| 101437 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any }, | | |
| 101438 | .patterns = &.{ | | |
| 101439 | .{ .src = .{ .mem, .imm8, .none } }, | | |
| 101440 | .{ .src = .{ .to_gpr, .imm8, .none } }, | | |
| 101441 | .{ .src = .{ .to_gpr, .mem, .none } }, | | |
| 101442 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, | | |
| 101443 | }, | | |
| 101444 | .dst_temps = .{ .{ .cc = .b }, .unused }, | | |
| 101445 | .clobbers = .{ .eflags = true }, | | |
| 101446 | .each = .{ .once = &.{ | | |
| 101447 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, | | |
| 101448 | } }, | | |
| 101449 | }, .{ | | |
| 101450 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, | | |
| 101451 | .patterns = &.{ | | |
| 101452 | .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } }, | | |
| 101453 | .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } }, | | |
| 101454 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, | | |
| 101455 | }, | | |
| 101456 | .dst_temps = .{ .{ .cc = .g }, .unused }, | | |
| 101457 | .clobbers = .{ .eflags = true }, | | |
| 101458 | .each = .{ .once = &.{ | | |
| 101459 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, | | |
| 101460 | } }, | | |
| 101461 | }, .{ | | |
| 101462 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, | | |
| 101463 | .patterns = &.{ | | |
| 101464 | .{ .src = .{ .mem, .imm16, .none } }, | | |
| 101465 | .{ .src = .{ .to_gpr, .imm16, .none } }, | | |
| 101466 | .{ .src = .{ .to_gpr, .mem, .none } }, | | |
| 101467 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, | | |
| 101468 | }, | | |
| 101469 | .dst_temps = .{ .{ .cc = .l }, .unused }, | | |
| 101470 | .clobbers = .{ .eflags = true }, | | |
| 101471 | .each = .{ .once = &.{ | | |
| 101472 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, | | |
| 101473 | } }, | | |
| 101474 | }, .{ | | |
| 101475 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any }, | | |
| 101476 | .patterns = &.{ | | |
| 101477 | .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } }, | | |
| 101478 | .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } }, | | |
| 101479 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, | | |
| 101480 | }, | | |
| 101481 | .dst_temps = .{ .{ .cc = .a }, .unused }, | | |
| 101482 | .clobbers = .{ .eflags = true }, | | |
| 101483 | .each = .{ .once = &.{ | | |
| 101484 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, | | |
| 101485 | } }, | | |
| 101486 | }, .{ | | |
| 101487 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any }, | | |
| 101488 | .patterns = &.{ | | |
| 101489 | .{ .src = .{ .mem, .imm16, .none } }, | | |
| 101490 | .{ .src = .{ .to_gpr, .imm16, .none } }, | | |
| 101491 | .{ .src = .{ .to_gpr, .mem, .none } }, | | |
| 101492 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, | | |
| 101493 | }, | | |
| 101494 | .dst_temps = .{ .{ .cc = .b }, .unused }, | | |
| 101495 | .clobbers = .{ .eflags = true }, | | |
| 101496 | .each = .{ .once = &.{ | | |
| 101497 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, | | |
| 101498 | } }, | | |
| 101499 | }, .{ | | |
| 101500 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any }, | | |
| 101501 | .patterns = &.{ | | |
| 101502 | .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } }, | | |
| 101503 | .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, | | |
| 101504 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, | | |
| 101505 | }, | | |
| 101506 | .dst_temps = .{ .{ .cc = .g }, .unused }, | | |
| 101507 | .clobbers = .{ .eflags = true }, | | |
| 101508 | .each = .{ .once = &.{ | | |
| 101509 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, | | |
| 101510 | } }, | | |
| 101511 | }, .{ | | |
| 101512 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any }, | | |
| 101513 | .patterns = &.{ | | |
| 101514 | .{ .src = .{ .mem, .imm32, .none } }, | | |
| 101515 | .{ .src = .{ .to_gpr, .imm32, .none } }, | | |
| 101516 | .{ .src = .{ .to_gpr, .mem, .none } }, | | |
| 101517 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, | | |
| 101518 | }, | | |
| 101519 | .dst_temps = .{ .{ .cc = .l }, .unused }, | | |
| 101520 | .clobbers = .{ .eflags = true }, | | |
| 101521 | .each = .{ .once = &.{ | | |
| 101522 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, | | |
| 101523 | } }, | | |
| 101524 | }, .{ | | |
| 101525 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any }, | | |
| 101526 | .patterns = &.{ | | |
| 101527 | .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } }, | | |
| 101528 | .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, | | |
| 101529 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, | | |
| 101530 | }, | | |
| 101531 | .dst_temps = .{ .{ .cc = .a }, .unused }, | | |
| 101532 | .clobbers = .{ .eflags = true }, | | |
| 101533 | .each = .{ .once = &.{ | | |
| 101534 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, | | |
| 101535 | } }, | | |
| 101536 | }, .{ | | |
| 101537 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any }, | | |
| 101538 | .patterns = &.{ | | |
| 101539 | .{ .src = .{ .mem, .imm32, .none } }, | | |
| 101540 | .{ .src = .{ .to_gpr, .imm32, .none } }, | | |
| 101541 | .{ .src = .{ .to_gpr, .mem, .none } }, | | |
| 101542 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, | | |
| 101543 | }, | | |
| 101544 | .dst_temps = .{ .{ .cc = .b }, .unused }, | | |
| 101545 | .clobbers = .{ .eflags = true }, | | |
| 101546 | .each = .{ .once = &.{ | | |
| 101547 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, | | |
| 101548 | } }, | | |
| 101549 | }, .{ | | |
| 101550 | .required_features = .{ .@"64bit", null, null, null }, | | |
| 101551 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any }, | | |
| 101552 | .patterns = &.{ | | |
| 101553 | .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } }, | | |
| 101554 | .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, | | |
| 101555 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, | | |
| 101556 | }, | | |
| 101557 | .dst_temps = .{ .{ .cc = .g }, .unused }, | | |
| 101558 | .clobbers = .{ .eflags = true }, | | |
| 101559 | .each = .{ .once = &.{ | | |
| 101560 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, | | |
| 101561 | } }, | | |
| 101562 | }, .{ | | |
| 101563 | .required_features = .{ .@"64bit", null, null, null }, | | |
| 101564 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any }, | | |
| 101565 | .patterns = &.{ | | |
| 101566 | .{ .src = .{ .mem, .simm32, .none } }, | | |
| 101567 | .{ .src = .{ .to_gpr, .simm32, .none } }, | | |
| 101568 | .{ .src = .{ .to_gpr, .mem, .none } }, | | |
| 101569 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, | | |
| 101570 | }, | | |
| 101571 | .dst_temps = .{ .{ .cc = .l }, .unused }, | | |
| 101572 | .clobbers = .{ .eflags = true }, | | |
| 101573 | .each = .{ .once = &.{ | | |
| 101574 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, | | |
| 101575 | } }, | | |
| 101576 | }, .{ | | |
| 101577 | .required_features = .{ .@"64bit", null, null, null }, | | |
| 101578 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any }, | | |
| 101579 | .patterns = &.{ | | |
| 101580 | .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } }, | | |
| 101581 | .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, | | |
| 101582 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, | | |
| 101583 | }, | | |
| 101584 | .dst_temps = .{ .{ .cc = .a }, .unused }, | | |
| 101585 | .clobbers = .{ .eflags = true }, | | |
| 101586 | .each = .{ .once = &.{ | | |
| 101587 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, | | |
| 101588 | } }, | | |
| 101589 | }, .{ | | |
| 101590 | .required_features = .{ .@"64bit", null, null, null }, | | |
| 101591 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any }, | | |
| 101592 | .patterns = &.{ | | |
| 101593 | .{ .src = .{ .mem, .simm32, .none } }, | | |
| 101594 | .{ .src = .{ .to_gpr, .simm32, .none } }, | | |
| 101595 | .{ .src = .{ .to_gpr, .mem, .none } }, | | |
| 101596 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, | | |
| 101597 | }, | | |
| 101598 | .dst_temps = .{ .{ .cc = .b }, .unused }, | | |
| 101599 | .clobbers = .{ .eflags = true }, | | |
| 101600 | .each = .{ .once = &.{ | | |
| 101601 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, | | |
| 101602 | } }, | | |
| 101603 | }, .{ | | |
| 101604 | .required_features = .{ .@"64bit", null, null, null }, | | |
| 101605 | .src_constraints = .{ | | |
| 101606 | .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, | | |
| 101607 | .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, | | |
| 101608 | .any, | | |
| 101609 | }, | | |
| 101610 | .patterns = &.{ | | |
| 101611 | .{ .src = .{ .to_mem, .to_mem, .none } }, | | |
| 101612 | }, | | |
| 101613 | .extra_temps = .{ | | |
| 101614 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 101615 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, | | |
| 101616 | .unused, | | |
| 101617 | .unused, | | |
| 101618 | .unused, | | |
| 101619 | .unused, | | |
| 101620 | .unused, | | |
| 101621 | .unused, | | |
| 101622 | .unused, | | |
| 101623 | .unused, | | |
| 101624 | .unused, | | |
| 101625 | }, | | |
| 101626 | .dst_temps = .{ .{ .cc = .l }, .unused }, | | |
| 101627 | .clobbers = .{ .eflags = true }, | | |
| 101628 | .each = .{ .once = &.{ | | |
| 101629 | .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ }, | | |
| 101630 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | | |
| 101631 | .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ }, | | |
| 101632 | .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ }, | | |
| 101633 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | | |
| 101634 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | | |
| 101635 | .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ }, | | |
| 101636 | .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ }, | | |
| 101637 | } }, | | |
| 101638 | }, .{ | | |
| 101639 | .required_features = .{ .@"64bit", null, null, null }, | | |
| 101640 | .src_constraints = .{ | | |
| 101641 | .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, | | |
| 101642 | .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, | | |
| 101643 | .any, | | |
| 101644 | }, | | |
| 101645 | .patterns = &.{ | | |
| 101646 | .{ .src = .{ .to_mem, .to_mem, .none } }, | | |
| 101647 | }, | | |
| 101648 | .extra_temps = .{ | | |
| 101649 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 101650 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | | |
| 101651 | .unused, | | |
| 101652 | .unused, | | |
| 101653 | .unused, | | |
| 101654 | .unused, | | |
| 101655 | .unused, | | |
| 101656 | .unused, | | |
| 101657 | .unused, | | |
| 101658 | .unused, | | |
| 101659 | .unused, | | |
| 101660 | }, | | |
| 101661 | .dst_temps = .{ .{ .cc = .b }, .unused }, | | |
| 101662 | .clobbers = .{ .eflags = true }, | | |
| 101663 | .each = .{ .once = &.{ | | |
| 101664 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ }, | | |
| 101665 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | | |
| 101666 | .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ }, | | |
| 101667 | .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ }, | | |
| 101668 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | | |
| 101669 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | | |
| 101670 | } }, | | |
| 101671 | }, .{ | | |
| 101672 | .src_constraints = .{ | | |
| 101673 | .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, | | |
| 101674 | .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, | | |
| 101675 | .any, | | |
| 101676 | }, | | |
| 101677 | .patterns = &.{ | | |
| 101678 | .{ .src = .{ .to_mem, .to_mem, .none } }, | | |
| 101679 | }, | | |
| 101680 | .extra_temps = .{ | | |
| 101681 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 101682 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, | | |
| 101683 | .unused, | | |
| 101684 | .unused, | | |
| 101685 | .unused, | | |
| 101686 | .unused, | | |
| 101687 | .unused, | | |
| 101688 | .unused, | | |
| 101689 | .unused, | | |
| 101690 | .unused, | | |
| 101691 | .unused, | | |
| 101692 | }, | | |
| 101693 | .dst_temps = .{ .{ .cc = .l }, .unused }, | | |
| 101694 | .clobbers = .{ .eflags = true }, | | |
| 101695 | .each = .{ .once = &.{ | | |
| 101696 | .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_4), ._, ._ }, | | |
| 101697 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | | |
| 101698 | .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"4", .tmp0, .add_size, -4), ._, ._ }, | | |
| 101699 | .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"4", .tmp0, .add_size, -4), ._, ._ }, | | |
| 101700 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | | |
| 101701 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | | |
| 101702 | .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -4), ._, ._ }, | | |
| 101703 | .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -4), ._, ._ }, | | |
| 101704 | } }, | | |
| 101705 | }, .{ | | |
| 101706 | .src_constraints = .{ | | |
| 101707 | .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, | | |
| 101708 | .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, | | |
| 101709 | .any, | | |
| 101710 | }, | | |
| 101711 | .patterns = &.{ | | |
| 101712 | .{ .src = .{ .to_mem, .to_mem, .none } }, | | |
| 101713 | }, | | |
| 101714 | .extra_temps = .{ | | |
| 101715 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | | |
| 101716 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | | |
| 101717 | .unused, | | |
| 101718 | .unused, | | |
| 101719 | .unused, | | |
| 101720 | .unused, | | |
| 101721 | .unused, | | |
| 101722 | .unused, | | |
| 101723 | .unused, | | |
| 101724 | .unused, | | |
| 101725 | .unused, | | |
| 101726 | }, | | |
| 101727 | .dst_temps = .{ .{ .cc = .b }, .unused }, | | |
| 101728 | .clobbers = .{ .eflags = true }, | | |
| 101729 | .each = .{ .once = &.{ | | |
| 101730 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_4), ._, ._ }, | | |
| 101731 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, | | |
| 101732 | .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_size), ._, ._ }, | | |
| 101733 | .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"4", .tmp0, .add_size), ._, ._ }, | | |
| 101734 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | | |
| 101735 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | | |
| 101736 | } }, | | |
| 101737 | } }); | | |
| 101738 | if (commute) std.mem.swap(Temp, &ops[0], &ops[1]); | | |
| 101739 | }, | 101423 | }, |
| 101740 | .eq, .neq => { | 101424 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101741 | try cg.select(&res, &.{.bool}, &ops, comptime &.{ .{ | 101425 | .each = .{ .once = &.{} }, |
| 101742 | .src_constraints = .{ .{ .int = .byte }, .{ .int = .byte }, .any }, | 101426 | }, .{ |
| 101743 | .patterns = &.{ | 101427 | .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, |
| 101744 | .{ .src = .{ .mem, .imm8, .none } }, | 101428 | .patterns = &.{ |
| 101745 | .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } }, | 101429 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 101746 | .{ .src = .{ .to_gpr, .imm8, .none } }, | 101430 | }, |
| 101747 | .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } }, | 101431 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101748 | .{ .src = .{ .to_gpr, .mem, .none } }, | 101432 | .clobbers = .{ .eflags = true }, |
| 101749 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, | 101433 | .each = .{ .once = &.{ |
| 101750 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, | 101434 | .{ ._, ._l, .sa, .dst0b, .uia(8, .src0, .sub_bit_size), ._, ._ }, |
| 101751 | }, | 101435 | .{ ._, ._r, .sa, .dst0b, .uia(8, .src0, .sub_bit_size), ._, ._ }, |
| 101752 | .dst_temps = .{ .{ .cc = .e }, .unused }, | 101436 | } }, |
| 101753 | .clobbers = .{ .eflags = true }, | 101437 | }, .{ |
| 101754 | .each = .{ .once = &.{ | 101438 | .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, |
| 101755 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, | 101439 | .patterns = &.{ |
| 101756 | } }, | 101440 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 101757 | }, .{ | 101441 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 101758 | .src_constraints = .{ .{ .int = .word }, .{ .int = .word }, .any }, | 101442 | }, |
| 101759 | .patterns = &.{ | 101443 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101760 | .{ .src = .{ .mem, .imm16, .none } }, | 101444 | .clobbers = .{ .eflags = true }, |
| 101761 | .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } }, | 101445 | .each = .{ .once = &.{ |
| 101762 | .{ .src = .{ .to_gpr, .imm16, .none } }, | 101446 | .{ ._, ._, .@"and", .dst0b, .ua(.src0, .add_umax), ._, ._ }, |
| 101763 | .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } }, | 101447 | } }, |
| 101764 | .{ .src = .{ .to_gpr, .mem, .none } }, | 101448 | }, .{ |
| 101765 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, | 101449 | .src_constraints = .{ .{ .exact_int = 16 }, .any, .any }, |
| 101766 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, | 101450 | .patterns = &.{ |
| 101767 | }, | 101451 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 101768 | .dst_temps = .{ .{ .cc = .e }, .unused }, | 101452 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 101769 | .clobbers = .{ .eflags = true }, | 101453 | }, |
| 101770 | .each = .{ .once = &.{ | 101454 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101771 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, | 101455 | .each = .{ .once = &.{} }, |
| 101772 | } }, | 101456 | }, .{ |
| 101773 | }, .{ | 101457 | .required_features = .{ .fast_imm16, null, null, null }, |
| 101774 | .src_constraints = .{ .{ .int = .dword }, .{ .int = .dword }, .any }, | 101458 | .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, |
| 101775 | .patterns = &.{ | 101459 | .patterns = &.{ |
| 101776 | .{ .src = .{ .mem, .imm32, .none } }, | 101460 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 101777 | .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } }, | 101461 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 101778 | .{ .src = .{ .to_gpr, .imm32, .none } }, | 101462 | }, |
| 101779 | .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, | 101463 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101780 | .{ .src = .{ .to_gpr, .mem, .none } }, | 101464 | .clobbers = .{ .eflags = true }, |
| 101781 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, | 101465 | .each = .{ .once = &.{ |
| 101782 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, | 101466 | .{ ._, ._, .@"and", .dst0w, .ua(.src0, .add_umax), ._, ._ }, |
| 101783 | }, | 101467 | } }, |
| 101784 | .dst_temps = .{ .{ .cc = .e }, .unused }, | 101468 | }, .{ |
| 101785 | .clobbers = .{ .eflags = true }, | 101469 | .src_constraints = .{ .{ .exact_int = 32 }, .any, .any }, |
| 101786 | .each = .{ .once = &.{ | 101470 | .patterns = &.{ |
| 101787 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, | 101471 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 101788 | } }, | 101472 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 101789 | }, .{ | 101473 | }, |
| 101790 | .required_features = .{ .@"64bit", null, null, null }, | 101474 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101791 | .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword }, .any }, | 101475 | .each = .{ .once = &.{} }, |
| 101792 | .patterns = &.{ | 101476 | }, .{ |
| 101793 | .{ .src = .{ .mem, .simm32, .none } }, | 101477 | .src_constraints = .{ .{ .signed_int = .dword }, .any, .any }, |
| 101794 | .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } }, | 101478 | .patterns = &.{ |
| 101795 | .{ .src = .{ .to_gpr, .simm32, .none } }, | 101479 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 101796 | .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, | 101480 | }, |
| 101797 | .{ .src = .{ .to_gpr, .mem, .none } }, | 101481 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101798 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, | 101482 | .clobbers = .{ .eflags = true }, |
| 101799 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, | 101483 | .each = .{ .once = &.{ |
| 101800 | }, | 101484 | .{ ._, ._l, .sa, .dst0d, .uia(32, .src0, .sub_bit_size), ._, ._ }, |
| 101801 | .dst_temps = .{ .{ .cc = .e }, .unused }, | 101485 | .{ ._, ._r, .sa, .dst0d, .uia(32, .src0, .sub_bit_size), ._, ._ }, |
| 101802 | .clobbers = .{ .eflags = true }, | 101486 | } }, |
| 101803 | .each = .{ .once = &.{ | 101487 | }, .{ |
| 101804 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, | 101488 | .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any }, |
| 101805 | } }, | 101489 | .patterns = &.{ |
| 101806 | }, .{ | 101490 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 101807 | .required_features = .{ .sse, .mmx, null, null }, | 101491 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 101808 | .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword }, .any }, | 101492 | }, |
| 101809 | .patterns = &.{ | 101493 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101810 | .{ .src = .{ .to_mut_mm, .mem, .none } }, | 101494 | .clobbers = .{ .eflags = true }, |
| 101811 | .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } }, | 101495 | .each = .{ .once = &.{ |
| 101812 | .{ .src = .{ .to_mut_mm, .to_mm, .none } }, | 101496 | .{ ._, ._, .@"and", .dst0d, .ua(.src0, .add_umax), ._, ._ }, |
| 101813 | }, | 101497 | } }, |
| 101814 | .extra_temps = .{ | 101498 | }, .{ |
| 101815 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 101499 | .required_features = .{ .@"64bit", null, null, null }, |
| 101816 | .{ .kind = .{ .rc = .mmx } }, | 101500 | .src_constraints = .{ .{ .exact_int = 64 }, .any, .any }, |
| 101817 | .unused, | 101501 | .patterns = &.{ |
| 101818 | .unused, | 101502 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 101819 | .unused, | 101503 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 101820 | .unused, | 101504 | }, |
| 101821 | .unused, | 101505 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101822 | .unused, | 101506 | .each = .{ .once = &.{} }, |
| 101823 | .unused, | 101507 | }, .{ |
| 101824 | .unused, | 101508 | .required_features = .{ .@"64bit", null, null, null }, |
| 101825 | .unused, | 101509 | .src_constraints = .{ .{ .signed_int = .qword }, .any, .any }, |
| 101826 | }, | 101510 | .patterns = &.{ |
| 101827 | .dst_temps = .{ .{ .cc = .z }, .unused }, | 101511 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 101828 | .clobbers = .{ .eflags = true }, | 101512 | }, |
| 101829 | .each = .{ .once = &.{ | 101513 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101830 | .{ ._, .p_, .xor, .tmp1q, .tmp1q, ._, ._ }, | 101514 | .clobbers = .{ .eflags = true }, |
| 101831 | .{ ._, .p_, .xor, .src0q, .src1q, ._, ._ }, | 101515 | .each = .{ .once = &.{ |
| 101832 | .{ ._, .p_b, .cmpeq, .tmp1q, .src0q, ._, ._ }, | 101516 | .{ ._, ._l, .sa, .dst0q, .uia(64, .src0, .sub_bit_size), ._, ._ }, |
| 101833 | .{ ._, .p_b, .movmsk, .tmp0d, .tmp1q, ._, ._ }, | 101517 | .{ ._, ._r, .sa, .dst0q, .uia(64, .src0, .sub_bit_size), ._, ._ }, |
| | 101518 | } }, |
| | 101519 | }, .{ |
| | 101520 | .required_features = .{ .@"64bit", .bmi2, null, null }, |
| | 101521 | .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, |
| | 101522 | .patterns = &.{ |
| | 101523 | .{ .src = .{ .to_gpr, .none, .none } }, |
| | 101524 | }, |
| | 101525 | .extra_temps = .{ |
| | 101526 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 101527 | .unused, |
| | 101528 | .unused, |
| | 101529 | .unused, |
| | 101530 | .unused, |
| | 101531 | .unused, |
| | 101532 | .unused, |
| | 101533 | .unused, |
| | 101534 | .unused, |
| | 101535 | .unused, |
| | 101536 | .unused, |
| | 101537 | }, |
| | 101538 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }, .unused }, |
| | 101539 | .clobbers = .{ .eflags = true }, |
| | 101540 | .each = .{ .once = &.{ |
| | 101541 | .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size), ._, ._ }, |
| | 101542 | .{ ._, ._, .bzhi, .dst0q, .src0q, .tmp0q, ._ }, |
| | 101543 | } }, |
| | 101544 | }, .{ |
| | 101545 | .required_features = .{ .@"64bit", null, null, null }, |
| | 101546 | .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, |
| | 101547 | .patterns = &.{ |
| | 101548 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 101549 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| | 101550 | }, |
| | 101551 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 101552 | .clobbers = .{ .eflags = true }, |
| | 101553 | .each = .{ .once = &.{ |
| | 101554 | .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ }, |
| | 101555 | .{ ._, ._, .@"and", .dst0q, .tmp0q, ._, ._ }, |
| | 101556 | } }, |
| | 101557 | }, .{ |
| | 101558 | .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 101559 | .patterns = &.{ |
| | 101560 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 101561 | }, |
| | 101562 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 101563 | .each = .{ .once = &.{} }, |
| | 101564 | }, .{ |
| | 101565 | .required_features = .{ .@"64bit", null, null, null }, |
| | 101566 | .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 101567 | .patterns = &.{ |
| | 101568 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 101569 | }, |
| | 101570 | .extra_temps = .{ |
| | 101571 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 101572 | .unused, |
| | 101573 | .unused, |
| | 101574 | .unused, |
| | 101575 | .unused, |
| | 101576 | .unused, |
| | 101577 | .unused, |
| | 101578 | .unused, |
| | 101579 | .unused, |
| | 101580 | .unused, |
| | 101581 | .unused, |
| | 101582 | }, |
| | 101583 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 101584 | .clobbers = .{ .eflags = true }, |
| | 101585 | .each = .{ .once = &.{ |
| | 101586 | .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ }, |
| | 101587 | .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| | 101588 | .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| | 101589 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ }, |
| | 101590 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| | 101591 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ }, |
| | 101592 | } }, |
| | 101593 | }, .{ |
| | 101594 | .required_features = .{ .@"64bit", null, null, null }, |
| | 101595 | .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 101596 | .patterns = &.{ |
| | 101597 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 101598 | }, |
| | 101599 | .extra_temps = .{ |
| | 101600 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 101601 | .unused, |
| | 101602 | .unused, |
| | 101603 | .unused, |
| | 101604 | .unused, |
| | 101605 | .unused, |
| | 101606 | .unused, |
| | 101607 | .unused, |
| | 101608 | .unused, |
| | 101609 | .unused, |
| | 101610 | .unused, |
| | 101611 | }, |
| | 101612 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 101613 | .clobbers = .{ .eflags = true }, |
| | 101614 | .each = .{ .once = &.{ |
| | 101615 | .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ }, |
| | 101616 | .{ ._, ._, .@"and", .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ }, |
| | 101617 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ }, |
| | 101618 | } }, |
| | 101619 | }, .{ |
| | 101620 | .required_features = .{ .@"64bit", null, null, null }, |
| | 101621 | .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 101622 | .patterns = &.{ |
| | 101623 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 101624 | }, |
| | 101625 | .extra_temps = .{ |
| | 101626 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 101627 | .unused, |
| | 101628 | .unused, |
| | 101629 | .unused, |
| | 101630 | .unused, |
| | 101631 | .unused, |
| | 101632 | .unused, |
| | 101633 | .unused, |
| | 101634 | .unused, |
| | 101635 | .unused, |
| | 101636 | .unused, |
| | 101637 | }, |
| | 101638 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 101639 | .clobbers = .{ .eflags = true }, |
| | 101640 | .each = .{ .once = &.{ |
| | 101641 | .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ }, |
| | 101642 | .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| | 101643 | .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| | 101644 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ }, |
| | 101645 | } }, |
| | 101646 | }, .{ |
| | 101647 | .required_features = .{ .@"64bit", null, null, null }, |
| | 101648 | .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 101649 | .patterns = &.{ |
| | 101650 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 101651 | }, |
| | 101652 | .extra_temps = .{ |
| | 101653 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 101654 | .unused, |
| | 101655 | .unused, |
| | 101656 | .unused, |
| | 101657 | .unused, |
| | 101658 | .unused, |
| | 101659 | .unused, |
| | 101660 | .unused, |
| | 101661 | .unused, |
| | 101662 | .unused, |
| | 101663 | .unused, |
| | 101664 | }, |
| | 101665 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 101666 | .clobbers = .{ .eflags = true }, |
| | 101667 | .each = .{ .once = &.{ |
| | 101668 | .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ }, |
| | 101669 | .{ ._, ._, .@"and", .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ }, |
| | 101670 | } }, |
| | 101671 | }, .{ |
| | 101672 | .required_features = .{ .sse, null, null, null }, |
| | 101673 | .src_constraints = .{ .{ .scalar_exact_int = .{ .of = .xword, .is = 8 } }, .any, .any }, |
| | 101674 | .patterns = &.{ |
| | 101675 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 101676 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 101677 | }, |
| | 101678 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 101679 | .each = .{ .once = &.{} }, |
| | 101680 | }, .{ |
| | 101681 | .required_features = .{ .avx, null, null, null }, |
| | 101682 | .src_constraints = .{ .{ .scalar_exact_int = .{ .of = .yword, .is = 8 } }, .any, .any }, |
| | 101683 | .patterns = &.{ |
| | 101684 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 101685 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 101686 | }, |
| | 101687 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 101688 | .each = .{ .once = &.{} }, |
| | 101689 | }, .{ |
| | 101690 | .required_features = .{ .avx, null, null, null }, |
| | 101691 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| | 101692 | .patterns = &.{ |
| | 101693 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 101694 | }, |
| | 101695 | .extra_temps = .{ |
| | 101696 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 101697 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 101698 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| | 101699 | .unused, |
| | 101700 | .unused, |
| | 101701 | .unused, |
| | 101702 | .unused, |
| | 101703 | .unused, |
| | 101704 | .unused, |
| | 101705 | .unused, |
| | 101706 | .unused, |
| | 101707 | }, |
| | 101708 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| | 101709 | .each = .{ .once = &.{ |
| | 101710 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 101711 | .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| | 101712 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, |
| | 101713 | .{ ._, .vp_b, .add, .dst0x, .dst0x, .lea(.tmp0x), ._ }, |
| | 101714 | .{ ._, .vp_, .xor, .dst0x, .dst0x, .lea(.tmp0x), ._ }, |
| | 101715 | } }, |
| | 101716 | }, .{ |
| | 101717 | .required_features = .{ .avx, null, null, null }, |
| | 101718 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| | 101719 | .patterns = &.{ |
| | 101720 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 101721 | }, |
| | 101722 | .extra_temps = .{ |
| | 101723 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 101724 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| | 101725 | .unused, |
| | 101726 | .unused, |
| | 101727 | .unused, |
| | 101728 | .unused, |
| | 101729 | .unused, |
| | 101730 | .unused, |
| | 101731 | .unused, |
| | 101732 | .unused, |
| | 101733 | .unused, |
| | 101734 | }, |
| | 101735 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| | 101736 | .each = .{ .once = &.{ |
| | 101737 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 101738 | .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| | 101739 | } }, |
| | 101740 | }, .{ |
| | 101741 | .required_features = .{ .sse2, null, null, null }, |
| | 101742 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| | 101743 | .patterns = &.{ |
| | 101744 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 101745 | }, |
| | 101746 | .extra_temps = .{ |
| | 101747 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 101748 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 101749 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| | 101750 | .unused, |
| | 101751 | .unused, |
| | 101752 | .unused, |
| | 101753 | .unused, |
| | 101754 | .unused, |
| | 101755 | .unused, |
| | 101756 | .unused, |
| | 101757 | .unused, |
| | 101758 | }, |
| | 101759 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 101760 | .each = .{ .once = &.{ |
| | 101761 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 101762 | .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| | 101763 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, |
| | 101764 | .{ ._, .p_b, .add, .dst0x, .lea(.tmp0x), ._, ._ }, |
| | 101765 | .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ }, |
| | 101766 | } }, |
| | 101767 | }, .{ |
| | 101768 | .required_features = .{ .sse2, null, null, null }, |
| | 101769 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| | 101770 | .patterns = &.{ |
| | 101771 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 101772 | }, |
| | 101773 | .extra_temps = .{ |
| | 101774 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 101775 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| | 101776 | .unused, |
| | 101777 | .unused, |
| | 101778 | .unused, |
| | 101779 | .unused, |
| | 101780 | .unused, |
| | 101781 | .unused, |
| | 101782 | .unused, |
| | 101783 | .unused, |
| | 101784 | .unused, |
| | 101785 | }, |
| | 101786 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 101787 | .each = .{ .once = &.{ |
| | 101788 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 101789 | .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| | 101790 | } }, |
| | 101791 | }, .{ |
| | 101792 | .required_features = .{ .sse, null, null, null }, |
| | 101793 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| | 101794 | .patterns = &.{ |
| | 101795 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 101796 | }, |
| | 101797 | .extra_temps = .{ |
| | 101798 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 101799 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| | 101800 | .unused, |
| | 101801 | .unused, |
| | 101802 | .unused, |
| | 101803 | .unused, |
| | 101804 | .unused, |
| | 101805 | .unused, |
| | 101806 | .unused, |
| | 101807 | .unused, |
| | 101808 | .unused, |
| | 101809 | }, |
| | 101810 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 101811 | .each = .{ .once = &.{ |
| | 101812 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 101813 | .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| | 101814 | } }, |
| | 101815 | }, .{ |
| | 101816 | .required_features = .{ .avx2, null, null, null }, |
| | 101817 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any }, |
| | 101818 | .patterns = &.{ |
| | 101819 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 101820 | }, |
| | 101821 | .extra_temps = .{ |
| | 101822 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 101823 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 101824 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| | 101825 | .unused, |
| | 101826 | .unused, |
| | 101827 | .unused, |
| | 101828 | .unused, |
| | 101829 | .unused, |
| | 101830 | .unused, |
| | 101831 | .unused, |
| | 101832 | .unused, |
| | 101833 | }, |
| | 101834 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| | 101835 | .each = .{ .once = &.{ |
| | 101836 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 101837 | .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| | 101838 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, |
| | 101839 | .{ ._, .vp_b, .add, .dst0y, .dst0y, .lea(.tmp0y), ._ }, |
| | 101840 | .{ ._, .vp_, .xor, .dst0y, .dst0y, .lea(.tmp0y), ._ }, |
| | 101841 | } }, |
| | 101842 | }, .{ |
| | 101843 | .required_features = .{ .avx2, null, null, null }, |
| | 101844 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any }, |
| | 101845 | .patterns = &.{ |
| | 101846 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 101847 | }, |
| | 101848 | .extra_temps = .{ |
| | 101849 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 101850 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| | 101851 | .unused, |
| | 101852 | .unused, |
| | 101853 | .unused, |
| | 101854 | .unused, |
| | 101855 | .unused, |
| | 101856 | .unused, |
| | 101857 | .unused, |
| | 101858 | .unused, |
| | 101859 | .unused, |
| | 101860 | }, |
| | 101861 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| | 101862 | .each = .{ .once = &.{ |
| | 101863 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 101864 | .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| | 101865 | } }, |
| | 101866 | }, .{ |
| | 101867 | .src_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any, .any }, |
| | 101868 | .patterns = &.{ |
| | 101869 | .{ .src = .{ .to_mut_mem, .none, .none } }, |
| | 101870 | }, |
| | 101871 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 101872 | .each = .{ .once = &.{} }, |
| | 101873 | }, .{ |
| | 101874 | .required_features = .{ .avx2, null, null, null }, |
| | 101875 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any }, |
| | 101876 | .patterns = &.{ |
| | 101877 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 101878 | }, |
| | 101879 | .extra_temps = .{ |
| | 101880 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 101881 | .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } }, |
| | 101882 | .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } }, |
| | 101883 | .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } }, |
| | 101884 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 101885 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| | 101886 | .unused, |
| | 101887 | .unused, |
| | 101888 | .unused, |
| | 101889 | .unused, |
| | 101890 | .unused, |
| | 101891 | }, |
| | 101892 | .dst_temps = .{ .mem, .unused }, |
| | 101893 | .clobbers = .{ .eflags = true }, |
| | 101894 | .each = .{ .once = &.{ |
| | 101895 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, |
| | 101896 | .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ }, |
| | 101897 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ }, |
| | 101898 | .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ }, |
| | 101899 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 101900 | .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ }, |
| | 101901 | .{ ._, .vp_b, .add, .tmp3y, .tmp3y, .tmp2y, ._ }, |
| | 101902 | .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp2y, ._ }, |
| | 101903 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp3y, ._, ._ }, |
| | 101904 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 101905 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 101906 | } }, |
| | 101907 | }, .{ |
| | 101908 | .required_features = .{ .avx2, null, null, null }, |
| | 101909 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any }, |
| | 101910 | .patterns = &.{ |
| | 101911 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 101912 | }, |
| | 101913 | .extra_temps = .{ |
| | 101914 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 101915 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, |
| | 101916 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, |
| | 101917 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 101918 | .unused, |
| | 101919 | .unused, |
| | 101920 | .unused, |
| | 101921 | .unused, |
| | 101922 | .unused, |
| | 101923 | .unused, |
| | 101924 | .unused, |
| | 101925 | }, |
| | 101926 | .dst_temps = .{ .mem, .unused }, |
| | 101927 | .clobbers = .{ .eflags = true }, |
| | 101928 | .each = .{ .once = &.{ |
| | 101929 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| | 101930 | .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ }, |
| | 101931 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 101932 | .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ }, |
| | 101933 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ }, |
| | 101934 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 101935 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 101936 | } }, |
| | 101937 | }, .{ |
| | 101938 | .required_features = .{ .avx, null, null, null }, |
| | 101939 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| | 101940 | .patterns = &.{ |
| | 101941 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 101942 | }, |
| | 101943 | .extra_temps = .{ |
| | 101944 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 101945 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| | 101946 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| | 101947 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| | 101948 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 101949 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| | 101950 | .unused, |
| | 101951 | .unused, |
| | 101952 | .unused, |
| | 101953 | .unused, |
| | 101954 | .unused, |
| | 101955 | }, |
| | 101956 | .dst_temps = .{ .mem, .unused }, |
| | 101957 | .clobbers = .{ .eflags = true }, |
| | 101958 | .each = .{ .once = &.{ |
| | 101959 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, |
| | 101960 | .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| | 101961 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ }, |
| | 101962 | .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, |
| | 101963 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 101964 | .{ .@"0:", .vp_, .@"and", .tmp3x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ }, |
| | 101965 | .{ ._, .vp_b, .add, .tmp3x, .tmp3x, .tmp2x, ._ }, |
| | 101966 | .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp2x, ._ }, |
| | 101967 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, |
| | 101968 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 101969 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 101970 | } }, |
| | 101971 | }, .{ |
| | 101972 | .required_features = .{ .avx, null, null, null }, |
| | 101973 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| | 101974 | .patterns = &.{ |
| | 101975 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 101976 | }, |
| | 101977 | .extra_temps = .{ |
| | 101978 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 101979 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 101980 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 101981 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 101982 | .unused, |
| | 101983 | .unused, |
| | 101984 | .unused, |
| | 101985 | .unused, |
| | 101986 | .unused, |
| | 101987 | .unused, |
| | 101988 | .unused, |
| | 101989 | }, |
| | 101990 | .dst_temps = .{ .mem, .unused }, |
| | 101991 | .clobbers = .{ .eflags = true }, |
| | 101992 | .each = .{ .once = &.{ |
| | 101993 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| | 101994 | .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| | 101995 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 101996 | .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ }, |
| | 101997 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| | 101998 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 101999 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 102000 | } }, |
| | 102001 | }, .{ |
| | 102002 | .required_features = .{ .sse2, null, null, null }, |
| | 102003 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| | 102004 | .patterns = &.{ |
| | 102005 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 102006 | }, |
| | 102007 | .extra_temps = .{ |
| | 102008 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 102009 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| | 102010 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| | 102011 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| | 102012 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 102013 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| | 102014 | .unused, |
| | 102015 | .unused, |
| | 102016 | .unused, |
| | 102017 | .unused, |
| | 102018 | .unused, |
| | 102019 | }, |
| | 102020 | .dst_temps = .{ .mem, .unused }, |
| | 102021 | .clobbers = .{ .eflags = true }, |
| | 102022 | .each = .{ .once = &.{ |
| | 102023 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, |
| | 102024 | .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| | 102025 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ }, |
| | 102026 | .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, |
| | 102027 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 102028 | .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp1x, ._, ._ }, |
| | 102029 | .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 102030 | .{ ._, .p_b, .add, .tmp3x, .tmp2x, ._, ._ }, |
| | 102031 | .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ }, |
| | 102032 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, |
| | 102033 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 102034 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 102035 | } }, |
| | 102036 | }, .{ |
| | 102037 | .required_features = .{ .sse2, null, null, null }, |
| | 102038 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| | 102039 | .patterns = &.{ |
| | 102040 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 102041 | }, |
| | 102042 | .extra_temps = .{ |
| | 102043 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 102044 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 102045 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 102046 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 102047 | .unused, |
| | 102048 | .unused, |
| | 102049 | .unused, |
| | 102050 | .unused, |
| | 102051 | .unused, |
| | 102052 | .unused, |
| | 102053 | .unused, |
| | 102054 | }, |
| | 102055 | .dst_temps = .{ .mem, .unused }, |
| | 102056 | .clobbers = .{ .eflags = true }, |
| | 102057 | .each = .{ .once = &.{ |
| | 102058 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| | 102059 | .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| | 102060 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 102061 | .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, |
| | 102062 | .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 102063 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| | 102064 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 102065 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 102066 | } }, |
| | 102067 | }, .{ |
| | 102068 | .required_features = .{ .sse, null, null, null }, |
| | 102069 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| | 102070 | .patterns = &.{ |
| | 102071 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 102072 | }, |
| | 102073 | .extra_temps = .{ |
| | 102074 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 102075 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 102076 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 102077 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 102078 | .unused, |
| | 102079 | .unused, |
| | 102080 | .unused, |
| | 102081 | .unused, |
| | 102082 | .unused, |
| | 102083 | .unused, |
| | 102084 | .unused, |
| | 102085 | }, |
| | 102086 | .dst_temps = .{ .mem, .unused }, |
| | 102087 | .clobbers = .{ .eflags = true }, |
| | 102088 | .each = .{ .once = &.{ |
| | 102089 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| | 102090 | .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| | 102091 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 102092 | .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ }, |
| | 102093 | .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 102094 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| | 102095 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 102096 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 102097 | } }, |
| | 102098 | }, .{ |
| | 102099 | .required_features = .{ .slow_incdec, null, null, null }, |
| | 102100 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 102101 | .patterns = &.{ |
| | 102102 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 102103 | }, |
| | 102104 | .extra_temps = .{ |
| | 102105 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 102106 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| | 102107 | .unused, |
| | 102108 | .unused, |
| | 102109 | .unused, |
| | 102110 | .unused, |
| | 102111 | .unused, |
| | 102112 | .unused, |
| | 102113 | .unused, |
| | 102114 | .unused, |
| | 102115 | .unused, |
| | 102116 | }, |
| | 102117 | .dst_temps = .{ .mem, .unused }, |
| | 102118 | .clobbers = .{ .eflags = true }, |
| | 102119 | .each = .{ .once = &.{ |
| | 102120 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 102121 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 102122 | .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| | 102123 | .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| | 102124 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| | 102125 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| | 102126 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 102127 | } }, |
| | 102128 | }, .{ |
| | 102129 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 102130 | .patterns = &.{ |
| | 102131 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 102132 | }, |
| | 102133 | .extra_temps = .{ |
| | 102134 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 102135 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| | 102136 | .unused, |
| | 102137 | .unused, |
| | 102138 | .unused, |
| | 102139 | .unused, |
| | 102140 | .unused, |
| | 102141 | .unused, |
| | 102142 | .unused, |
| | 102143 | .unused, |
| | 102144 | .unused, |
| | 102145 | }, |
| | 102146 | .dst_temps = .{ .mem, .unused }, |
| | 102147 | .clobbers = .{ .eflags = true }, |
| | 102148 | .each = .{ .once = &.{ |
| | 102149 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 102150 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 102151 | .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| | 102152 | .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| | 102153 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| | 102154 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 102155 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 102156 | } }, |
| | 102157 | }, .{ |
| | 102158 | .required_features = .{ .slow_incdec, null, null, null }, |
| | 102159 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 102160 | .patterns = &.{ |
| | 102161 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 102162 | }, |
| | 102163 | .extra_temps = .{ |
| | 102164 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 102165 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 102166 | .unused, |
| | 102167 | .unused, |
| | 102168 | .unused, |
| | 102169 | .unused, |
| | 102170 | .unused, |
| | 102171 | .unused, |
| | 102172 | .unused, |
| | 102173 | .unused, |
| | 102174 | .unused, |
| | 102175 | }, |
| | 102176 | .dst_temps = .{ .mem, .unused }, |
| | 102177 | .clobbers = .{ .eflags = true }, |
| | 102178 | .each = .{ .once = &.{ |
| | 102179 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 102180 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 102181 | .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ }, |
| | 102182 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| | 102183 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| | 102184 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 102185 | } }, |
| | 102186 | }, .{ |
| | 102187 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| | 102188 | .patterns = &.{ |
| | 102189 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 102190 | }, |
| | 102191 | .extra_temps = .{ |
| | 102192 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 102193 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 102194 | .unused, |
| | 102195 | .unused, |
| | 102196 | .unused, |
| | 102197 | .unused, |
| | 102198 | .unused, |
| | 102199 | .unused, |
| | 102200 | .unused, |
| | 102201 | .unused, |
| | 102202 | .unused, |
| | 102203 | }, |
| | 102204 | .dst_temps = .{ .mem, .unused }, |
| | 102205 | .clobbers = .{ .eflags = true }, |
| | 102206 | .each = .{ .once = &.{ |
| | 102207 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 102208 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 102209 | .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ }, |
| | 102210 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| | 102211 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 102212 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 102213 | } }, |
| | 102214 | }, .{ |
| | 102215 | .required_features = .{ .sse, null, null, null }, |
| | 102216 | .src_constraints = .{ .{ .scalar_exact_int = .{ .of = .xword, .is = 16 } }, .any, .any }, |
| | 102217 | .patterns = &.{ |
| | 102218 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 102219 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 102220 | }, |
| | 102221 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 102222 | .each = .{ .once = &.{} }, |
| | 102223 | }, .{ |
| | 102224 | .required_features = .{ .avx, null, null, null }, |
| | 102225 | .src_constraints = .{ .{ .scalar_exact_int = .{ .of = .yword, .is = 16 } }, .any, .any }, |
| | 102226 | .patterns = &.{ |
| | 102227 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 102228 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 102229 | }, |
| | 102230 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 102231 | .each = .{ .once = &.{} }, |
| | 102232 | }, .{ |
| | 102233 | .required_features = .{ .avx, null, null, null }, |
| | 102234 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 102235 | .patterns = &.{ |
| | 102236 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 102237 | }, |
| | 102238 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| | 102239 | .each = .{ .once = &.{ |
| | 102240 | .{ ._, .vp_w, .sll, .dst0x, .src0x, .uia(16, .dst0, .sub_bit_size), ._ }, |
| | 102241 | .{ ._, .vp_w, .sra, .dst0x, .dst0x, .uia(16, .dst0, .sub_bit_size), ._ }, |
| | 102242 | } }, |
| | 102243 | }, .{ |
| | 102244 | .required_features = .{ .avx, null, null, null }, |
| | 102245 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 102246 | .patterns = &.{ |
| | 102247 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 102248 | }, |
| | 102249 | .extra_temps = .{ |
| | 102250 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 102251 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| | 102252 | .unused, |
| | 102253 | .unused, |
| | 102254 | .unused, |
| | 102255 | .unused, |
| | 102256 | .unused, |
| | 102257 | .unused, |
| | 102258 | .unused, |
| | 102259 | .unused, |
| | 102260 | .unused, |
| | 102261 | }, |
| | 102262 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| | 102263 | .each = .{ .once = &.{ |
| | 102264 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 102265 | .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| | 102266 | } }, |
| | 102267 | }, .{ |
| | 102268 | .required_features = .{ .sse2, null, null, null }, |
| | 102269 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 102270 | .patterns = &.{ |
| | 102271 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 102272 | }, |
| | 102273 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 102274 | .each = .{ .once = &.{ |
| | 102275 | .{ ._, .p_w, .sll, .dst0x, .uia(16, .dst0, .sub_bit_size), ._, ._ }, |
| | 102276 | .{ ._, .p_w, .sra, .dst0x, .uia(16, .dst0, .sub_bit_size), ._, ._ }, |
| | 102277 | } }, |
| | 102278 | }, .{ |
| | 102279 | .required_features = .{ .sse2, null, null, null }, |
| | 102280 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 102281 | .patterns = &.{ |
| | 102282 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 102283 | }, |
| | 102284 | .extra_temps = .{ |
| | 102285 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 102286 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| | 102287 | .unused, |
| | 102288 | .unused, |
| | 102289 | .unused, |
| | 102290 | .unused, |
| | 102291 | .unused, |
| | 102292 | .unused, |
| | 102293 | .unused, |
| | 102294 | .unused, |
| | 102295 | .unused, |
| | 102296 | }, |
| | 102297 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 102298 | .each = .{ .once = &.{ |
| | 102299 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 102300 | .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| | 102301 | } }, |
| | 102302 | }, .{ |
| | 102303 | .required_features = .{ .sse, null, null, null }, |
| | 102304 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 102305 | .patterns = &.{ |
| | 102306 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 102307 | }, |
| | 102308 | .extra_temps = .{ |
| | 102309 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 102310 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| | 102311 | .unused, |
| | 102312 | .unused, |
| | 102313 | .unused, |
| | 102314 | .unused, |
| | 102315 | .unused, |
| | 102316 | .unused, |
| | 102317 | .unused, |
| | 102318 | .unused, |
| | 102319 | .unused, |
| | 102320 | }, |
| | 102321 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 102322 | .each = .{ .once = &.{ |
| | 102323 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 102324 | .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| | 102325 | } }, |
| | 102326 | }, .{ |
| | 102327 | .required_features = .{ .avx2, null, null, null }, |
| | 102328 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any }, |
| | 102329 | .patterns = &.{ |
| | 102330 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 102331 | }, |
| | 102332 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| | 102333 | .each = .{ .once = &.{ |
| | 102334 | .{ ._, .vp_w, .sll, .dst0y, .src0y, .uia(16, .dst0, .sub_bit_size), ._ }, |
| | 102335 | .{ ._, .vp_w, .sra, .dst0y, .dst0y, .uia(16, .dst0, .sub_bit_size), ._ }, |
| | 102336 | } }, |
| | 102337 | }, .{ |
| | 102338 | .required_features = .{ .avx2, null, null, null }, |
| | 102339 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any }, |
| | 102340 | .patterns = &.{ |
| | 102341 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 102342 | }, |
| | 102343 | .extra_temps = .{ |
| | 102344 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 102345 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| | 102346 | .unused, |
| | 102347 | .unused, |
| | 102348 | .unused, |
| | 102349 | .unused, |
| | 102350 | .unused, |
| | 102351 | .unused, |
| | 102352 | .unused, |
| | 102353 | .unused, |
| | 102354 | .unused, |
| | 102355 | }, |
| | 102356 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| | 102357 | .each = .{ .once = &.{ |
| | 102358 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 102359 | .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| | 102360 | } }, |
| | 102361 | }, .{ |
| | 102362 | .src_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }, .any, .any }, |
| | 102363 | .patterns = &.{ |
| | 102364 | .{ .src = .{ .to_mut_mem, .none, .none } }, |
| | 102365 | }, |
| | 102366 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 102367 | .each = .{ .once = &.{} }, |
| | 102368 | }, .{ |
| | 102369 | .required_features = .{ .avx2, null, null, null }, |
| | 102370 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any }, |
| | 102371 | .patterns = &.{ |
| | 102372 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 102373 | }, |
| | 102374 | .extra_temps = .{ |
| | 102375 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 102376 | .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } }, |
| | 102377 | .unused, |
| | 102378 | .unused, |
| | 102379 | .unused, |
| | 102380 | .unused, |
| | 102381 | .unused, |
| | 102382 | .unused, |
| | 102383 | .unused, |
| | 102384 | .unused, |
| | 102385 | .unused, |
| | 102386 | }, |
| | 102387 | .dst_temps = .{ .mem, .unused }, |
| | 102388 | .clobbers = .{ .eflags = true }, |
| | 102389 | .each = .{ .once = &.{ |
| | 102390 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 102391 | .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 102392 | .{ ._, .vp_w, .sll, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ }, |
| | 102393 | .{ ._, .vp_w, .sra, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ }, |
| | 102394 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 102395 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 102396 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 102397 | } }, |
| | 102398 | }, .{ |
| | 102399 | .required_features = .{ .avx2, null, null, null }, |
| | 102400 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any }, |
| | 102401 | .patterns = &.{ |
| | 102402 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 102403 | }, |
| | 102404 | .extra_temps = .{ |
| | 102405 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 102406 | .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } }, |
| | 102407 | .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } }, |
| | 102408 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 102409 | .unused, |
| | 102410 | .unused, |
| | 102411 | .unused, |
| | 102412 | .unused, |
| | 102413 | .unused, |
| | 102414 | .unused, |
| | 102415 | .unused, |
| | 102416 | }, |
| | 102417 | .dst_temps = .{ .mem, .unused }, |
| | 102418 | .clobbers = .{ .eflags = true }, |
| | 102419 | .each = .{ .once = &.{ |
| | 102420 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| | 102421 | .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ }, |
| | 102422 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 102423 | .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ }, |
| | 102424 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ }, |
| | 102425 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 102426 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 102427 | } }, |
| | 102428 | }, .{ |
| | 102429 | .required_features = .{ .avx, null, null, null }, |
| | 102430 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 102431 | .patterns = &.{ |
| | 102432 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 102433 | }, |
| | 102434 | .extra_temps = .{ |
| | 102435 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 102436 | .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, |
| | 102437 | .unused, |
| | 102438 | .unused, |
| | 102439 | .unused, |
| | 102440 | .unused, |
| | 102441 | .unused, |
| | 102442 | .unused, |
| | 102443 | .unused, |
| | 102444 | .unused, |
| | 102445 | .unused, |
| | 102446 | }, |
| | 102447 | .dst_temps = .{ .mem, .unused }, |
| | 102448 | .clobbers = .{ .eflags = true }, |
| | 102449 | .each = .{ .once = &.{ |
| | 102450 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 102451 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 102452 | .{ ._, .vp_w, .sll, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ }, |
| | 102453 | .{ ._, .vp_w, .sra, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ }, |
| | 102454 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 102455 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 102456 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 102457 | } }, |
| | 102458 | }, .{ |
| | 102459 | .required_features = .{ .avx, null, null, null }, |
| | 102460 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 102461 | .patterns = &.{ |
| | 102462 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 102463 | }, |
| | 102464 | .extra_temps = .{ |
| | 102465 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 102466 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| | 102467 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| | 102468 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 102469 | .unused, |
| | 102470 | .unused, |
| | 102471 | .unused, |
| | 102472 | .unused, |
| | 102473 | .unused, |
| | 102474 | .unused, |
| | 102475 | .unused, |
| | 102476 | }, |
| | 102477 | .dst_temps = .{ .mem, .unused }, |
| | 102478 | .clobbers = .{ .eflags = true }, |
| | 102479 | .each = .{ .once = &.{ |
| | 102480 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| | 102481 | .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| | 102482 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 102483 | .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ }, |
| | 102484 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| | 102485 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 102486 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 102487 | } }, |
| | 102488 | }, .{ |
| | 102489 | .required_features = .{ .sse2, null, null, null }, |
| | 102490 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 102491 | .patterns = &.{ |
| | 102492 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 102493 | }, |
| | 102494 | .extra_temps = .{ |
| | 102495 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 102496 | .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, |
| | 102497 | .unused, |
| | 102498 | .unused, |
| | 102499 | .unused, |
| | 102500 | .unused, |
| | 102501 | .unused, |
| | 102502 | .unused, |
| | 102503 | .unused, |
| | 102504 | .unused, |
| | 102505 | .unused, |
| | 102506 | }, |
| | 102507 | .dst_temps = .{ .mem, .unused }, |
| | 102508 | .clobbers = .{ .eflags = true }, |
| | 102509 | .each = .{ .once = &.{ |
| | 102510 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 102511 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 102512 | .{ ._, .p_w, .sll, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ }, |
| | 102513 | .{ ._, .p_w, .sra, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ }, |
| | 102514 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 102515 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 102516 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 102517 | } }, |
| | 102518 | }, .{ |
| | 102519 | .required_features = .{ .sse2, null, null, null }, |
| | 102520 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 102521 | .patterns = &.{ |
| | 102522 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 102523 | }, |
| | 102524 | .extra_temps = .{ |
| | 102525 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 102526 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| | 102527 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| | 102528 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 102529 | .unused, |
| | 102530 | .unused, |
| | 102531 | .unused, |
| | 102532 | .unused, |
| | 102533 | .unused, |
| | 102534 | .unused, |
| | 102535 | .unused, |
| | 102536 | }, |
| | 102537 | .dst_temps = .{ .mem, .unused }, |
| | 102538 | .clobbers = .{ .eflags = true }, |
| | 102539 | .each = .{ .once = &.{ |
| | 102540 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| | 102541 | .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| | 102542 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 102543 | .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, |
| | 102544 | .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 102545 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| | 102546 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 102547 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 102548 | } }, |
| | 102549 | }, .{ |
| | 102550 | .required_features = .{ .sse, null, null, null }, |
| | 102551 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| | 102552 | .patterns = &.{ |
| | 102553 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 102554 | }, |
| | 102555 | .extra_temps = .{ |
| | 102556 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 102557 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| | 102558 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| | 102559 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 102560 | .unused, |
| | 102561 | .unused, |
| | 102562 | .unused, |
| | 102563 | .unused, |
| | 102564 | .unused, |
| | 102565 | .unused, |
| | 102566 | .unused, |
| | 102567 | }, |
| | 102568 | .dst_temps = .{ .mem, .unused }, |
| | 102569 | .clobbers = .{ .eflags = true }, |
| | 102570 | .each = .{ .once = &.{ |
| | 102571 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| | 102572 | .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| | 102573 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 102574 | .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ }, |
| | 102575 | .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 102576 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| | 102577 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 102578 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 102579 | } }, |
| | 102580 | }, .{ |
| | 102581 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 102582 | .patterns = &.{ |
| | 102583 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 102584 | }, |
| | 102585 | .extra_temps = .{ |
| | 102586 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 102587 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| | 102588 | .unused, |
| | 102589 | .unused, |
| | 102590 | .unused, |
| | 102591 | .unused, |
| | 102592 | .unused, |
| | 102593 | .unused, |
| | 102594 | .unused, |
| | 102595 | .unused, |
| | 102596 | .unused, |
| | 102597 | }, |
| | 102598 | .dst_temps = .{ .mem, .unused }, |
| | 102599 | .clobbers = .{ .eflags = true }, |
| | 102600 | .each = .{ .once = &.{ |
| | 102601 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 102602 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 102603 | .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| | 102604 | .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| | 102605 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 102606 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 102607 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 102608 | } }, |
| | 102609 | }, .{ |
| | 102610 | .required_features = .{ .fast_imm16, null, null, null }, |
| | 102611 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 102612 | .patterns = &.{ |
| | 102613 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 102614 | }, |
| | 102615 | .extra_temps = .{ |
| | 102616 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 102617 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| | 102618 | .unused, |
| | 102619 | .unused, |
| | 102620 | .unused, |
| | 102621 | .unused, |
| | 102622 | .unused, |
| | 102623 | .unused, |
| | 102624 | .unused, |
| | 102625 | .unused, |
| | 102626 | .unused, |
| | 102627 | }, |
| | 102628 | .dst_temps = .{ .mem, .unused }, |
| | 102629 | .clobbers = .{ .eflags = true }, |
| | 102630 | .each = .{ .once = &.{ |
| | 102631 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 102632 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 102633 | .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ }, |
| | 102634 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 102635 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 102636 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 102637 | } }, |
| | 102638 | }, .{ |
| | 102639 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| | 102640 | .patterns = &.{ |
| | 102641 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 102642 | }, |
| | 102643 | .extra_temps = .{ |
| | 102644 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 102645 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| | 102646 | .unused, |
| | 102647 | .unused, |
| | 102648 | .unused, |
| | 102649 | .unused, |
| | 102650 | .unused, |
| | 102651 | .unused, |
| | 102652 | .unused, |
| | 102653 | .unused, |
| | 102654 | .unused, |
| | 102655 | }, |
| | 102656 | .dst_temps = .{ .mem, .unused }, |
| | 102657 | .clobbers = .{ .eflags = true }, |
| | 102658 | .each = .{ .once = &.{ |
| | 102659 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 102660 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 102661 | .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ }, |
| | 102662 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| | 102663 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 102664 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 102665 | } }, |
| | 102666 | }, .{ |
| | 102667 | .required_features = .{ .sse, null, null, null }, |
| | 102668 | .src_constraints = .{ .{ .scalar_exact_int = .{ .of = .xword, .is = 32 } }, .any, .any }, |
| | 102669 | .patterns = &.{ |
| | 102670 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 102671 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 102672 | }, |
| | 102673 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 102674 | .each = .{ .once = &.{} }, |
| | 102675 | }, .{ |
| | 102676 | .required_features = .{ .avx, null, null, null }, |
| | 102677 | .src_constraints = .{ .{ .scalar_exact_int = .{ .of = .yword, .is = 32 } }, .any, .any }, |
| | 102678 | .patterns = &.{ |
| | 102679 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 102680 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 102681 | }, |
| | 102682 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 102683 | .each = .{ .once = &.{} }, |
| | 102684 | }, .{ |
| | 102685 | .required_features = .{ .avx, null, null, null }, |
| | 102686 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 102687 | .patterns = &.{ |
| | 102688 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 102689 | }, |
| | 102690 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| | 102691 | .each = .{ .once = &.{ |
| | 102692 | .{ ._, .vp_d, .sll, .dst0x, .src0x, .uia(32, .dst0, .sub_bit_size), ._ }, |
| | 102693 | .{ ._, .vp_d, .sra, .dst0x, .dst0x, .uia(32, .dst0, .sub_bit_size), ._ }, |
| | 102694 | } }, |
| | 102695 | }, .{ |
| | 102696 | .required_features = .{ .avx, null, null, null }, |
| | 102697 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 102698 | .patterns = &.{ |
| | 102699 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 102700 | }, |
| | 102701 | .extra_temps = .{ |
| | 102702 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 102703 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| | 102704 | .unused, |
| | 102705 | .unused, |
| | 102706 | .unused, |
| | 102707 | .unused, |
| | 102708 | .unused, |
| | 102709 | .unused, |
| | 102710 | .unused, |
| | 102711 | .unused, |
| | 102712 | .unused, |
| | 102713 | }, |
| | 102714 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| | 102715 | .each = .{ .once = &.{ |
| | 102716 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 102717 | .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| | 102718 | } }, |
| | 102719 | }, .{ |
| | 102720 | .required_features = .{ .sse2, null, null, null }, |
| | 102721 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 102722 | .patterns = &.{ |
| | 102723 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 102724 | }, |
| | 102725 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 102726 | .each = .{ .once = &.{ |
| | 102727 | .{ ._, .p_d, .sll, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| | 102728 | .{ ._, .p_d, .sra, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| | 102729 | } }, |
| | 102730 | }, .{ |
| | 102731 | .required_features = .{ .sse2, null, null, null }, |
| | 102732 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 102733 | .patterns = &.{ |
| | 102734 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 102735 | }, |
| | 102736 | .extra_temps = .{ |
| | 102737 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 102738 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| | 102739 | .unused, |
| | 102740 | .unused, |
| | 102741 | .unused, |
| | 102742 | .unused, |
| | 102743 | .unused, |
| | 102744 | .unused, |
| | 102745 | .unused, |
| | 102746 | .unused, |
| | 102747 | .unused, |
| | 102748 | }, |
| | 102749 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 102750 | .each = .{ .once = &.{ |
| | 102751 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 102752 | .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| | 102753 | } }, |
| | 102754 | }, .{ |
| | 102755 | .required_features = .{ .sse, null, null, null }, |
| | 102756 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 102757 | .patterns = &.{ |
| | 102758 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 102759 | }, |
| | 102760 | .extra_temps = .{ |
| | 102761 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 102762 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| | 102763 | .unused, |
| | 102764 | .unused, |
| | 102765 | .unused, |
| | 102766 | .unused, |
| | 102767 | .unused, |
| | 102768 | .unused, |
| | 102769 | .unused, |
| | 102770 | .unused, |
| | 102771 | .unused, |
| | 102772 | }, |
| | 102773 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 102774 | .each = .{ .once = &.{ |
| | 102775 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 102776 | .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| | 102777 | } }, |
| | 102778 | }, .{ |
| | 102779 | .required_features = .{ .avx2, null, null, null }, |
| | 102780 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| | 102781 | .patterns = &.{ |
| | 102782 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 102783 | }, |
| | 102784 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| | 102785 | .each = .{ .once = &.{ |
| | 102786 | .{ ._, .vp_d, .sll, .dst0y, .src0y, .uia(32, .dst0, .sub_bit_size), ._ }, |
| | 102787 | .{ ._, .vp_d, .sra, .dst0y, .dst0y, .uia(32, .dst0, .sub_bit_size), ._ }, |
| | 102788 | } }, |
| | 102789 | }, .{ |
| | 102790 | .required_features = .{ .avx2, null, null, null }, |
| | 102791 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| | 102792 | .patterns = &.{ |
| | 102793 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 102794 | }, |
| | 102795 | .extra_temps = .{ |
| | 102796 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 102797 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| | 102798 | .unused, |
| | 102799 | .unused, |
| | 102800 | .unused, |
| | 102801 | .unused, |
| | 102802 | .unused, |
| | 102803 | .unused, |
| | 102804 | .unused, |
| | 102805 | .unused, |
| | 102806 | .unused, |
| | 102807 | }, |
| | 102808 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| | 102809 | .each = .{ .once = &.{ |
| | 102810 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 102811 | .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| | 102812 | } }, |
| | 102813 | }, .{ |
| | 102814 | .required_features = .{ .avx2, null, null, null }, |
| | 102815 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| | 102816 | .patterns = &.{ |
| | 102817 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 102818 | }, |
| | 102819 | .extra_temps = .{ |
| | 102820 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 102821 | .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, |
| | 102822 | .unused, |
| | 102823 | .unused, |
| | 102824 | .unused, |
| | 102825 | .unused, |
| | 102826 | .unused, |
| | 102827 | .unused, |
| | 102828 | .unused, |
| | 102829 | .unused, |
| | 102830 | .unused, |
| | 102831 | }, |
| | 102832 | .dst_temps = .{ .mem, .unused }, |
| | 102833 | .clobbers = .{ .eflags = true }, |
| | 102834 | .each = .{ .once = &.{ |
| | 102835 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 102836 | .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 102837 | .{ ._, .vp_d, .sll, .tmp1y, .tmp1y, .uia(32, .dst0, .sub_bit_size), ._ }, |
| | 102838 | .{ ._, .vp_d, .sra, .tmp1y, .tmp1y, .uia(32, .dst0, .sub_bit_size), ._ }, |
| | 102839 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| | 102840 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 102841 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 102842 | } }, |
| | 102843 | }, .{ |
| | 102844 | .required_features = .{ .avx2, null, null, null }, |
| | 102845 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| | 102846 | .patterns = &.{ |
| | 102847 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 102848 | }, |
| | 102849 | .extra_temps = .{ |
| | 102850 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 102851 | .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } }, |
| | 102852 | .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } }, |
| | 102853 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 102854 | .unused, |
| | 102855 | .unused, |
| | 102856 | .unused, |
| | 102857 | .unused, |
| | 102858 | .unused, |
| | 102859 | .unused, |
| | 102860 | .unused, |
| | 102861 | }, |
| | 102862 | .dst_temps = .{ .mem, .unused }, |
| | 102863 | .clobbers = .{ .eflags = true }, |
| | 102864 | .each = .{ .once = &.{ |
| | 102865 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| | 102866 | .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ }, |
| | 102867 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 102868 | .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ }, |
| | 102869 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ }, |
| | 102870 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 102871 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 102872 | } }, |
| | 102873 | }, .{ |
| | 102874 | .required_features = .{ .avx, null, null, null }, |
| | 102875 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 102876 | .patterns = &.{ |
| | 102877 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 102878 | }, |
| | 102879 | .extra_temps = .{ |
| | 102880 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 102881 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, |
| | 102882 | .unused, |
| | 102883 | .unused, |
| | 102884 | .unused, |
| | 102885 | .unused, |
| | 102886 | .unused, |
| | 102887 | .unused, |
| | 102888 | .unused, |
| | 102889 | .unused, |
| | 102890 | .unused, |
| | 102891 | }, |
| | 102892 | .dst_temps = .{ .mem, .unused }, |
| | 102893 | .clobbers = .{ .eflags = true }, |
| | 102894 | .each = .{ .once = &.{ |
| | 102895 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 102896 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 102897 | .{ ._, .vp_d, .sll, .tmp1x, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._ }, |
| | 102898 | .{ ._, .vp_d, .sra, .tmp1x, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._ }, |
| | 102899 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 102900 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 102901 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 102902 | } }, |
| | 102903 | }, .{ |
| | 102904 | .required_features = .{ .avx, null, null, null }, |
| | 102905 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 102906 | .patterns = &.{ |
| | 102907 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 102908 | }, |
| | 102909 | .extra_temps = .{ |
| | 102910 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 102911 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| | 102912 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| | 102913 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 102914 | .unused, |
| | 102915 | .unused, |
| | 102916 | .unused, |
| | 102917 | .unused, |
| | 102918 | .unused, |
| | 102919 | .unused, |
| | 102920 | .unused, |
| | 102921 | }, |
| | 102922 | .dst_temps = .{ .mem, .unused }, |
| | 102923 | .clobbers = .{ .eflags = true }, |
| | 102924 | .each = .{ .once = &.{ |
| | 102925 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| | 102926 | .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| | 102927 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 102928 | .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ }, |
| | 102929 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| | 102930 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 102931 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 102932 | } }, |
| | 102933 | }, .{ |
| | 102934 | .required_features = .{ .sse2, null, null, null }, |
| | 102935 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 102936 | .patterns = &.{ |
| | 102937 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 102938 | }, |
| | 102939 | .extra_temps = .{ |
| | 102940 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 102941 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, |
| | 102942 | .unused, |
| | 102943 | .unused, |
| | 102944 | .unused, |
| | 102945 | .unused, |
| | 102946 | .unused, |
| | 102947 | .unused, |
| | 102948 | .unused, |
| | 102949 | .unused, |
| | 102950 | .unused, |
| | 102951 | }, |
| | 102952 | .dst_temps = .{ .mem, .unused }, |
| | 102953 | .clobbers = .{ .eflags = true }, |
| | 102954 | .each = .{ .once = &.{ |
| | 102955 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 102956 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 102957 | .{ ._, .p_d, .sll, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| | 102958 | .{ ._, .p_d, .sra, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| | 102959 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 102960 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 102961 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 102962 | } }, |
| | 102963 | }, .{ |
| | 102964 | .required_features = .{ .sse2, null, null, null }, |
| | 102965 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 102966 | .patterns = &.{ |
| | 102967 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 102968 | }, |
| | 102969 | .extra_temps = .{ |
| | 102970 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 102971 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| | 102972 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| | 102973 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 102974 | .unused, |
| | 102975 | .unused, |
| | 102976 | .unused, |
| | 102977 | .unused, |
| | 102978 | .unused, |
| | 102979 | .unused, |
| | 102980 | .unused, |
| | 102981 | }, |
| | 102982 | .dst_temps = .{ .mem, .unused }, |
| | 102983 | .clobbers = .{ .eflags = true }, |
| | 102984 | .each = .{ .once = &.{ |
| | 102985 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| | 102986 | .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| | 102987 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 102988 | .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, |
| | 102989 | .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 102990 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| | 102991 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 102992 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 102993 | } }, |
| | 102994 | }, .{ |
| | 102995 | .required_features = .{ .sse, null, null, null }, |
| | 102996 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| | 102997 | .patterns = &.{ |
| | 102998 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 102999 | }, |
| | 103000 | .extra_temps = .{ |
| | 103001 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 103002 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| | 103003 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| | 103004 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 103005 | .unused, |
| | 103006 | .unused, |
| | 103007 | .unused, |
| | 103008 | .unused, |
| | 103009 | .unused, |
| | 103010 | .unused, |
| | 103011 | .unused, |
| | 103012 | }, |
| | 103013 | .dst_temps = .{ .mem, .unused }, |
| | 103014 | .clobbers = .{ .eflags = true }, |
| | 103015 | .each = .{ .once = &.{ |
| | 103016 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| | 103017 | .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| | 103018 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 103019 | .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ }, |
| | 103020 | .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 103021 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| | 103022 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 103023 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 103024 | } }, |
| | 103025 | }, .{ |
| | 103026 | .src_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }, .any, .any }, |
| | 103027 | .patterns = &.{ |
| | 103028 | .{ .src = .{ .to_mut_mem, .none, .none } }, |
| | 103029 | }, |
| | 103030 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 103031 | .each = .{ .once = &.{} }, |
| | 103032 | }, .{ |
| | 103033 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 103034 | .patterns = &.{ |
| | 103035 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 103036 | }, |
| | 103037 | .extra_temps = .{ |
| | 103038 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 103039 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| | 103040 | .unused, |
| | 103041 | .unused, |
| | 103042 | .unused, |
| | 103043 | .unused, |
| | 103044 | .unused, |
| | 103045 | .unused, |
| | 103046 | .unused, |
| | 103047 | .unused, |
| | 103048 | .unused, |
| | 103049 | }, |
| | 103050 | .dst_temps = .{ .mem, .unused }, |
| | 103051 | .clobbers = .{ .eflags = true }, |
| | 103052 | .each = .{ .once = &.{ |
| | 103053 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 103054 | .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 103055 | .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| | 103056 | .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| | 103057 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| | 103058 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 103059 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 103060 | } }, |
| | 103061 | }, .{ |
| | 103062 | .required_features = .{ .bmi2, null, null, null }, |
| | 103063 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 103064 | .patterns = &.{ |
| | 103065 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 103066 | }, |
| | 103067 | .extra_temps = .{ |
| | 103068 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 103069 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 103070 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 103071 | .unused, |
| | 103072 | .unused, |
| | 103073 | .unused, |
| | 103074 | .unused, |
| | 103075 | .unused, |
| | 103076 | .unused, |
| | 103077 | .unused, |
| | 103078 | .unused, |
| | 103079 | }, |
| | 103080 | .dst_temps = .{ .mem, .unused }, |
| | 103081 | .clobbers = .{ .eflags = true }, |
| | 103082 | .each = .{ .once = &.{ |
| | 103083 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 103084 | .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| | 103085 | .{ .@"0:", ._, .bzhi, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), .tmp1d, ._ }, |
| | 103086 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ }, |
| | 103087 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 103088 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 103089 | } }, |
| | 103090 | }, .{ |
| | 103091 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 103092 | .patterns = &.{ |
| | 103093 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 103094 | }, |
| | 103095 | .extra_temps = .{ |
| | 103096 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 103097 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 103098 | .unused, |
| | 103099 | .unused, |
| | 103100 | .unused, |
| | 103101 | .unused, |
| | 103102 | .unused, |
| | 103103 | .unused, |
| | 103104 | .unused, |
| | 103105 | .unused, |
| | 103106 | .unused, |
| | 103107 | }, |
| | 103108 | .dst_temps = .{ .mem, .unused }, |
| | 103109 | .clobbers = .{ .eflags = true }, |
| | 103110 | .each = .{ .once = &.{ |
| | 103111 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 103112 | .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 103113 | .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ }, |
| | 103114 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| | 103115 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 103116 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 103117 | } }, |
| | 103118 | }, .{ |
| | 103119 | .required_features = .{ .sse, null, null, null }, |
| | 103120 | .src_constraints = .{ .{ .scalar_exact_int = .{ .of = .xword, .is = 64 } }, .any, .any }, |
| | 103121 | .patterns = &.{ |
| | 103122 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 103123 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 103124 | }, |
| | 103125 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 103126 | .each = .{ .once = &.{} }, |
| | 103127 | }, .{ |
| | 103128 | .required_features = .{ .avx, null, null, null }, |
| | 103129 | .src_constraints = .{ .{ .scalar_exact_int = .{ .of = .yword, .is = 64 } }, .any, .any }, |
| | 103130 | .patterns = &.{ |
| | 103131 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 103132 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 103133 | }, |
| | 103134 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 103135 | .each = .{ .once = &.{} }, |
| | 103136 | }, .{ |
| | 103137 | .required_features = .{ .avx, null, null, null }, |
| | 103138 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 103139 | .patterns = &.{ |
| | 103140 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 103141 | }, |
| | 103142 | .extra_temps = .{ |
| | 103143 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 103144 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 103145 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| | 103146 | .unused, |
| | 103147 | .unused, |
| | 103148 | .unused, |
| | 103149 | .unused, |
| | 103150 | .unused, |
| | 103151 | .unused, |
| | 103152 | .unused, |
| | 103153 | .unused, |
| | 103154 | }, |
| | 103155 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| | 103156 | .each = .{ .once = &.{ |
| | 103157 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 103158 | .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| | 103159 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, |
| | 103160 | .{ ._, .vp_q, .add, .dst0x, .dst0x, .lea(.tmp0x), ._ }, |
| | 103161 | .{ ._, .vp_, .xor, .dst0x, .dst0x, .lea(.tmp0x), ._ }, |
| | 103162 | } }, |
| | 103163 | }, .{ |
| | 103164 | .required_features = .{ .avx, null, null, null }, |
| | 103165 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 103166 | .patterns = &.{ |
| | 103167 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 103168 | }, |
| | 103169 | .extra_temps = .{ |
| | 103170 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 103171 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| | 103172 | .unused, |
| | 103173 | .unused, |
| | 103174 | .unused, |
| | 103175 | .unused, |
| | 103176 | .unused, |
| | 103177 | .unused, |
| | 103178 | .unused, |
| | 103179 | .unused, |
| | 103180 | .unused, |
| | 103181 | }, |
| | 103182 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| | 103183 | .each = .{ .once = &.{ |
| | 103184 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 103185 | .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| | 103186 | } }, |
| | 103187 | }, .{ |
| | 103188 | .required_features = .{ .sse2, null, null, null }, |
| | 103189 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 103190 | .patterns = &.{ |
| | 103191 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 103192 | }, |
| | 103193 | .extra_temps = .{ |
| | 103194 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 103195 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 103196 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| | 103197 | .unused, |
| | 103198 | .unused, |
| | 103199 | .unused, |
| | 103200 | .unused, |
| | 103201 | .unused, |
| | 103202 | .unused, |
| | 103203 | .unused, |
| | 103204 | .unused, |
| | 103205 | }, |
| | 103206 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 103207 | .each = .{ .once = &.{ |
| | 103208 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 103209 | .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| | 103210 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, |
| | 103211 | .{ ._, .p_q, .add, .dst0x, .lea(.tmp0x), ._, ._ }, |
| | 103212 | .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ }, |
| | 103213 | } }, |
| | 103214 | }, .{ |
| | 103215 | .required_features = .{ .sse2, null, null, null }, |
| | 103216 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 103217 | .patterns = &.{ |
| | 103218 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 103219 | }, |
| | 103220 | .extra_temps = .{ |
| | 103221 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 103222 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| | 103223 | .unused, |
| | 103224 | .unused, |
| | 103225 | .unused, |
| | 103226 | .unused, |
| | 103227 | .unused, |
| | 103228 | .unused, |
| | 103229 | .unused, |
| | 103230 | .unused, |
| | 103231 | .unused, |
| | 103232 | }, |
| | 103233 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 103234 | .each = .{ .once = &.{ |
| | 103235 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 103236 | .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| | 103237 | } }, |
| | 103238 | }, .{ |
| | 103239 | .required_features = .{ .sse, null, null, null }, |
| | 103240 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 103241 | .patterns = &.{ |
| | 103242 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 103243 | }, |
| | 103244 | .extra_temps = .{ |
| | 103245 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 103246 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| | 103247 | .unused, |
| | 103248 | .unused, |
| | 103249 | .unused, |
| | 103250 | .unused, |
| | 103251 | .unused, |
| | 103252 | .unused, |
| | 103253 | .unused, |
| | 103254 | .unused, |
| | 103255 | .unused, |
| | 103256 | }, |
| | 103257 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 103258 | .each = .{ .once = &.{ |
| | 103259 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 103260 | .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| | 103261 | } }, |
| | 103262 | }, .{ |
| | 103263 | .required_features = .{ .avx2, null, null, null }, |
| | 103264 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any }, |
| | 103265 | .patterns = &.{ |
| | 103266 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 103267 | }, |
| | 103268 | .extra_temps = .{ |
| | 103269 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 103270 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 103271 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| | 103272 | .unused, |
| | 103273 | .unused, |
| | 103274 | .unused, |
| | 103275 | .unused, |
| | 103276 | .unused, |
| | 103277 | .unused, |
| | 103278 | .unused, |
| | 103279 | .unused, |
| | 103280 | }, |
| | 103281 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| | 103282 | .each = .{ .once = &.{ |
| | 103283 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 103284 | .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| | 103285 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, |
| | 103286 | .{ ._, .vp_q, .add, .dst0y, .dst0y, .lea(.tmp0y), ._ }, |
| | 103287 | .{ ._, .vp_, .xor, .dst0y, .dst0y, .lea(.tmp0y), ._ }, |
| | 103288 | } }, |
| | 103289 | }, .{ |
| | 103290 | .required_features = .{ .avx2, null, null, null }, |
| | 103291 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any }, |
| | 103292 | .patterns = &.{ |
| | 103293 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 103294 | }, |
| | 103295 | .extra_temps = .{ |
| | 103296 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 103297 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| | 103298 | .unused, |
| | 103299 | .unused, |
| | 103300 | .unused, |
| | 103301 | .unused, |
| | 103302 | .unused, |
| | 103303 | .unused, |
| | 103304 | .unused, |
| | 103305 | .unused, |
| | 103306 | .unused, |
| | 103307 | }, |
| | 103308 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| | 103309 | .each = .{ .once = &.{ |
| | 103310 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 103311 | .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| | 103312 | } }, |
| | 103313 | }, .{ |
| | 103314 | .required_features = .{ .avx2, null, null, null }, |
| | 103315 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any }, |
| | 103316 | .patterns = &.{ |
| | 103317 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 103318 | }, |
| | 103319 | .extra_temps = .{ |
| | 103320 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 103321 | .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, |
| | 103322 | .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, |
| | 103323 | .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, |
| | 103324 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 103325 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| | 103326 | .unused, |
| | 103327 | .unused, |
| | 103328 | .unused, |
| | 103329 | .unused, |
| | 103330 | .unused, |
| | 103331 | }, |
| | 103332 | .dst_temps = .{ .mem, .unused }, |
| | 103333 | .clobbers = .{ .eflags = true }, |
| | 103334 | .each = .{ .once = &.{ |
| | 103335 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, |
| | 103336 | .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ }, |
| | 103337 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ }, |
| | 103338 | .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ }, |
| | 103339 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 103340 | .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ }, |
| | 103341 | .{ ._, .vp_q, .add, .tmp3y, .tmp3y, .tmp2y, ._ }, |
| | 103342 | .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp2y, ._ }, |
| | 103343 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp3y, ._, ._ }, |
| | 103344 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 103345 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 103346 | } }, |
| | 103347 | }, .{ |
| | 103348 | .required_features = .{ .avx2, null, null, null }, |
| | 103349 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any }, |
| | 103350 | .patterns = &.{ |
| | 103351 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 103352 | }, |
| | 103353 | .extra_temps = .{ |
| | 103354 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 103355 | .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, |
| | 103356 | .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, |
| | 103357 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 103358 | .unused, |
| | 103359 | .unused, |
| | 103360 | .unused, |
| | 103361 | .unused, |
| | 103362 | .unused, |
| | 103363 | .unused, |
| | 103364 | .unused, |
| | 103365 | }, |
| | 103366 | .dst_temps = .{ .mem, .unused }, |
| | 103367 | .clobbers = .{ .eflags = true }, |
| | 103368 | .each = .{ .once = &.{ |
| | 103369 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| | 103370 | .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ }, |
| | 103371 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 103372 | .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ }, |
| | 103373 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ }, |
| | 103374 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 103375 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 103376 | } }, |
| | 103377 | }, .{ |
| | 103378 | .required_features = .{ .avx, null, null, null }, |
| | 103379 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 103380 | .patterns = &.{ |
| | 103381 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 103382 | }, |
| | 103383 | .extra_temps = .{ |
| | 103384 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 103385 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| | 103386 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| | 103387 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| | 103388 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 103389 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| | 103390 | .unused, |
| | 103391 | .unused, |
| | 103392 | .unused, |
| | 103393 | .unused, |
| | 103394 | .unused, |
| | 103395 | }, |
| | 103396 | .dst_temps = .{ .mem, .unused }, |
| | 103397 | .clobbers = .{ .eflags = true }, |
| | 103398 | .each = .{ .once = &.{ |
| | 103399 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, |
| | 103400 | .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| | 103401 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ }, |
| | 103402 | .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, |
| | 103403 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 103404 | .{ .@"0:", .vp_, .@"and", .tmp3x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ }, |
| | 103405 | .{ ._, .vp_q, .add, .tmp3x, .tmp3x, .tmp2x, ._ }, |
| | 103406 | .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp2x, ._ }, |
| | 103407 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, |
| | 103408 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 103409 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 103410 | } }, |
| | 103411 | }, .{ |
| | 103412 | .required_features = .{ .avx, null, null, null }, |
| | 103413 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 103414 | .patterns = &.{ |
| | 103415 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 103416 | }, |
| | 103417 | .extra_temps = .{ |
| | 103418 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 103419 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| | 103420 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| | 103421 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 103422 | .unused, |
| | 103423 | .unused, |
| | 103424 | .unused, |
| | 103425 | .unused, |
| | 103426 | .unused, |
| | 103427 | .unused, |
| | 103428 | .unused, |
| | 103429 | }, |
| | 103430 | .dst_temps = .{ .mem, .unused }, |
| | 103431 | .clobbers = .{ .eflags = true }, |
| | 103432 | .each = .{ .once = &.{ |
| | 103433 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| | 103434 | .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| | 103435 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 103436 | .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ }, |
| | 103437 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| | 103438 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 103439 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 103440 | } }, |
| | 103441 | }, .{ |
| | 103442 | .required_features = .{ .sse2, null, null, null }, |
| | 103443 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 103444 | .patterns = &.{ |
| | 103445 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 103446 | }, |
| | 103447 | .extra_temps = .{ |
| | 103448 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 103449 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| | 103450 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| | 103451 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| | 103452 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 103453 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| | 103454 | .unused, |
| | 103455 | .unused, |
| | 103456 | .unused, |
| | 103457 | .unused, |
| | 103458 | .unused, |
| | 103459 | }, |
| | 103460 | .dst_temps = .{ .mem, .unused }, |
| | 103461 | .clobbers = .{ .eflags = true }, |
| | 103462 | .each = .{ .once = &.{ |
| | 103463 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, |
| | 103464 | .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| | 103465 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ }, |
| | 103466 | .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, |
| | 103467 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 103468 | .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp1x, ._, ._ }, |
| | 103469 | .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 103470 | .{ ._, .p_q, .add, .tmp3x, .tmp2x, ._, ._ }, |
| | 103471 | .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ }, |
| | 103472 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, |
| | 103473 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 103474 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 103475 | } }, |
| | 103476 | }, .{ |
| | 103477 | .required_features = .{ .sse2, null, null, null }, |
| | 103478 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 103479 | .patterns = &.{ |
| | 103480 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 103481 | }, |
| | 103482 | .extra_temps = .{ |
| | 103483 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 103484 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| | 103485 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| | 103486 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 103487 | .unused, |
| | 103488 | .unused, |
| | 103489 | .unused, |
| | 103490 | .unused, |
| | 103491 | .unused, |
| | 103492 | .unused, |
| | 103493 | .unused, |
| | 103494 | }, |
| | 103495 | .dst_temps = .{ .mem, .unused }, |
| | 103496 | .clobbers = .{ .eflags = true }, |
| | 103497 | .each = .{ .once = &.{ |
| | 103498 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| | 103499 | .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| | 103500 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 103501 | .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, |
| | 103502 | .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 103503 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| | 103504 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 103505 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 103506 | } }, |
| | 103507 | }, .{ |
| | 103508 | .required_features = .{ .sse, null, null, null }, |
| | 103509 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 103510 | .patterns = &.{ |
| | 103511 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 103512 | }, |
| | 103513 | .extra_temps = .{ |
| | 103514 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 103515 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| | 103516 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| | 103517 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| | 103518 | .unused, |
| | 103519 | .unused, |
| | 103520 | .unused, |
| | 103521 | .unused, |
| | 103522 | .unused, |
| | 103523 | .unused, |
| | 103524 | .unused, |
| | 103525 | }, |
| | 103526 | .dst_temps = .{ .mem, .unused }, |
| | 103527 | .clobbers = .{ .eflags = true }, |
| | 103528 | .each = .{ .once = &.{ |
| | 103529 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| | 103530 | .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| | 103531 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 103532 | .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ }, |
| | 103533 | .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 103534 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| | 103535 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 103536 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 103537 | } }, |
| | 103538 | }, .{ |
| | 103539 | .src_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }, .any, .any }, |
| | 103540 | .patterns = &.{ |
| | 103541 | .{ .src = .{ .to_mut_mem, .none, .none } }, |
| | 103542 | }, |
| | 103543 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 103544 | .each = .{ .once = &.{} }, |
| | 103545 | }, .{ |
| | 103546 | .required_features = .{ .@"64bit", null, null, null }, |
| | 103547 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 103548 | .patterns = &.{ |
| | 103549 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 103550 | }, |
| | 103551 | .extra_temps = .{ |
| | 103552 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 103553 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| | 103554 | .unused, |
| | 103555 | .unused, |
| | 103556 | .unused, |
| | 103557 | .unused, |
| | 103558 | .unused, |
| | 103559 | .unused, |
| | 103560 | .unused, |
| | 103561 | .unused, |
| | 103562 | .unused, |
| | 103563 | }, |
| | 103564 | .dst_temps = .{ .mem, .unused }, |
| | 103565 | .clobbers = .{ .eflags = true }, |
| | 103566 | .each = .{ .once = &.{ |
| | 103567 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 103568 | .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 103569 | .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, |
| | 103570 | .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, |
| | 103571 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, |
| | 103572 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 103573 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 103574 | } }, |
| | 103575 | }, .{ |
| | 103576 | .required_features = .{ .@"64bit", .bmi2, null, null }, |
| | 103577 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 103578 | .patterns = &.{ |
| | 103579 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 103580 | }, |
| | 103581 | .extra_temps = .{ |
| | 103582 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 103583 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| | 103584 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 103585 | .unused, |
| | 103586 | .unused, |
| | 103587 | .unused, |
| | 103588 | .unused, |
| | 103589 | .unused, |
| | 103590 | .unused, |
| | 103591 | .unused, |
| | 103592 | .unused, |
| | 103593 | }, |
| | 103594 | .dst_temps = .{ .mem, .unused }, |
| | 103595 | .clobbers = .{ .eflags = true }, |
| | 103596 | .each = .{ .once = &.{ |
| | 103597 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 103598 | .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| | 103599 | .{ .@"0:", ._, .bzhi, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), .tmp1q, ._ }, |
| | 103600 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ }, |
| | 103601 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 103602 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 103603 | } }, |
| | 103604 | }, .{ |
| | 103605 | .required_features = .{ .@"64bit", null, null, null }, |
| | 103606 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 103607 | .patterns = &.{ |
| | 103608 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 103609 | }, |
| | 103610 | .extra_temps = .{ |
| | 103611 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 103612 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 103613 | .unused, |
| | 103614 | .unused, |
| | 103615 | .unused, |
| | 103616 | .unused, |
| | 103617 | .unused, |
| | 103618 | .unused, |
| | 103619 | .unused, |
| | 103620 | .unused, |
| | 103621 | .unused, |
| | 103622 | }, |
| | 103623 | .dst_temps = .{ .mem, .unused }, |
| | 103624 | .clobbers = .{ .eflags = true }, |
| | 103625 | .each = .{ .once = &.{ |
| | 103626 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 103627 | .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ }, |
| | 103628 | .{ ._, ._, .@"and", .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 103629 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, |
| | 103630 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 103631 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 103632 | } }, |
| | 103633 | }, .{ |
| | 103634 | .required_features = .{ .sse, null, null, null }, |
| | 103635 | .src_constraints = .{ .{ .scalar_exact_int = .{ .of = .xword, .is = 128 } }, .any, .any }, |
| | 103636 | .patterns = &.{ |
| | 103637 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 103638 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 103639 | }, |
| | 103640 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 103641 | .each = .{ .once = &.{} }, |
| | 103642 | }, .{ |
| | 103643 | .required_features = .{ .avx, null, null, null }, |
| | 103644 | .src_constraints = .{ .{ .scalar_exact_int = .{ .of = .yword, .is = 128 } }, .any, .any }, |
| | 103645 | .patterns = &.{ |
| | 103646 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 103647 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 103648 | }, |
| | 103649 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 103650 | .each = .{ .once = &.{} }, |
| | 103651 | }, .{ |
| | 103652 | .src_constraints = .{ .{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 103653 | .patterns = &.{ |
| | 103654 | .{ .src = .{ .to_mut_mem, .none, .none } }, |
| | 103655 | }, |
| | 103656 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 103657 | .each = .{ .once = &.{} }, |
| | 103658 | }, .{ |
| | 103659 | .required_features = .{ .@"64bit", null, null, null }, |
| | 103660 | .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 103661 | .patterns = &.{ |
| | 103662 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 103663 | }, |
| | 103664 | .extra_temps = .{ |
| | 103665 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 103666 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 103667 | .unused, |
| | 103668 | .unused, |
| | 103669 | .unused, |
| | 103670 | .unused, |
| | 103671 | .unused, |
| | 103672 | .unused, |
| | 103673 | .unused, |
| | 103674 | .unused, |
| | 103675 | .unused, |
| | 103676 | }, |
| | 103677 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 103678 | .clobbers = .{ .eflags = true }, |
| | 103679 | .each = .{ .once = &.{ |
| | 103680 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ }, |
| | 103681 | .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ }, |
| | 103682 | .{ ._, ._l, .sa, .tmp1q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| | 103683 | .{ ._, ._r, .sa, .tmp1q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| | 103684 | .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp1q, ._, ._ }, |
| | 103685 | .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ }, |
| | 103686 | .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp1q, ._, ._ }, |
| | 103687 | .{ ._, ._, .sub, .tmp0d, .sa(.src0, .add_elem_size), ._, ._ }, |
| | 103688 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 103689 | } }, |
| | 103690 | }, .{ |
| | 103691 | .required_features = .{ .@"64bit", null, null, null }, |
| | 103692 | .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 103693 | .patterns = &.{ |
| | 103694 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 103695 | }, |
| | 103696 | .extra_temps = .{ |
| | 103697 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 103698 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 103699 | .unused, |
| | 103700 | .unused, |
| | 103701 | .unused, |
| | 103702 | .unused, |
| | 103703 | .unused, |
| | 103704 | .unused, |
| | 103705 | .unused, |
| | 103706 | .unused, |
| | 103707 | .unused, |
| | 103708 | }, |
| | 103709 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 103710 | .clobbers = .{ .eflags = true }, |
| | 103711 | .each = .{ .once = &.{ |
| | 103712 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ }, |
| | 103713 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ }, |
| | 103714 | .{ .@"0:", ._, .@"and", .memi(.dst0q, .tmp0), .tmp1q, ._, ._ }, |
| | 103715 | .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .si(0), ._, ._ }, |
| | 103716 | .{ ._, ._, .sub, .tmp0d, .sa(.src0, .add_elem_size), ._, ._ }, |
| | 103717 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 103718 | } }, |
| | 103719 | }, .{ |
| | 103720 | .required_features = .{ .@"64bit", null, null, null }, |
| | 103721 | .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 103722 | .patterns = &.{ |
| | 103723 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 103724 | }, |
| | 103725 | .extra_temps = .{ |
| | 103726 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 103727 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 103728 | .unused, |
| | 103729 | .unused, |
| | 103730 | .unused, |
| | 103731 | .unused, |
| | 103732 | .unused, |
| | 103733 | .unused, |
| | 103734 | .unused, |
| | 103735 | .unused, |
| | 103736 | .unused, |
| | 103737 | }, |
| | 103738 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 103739 | .clobbers = .{ .eflags = true }, |
| | 103740 | .each = .{ .once = &.{ |
| | 103741 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ }, |
| | 103742 | .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ }, |
| | 103743 | .{ ._, ._l, .sa, .tmp1q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| | 103744 | .{ ._, ._r, .sa, .tmp1q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| | 103745 | .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp1q, ._, ._ }, |
| | 103746 | .{ ._, ._, .sub, .tmp0d, .sa(.src0, .add_elem_size), ._, ._ }, |
| | 103747 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 103748 | } }, |
| | 103749 | }, .{ |
| | 103750 | .required_features = .{ .@"64bit", null, null, null }, |
| | 103751 | .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 103752 | .patterns = &.{ |
| | 103753 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 103754 | }, |
| | 103755 | .extra_temps = .{ |
| | 103756 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 103757 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 103758 | .unused, |
| | 103759 | .unused, |
| | 103760 | .unused, |
| | 103761 | .unused, |
| | 103762 | .unused, |
| | 103763 | .unused, |
| | 103764 | .unused, |
| | 103765 | .unused, |
| | 103766 | .unused, |
| | 103767 | }, |
| | 103768 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 103769 | .clobbers = .{ .eflags = true }, |
| | 103770 | .each = .{ .once = &.{ |
| | 103771 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ }, |
| | 103772 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ }, |
| | 103773 | .{ .@"0:", ._, .@"and", .memi(.dst0q, .tmp0), .tmp1q, ._, ._ }, |
| | 103774 | .{ ._, ._, .sub, .tmp0d, .sa(.src0, .add_elem_size), ._, ._ }, |
| | 103775 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 103776 | } }, |
| | 103777 | } }); |
| | 103778 | for (ops) |op| for (res) |r| { |
| | 103779 | if (op.index == r.index) break; |
| | 103780 | } else try op.die(cg); |
| | 103781 | temp.* = res[0]; |
| | 103782 | } |
| | 103783 | |
| | 103784 | /// Supports any `op` using `cg.intInfo(lhs.typeOf(cg)).?.signedness` as the signedness. |
| | 103785 | /// Returns `error.SelectFailed` when `cg.intInfo(lhs.typeOf(cg)) == null`. |
| | 103786 | fn cmpInts(lhs: *Temp, op: std.math.CompareOperator, rhs: *Temp, cg: *CodeGen) Select.Error!Temp { |
| | 103787 | var ops: [2]Temp = .{ lhs.*, rhs.* }; |
| | 103788 | var res: [1]Temp = undefined; |
| | 103789 | switch (op) { |
| | 103790 | .lt, .lte, .gte, .gt => { |
| | 103791 | const commute = switch (op) { |
| | 103792 | .lt, .gte => false, |
| | 103793 | .lte, .gt => true, |
| | 103794 | else => unreachable, |
| | 103795 | }; |
| | 103796 | if (commute) std.mem.swap(Temp, &ops[0], &ops[1]); |
| | 103797 | try cg.select(&res, &.{.bool}, &ops, comptime &.{ .{ |
| | 103798 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any }, |
| | 103799 | .patterns = &.{ |
| | 103800 | .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } }, |
| | 103801 | .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 103802 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 103803 | }, |
| | 103804 | .dst_temps = .{ .{ .cc = .g }, .unused }, |
| | 103805 | .clobbers = .{ .eflags = true }, |
| | 103806 | .each = .{ .once = &.{ |
| | 103807 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| | 103808 | } }, |
| | 103809 | }, .{ |
| | 103810 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any }, |
| | 103811 | .patterns = &.{ |
| | 103812 | .{ .src = .{ .mem, .imm8, .none } }, |
| | 103813 | .{ .src = .{ .to_gpr, .imm8, .none } }, |
| | 103814 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| | 103815 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| | 103816 | }, |
| | 103817 | .dst_temps = .{ .{ .cc = .l }, .unused }, |
| | 103818 | .clobbers = .{ .eflags = true }, |
| | 103819 | .each = .{ .once = &.{ |
| | 103820 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| | 103821 | } }, |
| | 103822 | }, .{ |
| | 103823 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any }, |
| | 103824 | .patterns = &.{ |
| | 103825 | .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } }, |
| | 103826 | .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 103827 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 103828 | }, |
| | 103829 | .dst_temps = .{ .{ .cc = .a }, .unused }, |
| | 103830 | .clobbers = .{ .eflags = true }, |
| | 103831 | .each = .{ .once = &.{ |
| | 103832 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| | 103833 | } }, |
| | 103834 | }, .{ |
| | 103835 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any }, |
| | 103836 | .patterns = &.{ |
| | 103837 | .{ .src = .{ .mem, .imm8, .none } }, |
| | 103838 | .{ .src = .{ .to_gpr, .imm8, .none } }, |
| | 103839 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| | 103840 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| | 103841 | }, |
| | 103842 | .dst_temps = .{ .{ .cc = .b }, .unused }, |
| | 103843 | .clobbers = .{ .eflags = true }, |
| | 103844 | .each = .{ .once = &.{ |
| | 103845 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| | 103846 | } }, |
| | 103847 | }, .{ |
| | 103848 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, |
| | 103849 | .patterns = &.{ |
| | 103850 | .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } }, |
| | 103851 | .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 103852 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 103853 | }, |
| | 103854 | .dst_temps = .{ .{ .cc = .g }, .unused }, |
| | 103855 | .clobbers = .{ .eflags = true }, |
| | 103856 | .each = .{ .once = &.{ |
| | 103857 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| | 103858 | } }, |
| | 103859 | }, .{ |
| | 103860 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, |
| | 103861 | .patterns = &.{ |
| | 103862 | .{ .src = .{ .mem, .imm16, .none } }, |
| | 103863 | .{ .src = .{ .to_gpr, .imm16, .none } }, |
| | 103864 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| | 103865 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| | 103866 | }, |
| | 103867 | .dst_temps = .{ .{ .cc = .l }, .unused }, |
| | 103868 | .clobbers = .{ .eflags = true }, |
| | 103869 | .each = .{ .once = &.{ |
| | 103870 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| | 103871 | } }, |
| | 103872 | }, .{ |
| | 103873 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any }, |
| | 103874 | .patterns = &.{ |
| | 103875 | .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } }, |
| | 103876 | .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 103877 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 103878 | }, |
| | 103879 | .dst_temps = .{ .{ .cc = .a }, .unused }, |
| | 103880 | .clobbers = .{ .eflags = true }, |
| | 103881 | .each = .{ .once = &.{ |
| | 103882 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| | 103883 | } }, |
| | 103884 | }, .{ |
| | 103885 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any }, |
| | 103886 | .patterns = &.{ |
| | 103887 | .{ .src = .{ .mem, .imm16, .none } }, |
| | 103888 | .{ .src = .{ .to_gpr, .imm16, .none } }, |
| | 103889 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| | 103890 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| | 103891 | }, |
| | 103892 | .dst_temps = .{ .{ .cc = .b }, .unused }, |
| | 103893 | .clobbers = .{ .eflags = true }, |
| | 103894 | .each = .{ .once = &.{ |
| | 103895 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| | 103896 | } }, |
| | 103897 | }, .{ |
| | 103898 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any }, |
| | 103899 | .patterns = &.{ |
| | 103900 | .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } }, |
| | 103901 | .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 103902 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 103903 | }, |
| | 103904 | .dst_temps = .{ .{ .cc = .g }, .unused }, |
| | 103905 | .clobbers = .{ .eflags = true }, |
| | 103906 | .each = .{ .once = &.{ |
| | 103907 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| | 103908 | } }, |
| | 103909 | }, .{ |
| | 103910 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any }, |
| | 103911 | .patterns = &.{ |
| | 103912 | .{ .src = .{ .mem, .imm32, .none } }, |
| | 103913 | .{ .src = .{ .to_gpr, .imm32, .none } }, |
| | 103914 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| | 103915 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| | 103916 | }, |
| | 103917 | .dst_temps = .{ .{ .cc = .l }, .unused }, |
| | 103918 | .clobbers = .{ .eflags = true }, |
| | 103919 | .each = .{ .once = &.{ |
| | 103920 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| | 103921 | } }, |
| | 103922 | }, .{ |
| | 103923 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any }, |
| | 103924 | .patterns = &.{ |
| | 103925 | .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } }, |
| | 103926 | .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 103927 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 103928 | }, |
| | 103929 | .dst_temps = .{ .{ .cc = .a }, .unused }, |
| | 103930 | .clobbers = .{ .eflags = true }, |
| | 103931 | .each = .{ .once = &.{ |
| | 103932 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| | 103933 | } }, |
| | 103934 | }, .{ |
| | 103935 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any }, |
| | 103936 | .patterns = &.{ |
| | 103937 | .{ .src = .{ .mem, .imm32, .none } }, |
| | 103938 | .{ .src = .{ .to_gpr, .imm32, .none } }, |
| | 103939 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| | 103940 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| | 103941 | }, |
| | 103942 | .dst_temps = .{ .{ .cc = .b }, .unused }, |
| | 103943 | .clobbers = .{ .eflags = true }, |
| | 103944 | .each = .{ .once = &.{ |
| | 103945 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| | 103946 | } }, |
| | 103947 | }, .{ |
| | 103948 | .required_features = .{ .@"64bit", null, null, null }, |
| | 103949 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any }, |
| | 103950 | .patterns = &.{ |
| | 103951 | .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } }, |
| | 103952 | .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 103953 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 103954 | }, |
| | 103955 | .dst_temps = .{ .{ .cc = .g }, .unused }, |
| | 103956 | .clobbers = .{ .eflags = true }, |
| | 103957 | .each = .{ .once = &.{ |
| | 103958 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, |
| | 103959 | } }, |
| | 103960 | }, .{ |
| | 103961 | .required_features = .{ .@"64bit", null, null, null }, |
| | 103962 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any }, |
| | 103963 | .patterns = &.{ |
| | 103964 | .{ .src = .{ .mem, .simm32, .none } }, |
| | 103965 | .{ .src = .{ .to_gpr, .simm32, .none } }, |
| | 103966 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| | 103967 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| | 103968 | }, |
| | 103969 | .dst_temps = .{ .{ .cc = .l }, .unused }, |
| | 103970 | .clobbers = .{ .eflags = true }, |
| | 103971 | .each = .{ .once = &.{ |
| | 103972 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, |
| | 103973 | } }, |
| | 103974 | }, .{ |
| | 103975 | .required_features = .{ .@"64bit", null, null, null }, |
| | 103976 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any }, |
| | 103977 | .patterns = &.{ |
| | 103978 | .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } }, |
| | 103979 | .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 103980 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 103981 | }, |
| | 103982 | .dst_temps = .{ .{ .cc = .a }, .unused }, |
| | 103983 | .clobbers = .{ .eflags = true }, |
| | 103984 | .each = .{ .once = &.{ |
| | 103985 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, |
| | 103986 | } }, |
| | 103987 | }, .{ |
| | 103988 | .required_features = .{ .@"64bit", null, null, null }, |
| | 103989 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any }, |
| | 103990 | .patterns = &.{ |
| | 103991 | .{ .src = .{ .mem, .simm32, .none } }, |
| | 103992 | .{ .src = .{ .to_gpr, .simm32, .none } }, |
| | 103993 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| | 103994 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| | 103995 | }, |
| | 103996 | .dst_temps = .{ .{ .cc = .b }, .unused }, |
| | 103997 | .clobbers = .{ .eflags = true }, |
| | 103998 | .each = .{ .once = &.{ |
| | 103999 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, |
| | 104000 | } }, |
| | 104001 | }, .{ |
| | 104002 | .required_features = .{ .@"64bit", null, null, null }, |
| | 104003 | .src_constraints = .{ |
| | 104004 | .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, |
| | 104005 | .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, |
| | 104006 | .any, |
| | 104007 | }, |
| | 104008 | .patterns = &.{ |
| | 104009 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 104010 | }, |
| | 104011 | .extra_temps = .{ |
| | 104012 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 104013 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| | 104014 | .unused, |
| | 104015 | .unused, |
| | 104016 | .unused, |
| | 104017 | .unused, |
| | 104018 | .unused, |
| | 104019 | .unused, |
| | 104020 | .unused, |
| | 104021 | .unused, |
| | 104022 | .unused, |
| | 104023 | }, |
| | 104024 | .dst_temps = .{ .{ .cc = .l }, .unused }, |
| | 104025 | .clobbers = .{ .eflags = true }, |
| | 104026 | .each = .{ .once = &.{ |
| | 104027 | .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ }, |
| | 104028 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| | 104029 | .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ }, |
| | 104030 | .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ }, |
| | 104031 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 104032 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 104033 | .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ }, |
| | 104034 | .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ }, |
| | 104035 | } }, |
| | 104036 | }, .{ |
| | 104037 | .required_features = .{ .@"64bit", null, null, null }, |
| | 104038 | .src_constraints = .{ |
| | 104039 | .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| | 104040 | .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| | 104041 | .any, |
| | 104042 | }, |
| | 104043 | .patterns = &.{ |
| | 104044 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 104045 | }, |
| | 104046 | .extra_temps = .{ |
| | 104047 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 104048 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 104049 | .unused, |
| | 104050 | .unused, |
| | 104051 | .unused, |
| | 104052 | .unused, |
| | 104053 | .unused, |
| | 104054 | .unused, |
| | 104055 | .unused, |
| | 104056 | .unused, |
| | 104057 | .unused, |
| | 104058 | }, |
| | 104059 | .dst_temps = .{ .{ .cc = .b }, .unused }, |
| | 104060 | .clobbers = .{ .eflags = true }, |
| | 104061 | .each = .{ .once = &.{ |
| | 104062 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ }, |
| | 104063 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| | 104064 | .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ }, |
| | 104065 | .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ }, |
| | 104066 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 104067 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 104068 | } }, |
| | 104069 | }, .{ |
| | 104070 | .src_constraints = .{ |
| | 104071 | .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, |
| | 104072 | .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, |
| | 104073 | .any, |
| | 104074 | }, |
| | 104075 | .patterns = &.{ |
| | 104076 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 104077 | }, |
| | 104078 | .extra_temps = .{ |
| | 104079 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 104080 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| | 104081 | .unused, |
| | 104082 | .unused, |
| | 104083 | .unused, |
| | 104084 | .unused, |
| | 104085 | .unused, |
| | 104086 | .unused, |
| | 104087 | .unused, |
| | 104088 | .unused, |
| | 104089 | .unused, |
| | 104090 | }, |
| | 104091 | .dst_temps = .{ .{ .cc = .l }, .unused }, |
| | 104092 | .clobbers = .{ .eflags = true }, |
| | 104093 | .each = .{ .once = &.{ |
| | 104094 | .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_4), ._, ._ }, |
| | 104095 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| | 104096 | .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"4", .tmp0, .add_size, -4), ._, ._ }, |
| | 104097 | .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"4", .tmp0, .add_size, -4), ._, ._ }, |
| | 104098 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 104099 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 104100 | .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -4), ._, ._ }, |
| | 104101 | .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -4), ._, ._ }, |
| | 104102 | } }, |
| | 104103 | }, .{ |
| | 104104 | .src_constraints = .{ |
| | 104105 | .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, |
| | 104106 | .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, |
| | 104107 | .any, |
| | 104108 | }, |
| | 104109 | .patterns = &.{ |
| | 104110 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| | 104111 | }, |
| | 104112 | .extra_temps = .{ |
| | 104113 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 104114 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 104115 | .unused, |
| | 104116 | .unused, |
| | 104117 | .unused, |
| | 104118 | .unused, |
| | 104119 | .unused, |
| | 104120 | .unused, |
| | 104121 | .unused, |
| | 104122 | .unused, |
| | 104123 | .unused, |
| | 104124 | }, |
| | 104125 | .dst_temps = .{ .{ .cc = .b }, .unused }, |
| | 104126 | .clobbers = .{ .eflags = true }, |
| | 104127 | .each = .{ .once = &.{ |
| | 104128 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_4), ._, ._ }, |
| | 104129 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| | 104130 | .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_size), ._, ._ }, |
| | 104131 | .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"4", .tmp0, .add_size), ._, ._ }, |
| | 104132 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| | 104133 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| | 104134 | } }, |
| | 104135 | } }); |
| | 104136 | if (commute) std.mem.swap(Temp, &ops[0], &ops[1]); |
| | 104137 | }, |
| | 104138 | .eq, .neq => { |
| | 104139 | try cg.select(&res, &.{.bool}, &ops, comptime &.{ .{ |
| | 104140 | .src_constraints = .{ .{ .int = .byte }, .{ .int = .byte }, .any }, |
| | 104141 | .patterns = &.{ |
| | 104142 | .{ .src = .{ .mem, .imm8, .none } }, |
| | 104143 | .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } }, |
| | 104144 | .{ .src = .{ .to_gpr, .imm8, .none } }, |
| | 104145 | .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 104146 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| | 104147 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 104148 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| | 104149 | }, |
| | 104150 | .dst_temps = .{ .{ .cc = .e }, .unused }, |
| | 104151 | .clobbers = .{ .eflags = true }, |
| | 104152 | .each = .{ .once = &.{ |
| | 104153 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| | 104154 | } }, |
| | 104155 | }, .{ |
| | 104156 | .src_constraints = .{ .{ .int = .word }, .{ .int = .word }, .any }, |
| | 104157 | .patterns = &.{ |
| | 104158 | .{ .src = .{ .mem, .imm16, .none } }, |
| | 104159 | .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } }, |
| | 104160 | .{ .src = .{ .to_gpr, .imm16, .none } }, |
| | 104161 | .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 104162 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| | 104163 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 104164 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| | 104165 | }, |
| | 104166 | .dst_temps = .{ .{ .cc = .e }, .unused }, |
| | 104167 | .clobbers = .{ .eflags = true }, |
| | 104168 | .each = .{ .once = &.{ |
| | 104169 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| | 104170 | } }, |
| | 104171 | }, .{ |
| | 104172 | .src_constraints = .{ .{ .int = .dword }, .{ .int = .dword }, .any }, |
| | 104173 | .patterns = &.{ |
| | 104174 | .{ .src = .{ .mem, .imm32, .none } }, |
| | 104175 | .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } }, |
| | 104176 | .{ .src = .{ .to_gpr, .imm32, .none } }, |
| | 104177 | .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 104178 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| | 104179 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 104180 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| | 104181 | }, |
| | 104182 | .dst_temps = .{ .{ .cc = .e }, .unused }, |
| | 104183 | .clobbers = .{ .eflags = true }, |
| | 104184 | .each = .{ .once = &.{ |
| | 104185 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| | 104186 | } }, |
| | 104187 | }, .{ |
| | 104188 | .required_features = .{ .@"64bit", null, null, null }, |
| | 104189 | .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword }, .any }, |
| | 104190 | .patterns = &.{ |
| | 104191 | .{ .src = .{ .mem, .simm32, .none } }, |
| | 104192 | .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } }, |
| | 104193 | .{ .src = .{ .to_gpr, .simm32, .none } }, |
| | 104194 | .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 104195 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| | 104196 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| | 104197 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| | 104198 | }, |
| | 104199 | .dst_temps = .{ .{ .cc = .e }, .unused }, |
| | 104200 | .clobbers = .{ .eflags = true }, |
| | 104201 | .each = .{ .once = &.{ |
| | 104202 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, |
| | 104203 | } }, |
| | 104204 | }, .{ |
| | 104205 | .required_features = .{ .sse, .mmx, null, null }, |
| | 104206 | .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword }, .any }, |
| | 104207 | .patterns = &.{ |
| | 104208 | .{ .src = .{ .to_mut_mm, .mem, .none } }, |
| | 104209 | .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } }, |
| | 104210 | .{ .src = .{ .to_mut_mm, .to_mm, .none } }, |
| | 104211 | }, |
| | 104212 | .extra_temps = .{ |
| | 104213 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 104214 | .{ .kind = .{ .rc = .mmx } }, |
| | 104215 | .unused, |
| | 104216 | .unused, |
| | 104217 | .unused, |
| | 104218 | .unused, |
| | 104219 | .unused, |
| | 104220 | .unused, |
| | 104221 | .unused, |
| | 104222 | .unused, |
| | 104223 | .unused, |
| | 104224 | }, |
| | 104225 | .dst_temps = .{ .{ .cc = .z }, .unused }, |
| | 104226 | .clobbers = .{ .eflags = true }, |
| | 104227 | .each = .{ .once = &.{ |
| | 104228 | .{ ._, .p_, .xor, .tmp1q, .tmp1q, ._, ._ }, |
| | 104229 | .{ ._, .p_, .xor, .src0q, .src1q, ._, ._ }, |
| | 104230 | .{ ._, .p_b, .cmpeq, .tmp1q, .src0q, ._, ._ }, |
| | 104231 | .{ ._, .p_b, .movmsk, .tmp0d, .tmp1q, ._, ._ }, |
| 101834 | .{ ._, ._, .cmp, .tmp0b, .si(-1), ._, ._ }, | 104232 | .{ ._, ._, .cmp, .tmp0b, .si(-1), ._, ._ }, |
| 101835 | } }, | 104233 | } }, |
| 101836 | }, .{ | 104234 | }, .{ |
| ... | @@ -103648,9 +106046,14 @@ const Select = struct { | ... | @@ -103648,9 +106046,14 @@ const Select = struct { |
| 103648 | scalar_int: OfIsSizes, | 106046 | scalar_int: OfIsSizes, |
| 103649 | scalar_signed_int: OfIsSizes, | 106047 | scalar_signed_int: OfIsSizes, |
| 103650 | scalar_unsigned_int: OfIsSizes, | 106048 | scalar_unsigned_int: OfIsSizes, |
| | 106049 | scalar_signed_or_exclusive_int: OfIsSizes, |
| | 106050 | scalar_exact_int: struct { of: Memory.Size, is: u16 }, |
| | 106051 | scalar_exact_signed_int: struct { of: Memory.Size, is: u16 }, |
| | 106052 | scalar_exact_unsigned_int: struct { of: Memory.Size, is: u16 }, |
| 103651 | multiple_scalar_int: OfIsSizes, | 106053 | multiple_scalar_int: OfIsSizes, |
| 103652 | multiple_scalar_signed_int: OfIsSizes, | 106054 | multiple_scalar_signed_int: OfIsSizes, |
| 103653 | multiple_scalar_unsigned_int: OfIsSizes, | 106055 | multiple_scalar_unsigned_int: OfIsSizes, |
| | 106056 | multiple_scalar_signed_or_exclusive_int: OfIsSizes, |
| 103654 | multiple_scalar_exact_int: struct { of: Memory.Size, is: u16 }, | 106057 | multiple_scalar_exact_int: struct { of: Memory.Size, is: u16 }, |
| 103655 | multiple_scalar_exact_signed_int: struct { of: Memory.Size, is: u16 }, | 106058 | multiple_scalar_exact_signed_int: struct { of: Memory.Size, is: u16 }, |
| 103656 | multiple_scalar_exact_unsigned_int: struct { of: Memory.Size, is: u16 }, | 106059 | multiple_scalar_exact_unsigned_int: struct { of: Memory.Size, is: u16 }, |
| ... | @@ -103739,6 +106142,19 @@ const Select = struct { | ... | @@ -103739,6 +106142,19 @@ const Select = struct { |
| 103739 | .scalar_unsigned_int => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and | 106142 | .scalar_unsigned_int => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and |
| 103740 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and | 106143 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and |
| 103741 | of_is.is.bitSize(cg.target) >= int_info.bits else false, | 106144 | of_is.is.bitSize(cg.target) >= int_info.bits else false, |
| | 106145 | .scalar_signed_or_exclusive_int => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and |
| | 106146 | if (cg.intInfo(ty)) |int_info| switch (int_info.signedness) { |
| | 106147 | .signed => of_is.is.bitSize(cg.target) >= int_info.bits, |
| | 106148 | .unsigned => of_is.is.bitSize(cg.target) > int_info.bits, |
| | 106149 | } else false, |
| | 106150 | .scalar_exact_int => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and |
| | 106151 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| of_is.is == int_info.bits else false, |
| | 106152 | .scalar_exact_signed_int => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and |
| | 106153 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .signed and |
| | 106154 | of_is.is == int_info.bits else false, |
| | 106155 | .scalar_exact_unsigned_int => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and |
| | 106156 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and |
| | 106157 | of_is.is == int_info.bits else false, |
| 103742 | .multiple_scalar_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and | 106158 | .multiple_scalar_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and |
| 103743 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| of_is.is.bitSize(cg.target) >= int_info.bits else false, | 106159 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| of_is.is.bitSize(cg.target) >= int_info.bits else false, |
| 103744 | .multiple_scalar_signed_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and | 106160 | .multiple_scalar_signed_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and |
| ... | @@ -103747,6 +106163,11 @@ const Select = struct { | ... | @@ -103747,6 +106163,11 @@ const Select = struct { |
| 103747 | .multiple_scalar_unsigned_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and | 106163 | .multiple_scalar_unsigned_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and |
| 103748 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and | 106164 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and |
| 103749 | of_is.is.bitSize(cg.target) >= int_info.bits else false, | 106165 | of_is.is.bitSize(cg.target) >= int_info.bits else false, |
| | 106166 | .multiple_scalar_signed_or_exclusive_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and |
| | 106167 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| switch (int_info.signedness) { |
| | 106168 | .signed => of_is.is.bitSize(cg.target) >= int_info.bits, |
| | 106169 | .unsigned => of_is.is.bitSize(cg.target) > int_info.bits, |
| | 106170 | } else false, |
| 103750 | .multiple_scalar_exact_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and | 106171 | .multiple_scalar_exact_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and |
| 103751 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| of_is.is == int_info.bits else false, | 106172 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| of_is.is == int_info.bits else false, |
| 103752 | .multiple_scalar_exact_signed_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and | 106173 | .multiple_scalar_exact_signed_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and |
| ... | @@ -104410,9 +106831,9 @@ const Select = struct { | ... | @@ -104410,9 +106831,9 @@ const Select = struct { |
| 104410 | src0_size, | 106831 | src0_size, |
| 104411 | delta_size, | 106832 | delta_size, |
| 104412 | delta_elem_size, | 106833 | delta_elem_size, |
| 104413 | size_add_elem_size, | | |
| 104414 | size_sub_elem_size, | | |
| 104415 | unaligned_size, | 106834 | unaligned_size, |
| | 106835 | unaligned_size_add_elem_size, |
| | 106836 | unaligned_size_sub_elem_size, |
| 104416 | bit_size, | 106837 | bit_size, |
| 104417 | src0_bit_size, | 106838 | src0_bit_size, |
| 104418 | @"8_size_sub_bit_size", | 106839 | @"8_size_sub_bit_size", |
| ... | @@ -104448,10 +106869,10 @@ const Select = struct { | ... | @@ -104448,10 +106869,10 @@ const Select = struct { |
| 104448 | const add_delta_size_div_8: Adjust = .{ .sign = .pos, .lhs = .delta_size, .op = .div, .rhs = .@"8" }; | 106869 | const add_delta_size_div_8: Adjust = .{ .sign = .pos, .lhs = .delta_size, .op = .div, .rhs = .@"8" }; |
| 104449 | const add_delta_elem_size: Adjust = .{ .sign = .pos, .lhs = .delta_elem_size, .op = .mul, .rhs = .@"1" }; | 106870 | const add_delta_elem_size: Adjust = .{ .sign = .pos, .lhs = .delta_elem_size, .op = .mul, .rhs = .@"1" }; |
| 104450 | const add_delta_elem_size_div_8: Adjust = .{ .sign = .pos, .lhs = .delta_elem_size, .op = .div, .rhs = .@"8" }; | 106871 | const add_delta_elem_size_div_8: Adjust = .{ .sign = .pos, .lhs = .delta_elem_size, .op = .div, .rhs = .@"8" }; |
| 104451 | const add_size_add_elem_size: Adjust = .{ .sign = .pos, .lhs = .size_add_elem_size, .op = .mul, .rhs = .@"1" }; | | |
| 104452 | const add_size_sub_elem_size: Adjust = .{ .sign = .pos, .lhs = .size_sub_elem_size, .op = .mul, .rhs = .@"1" }; | | |
| 104453 | const add_unaligned_size: Adjust = .{ .sign = .pos, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" }; | 106872 | const add_unaligned_size: Adjust = .{ .sign = .pos, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" }; |
| 104454 | const sub_unaligned_size: Adjust = .{ .sign = .neg, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" }; | 106873 | const sub_unaligned_size: Adjust = .{ .sign = .neg, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" }; |
| | 106874 | const add_unaligned_size_add_elem_size: Adjust = .{ .sign = .pos, .lhs = .unaligned_size_add_elem_size, .op = .mul, .rhs = .@"1" }; |
| | 106875 | const add_unaligned_size_sub_elem_size: Adjust = .{ .sign = .pos, .lhs = .unaligned_size_sub_elem_size, .op = .mul, .rhs = .@"1" }; |
| 104455 | const add_2_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"2" }; | 106876 | const add_2_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"2" }; |
| 104456 | const add_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"1" }; | 106877 | const add_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"1" }; |
| 104457 | const add_bit_size_rem_64: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .rem_8_mul, .rhs = .@"8" }; | 106878 | const add_bit_size_rem_64: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .rem_8_mul, .rhs = .@"8" }; |
| ... | @@ -105161,15 +107582,15 @@ const Select = struct { | ... | @@ -105161,15 +107582,15 @@ const Select = struct { |
| 105161 | @as(SignedImm, @intCast(op.flags.index.ref.typeOf(s).abiSize(s.cg.pt.zcu)))), | 107582 | @as(SignedImm, @intCast(op.flags.index.ref.typeOf(s).abiSize(s.cg.pt.zcu)))), |
| 105162 | .delta_elem_size => @intCast(@as(SignedImm, @intCast(op.flags.base.ref.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu))) - | 107583 | .delta_elem_size => @intCast(@as(SignedImm, @intCast(op.flags.base.ref.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu))) - |
| 105163 | @as(SignedImm, @intCast(op.flags.index.ref.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)))), | 107584 | @as(SignedImm, @intCast(op.flags.index.ref.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)))), |
| 105164 | .size_add_elem_size => { | 107585 | .unaligned_size => @intCast(s.cg.unalignedSize(op.flags.base.ref.typeOf(s))), |
| | 107586 | .unaligned_size_add_elem_size => { |
| 105165 | const ty = op.flags.base.ref.typeOf(s); | 107587 | const ty = op.flags.base.ref.typeOf(s); |
| 105166 | break :lhs @intCast(ty.abiSize(s.cg.pt.zcu) + ty.elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)); | 107588 | break :lhs @intCast(s.cg.unalignedSize(ty) + ty.elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)); |
| 105167 | }, | 107589 | }, |
| 105168 | .size_sub_elem_size => { | 107590 | .unaligned_size_sub_elem_size => { |
| 105169 | const ty = op.flags.base.ref.typeOf(s); | 107591 | const ty = op.flags.base.ref.typeOf(s); |
| 105170 | break :lhs @intCast(ty.abiSize(s.cg.pt.zcu) - ty.elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)); | 107592 | break :lhs @intCast(s.cg.unalignedSize(ty) - ty.elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)); |
| 105171 | }, | 107593 | }, |
| 105172 | .unaligned_size => @intCast(s.cg.unalignedSize(op.flags.base.ref.typeOf(s))), | | |
| 105173 | .bit_size => @intCast(op.flags.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)), | 107594 | .bit_size => @intCast(op.flags.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)), |
| 105174 | .src0_bit_size => @intCast(Select.Operand.Ref.src0.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)), | 107595 | .src0_bit_size => @intCast(Select.Operand.Ref.src0.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)), |
| 105175 | .@"8_size_sub_bit_size" => { | 107596 | .@"8_size_sub_bit_size" => { |