authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-02-07 04:06:50-08:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2025-02-07 04:06:50-08:00
log2d4954ad6345b4b52fc48ef11195068898627148
treeb2f63ebfdecce07d2b4ec98d4c024297baf14815
parent42e48b83b130b20d85fc0c042e28bcaac70392dd
parent6afc5770d3a58a2f5a59f864bb9fe36890d23acc
signaturebadge-check Signed by PGP key B5690EEEBB952194

Merge pull request #22717 from jacobly0/x86_64-rewrite

x86_64: rewrite `@truncate`

13 files changed, 32602 insertions(+), 10176 deletions(-)

build.zig+1-1
...@@ -450,7 +450,7 @@ pub fn build(b: *std.Build) !void {...@@ -450,7 +450,7 @@ pub fn build(b: *std.Build) !void {
450 .skip_non_native = skip_non_native,450 .skip_non_native = skip_non_native,
451 .skip_libc = skip_libc,451 .skip_libc = skip_libc,
452 .use_llvm = use_llvm,452 .use_llvm = use_llvm,
453 .max_rss = 1.25 * 1024 * 1024 * 1024,453 .max_rss = 2 * 1024 * 1024 * 1024,
454 }));454 }));
455455
456 test_modules_step.dependOn(tests.addModuleTests(b, .{456 test_modules_step.dependOn(tests.addModuleTests(b, .{
lib/std/math/big/int.zig+10-17
...@@ -1793,9 +1793,13 @@ pub const Mutable = struct {...@@ -1793,9 +1793,13 @@ pub const Mutable = struct {
1793 /// The upper bound is `calcTwosCompLimbCount(a.len)`.1793 /// The upper bound is `calcTwosCompLimbCount(a.len)`.
1794 pub fn truncate(r: *Mutable, a: Const, signedness: Signedness, bit_count: usize) void {1794 pub fn truncate(r: *Mutable, a: Const, signedness: Signedness, bit_count: usize) void {
1795 const req_limbs = calcTwosCompLimbCount(bit_count);1795 const req_limbs = calcTwosCompLimbCount(bit_count);
1796 const abs_trunc_a: Const = .{
1797 .positive = true,
1798 .limbs = a.limbs[0..@min(a.limbs.len, req_limbs)],
1799 };
17961800
1797 // Handle 0-bit integers.1801 // Handle 0-bit integers.
1798 if (req_limbs == 0 or a.eqlZero()) {1802 if (req_limbs == 0 or abs_trunc_a.eqlZero()) {
1799 r.set(0);1803 r.set(0);
1800 return;1804 return;
1801 }1805 }
...@@ -1810,15 +1814,10 @@ pub const Mutable = struct {...@@ -1810,15 +1814,10 @@ pub const Mutable = struct {
1810 // Note, we simply take req_limbs * @bitSizeOf(Limb) as the1814 // Note, we simply take req_limbs * @bitSizeOf(Limb) as the
1811 // target bit count.1815 // target bit count.
18121816
1813 r.addScalar(a.abs(), -1);1817 r.addScalar(abs_trunc_a, -1);
18141818
1815 // Zero-extend the result1819 // Zero-extend the result
1816 if (req_limbs > r.len) {1820 @memset(r.limbs[r.len..req_limbs], 0);
1817 @memset(r.limbs[r.len..req_limbs], 0);
1818 }
1819
1820 // Truncate to required number of limbs.
1821 assert(r.limbs.len >= req_limbs);
1822 r.len = req_limbs;1821 r.len = req_limbs;
18231822
1824 // Without truncating, we can already peek at the sign bit of the result here.1823 // Without truncating, we can already peek at the sign bit of the result here.
...@@ -1846,16 +1845,10 @@ pub const Mutable = struct {...@@ -1846,16 +1845,10 @@ pub const Mutable = struct {
1846 r.normalize(r.len);1845 r.normalize(r.len);
1847 }1846 }
1848 } else {1847 } else {
1849 if (a.limbs.len < req_limbs) {1848 r.copy(abs_trunc_a);
1850 // Integer fits within target bits, no wrapping required.1849 // If the integer fits within target bits, no wrapping is required.
1851 r.copy(a);1850 if (r.len < req_limbs) return;
1852 return;
1853 }
18541851
1855 r.copy(.{
1856 .positive = a.positive,
1857 .limbs = a.limbs[0..req_limbs],
1858 });
1859 r.limbs[r.len - 1] &= mask;1852 r.limbs[r.len - 1] &= mask;
1860 r.normalize(r.len);1853 r.normalize(r.len);
18611854
lib/std/math/big/int_test.zig+25
...@@ -1934,6 +1934,31 @@ test "truncate multi unsigned many" {...@@ -1934,6 +1934,31 @@ test "truncate multi unsigned many" {
1934 try testing.expect((try b.toInt(i1)) == 0);1934 try testing.expect((try b.toInt(i1)) == 0);
1935}1935}
19361936
1937test "truncate to mutable with fewer limbs" {
1938 var res_limbs: [1]Limb = undefined;
1939 var res: Mutable = .{
1940 .limbs = &res_limbs,
1941 .len = undefined,
1942 .positive = undefined,
1943 };
1944 res.truncate(.{ .positive = true, .limbs = &.{ 0, 1 } }, .unsigned, @bitSizeOf(Limb));
1945 try testing.expect(res.eqlZero());
1946 res.truncate(.{ .positive = true, .limbs = &.{ 0, 1 } }, .signed, @bitSizeOf(Limb));
1947 try testing.expect(res.eqlZero());
1948 res.truncate(.{ .positive = false, .limbs = &.{ 0, 1 } }, .unsigned, @bitSizeOf(Limb));
1949 try testing.expect(res.eqlZero());
1950 res.truncate(.{ .positive = false, .limbs = &.{ 0, 1 } }, .signed, @bitSizeOf(Limb));
1951 try testing.expect(res.eqlZero());
1952 res.truncate(.{ .positive = true, .limbs = &.{ std.math.maxInt(Limb), 1 } }, .unsigned, @bitSizeOf(Limb));
1953 try testing.expect(res.toConst().orderAgainstScalar(std.math.maxInt(Limb)).compare(.eq));
1954 res.truncate(.{ .positive = true, .limbs = &.{ std.math.maxInt(Limb), 1 } }, .signed, @bitSizeOf(Limb));
1955 try testing.expect(res.toConst().orderAgainstScalar(-1).compare(.eq));
1956 res.truncate(.{ .positive = false, .limbs = &.{ std.math.maxInt(Limb), 1 } }, .unsigned, @bitSizeOf(Limb));
1957 try testing.expect(res.toConst().orderAgainstScalar(1).compare(.eq));
1958 res.truncate(.{ .positive = false, .limbs = &.{ std.math.maxInt(Limb), 1 } }, .signed, @bitSizeOf(Limb));
1959 try testing.expect(res.toConst().orderAgainstScalar(1).compare(.eq));
1960}
1961
1937test "saturate single signed positive" {1962test "saturate single signed positive" {
1938 var a = try Managed.initSet(testing.allocator, 0xBBBB_BBBB);1963 var a = try Managed.initSet(testing.allocator, 0xBBBB_BBBB);
1939 defer a.deinit();1964 defer a.deinit();
src/Air.zig+1-1
...@@ -573,7 +573,7 @@ pub const Inst = struct {...@@ -573,7 +573,7 @@ pub const Inst = struct {
573 /// and the operand is not a valid value of this type; i.e. equivalent to573 /// and the operand is not a valid value of this type; i.e. equivalent to
574 /// a safety check based on `.is_named_enum_value`574 /// a safety check based on `.is_named_enum_value`
575 intcast_safe,575 intcast_safe,
576 /// Truncate higher bits from an integer, resulting in an integer with the same576 /// Truncate higher bits from an integer, resulting in an integer type with the same
577 /// sign but an equal or smaller number of bits.577 /// sign but an equal or smaller number of bits.
578 /// Uses the `ty_op` field.578 /// Uses the `ty_op` field.
579 trunc,579 trunc,
src/Sema.zig+21-17
...@@ -23842,23 +23842,27 @@ fn zirTruncate(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai...@@ -23842,23 +23842,27 @@ fn zirTruncate(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
23842 @tagName(dest_info.signedness), operand_ty.fmt(pt),23842 @tagName(dest_info.signedness), operand_ty.fmt(pt),
23843 });23843 });
23844 }23844 }
23845 if (operand_info.bits < dest_info.bits) {23845 switch (std.math.order(dest_info.bits, operand_info.bits)) {
23846 const msg = msg: {23846 .gt => {
23847 const msg = try sema.errMsg(23847 const msg = msg: {
23848 src,23848 const msg = try sema.errMsg(
23849 "destination type '{}' has more bits than source type '{}'",23849 src,
23850 .{ dest_ty.fmt(pt), operand_ty.fmt(pt) },23850 "destination type '{}' has more bits than source type '{}'",
23851 );23851 .{ dest_ty.fmt(pt), operand_ty.fmt(pt) },
23852 errdefer msg.destroy(sema.gpa);23852 );
23853 try sema.errNote(src, msg, "destination type has {d} bits", .{23853 errdefer msg.destroy(sema.gpa);
23854 dest_info.bits,23854 try sema.errNote(src, msg, "destination type has {d} bits", .{
23855 });23855 dest_info.bits,
23856 try sema.errNote(operand_src, msg, "operand type has {d} bits", .{23856 });
23857 operand_info.bits,23857 try sema.errNote(operand_src, msg, "operand type has {d} bits", .{
23858 });23858 operand_info.bits,
23859 break :msg msg;23859 });
23860 };23860 break :msg msg;
23861 return sema.failWithOwnedErrorMsg(block, msg);23861 };
23862 return sema.failWithOwnedErrorMsg(block, msg);
23863 },
23864 .eq => return operand,
23865 .lt => {},
23862 }23866 }
23863 }23867 }
2386423868
src/arch/x86_64/CodeGen.zig+30016-9357
...@@ -2414,7 +2414,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2414,7 +2414,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2414}2414}
24152415
2416fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {2416fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2417 @setEvalBranchQuota(4_500);2417 @setEvalBranchQuota(9_600);
2418 const pt = cg.pt;2418 const pt = cg.pt;
2419 const zcu = pt.zcu;2419 const zcu = pt.zcu;
2420 const ip = &zcu.intern_pool;2420 const ip = &zcu.intern_pool;
...@@ -2450,23 +2450,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2450,23 +2450,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2450 try cg.inst_tracking.ensureUnusedCapacity(cg.gpa, 1);2450 try cg.inst_tracking.ensureUnusedCapacity(cg.gpa, 1);
2451 switch (air_tags[@intFromEnum(inst)]) {2451 switch (air_tags[@intFromEnum(inst)]) {
2452 // zig fmt: off2452 // zig fmt: off
2453 .add,
2454 .add_wrap,2453 .add_wrap,
2455 .sub,
2456 .sub_wrap,2454 .sub_wrap,
2457 => |air_tag| try cg.airBinOp(inst, air_tag),2455 => |air_tag| try cg.airBinOp(inst, air_tag),
24582456
2459 .shr, .shr_exact => try cg.airShlShrBinOp(inst),2457 .shr, .shr_exact => try cg.airShlShrBinOp(inst),
2460 .shl, .shl_exact => try cg.airShlShrBinOp(inst),2458 .shl, .shl_exact => try cg.airShlShrBinOp(inst),
24612459
2462 .mul,
2463 .mul_wrap,2460 .mul_wrap,
2464 .rem,
2465 .mod,
2466 .div_float,
2467 .div_trunc,
2468 .div_floor,
2469 .div_exact,
2470 => |air_tag| try cg.airMulDivBinOp(inst, air_tag),2461 => |air_tag| try cg.airMulDivBinOp(inst, air_tag),
24712462
2472 .add_sat => try cg.airAddSat(inst),2463 .add_sat => try cg.airAddSat(inst),
...@@ -2474,23 +2465,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2474,23 +2465,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2474 .mul_sat => try cg.airMulSat(inst),2465 .mul_sat => try cg.airMulSat(inst),
2475 .shl_sat => try cg.airShlSat(inst),2466 .shl_sat => try cg.airShlSat(inst),
24762467
2477 .sin,
2478 .cos,
2479 .tan,
2480 .exp,
2481 .exp2,
2482 .log,
2483 .log2,
2484 .log10,
2485 .round,
2486 => |air_tag| try cg.airUnaryMath(inst, air_tag),
2487
2488 .floor => try cg.airRound(inst, .{ .mode = .down, .precision = .inexact }),
2489 .ceil => try cg.airRound(inst, .{ .mode = .up, .precision = .inexact }),
2490 .trunc_float => try cg.airRound(inst, .{ .mode = .zero, .precision = .inexact }),
2491 .sqrt => try cg.airSqrt(inst),
2492 .neg => |air_tag| try cg.airFloatSign(inst, air_tag),
2493
2494 .add_with_overflow => try cg.airAddSubWithOverflow(inst),2468 .add_with_overflow => try cg.airAddSubWithOverflow(inst),
2495 .sub_with_overflow => try cg.airAddSubWithOverflow(inst),2469 .sub_with_overflow => try cg.airAddSubWithOverflow(inst),
2496 .mul_with_overflow => try cg.airMulWithOverflow(inst),2470 .mul_with_overflow => try cg.airMulWithOverflow(inst),
...@@ -2499,7 +2473,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2499,7 +2473,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2499 .cmp_lt_errors_len => try cg.airCmpLtErrorsLen(inst),2473 .cmp_lt_errors_len => try cg.airCmpLtErrorsLen(inst),
25002474
2501 .bitcast => try cg.airBitCast(inst),2475 .bitcast => try cg.airBitCast(inst),
2502 .trunc => try cg.airTrunc(inst),
2503 .is_non_null => try cg.airIsNonNull(inst),2476 .is_non_null => try cg.airIsNonNull(inst),
2504 .is_null => try cg.airIsNull(inst),2477 .is_null => try cg.airIsNull(inst),
2505 .is_non_err => try cg.airIsNonErr(inst),2478 .is_non_err => try cg.airIsNonErr(inst),
...@@ -2525,7 +2498,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2525,7 +2498,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2525 .reduce => try cg.airReduce(inst),2498 .reduce => try cg.airReduce(inst),
2526 .aggregate_init => try cg.airAggregateInit(inst),2499 .aggregate_init => try cg.airAggregateInit(inst),
2527 .prefetch => try cg.airPrefetch(inst),2500 .prefetch => try cg.airPrefetch(inst),
2528 .mul_add => try cg.airMulAdd(inst),
25292501
2530 .atomic_store_unordered => try cg.airAtomicStore(inst, .unordered),2502 .atomic_store_unordered => try cg.airAtomicStore(inst, .unordered),
2531 .atomic_store_monotonic => try cg.airAtomicStore(inst, .monotonic),2503 .atomic_store_monotonic => try cg.airAtomicStore(inst, .monotonic),
...@@ -2549,16 +2521,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2549,16 +2521,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2549 .intcast_safe,2521 .intcast_safe,
2550 => return cg.fail("TODO implement safety_checked_instructions", .{}),2522 => return cg.fail("TODO implement safety_checked_instructions", .{}),
25512523
2552 .add_optimized => try cg.airBinOp(inst, .add),
2553 .sub_optimized => try cg.airBinOp(inst, .sub),
2554 .mul_optimized => try cg.airBinOp(inst, .mul),
2555 .div_float_optimized => try cg.airMulDivBinOp(inst, .div_float),
2556 .div_trunc_optimized => try cg.airMulDivBinOp(inst, .div_trunc),
2557 .div_floor_optimized => try cg.airMulDivBinOp(inst, .div_floor),
2558 .div_exact_optimized => try cg.airMulDivBinOp(inst, .div_exact),
2559 .rem_optimized => try cg.airMulDivBinOp(inst, .rem),
2560 .mod_optimized => try cg.airMulDivBinOp(inst, .mod),
2561 .neg_optimized => try cg.airFloatSign(inst, .neg),
2562 .reduce_optimized => try cg.airReduce(inst),2524 .reduce_optimized => try cg.airReduce(inst),
2563 .int_from_float_optimized => try cg.airIntFromFloat(inst),2525 .int_from_float_optimized => try cg.airIntFromFloat(inst),
25642526
...@@ -2576,490 +2538,630 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2576,490 +2538,630 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2576 if (arg != .none) break;2538 if (arg != .none) break;
2577 } else try cg.airDbgVarArgs();2539 } else try cg.airDbgVarArgs();
2578 },2540 },
2579 .ptr_add => |air_tag| if (use_old) try cg.airPtrArithmetic(inst, air_tag) else {2541 .add, .add_optimized => |air_tag| if (use_old) try cg.airBinOp(inst, .add) else fallback: {
2580 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;2542 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
2581 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;2543 if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airBinOp(inst, air_tag);
2582 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });2544 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
2583 try ops[0].toSlicePtr(cg);
2584 var res: [1]Temp = undefined;2545 var res: [1]Temp = undefined;
2585 if (ty_pl.ty.toType().elemType2(zcu).hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{ty_pl.ty.toType()}, &ops, comptime &.{ .{2546 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
2586 .patterns = &.{2547 .required_features = .{ .f16c, null, null, null },
2587 .{ .src = .{ .to_gpr, .simm32 } },2548 .src_constraints = .{
2549 .{ .scalar_float = .{ .of = .word, .is = .word } },
2550 .{ .scalar_float = .{ .of = .word, .is = .word } },
2551 .any,
2588 },2552 },
2589 .dst_temps = .{.{ .rc = .general_purpose }},
2590 .each = .{ .once = &.{
2591 .{ ._, ._, .lea, .dst0p, .leaa(.src0, .add_src0_elem_size_times_src1), ._, ._ },
2592 } },
2593 }, .{
2594 .dst_constraints = .{.{ .elem_size_is = 1 }},
2595 .patterns = &.{2553 .patterns = &.{
2596 .{ .src = .{ .to_gpr, .to_gpr } },2554 .{ .src = .{ .to_sse, .to_sse, .none } },
2597 },2555 },
2598 .dst_temps = .{.{ .rc = .general_purpose }},2556 .extra_temps = .{
2599 .each = .{ .once = &.{2557 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
2600 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },2558 .unused,
2601 } },2559 .unused,
2602 }, .{2560 .unused,
2603 .dst_constraints = .{.{ .elem_size_is = 2 }},2561 .unused,
2604 .patterns = &.{2562 .unused,
2605 .{ .src = .{ .to_gpr, .to_gpr } },2563 .unused,
2564 .unused,
2565 .unused,
2606 },2566 },
2607 .dst_temps = .{.{ .rc = .general_purpose }},2567 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2608 .each = .{ .once = &.{2568 .each = .{ .once = &.{
2609 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"2", .src1), ._, ._ },2569 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
2570 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
2571 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp0d, ._ },
2572 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
2610 } },2573 } },
2611 }, .{2574 }, .{
2612 .dst_constraints = .{.{ .elem_size_is = 2 + 1 }},2575 .required_features = .{ .sse, null, null, null },
2613 .patterns = &.{2576 .src_constraints = .{
2614 .{ .src = .{ .to_gpr, .to_gpr } },2577 .{ .scalar_float = .{ .of = .word, .is = .word } },
2578 .{ .scalar_float = .{ .of = .word, .is = .word } },
2579 .any,
2615 },2580 },
2616 .dst_temps = .{.{ .rc = .general_purpose }},
2617 .each = .{ .once = &.{
2618 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"2", .src1), ._, ._ },
2619 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2620 } },
2621 }, .{
2622 .dst_constraints = .{.{ .elem_size_is = 4 }},
2623 .patterns = &.{2581 .patterns = &.{
2624 .{ .src = .{ .to_gpr, .to_gpr } },2582 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
2625 },2583 },
2626 .dst_temps = .{.{ .rc = .general_purpose }},2584 .call_frame = .{ .alignment = .@"16" },
2627 .each = .{ .once = &.{2585 .extra_temps = .{
2628 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"4", .src1), ._, ._ },2586 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
2629 } },2587 .unused,
2630 }, .{2588 .unused,
2631 .dst_constraints = .{.{ .elem_size_is = 4 + 1 }},2589 .unused,
2632 .patterns = &.{2590 .unused,
2633 .{ .src = .{ .to_gpr, .to_gpr } },2591 .unused,
2592 .unused,
2593 .unused,
2594 .unused,
2634 },2595 },
2635 .dst_temps = .{.{ .ref = .src1 }},2596 .dst_temps = .{.{ .ref = .src0 }},
2597 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2636 .each = .{ .once = &.{2598 .each = .{ .once = &.{
2637 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ },2599 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
2638 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2639 } },2600 } },
2640 }, .{2601 }, .{
2641 .required_features = .{ .@"64bit", null, null, null },2602 .required_features = .{ .f16c, null, null, null },
2642 .dst_constraints = .{.{ .elem_size_is = 8 }},2603 .src_constraints = .{
2604 .{ .scalar_float = .{ .of = .qword, .is = .word } },
2605 .{ .scalar_float = .{ .of = .qword, .is = .word } },
2606 .any,
2607 },
2643 .patterns = &.{2608 .patterns = &.{
2644 .{ .src = .{ .to_gpr, .to_gpr } },2609 .{ .src = .{ .mem, .mem, .none } },
2610 .{ .src = .{ .to_sse, .mem, .none } },
2611 .{ .src = .{ .mem, .to_sse, .none } },
2612 .{ .src = .{ .to_sse, .to_sse, .none } },
2645 },2613 },
2646 .dst_temps = .{.{ .rc = .general_purpose }},2614 .extra_temps = .{
2615 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
2616 .unused,
2617 .unused,
2618 .unused,
2619 .unused,
2620 .unused,
2621 .unused,
2622 .unused,
2623 .unused,
2624 },
2625 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2647 .each = .{ .once = &.{2626 .each = .{ .once = &.{
2648 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"8", .src1), ._, ._ },2627 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
2628 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
2629 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp0x, ._ },
2630 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
2649 } },2631 } },
2650 }, .{2632 }, .{
2651 .required_features = .{ .@"64bit", null, null, null },2633 .required_features = .{ .f16c, null, null, null },
2652 .dst_constraints = .{.{ .elem_size_is = 8 + 1 }},2634 .src_constraints = .{
2635 .{ .scalar_float = .{ .of = .xword, .is = .word } },
2636 .{ .scalar_float = .{ .of = .xword, .is = .word } },
2637 .any,
2638 },
2653 .patterns = &.{2639 .patterns = &.{
2654 .{ .src = .{ .to_gpr, .to_gpr } },2640 .{ .src = .{ .mem, .mem, .none } },
2641 .{ .src = .{ .to_sse, .mem, .none } },
2642 .{ .src = .{ .mem, .to_sse, .none } },
2643 .{ .src = .{ .to_sse, .to_sse, .none } },
2655 },2644 },
2656 .dst_temps = .{.{ .ref = .src1 }},2645 .extra_temps = .{
2646 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
2647 .unused,
2648 .unused,
2649 .unused,
2650 .unused,
2651 .unused,
2652 .unused,
2653 .unused,
2654 .unused,
2655 },
2656 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2657 .each = .{ .once = &.{2657 .each = .{ .once = &.{
2658 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ },2658 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
2659 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },2659 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
2660 .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp0y, ._ },
2661 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
2660 } },2662 } },
2661 }, .{2663 }, .{
2662 .dst_constraints = .{.po2_elem_size},2664 .required_features = .{ .f16c, null, null, null },
2665 .src_constraints = .{
2666 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
2667 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
2668 .any,
2669 },
2663 .patterns = &.{2670 .patterns = &.{
2664 .{ .src = .{ .to_gpr, .to_mut_gpr } },2671 .{ .src = .{ .to_mem, .to_mem, .none } },
2665 },2672 },
2666 .dst_temps = .{.{ .ref = .src1 }},2673 .extra_temps = .{
2674 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2675 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
2676 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
2677 .unused,
2678 .unused,
2679 .unused,
2680 .unused,
2681 .unused,
2682 .unused,
2683 },
2684 .dst_temps = .{.mem},
2667 .clobbers = .{ .eflags = true },2685 .clobbers = .{ .eflags = true },
2668 .each = .{ .once = &.{2686 .each = .{ .once = &.{
2669 .{ ._, ._l, .sh, .src1p, .sa(.none, .add_log2_src0_elem_size), ._, ._ },2687 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2670 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },2688 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
2689 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
2690 .{ ._, .v_ps, .add, .tmp1y, .tmp1y, .tmp2y, ._ },
2691 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
2692 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2693 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2671 } },2694 } },
2672 }, .{2695 }, .{
2673 .patterns = &.{2696 .required_features = .{ .avx, null, null, null },
2674 .{ .src = .{ .to_gpr, .to_gpr } },2697 .src_constraints = .{
2698 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2699 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2700 .any,
2675 },2701 },
2676 .dst_temps = .{.{ .rc = .general_purpose }},
2677 .clobbers = .{ .eflags = true },
2678 .each = .{ .once = &.{
2679 .{ ._, .i_, .mul, .dst0p, .src1p, .sa(.none, .add_src0_elem_size), ._ },
2680 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2681 } },
2682 } }) catch |err| switch (err) {
2683 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
2684 @tagName(air_tag),
2685 cg.typeOf(bin_op.lhs).fmt(pt),
2686 ops[0].tracking(cg),
2687 ops[1].tracking(cg),
2688 }),
2689 else => |e| return e,
2690 } else { // hack around Sema OPV bugs
2691 res[0] = ops[0];
2692 }
2693 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
2694 },
2695 .ptr_sub => |air_tag| if (use_old) try cg.airPtrArithmetic(inst, air_tag) else {
2696 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
2697 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
2698 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
2699 try ops[0].toSlicePtr(cg);
2700 var res: [1]Temp = undefined;
2701 if (ty_pl.ty.toType().elemType2(zcu).hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{ty_pl.ty.toType()}, &ops, comptime &.{ .{
2702 .patterns = &.{2702 .patterns = &.{
2703 .{ .src = .{ .to_gpr, .simm32 } },2703 .{ .src = .{ .to_mem, .to_mem, .none } },
2704 },2704 },
2705 .dst_temps = .{.{ .rc = .general_purpose }},2705 .call_frame = .{ .alignment = .@"16" },
2706 .extra_temps = .{
2707 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2708 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
2709 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
2710 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
2711 .unused,
2712 .unused,
2713 .unused,
2714 .unused,
2715 .unused,
2716 },
2717 .dst_temps = .{.mem},
2718 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2706 .each = .{ .once = &.{2719 .each = .{ .once = &.{
2707 .{ ._, ._, .lea, .dst0p, .leaa(.src0, .sub_src0_elem_size_times_src1), ._, ._ },2720 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2721 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
2722 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
2723 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
2724 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
2725 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
2726 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2727 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2708 } },2728 } },
2709 }, .{2729 }, .{
2710 .dst_constraints = .{.{ .elem_size_is = 1 }},2730 .required_features = .{ .sse4_1, null, null, null },
2731 .src_constraints = .{
2732 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2733 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2734 .any,
2735 },
2711 .patterns = &.{2736 .patterns = &.{
2712 .{ .src = .{ .to_gpr, .to_mut_gpr } },2737 .{ .src = .{ .to_mem, .to_mem, .none } },
2713 },2738 },
2714 .dst_temps = .{.{ .ref = .src1 }},2739 .call_frame = .{ .alignment = .@"16" },
2715 .clobbers = .{ .eflags = true },2740 .extra_temps = .{
2741 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2742 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
2743 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
2744 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
2745 .unused,
2746 .unused,
2747 .unused,
2748 .unused,
2749 .unused,
2750 },
2751 .dst_temps = .{.mem},
2752 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2716 .each = .{ .once = &.{2753 .each = .{ .once = &.{
2717 .{ ._, ._, .neg, .src1p, ._, ._, ._ },2754 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2718 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },2755 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
2756 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
2757 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
2758 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
2759 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
2760 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
2761 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2762 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2719 } },2763 } },
2720 }, .{2764 }, .{
2721 .dst_constraints = .{.{ .elem_size_is = 2 }},2765 .required_features = .{ .sse2, null, null, null },
2766 .src_constraints = .{
2767 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2768 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2769 .any,
2770 },
2722 .patterns = &.{2771 .patterns = &.{
2723 .{ .src = .{ .to_gpr, .to_mut_gpr } },2772 .{ .src = .{ .to_mem, .to_mem, .none } },
2724 },2773 },
2725 .dst_temps = .{.{ .ref = .src1 }},2774 .call_frame = .{ .alignment = .@"16" },
2726 .clobbers = .{ .eflags = true },2775 .extra_temps = .{
2776 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2777 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
2778 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
2779 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
2780 .{ .type = .f16, .kind = .{ .reg = .ax } },
2781 .unused,
2782 .unused,
2783 .unused,
2784 .unused,
2785 },
2786 .dst_temps = .{.mem},
2787 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2727 .each = .{ .once = &.{2788 .each = .{ .once = &.{
2728 .{ ._, ._, .neg, .src1p, ._, ._, ._ },2789 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2729 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"2", .src1), ._, ._ },2790 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
2791 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
2792 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
2793 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
2794 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
2795 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
2796 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
2797 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2798 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2730 } },2799 } },
2731 }, .{2800 }, .{
2732 .dst_constraints = .{.{ .elem_size_is = 2 + 1 }},2801 .required_features = .{ .sse, null, null, null },
2802 .src_constraints = .{
2803 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2804 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2805 .any,
2806 },
2733 .patterns = &.{2807 .patterns = &.{
2734 .{ .src = .{ .to_gpr, .to_gpr } },2808 .{ .src = .{ .to_mem, .to_mem, .none } },
2735 },2809 },
2736 .dst_temps = .{.{ .rc = .general_purpose }},2810 .call_frame = .{ .alignment = .@"16" },
2737 .clobbers = .{ .eflags = true },2811 .extra_temps = .{
2812 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2813 .{ .type = .f16, .kind = .{ .reg = .ax } },
2814 .{ .type = .f32, .kind = .mem },
2815 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
2816 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
2817 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
2818 .unused,
2819 .unused,
2820 .unused,
2821 },
2822 .dst_temps = .{.mem},
2823 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2738 .each = .{ .once = &.{2824 .each = .{ .once = &.{
2739 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"2", .src1), ._, ._ },2825 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2740 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },2826 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
2741 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },2827 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
2828 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
2829 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
2830 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
2831 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
2832 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
2833 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
2834 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
2835 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
2836 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2837 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2742 } },2838 } },
2743 }, .{2839 }, .{
2744 .dst_constraints = .{.{ .elem_size_is = 4 }},2840 .required_features = .{ .avx, null, null, null },
2841 .src_constraints = .{
2842 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
2843 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
2844 .any,
2845 },
2745 .patterns = &.{2846 .patterns = &.{
2746 .{ .src = .{ .to_gpr, .to_mut_gpr } },2847 .{ .src = .{ .to_sse, .mem, .none } },
2848 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
2849 .{ .src = .{ .to_sse, .to_sse, .none } },
2747 },2850 },
2748 .dst_temps = .{.{ .ref = .src1 }},2851 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2749 .clobbers = .{ .eflags = true },
2750 .each = .{ .once = &.{2852 .each = .{ .once = &.{
2751 .{ ._, ._, .neg, .src1p, ._, ._, ._ },2853 .{ ._, .v_ss, .add, .dst0x, .src0x, .src1d, ._ },
2752 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"4", .src1), ._, ._ },
2753 } },2854 } },
2754 }, .{2855 }, .{
2755 .dst_constraints = .{.{ .elem_size_is = 4 + 1 }},2856 .required_features = .{ .sse, null, null, null },
2857 .src_constraints = .{
2858 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
2859 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
2860 .any,
2861 },
2756 .patterns = &.{2862 .patterns = &.{
2757 .{ .src = .{ .to_gpr, .to_gpr } },2863 .{ .src = .{ .to_mut_sse, .mem, .none } },
2864 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
2865 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
2758 },2866 },
2759 .dst_temps = .{.{ .rc = .general_purpose }},2867 .dst_temps = .{.{ .ref = .src0 }},
2760 .clobbers = .{ .eflags = true },
2761 .each = .{ .once = &.{2868 .each = .{ .once = &.{
2762 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ },2869 .{ ._, ._ss, .add, .dst0x, .src1d, ._, ._ },
2763 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },
2764 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2765 } },2870 } },
2766 }, .{2871 }, .{
2767 .required_features = .{ .@"64bit", null, null, null },2872 .required_features = .{ .avx, null, null, null },
2768 .dst_constraints = .{.{ .elem_size_is = 8 }},2873 .src_constraints = .{
2874 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
2875 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
2876 .any,
2877 },
2769 .patterns = &.{2878 .patterns = &.{
2770 .{ .src = .{ .to_gpr, .to_mut_gpr } },2879 .{ .src = .{ .to_sse, .mem, .none } },
2880 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
2881 .{ .src = .{ .to_sse, .to_sse, .none } },
2771 },2882 },
2772 .dst_temps = .{.{ .ref = .src1 }},2883 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2773 .clobbers = .{ .eflags = true },
2774 .each = .{ .once = &.{2884 .each = .{ .once = &.{
2775 .{ ._, ._, .neg, .src1p, ._, ._, ._ },2885 .{ ._, .v_ps, .add, .dst0x, .src0x, .src1x, ._ },
2776 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"8", .src1), ._, ._ },
2777 } },2886 } },
2778 }, .{2887 }, .{
2779 .required_features = .{ .@"64bit", null, null, null },2888 .required_features = .{ .sse, null, null, null },
2780 .dst_constraints = .{.{ .elem_size_is = 8 + 1 }},2889 .src_constraints = .{
2890 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
2891 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
2892 .any,
2893 },
2781 .patterns = &.{2894 .patterns = &.{
2782 .{ .src = .{ .to_gpr, .to_gpr } },2895 .{ .src = .{ .to_mut_sse, .mem, .none } },
2896 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
2897 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
2783 },2898 },
2784 .dst_temps = .{.{ .rc = .general_purpose }},2899 .dst_temps = .{.{ .ref = .src0 }},
2785 .clobbers = .{ .eflags = true },
2786 .each = .{ .once = &.{2900 .each = .{ .once = &.{
2787 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ },2901 .{ ._, ._ps, .add, .dst0x, .src1x, ._, ._ },
2788 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },
2789 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2790 } },2902 } },
2791 }, .{2903 }, .{
2792 .dst_constraints = .{.po2_elem_size},2904 .required_features = .{ .avx, null, null, null },
2905 .src_constraints = .{
2906 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
2907 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
2908 .any,
2909 },
2793 .patterns = &.{2910 .patterns = &.{
2794 .{ .src = .{ .to_gpr, .to_mut_gpr } },2911 .{ .src = .{ .to_sse, .mem, .none } },
2912 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
2913 .{ .src = .{ .to_sse, .to_sse, .none } },
2795 },2914 },
2796 .dst_temps = .{.{ .ref = .src1 }},2915 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2797 .clobbers = .{ .eflags = true },
2798 .each = .{ .once = &.{2916 .each = .{ .once = &.{
2799 .{ ._, ._l, .sa, .src1p, .sa(.none, .add_log2_src0_elem_size), ._, ._ },2917 .{ ._, .v_ps, .add, .dst0y, .src0y, .src1y, ._ },
2800 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
2801 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
2802 } },2918 } },
2803 }, .{2919 }, .{
2920 .required_features = .{ .avx, null, null, null },
2921 .src_constraints = .{
2922 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
2923 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
2924 .any,
2925 },
2804 .patterns = &.{2926 .patterns = &.{
2805 .{ .src = .{ .to_gpr, .to_gpr } },2927 .{ .src = .{ .to_mem, .to_mem, .none } },
2806 },2928 },
2807 .dst_temps = .{.{ .rc = .general_purpose }},2929 .extra_temps = .{
2930 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2931 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
2932 .unused,
2933 .unused,
2934 .unused,
2935 .unused,
2936 .unused,
2937 .unused,
2938 .unused,
2939 },
2940 .dst_temps = .{.mem},
2808 .clobbers = .{ .eflags = true },2941 .clobbers = .{ .eflags = true },
2809 .each = .{ .once = &.{2942 .each = .{ .once = &.{
2810 .{ ._, .i_, .mul, .dst0p, .src1p, .sa(.none, .sub_src0_elem_size), ._ },2943 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2811 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },2944 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
2945 .{ ._, .v_ps, .add, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
2946 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
2947 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
2948 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2812 } },2949 } },
2813 } }) catch |err| switch (err) {2950 }, .{
2814 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{2951 .required_features = .{ .sse, null, null, null },
2815 @tagName(air_tag),2952 .src_constraints = .{
2816 cg.typeOf(bin_op.lhs).fmt(pt),2953 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
2817 ops[0].tracking(cg),2954 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
2818 ops[1].tracking(cg),2955 .any,
2819 }),2956 },
2820 else => |e| return e,
2821 } else {
2822 // hack around Sema OPV bugs
2823 res[0] = ops[0];
2824 }
2825 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
2826 },
2827 .max => |air_tag| if (use_old) try cg.airBinOp(inst, air_tag) else {
2828 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
2829 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
2830 var res: [1]Temp = undefined;
2831 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
2832 .required_features = .{ .cmov, null, null, null },
2833 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } },
2834 .patterns = &.{2957 .patterns = &.{
2835 .{ .src = .{ .to_mut_gpr, .to_gpr } },2958 .{ .src = .{ .to_mem, .to_mem, .none } },
2836 },2959 },
2837 .dst_temps = .{.{ .ref = .src0 }},2960 .extra_temps = .{
2961 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2962 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
2963 .unused,
2964 .unused,
2965 .unused,
2966 .unused,
2967 .unused,
2968 .unused,
2969 .unused,
2970 },
2971 .dst_temps = .{.mem},
2838 .clobbers = .{ .eflags = true },2972 .clobbers = .{ .eflags = true },
2839 .each = .{ .once = &.{2973 .each = .{ .once = &.{
2840 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },2974 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2841 .{ ._, ._l, .cmov, .dst0d, .src1d, ._, ._ },2975 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
2976 .{ ._, ._ps, .add, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
2977 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
2978 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2979 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2842 } },2980 } },
2843 }, .{2981 }, .{
2844 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } },2982 .required_features = .{ .avx, null, null, null },
2983 .src_constraints = .{
2984 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
2985 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
2986 .any,
2987 },
2845 .patterns = &.{2988 .patterns = &.{
2846 .{ .src = .{ .to_mut_gpr, .mem } },2989 .{ .src = .{ .to_sse, .mem, .none } },
2847 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },2990 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
2848 .{ .src = .{ .to_mut_gpr, .to_gpr } },2991 .{ .src = .{ .to_sse, .to_sse, .none } },
2849 },2992 },
2850 .dst_temps = .{.{ .ref = .src0 }},2993 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2851 .clobbers = .{ .eflags = true },
2852 .each = .{ .once = &.{2994 .each = .{ .once = &.{
2853 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },2995 .{ ._, .v_sd, .add, .dst0x, .src0x, .src1q, ._ },
2854 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },
2855 .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ },
2856 } },2996 } },
2857 }, .{2997 }, .{
2858 .required_features = .{ .cmov, null, null, null },2998 .required_features = .{ .sse2, null, null, null },
2859 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } },2999 .src_constraints = .{
3000 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3001 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3002 .any,
3003 },
2860 .patterns = &.{3004 .patterns = &.{
2861 .{ .src = .{ .to_mut_gpr, .to_gpr } },3005 .{ .src = .{ .to_mut_sse, .mem, .none } },
3006 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
3007 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
2862 },3008 },
2863 .dst_temps = .{.{ .ref = .src0 }},3009 .dst_temps = .{.{ .ref = .src0 }},
2864 .clobbers = .{ .eflags = true },
2865 .each = .{ .once = &.{3010 .each = .{ .once = &.{
2866 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },3011 .{ ._, ._sd, .add, .dst0x, .src1q, ._, ._ },
2867 .{ ._, ._b, .cmov, .dst0d, .src1d, ._, ._ },
2868 } },3012 } },
2869 }, .{3013 }, .{
2870 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } },3014 .required_features = .{ .x87, null, null, null },
3015 .src_constraints = .{
3016 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3017 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3018 .any,
3019 },
2871 .patterns = &.{3020 .patterns = &.{
2872 .{ .src = .{ .to_mut_gpr, .mem } },3021 .{ .src = .{ .mem, .mem, .none } },
2873 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2874 .{ .src = .{ .to_mut_gpr, .to_gpr } },
2875 },3022 },
2876 .dst_temps = .{.{ .ref = .src0 }},3023 .extra_temps = .{
2877 .clobbers = .{ .eflags = true },3024 .{ .type = .f64, .kind = .{ .reg = .st6 } },
3025 .{ .type = .f64, .kind = .{ .reg = .st7 } },
3026 .unused,
3027 .unused,
3028 .unused,
3029 .unused,
3030 .unused,
3031 .unused,
3032 .unused,
3033 },
3034 .dst_temps = .{.mem},
2878 .each = .{ .once = &.{3035 .each = .{ .once = &.{
2879 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },3036 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
2880 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },3037 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
2881 .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ },3038 .{ ._, .f_p, .add, ._, ._, ._, ._ },
3039 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
2882 } },3040 } },
2883 }, .{3041 }, .{
2884 .required_features = .{ .cmov, null, null, null },3042 .required_features = .{ .avx, null, null, null },
2885 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } },3043 .src_constraints = .{
3044 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3045 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3046 .any,
3047 },
2886 .patterns = &.{3048 .patterns = &.{
2887 .{ .src = .{ .to_mut_gpr, .mem } },3049 .{ .src = .{ .to_sse, .mem, .none } },
2888 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },3050 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
2889 .{ .src = .{ .to_mut_gpr, .to_gpr } },3051 .{ .src = .{ .to_sse, .to_sse, .none } },
2890 },3052 },
2891 .dst_temps = .{.{ .ref = .src0 }},3053 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2892 .clobbers = .{ .eflags = true },
2893 .each = .{ .once = &.{3054 .each = .{ .once = &.{
2894 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },3055 .{ ._, .v_pd, .add, .dst0x, .src0x, .src1x, ._ },
2895 .{ ._, ._l, .cmov, .dst0w, .src1w, ._, ._ },
2896 } },3056 } },
2897 }, .{3057 }, .{
2898 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } },3058 .required_features = .{ .sse2, null, null, null },
3059 .src_constraints = .{
3060 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3061 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3062 .any,
3063 },
2899 .patterns = &.{3064 .patterns = &.{
2900 .{ .src = .{ .to_mut_gpr, .mem } },3065 .{ .src = .{ .to_mut_sse, .mem, .none } },
2901 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },3066 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
2902 .{ .src = .{ .to_mut_gpr, .to_gpr } },3067 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
2903 },3068 },
2904 .dst_temps = .{.{ .ref = .src0 }},3069 .dst_temps = .{.{ .ref = .src0 }},
2905 .clobbers = .{ .eflags = true },
2906 .each = .{ .once = &.{3070 .each = .{ .once = &.{
2907 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },3071 .{ ._, ._pd, .add, .dst0x, .src1x, ._, ._ },
2908 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },
2909 .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ },
2910 } },3072 } },
2911 }, .{3073 }, .{
2912 .required_features = .{ .cmov, null, null, null },3074 .required_features = .{ .avx, null, null, null },
2913 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } },3075 .src_constraints = .{
3076 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
3077 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
3078 .any,
3079 },
2914 .patterns = &.{3080 .patterns = &.{
2915 .{ .src = .{ .to_mut_gpr, .mem } },3081 .{ .src = .{ .to_sse, .mem, .none } },
2916 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },3082 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
2917 .{ .src = .{ .to_mut_gpr, .to_gpr } },3083 .{ .src = .{ .to_sse, .to_sse, .none } },
2918 },3084 },
2919 .dst_temps = .{.{ .ref = .src0 }},3085 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2920 .clobbers = .{ .eflags = true },
2921 .each = .{ .once = &.{3086 .each = .{ .once = &.{
2922 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },3087 .{ ._, .v_pd, .add, .dst0y, .src0y, .src1y, ._ },
2923 .{ ._, ._b, .cmov, .dst0w, .src1w, ._, ._ },
2924 } },3088 } },
2925 }, .{3089 }, .{
2926 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } },3090 .required_features = .{ .avx, null, null, null },
3091 .src_constraints = .{
3092 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
3093 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
3094 .any,
3095 },
2927 .patterns = &.{3096 .patterns = &.{
2928 .{ .src = .{ .to_mut_gpr, .mem } },3097 .{ .src = .{ .to_mem, .to_mem, .none } },
2929 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2930 .{ .src = .{ .to_mut_gpr, .to_gpr } },
2931 },3098 },
2932 .dst_temps = .{.{ .ref = .src0 }},3099 .extra_temps = .{
2933 .clobbers = .{ .eflags = true },3100 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2934 .each = .{ .once = &.{3101 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
2935 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },3102 .unused,
2936 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },3103 .unused,
2937 .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ },3104 .unused,
2938 } },3105 .unused,
2939 }, .{3106 .unused,
2940 .required_features = .{ .cmov, null, null, null },3107 .unused,
2941 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } },3108 .unused,
2942 .patterns = &.{
2943 .{ .src = .{ .to_mut_gpr, .mem } },
2944 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2945 .{ .src = .{ .to_mut_gpr, .to_gpr } },
2946 },
2947 .dst_temps = .{.{ .ref = .src0 }},
2948 .clobbers = .{ .eflags = true },
2949 .each = .{ .once = &.{
2950 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
2951 .{ ._, ._l, .cmov, .dst0d, .src1d, ._, ._ },
2952 } },
2953 }, .{
2954 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } },
2955 .patterns = &.{
2956 .{ .src = .{ .to_mut_gpr, .mem } },
2957 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2958 .{ .src = .{ .to_mut_gpr, .to_gpr } },
2959 },
2960 .dst_temps = .{.{ .ref = .src0 }},
2961 .clobbers = .{ .eflags = true },
2962 .each = .{ .once = &.{
2963 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
2964 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },
2965 .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ },
2966 } },
2967 }, .{
2968 .required_features = .{ .cmov, null, null, null },
2969 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } },
2970 .patterns = &.{
2971 .{ .src = .{ .to_mut_gpr, .mem } },
2972 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2973 .{ .src = .{ .to_mut_gpr, .to_gpr } },
2974 },
2975 .dst_temps = .{.{ .ref = .src0 }},
2976 .clobbers = .{ .eflags = true },
2977 .each = .{ .once = &.{
2978 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
2979 .{ ._, ._b, .cmov, .dst0d, .src1d, ._, ._ },
2980 } },
2981 }, .{
2982 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } },
2983 .patterns = &.{
2984 .{ .src = .{ .to_mut_gpr, .mem } },
2985 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2986 .{ .src = .{ .to_mut_gpr, .to_gpr } },
2987 },3109 },
2988 .dst_temps = .{.{ .ref = .src0 }},3110 .dst_temps = .{.mem},
2989 .clobbers = .{ .eflags = true },3111 .clobbers = .{ .eflags = true },
2990 .each = .{ .once = &.{3112 .each = .{ .once = &.{
2991 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },3113 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2992 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },3114 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
2993 .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ },3115 .{ ._, .v_pd, .add, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
3116 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
3117 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
3118 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2994 } },3119 } },
2995 }, .{3120 }, .{
2996 .required_features = .{ .@"64bit", .cmov, null, null },3121 .required_features = .{ .sse2, null, null, null },
2997 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } },3122 .src_constraints = .{
2998 .patterns = &.{3123 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
2999 .{ .src = .{ .to_mut_gpr, .mem } },3124 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
3000 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },3125 .any,
3001 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3002 },3126 },
3003 .dst_temps = .{.{ .ref = .src0 }},
3004 .clobbers = .{ .eflags = true },
3005 .each = .{ .once = &.{
3006 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
3007 .{ ._, ._l, .cmov, .dst0q, .src1q, ._, ._ },
3008 } },
3009 }, .{
3010 .required_features = .{ .@"64bit", null, null, null },
3011 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } },
3012 .patterns = &.{3127 .patterns = &.{
3013 .{ .src = .{ .to_mut_gpr, .mem } },3128 .{ .src = .{ .to_mem, .to_mem, .none } },
3014 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
3015 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3016 },3129 },
3017 .dst_temps = .{.{ .ref = .src0 }},3130 .extra_temps = .{
3018 .clobbers = .{ .eflags = true },3131 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3019 .each = .{ .once = &.{3132 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
3020 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },3133 .unused,
3021 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },3134 .unused,
3022 .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ },3135 .unused,
3023 } },3136 .unused,
3024 }, .{3137 .unused,
3025 .required_features = .{ .@"64bit", .cmov, null, null },3138 .unused,
3026 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } },3139 .unused,
3027 .patterns = &.{
3028 .{ .src = .{ .to_mut_gpr, .mem } },
3029 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
3030 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3031 },3140 },
3032 .dst_temps = .{.{ .ref = .src0 }},3141 .dst_temps = .{.mem},
3033 .clobbers = .{ .eflags = true },3142 .clobbers = .{ .eflags = true },
3034 .each = .{ .once = &.{3143 .each = .{ .once = &.{
3035 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },3144 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3036 .{ ._, ._b, .cmov, .dst0q, .src1q, ._, ._ },3145 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
3146 .{ ._, ._pd, .add, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
3147 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
3148 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3149 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3037 } },3150 } },
3038 }, .{3151 }, .{
3039 .required_features = .{ .@"64bit", null, null, null },3152 .required_features = .{ .x87, null, null, null },
3040 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } },3153 .src_constraints = .{
3041 .patterns = &.{3154 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
3042 .{ .src = .{ .to_mut_gpr, .mem } },3155 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
3043 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },3156 .any,
3044 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3045 },3157 },
3046 .dst_temps = .{.{ .ref = .src0 }},
3047 .clobbers = .{ .eflags = true },
3048 .each = .{ .once = &.{
3049 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
3050 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },
3051 .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ },
3052 } },
3053 }, .{
3054 .required_features = .{ .@"64bit", .cmov, null, null },
3055 .src_constraints = .{ .any_signed_int, .any_signed_int },
3056 .patterns = &.{3158 .patterns = &.{
3057 .{ .src = .{ .to_mem, .to_mem } },3159 .{ .src = .{ .to_mem, .to_mem, .none } },
3058 },3160 },
3059 .extra_temps = .{3161 .extra_temps = .{
3060 .{ .type = .isize, .kind = .{ .reg = .rsi } },3162 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3061 .{ .type = .u64, .kind = .{ .reg = .rdi } },3163 .{ .type = .f64, .kind = .{ .reg = .st6 } },
3062 .{ .type = .u64, .kind = .{ .reg = .rcx } },3164 .{ .type = .f64, .kind = .{ .reg = .st7 } },
3063 .unused,3165 .unused,
3064 .unused,3166 .unused,
3065 .unused,3167 .unused,
...@@ -3068,33 +3170,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3068,33 +3170,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3068 .unused,3170 .unused,
3069 },3171 },
3070 .dst_temps = .{.mem},3172 .dst_temps = .{.mem},
3071 .clobbers = .{ .eflags = true },
3072 .each = .{ .once = &.{3173 .each = .{ .once = &.{
3073 .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ },3174 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3074 .{ ._, ._c, .cl, ._, ._, ._, ._ },3175 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
3075 .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },3176 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ },
3076 .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },3177 .{ ._, .f_p, .add, ._, ._, ._, ._ },
3077 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },3178 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
3078 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },3179 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
3079 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },3180 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3080 .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ },
3081 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
3082 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
3083 .{ ._, ._l, .cmov, .tmp0p, .tmp1p, ._, ._ },
3084 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
3085 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
3086 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
3087 } },3181 } },
3088 }, .{3182 }, .{
3089 .required_features = .{ .@"64bit", null, null, null },3183 .required_features = .{ .x87, null, null, null },
3090 .src_constraints = .{ .any_signed_int, .any_signed_int },3184 .src_constraints = .{
3185 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
3186 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
3187 .any,
3188 },
3091 .patterns = &.{3189 .patterns = &.{
3092 .{ .src = .{ .to_mem, .to_mem } },3190 .{ .src = .{ .mem, .mem, .none } },
3093 },3191 },
3094 .extra_temps = .{3192 .extra_temps = .{
3095 .{ .type = .isize, .kind = .{ .reg = .rsi } },3193 .{ .type = .f80, .kind = .{ .reg = .st6 } },
3096 .{ .type = .u64, .kind = .{ .reg = .rdi } },3194 .{ .type = .f80, .kind = .{ .reg = .st7 } },
3097 .{ .type = .u64, .kind = .{ .reg = .rcx } },3195 .unused,
3098 .unused,3196 .unused,
3099 .unused,3197 .unused,
3100 .unused,3198 .unused,
...@@ -3102,34 +3200,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3102,34 +3200,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3102 .unused,3200 .unused,
3103 .unused,3201 .unused,
3104 },3202 },
3105 .dst_temps = .{.mem},3203 .dst_temps = .{.{ .rc = .x87 }},
3106 .clobbers = .{ .eflags = true },
3107 .each = .{ .once = &.{3204 .each = .{ .once = &.{
3108 .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ },3205 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
3109 .{ ._, ._c, .cl, ._, ._, ._, ._ },3206 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
3110 .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },3207 .{ ._, .f_p, .add, ._, ._, ._, ._ },
3111 .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },3208 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
3112 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
3113 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3114 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
3115 .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ },
3116 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
3117 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },
3118 .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ },
3119 .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
3120 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
3121 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
3122 } },3209 } },
3123 }, .{3210 }, .{
3124 .required_features = .{ .@"64bit", .cmov, null, null },3211 .required_features = .{ .x87, null, null, null },
3125 .src_constraints = .{ .any_unsigned_int, .any_unsigned_int },3212 .src_constraints = .{
3213 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
3214 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
3215 .any,
3216 },
3126 .patterns = &.{3217 .patterns = &.{
3127 .{ .src = .{ .to_mem, .to_mem } },3218 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
3219 .{ .src = .{ .mem, .to_x87, .none } },
3220 .{ .src = .{ .to_x87, .to_x87, .none } },
3128 },3221 },
3129 .extra_temps = .{3222 .extra_temps = .{
3130 .{ .type = .isize, .kind = .{ .reg = .rsi } },3223 .{ .type = .f80, .kind = .{ .reg = .st7 } },
3131 .{ .type = .u64, .kind = .{ .reg = .rdi } },3224 .unused,
3132 .{ .type = .u64, .kind = .{ .reg = .rcx } },3225 .unused,
3133 .unused,3226 .unused,
3134 .unused,3227 .unused,
3135 .unused,3228 .unused,
...@@ -3137,32 +3230,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3137,32 +3230,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3137 .unused,3230 .unused,
3138 .unused,3231 .unused,
3139 },3232 },
3140 .dst_temps = .{.mem},3233 .dst_temps = .{.{ .rc = .x87 }},
3141 .clobbers = .{ .eflags = true },
3142 .each = .{ .once = &.{3234 .each = .{ .once = &.{
3143 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ },3235 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
3144 .{ ._, ._c, .cl, ._, ._, ._, ._ },3236 .{ ._, .f_, .add, .tmp0t, .src1t, ._, ._ },
3145 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ },3237 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
3146 .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ },
3147 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
3148 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3149 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
3150 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
3151 .{ ._, ._b, .cmov, .tmp0p, .tmp1p, ._, ._ },
3152 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
3153 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
3154 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
3155 } },3238 } },
3156 }, .{3239 }, .{
3157 .required_features = .{ .@"64bit", null, null, null },3240 .required_features = .{ .x87, null, null, null },
3158 .src_constraints = .{ .any_unsigned_int, .any_unsigned_int },3241 .src_constraints = .{
3242 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
3243 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
3244 .any,
3245 },
3159 .patterns = &.{3246 .patterns = &.{
3160 .{ .src = .{ .to_mem, .to_mem } },3247 .{ .src = .{ .to_mem, .to_mem, .none } },
3161 },3248 },
3162 .extra_temps = .{3249 .extra_temps = .{
3163 .{ .type = .isize, .kind = .{ .reg = .rsi } },3250 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3164 .{ .type = .u64, .kind = .{ .reg = .rdi } },3251 .{ .type = .f80, .kind = .{ .reg = .st6 } },
3165 .{ .type = .u64, .kind = .{ .reg = .rcx } },3252 .{ .type = .f80, .kind = .{ .reg = .st7 } },
3166 .unused,3253 .unused,
3167 .unused,3254 .unused,
3168 .unused,3255 .unused,
...@@ -3171,99 +3258,91 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3171,99 +3258,91 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3171 .unused,3258 .unused,
3172 },3259 },
3173 .dst_temps = .{.mem},3260 .dst_temps = .{.mem},
3174 .clobbers = .{ .eflags = true },
3175 .each = .{ .once = &.{3261 .each = .{ .once = &.{
3176 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ },3262 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3177 .{ ._, ._c, .cl, ._, ._, ._, ._ },3263 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
3178 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ },3264 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
3179 .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ },3265 .{ ._, .f_p, .add, ._, ._, ._, ._ },
3180 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },3266 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
3181 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },3267 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3182 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },3268 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3183 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },
3184 .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ },
3185 .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
3186 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
3187 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
3188 } },3269 } },
3189 }, .{3270 }, .{
3190 .required_features = .{ .avx, null, null, null },3271 .required_features = .{ .sse, null, null, null },
3191 .src_constraints = .{3272 .src_constraints = .{
3192 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },3273 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
3193 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },3274 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
3275 .any,
3194 },3276 },
3195 .patterns = &.{3277 .patterns = &.{
3196 .{ .src = .{ .to_sse, .mem } },3278 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
3197 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
3198 .{ .src = .{ .to_sse, .to_sse } },
3199 },
3200 .dst_temps = .{.{ .rc = .sse }},
3201 .each = .{ .once = &.{
3202 .{ ._, .vp_b, .maxs, .dst0x, .src0x, .src1x, ._ },
3203 } },
3204 }, .{
3205 .required_features = .{ .sse4_1, null, null, null },
3206 .src_constraints = .{
3207 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
3208 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
3209 },3279 },
3210 .patterns = &.{3280 .call_frame = .{ .alignment = .@"16" },
3211 .{ .src = .{ .to_mut_sse, .mem } },3281 .extra_temps = .{
3212 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },3282 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
3213 .{ .src = .{ .to_mut_sse, .to_sse } },3283 .unused,
3284 .unused,
3285 .unused,
3286 .unused,
3287 .unused,
3288 .unused,
3289 .unused,
3290 .unused,
3214 },3291 },
3215 .dst_temps = .{.{ .ref = .src0 }},3292 .dst_temps = .{.{ .ref = .src0 }},
3293 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3216 .each = .{ .once = &.{3294 .each = .{ .once = &.{
3217 .{ ._, .p_b, .maxs, .dst0x, .src1x, ._, ._ },3295 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
3218 } },3296 } },
3219 }, .{3297 }, .{
3220 .required_features = .{ .sse2, null, null, null },3298 .required_features = .{ .avx, null, null, null },
3221 .src_constraints = .{3299 .src_constraints = .{
3222 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },3300 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
3223 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },3301 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
3302 .any,
3224 },3303 },
3225 .patterns = &.{3304 .patterns = &.{
3226 .{ .src = .{ .to_mut_sse, .mem } },3305 .{ .src = .{ .to_mem, .to_mem, .none } },
3227 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
3228 .{ .src = .{ .to_mut_sse, .to_sse } },
3229 },
3230 .dst_temps = .{.{ .rc = .sse }},
3231 .each = .{ .once = &.{
3232 .{ ._, ._dqa, .mov, .dst0x, .src0x, ._, ._ },
3233 .{ ._, .p_b, .cmpgt, .dst0x, .src1x, ._, ._ },
3234 .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ },
3235 .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ },
3236 .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ },
3237 } },
3238 }, .{
3239 .required_features = .{ .avx2, null, null, null },
3240 .src_constraints = .{
3241 .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } },
3242 .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } },
3243 },3306 },
3244 .patterns = &.{3307 .call_frame = .{ .alignment = .@"16" },
3245 .{ .src = .{ .to_sse, .mem } },3308 .extra_temps = .{
3246 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },3309 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3247 .{ .src = .{ .to_sse, .to_sse } },3310 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
3311 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
3312 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
3313 .unused,
3314 .unused,
3315 .unused,
3316 .unused,
3317 .unused,
3248 },3318 },
3249 .dst_temps = .{.{ .rc = .sse }},3319 .dst_temps = .{.mem},
3320 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3250 .each = .{ .once = &.{3321 .each = .{ .once = &.{
3251 .{ ._, .vp_b, .maxs, .dst0y, .src0y, .src1y, ._ },3322 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3323 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
3324 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
3325 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
3326 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
3327 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3328 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3252 } },3329 } },
3253 }, .{3330 }, .{
3254 .required_features = .{ .avx2, null, null, null },3331 .required_features = .{ .sse2, null, null, null },
3255 .src_constraints = .{3332 .src_constraints = .{
3256 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } },3333 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
3257 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } },3334 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
3335 .any,
3258 },3336 },
3259 .patterns = &.{3337 .patterns = &.{
3260 .{ .src = .{ .to_mem, .to_mem } },3338 .{ .src = .{ .to_mem, .to_mem, .none } },
3261 },3339 },
3340 .call_frame = .{ .alignment = .@"16" },
3262 .extra_temps = .{3341 .extra_temps = .{
3263 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3342 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3264 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },3343 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
3265 .unused,3344 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
3266 .unused,3345 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
3267 .unused,3346 .unused,
3268 .unused,3347 .unused,
3269 .unused,3348 .unused,
...@@ -3271,29 +3350,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3271,29 +3350,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3271 .unused,3350 .unused,
3272 },3351 },
3273 .dst_temps = .{.mem},3352 .dst_temps = .{.mem},
3274 .clobbers = .{ .eflags = true },3353 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3275 .each = .{ .once = &.{3354 .each = .{ .once = &.{
3276 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3355 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3277 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },3356 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
3278 .{ ._, .vp_b, .maxs, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },3357 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
3279 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },3358 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
3280 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },3359 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
3360 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3281 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },3361 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3282 } },3362 } },
3283 }, .{3363 }, .{
3284 .required_features = .{ .avx, null, null, null },3364 .required_features = .{ .sse, null, null, null },
3285 .src_constraints = .{3365 .src_constraints = .{
3286 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },3366 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
3287 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },3367 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
3368 .any,
3288 },3369 },
3289 .patterns = &.{3370 .patterns = &.{
3290 .{ .src = .{ .to_mem, .to_mem } },3371 .{ .src = .{ .to_mem, .to_mem, .none } },
3291 },3372 },
3373 .call_frame = .{ .alignment = .@"16" },
3292 .extra_temps = .{3374 .extra_temps = .{
3293 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3375 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3294 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },3376 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
3295 .unused,3377 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
3296 .unused,3378 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
3297 .unused,3379 .unused,
3298 .unused,3380 .unused,
3299 .unused,3381 .unused,
...@@ -3301,27 +3383,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3301,27 +3383,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3301 .unused,3383 .unused,
3302 },3384 },
3303 .dst_temps = .{.mem},3385 .dst_temps = .{.mem},
3304 .clobbers = .{ .eflags = true },3386 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3305 .each = .{ .once = &.{3387 .each = .{ .once = &.{
3306 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3388 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3307 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },3389 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
3308 .{ ._, .vp_b, .maxs, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },3390 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
3309 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },3391 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
3392 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
3310 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },3393 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3311 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },3394 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3312 } },3395 } },
3313 }, .{3396 } }) catch |err| switch (err) {
3314 .required_features = .{ .sse4_1, null, null, null },3397 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
3398 @tagName(air_tag),
3399 cg.typeOf(bin_op.lhs).fmt(pt),
3400 ops[0].tracking(cg),
3401 ops[1].tracking(cg),
3402 }),
3403 else => |e| return e,
3404 };
3405 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
3406 },
3407 .sub, .sub_optimized => |air_tag| if (use_old) try cg.airBinOp(inst, .sub) else fallback: {
3408 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
3409 if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airBinOp(inst, air_tag);
3410 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
3411 var res: [1]Temp = undefined;
3412 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
3413 .required_features = .{ .f16c, null, null, null },
3315 .src_constraints = .{3414 .src_constraints = .{
3316 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },3415 .{ .scalar_float = .{ .of = .word, .is = .word } },
3317 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },3416 .{ .scalar_float = .{ .of = .word, .is = .word } },
3417 .any,
3318 },3418 },
3319 .patterns = &.{3419 .patterns = &.{
3320 .{ .src = .{ .to_mem, .to_mem } },3420 .{ .src = .{ .to_sse, .to_sse, .none } },
3321 },3421 },
3322 .extra_temps = .{3422 .extra_temps = .{
3323 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3423 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
3324 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },3424 .unused,
3325 .unused,3425 .unused,
3326 .unused,3426 .unused,
3327 .unused,3427 .unused,
...@@ -3330,29 +3430,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3330,29 +3430,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3330 .unused,3430 .unused,
3331 .unused,3431 .unused,
3332 },3432 },
3333 .dst_temps = .{.mem},3433 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3334 .clobbers = .{ .eflags = true },
3335 .each = .{ .once = &.{3434 .each = .{ .once = &.{
3336 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3435 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
3337 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },3436 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
3338 .{ ._, .p_b, .maxs, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },3437 .{ ._, .v_ss, .sub, .dst0x, .dst0x, .tmp0d, ._ },
3339 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },3438 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
3340 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3341 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3342 } },3439 } },
3343 }, .{3440 }, .{
3344 .required_features = .{ .sse2, null, null, null },3441 .required_features = .{ .sse, null, null, null },
3345 .src_constraints = .{3442 .src_constraints = .{
3346 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },3443 .{ .scalar_float = .{ .of = .word, .is = .word } },
3347 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },3444 .{ .scalar_float = .{ .of = .word, .is = .word } },
3445 .any,
3348 },3446 },
3349 .patterns = &.{3447 .patterns = &.{
3350 .{ .src = .{ .to_mem, .to_mem } },3448 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
3351 },3449 },
3450 .call_frame = .{ .alignment = .@"16" },
3352 .extra_temps = .{3451 .extra_temps = .{
3353 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3452 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },
3354 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },3453 .unused,
3355 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },3454 .unused,
3356 .unused,3455 .unused,
3357 .unused,3456 .unused,
3358 .unused,3457 .unused,
...@@ -3360,33 +3459,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3360,33 +3459,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3360 .unused,3459 .unused,
3361 .unused,3460 .unused,
3362 },3461 },
3363 .dst_temps = .{.mem},3462 .dst_temps = .{.{ .ref = .src0 }},
3364 .clobbers = .{ .eflags = true },3463 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3365 .each = .{ .once = &.{3464 .each = .{ .once = &.{
3366 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3465 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
3367 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
3368 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
3369 .{ ._, .p_b, .cmpgt, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
3370 .{ ._, .p_, .@"and", .tmp2x, .tmp1x, ._, ._ },
3371 .{ ._, .p_, .andn, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
3372 .{ ._, .p_, .@"or", .tmp1x, .tmp2x, ._, ._ },
3373 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
3374 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3375 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3376 } },3466 } },
3377 }, .{3467 }, .{
3378 .required_features = .{ .cmov, .slow_incdec, null, null },3468 .required_features = .{ .f16c, null, null, null },
3379 .src_constraints = .{3469 .src_constraints = .{
3380 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },3470 .{ .scalar_float = .{ .of = .qword, .is = .word } },
3381 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },3471 .{ .scalar_float = .{ .of = .qword, .is = .word } },
3472 .any,
3382 },3473 },
3383 .patterns = &.{3474 .patterns = &.{
3384 .{ .src = .{ .to_mem, .to_mem } },3475 .{ .src = .{ .mem, .mem, .none } },
3476 .{ .src = .{ .to_sse, .mem, .none } },
3477 .{ .src = .{ .mem, .to_sse, .none } },
3478 .{ .src = .{ .to_sse, .to_sse, .none } },
3385 },3479 },
3386 .extra_temps = .{3480 .extra_temps = .{
3387 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3481 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
3388 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },3482 .unused,
3389 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },3483 .unused,
3390 .unused,3484 .unused,
3391 .unused,3485 .unused,
3392 .unused,3486 .unused,
...@@ -3394,31 +3488,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3394,31 +3488,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3394 .unused,3488 .unused,
3395 .unused,3489 .unused,
3396 },3490 },
3397 .dst_temps = .{.mem},3491 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3398 .clobbers = .{ .eflags = true },
3399 .each = .{ .once = &.{3492 .each = .{ .once = &.{
3400 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3493 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
3401 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },3494 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
3402 .{ ._, ._, .movsx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ },3495 .{ ._, .v_ps, .sub, .dst0x, .dst0x, .tmp0x, ._ },
3403 .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ },3496 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
3404 .{ ._, ._l, .cmov, .tmp1d, .tmp2d, ._, ._ },
3405 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
3406 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
3407 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3408 } },3497 } },
3409 }, .{3498 }, .{
3410 .required_features = .{ .cmov, null, null, null },3499 .required_features = .{ .f16c, null, null, null },
3411 .src_constraints = .{3500 .src_constraints = .{
3412 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },3501 .{ .scalar_float = .{ .of = .xword, .is = .word } },
3413 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },3502 .{ .scalar_float = .{ .of = .xword, .is = .word } },
3503 .any,
3414 },3504 },
3415 .patterns = &.{3505 .patterns = &.{
3416 .{ .src = .{ .to_mem, .to_mem } },3506 .{ .src = .{ .mem, .mem, .none } },
3507 .{ .src = .{ .to_sse, .mem, .none } },
3508 .{ .src = .{ .mem, .to_sse, .none } },
3509 .{ .src = .{ .to_sse, .to_sse, .none } },
3417 },3510 },
3418 .extra_temps = .{3511 .extra_temps = .{
3419 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3512 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
3420 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },3513 .unused,
3421 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },3514 .unused,
3422 .unused,3515 .unused,
3423 .unused,3516 .unused,
3424 .unused,3517 .unused,
...@@ -3426,31 +3519,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3426,31 +3519,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3426 .unused,3519 .unused,
3427 .unused,3520 .unused,
3428 },3521 },
3429 .dst_temps = .{.mem},3522 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3430 .clobbers = .{ .eflags = true },
3431 .each = .{ .once = &.{3523 .each = .{ .once = &.{
3432 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3524 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
3433 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },3525 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
3434 .{ ._, ._, .movsx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ },3526 .{ ._, .v_ps, .sub, .dst0y, .dst0y, .tmp0y, ._ },
3435 .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ },3527 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
3436 .{ ._, ._l, .cmov, .tmp1d, .tmp2d, ._, ._ },
3437 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
3438 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
3439 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3440 } },3528 } },
3441 }, .{3529 }, .{
3442 .required_features = .{ .slow_incdec, null, null, null },3530 .required_features = .{ .f16c, null, null, null },
3443 .src_constraints = .{3531 .src_constraints = .{
3444 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },3532 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
3445 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },3533 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
3534 .any,
3446 },3535 },
3447 .patterns = &.{3536 .patterns = &.{
3448 .{ .src = .{ .to_mem, .to_mem } },3537 .{ .src = .{ .to_mem, .to_mem, .none } },
3449 },3538 },
3450 .extra_temps = .{3539 .extra_temps = .{
3451 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3540 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3452 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },3541 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
3453 .unused,3542 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
3454 .unused,3543 .unused,
3455 .unused,3544 .unused,
3456 .unused,3545 .unused,
...@@ -3461,28 +3550,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3461,28 +3550,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3461 .dst_temps = .{.mem},3550 .dst_temps = .{.mem},
3462 .clobbers = .{ .eflags = true },3551 .clobbers = .{ .eflags = true },
3463 .each = .{ .once = &.{3552 .each = .{ .once = &.{
3464 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3553 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3465 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },3554 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
3466 .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },3555 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
3467 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },3556 .{ ._, .v_ps, .sub, .tmp1y, .tmp1y, .tmp2y, ._ },
3468 .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },3557 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
3469 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },3558 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3470 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
3471 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },3559 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3472 } },3560 } },
3473 }, .{3561 }, .{
3562 .required_features = .{ .avx, null, null, null },
3474 .src_constraints = .{3563 .src_constraints = .{
3475 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },3564 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3476 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },3565 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3566 .any,
3477 },3567 },
3478 .patterns = &.{3568 .patterns = &.{
3479 .{ .src = .{ .to_mem, .to_mem } },3569 .{ .src = .{ .to_mem, .to_mem, .none } },
3480 },3570 },
3571 .call_frame = .{ .alignment = .@"16" },
3481 .extra_temps = .{3572 .extra_temps = .{
3482 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3573 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3483 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },3574 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3484 .unused,3575 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
3485 .unused,3576 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },
3486 .unused,3577 .unused,
3487 .unused,3578 .unused,
3488 .unused,3579 .unused,
...@@ -3490,149 +3581,215 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3490,149 +3581,215 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3490 .unused,3581 .unused,
3491 },3582 },
3492 .dst_temps = .{.mem},3583 .dst_temps = .{.mem},
3493 .clobbers = .{ .eflags = true },3584 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3494 .each = .{ .once = &.{3585 .each = .{ .once = &.{
3495 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3586 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3496 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },3587 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
3497 .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },3588 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
3498 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },3589 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
3499 .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },3590 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
3500 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },3591 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
3501 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },3592 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3502 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },3593 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3503 } },3594 } },
3504 }, .{3595 }, .{
3505 .required_features = .{ .sse, .mmx, null, null },3596 .required_features = .{ .sse4_1, null, null, null },
3506 .src_constraints = .{3597 .src_constraints = .{
3507 .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } },3598 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3508 .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } },3599 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3600 .any,
3509 },3601 },
3510 .patterns = &.{3602 .patterns = &.{
3511 .{ .src = .{ .to_mut_mmx, .mem } },3603 .{ .src = .{ .to_mem, .to_mem, .none } },
3512 .{ .src = .{ .mem, .to_mut_mmx }, .commute = .{ 0, 1 } },
3513 .{ .src = .{ .to_mut_mmx, .to_mmx } },
3514 },3604 },
3515 .dst_temps = .{.{ .ref = .src0 }},3605 .call_frame = .{ .alignment = .@"16" },
3516 .each = .{ .once = &.{3606 .extra_temps = .{
3517 .{ ._, .p_b, .maxu, .dst0q, .src1q, ._, ._ },3607 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3608 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3609 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
3610 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },
3611 .unused,
3612 .unused,
3613 .unused,
3614 .unused,
3615 .unused,
3616 },
3617 .dst_temps = .{.mem},
3618 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3619 .each = .{ .once = &.{
3620 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3621 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
3622 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
3623 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
3624 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
3625 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
3626 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
3627 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3628 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3629 } },
3630 }, .{
3631 .required_features = .{ .sse2, null, null, null },
3632 .src_constraints = .{
3633 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3634 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3635 .any,
3636 },
3637 .patterns = &.{
3638 .{ .src = .{ .to_mem, .to_mem, .none } },
3639 },
3640 .call_frame = .{ .alignment = .@"16" },
3641 .extra_temps = .{
3642 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3643 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3644 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
3645 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },
3646 .{ .type = .f16, .kind = .{ .reg = .ax } },
3647 .unused,
3648 .unused,
3649 .unused,
3650 .unused,
3651 },
3652 .dst_temps = .{.mem},
3653 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3654 .each = .{ .once = &.{
3655 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3656 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
3657 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
3658 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
3659 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
3660 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
3661 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
3662 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
3663 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3664 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3665 } },
3666 }, .{
3667 .required_features = .{ .sse, null, null, null },
3668 .src_constraints = .{
3669 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3670 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3671 .any,
3672 },
3673 .patterns = &.{
3674 .{ .src = .{ .to_mem, .to_mem, .none } },
3675 },
3676 .call_frame = .{ .alignment = .@"16" },
3677 .extra_temps = .{
3678 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3679 .{ .type = .f16, .kind = .{ .reg = .ax } },
3680 .{ .type = .f32, .kind = .mem },
3681 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3682 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
3683 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },
3684 .unused,
3685 .unused,
3686 .unused,
3687 },
3688 .dst_temps = .{.mem},
3689 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3690 .each = .{ .once = &.{
3691 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3692 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
3693 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
3694 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
3695 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
3696 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
3697 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
3698 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
3699 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
3700 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
3701 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
3702 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3703 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3518 } },3704 } },
3519 }, .{3705 }, .{
3520 .required_features = .{ .avx, null, null, null },3706 .required_features = .{ .avx, null, null, null },
3521 .src_constraints = .{3707 .src_constraints = .{
3522 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },3708 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
3523 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },3709 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
3710 .any,
3524 },3711 },
3525 .patterns = &.{3712 .patterns = &.{
3526 .{ .src = .{ .to_sse, .mem } },3713 .{ .src = .{ .to_sse, .mem, .none } },
3527 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },3714 .{ .src = .{ .to_sse, .to_sse, .none } },
3528 .{ .src = .{ .to_sse, .to_sse } },
3529 },3715 },
3530 .dst_temps = .{.{ .rc = .sse }},3716 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3531 .each = .{ .once = &.{3717 .each = .{ .once = &.{
3532 .{ ._, .vp_b, .maxu, .dst0x, .src0x, .src1x, ._ },3718 .{ ._, .v_ss, .sub, .dst0x, .src0x, .src1d, ._ },
3533 } },3719 } },
3534 }, .{3720 }, .{
3535 .required_features = .{ .sse2, null, null, null },3721 .required_features = .{ .sse, null, null, null },
3536 .src_constraints = .{3722 .src_constraints = .{
3537 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },3723 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
3538 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },3724 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
3725 .any,
3539 },3726 },
3540 .patterns = &.{3727 .patterns = &.{
3541 .{ .src = .{ .to_mut_sse, .mem } },3728 .{ .src = .{ .to_mut_sse, .mem, .none } },
3542 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },3729 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
3543 .{ .src = .{ .to_mut_sse, .to_sse } },
3544 },3730 },
3545 .dst_temps = .{.{ .ref = .src0 }},3731 .dst_temps = .{.{ .ref = .src0 }},
3546 .each = .{ .once = &.{3732 .each = .{ .once = &.{
3547 .{ ._, .p_b, .maxu, .dst0x, .src1x, ._, ._ },3733 .{ ._, ._ss, .sub, .dst0x, .src1d, ._, ._ },
3548 } },3734 } },
3549 }, .{3735 }, .{
3550 .required_features = .{ .avx2, null, null, null },3736 .required_features = .{ .avx, null, null, null },
3551 .src_constraints = .{3737 .src_constraints = .{
3552 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } },3738 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
3553 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } },3739 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
3740 .any,
3554 },3741 },
3555 .patterns = &.{3742 .patterns = &.{
3556 .{ .src = .{ .to_sse, .mem } },3743 .{ .src = .{ .to_sse, .mem, .none } },
3557 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },3744 .{ .src = .{ .to_sse, .to_sse, .none } },
3558 .{ .src = .{ .to_sse, .to_sse } },
3559 },3745 },
3560 .dst_temps = .{.{ .rc = .sse }},3746 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3561 .each = .{ .once = &.{3747 .each = .{ .once = &.{
3562 .{ ._, .vp_b, .maxu, .dst0y, .src0y, .src1y, ._ },3748 .{ ._, .v_ps, .sub, .dst0x, .src0x, .src1x, ._ },
3563 } },3749 } },
3564 }, .{3750 }, .{
3565 .required_features = .{ .avx2, null, null, null },3751 .required_features = .{ .sse, null, null, null },
3566 .src_constraints = .{3752 .src_constraints = .{
3567 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } },3753 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
3568 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } },3754 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
3755 .any,
3569 },3756 },
3570 .patterns = &.{3757 .patterns = &.{
3571 .{ .src = .{ .to_mem, .to_mem } },3758 .{ .src = .{ .to_mut_sse, .mem, .none } },
3572 },3759 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
3573 .extra_temps = .{
3574 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3575 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },
3576 .unused,
3577 .unused,
3578 .unused,
3579 .unused,
3580 .unused,
3581 .unused,
3582 .unused,
3583 },3760 },
3584 .dst_temps = .{.mem},3761 .dst_temps = .{.{ .ref = .src0 }},
3585 .clobbers = .{ .eflags = true },
3586 .each = .{ .once = &.{3762 .each = .{ .once = &.{
3587 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3763 .{ ._, ._ps, .sub, .dst0x, .src1x, ._, ._ },
3588 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
3589 .{ ._, .vp_b, .maxu, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
3590 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
3591 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
3592 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3593 } },3764 } },
3594 }, .{3765 }, .{
3595 .required_features = .{ .avx, null, null, null },3766 .required_features = .{ .avx, null, null, null },
3596 .src_constraints = .{3767 .src_constraints = .{
3597 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },3768 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
3598 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },3769 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
3770 .any,
3599 },3771 },
3600 .patterns = &.{3772 .patterns = &.{
3601 .{ .src = .{ .to_mem, .to_mem } },3773 .{ .src = .{ .to_sse, .mem, .none } },
3602 },3774 .{ .src = .{ .to_sse, .to_sse, .none } },
3603 .extra_temps = .{
3604 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3605 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
3606 .unused,
3607 .unused,
3608 .unused,
3609 .unused,
3610 .unused,
3611 .unused,
3612 .unused,
3613 },3775 },
3614 .dst_temps = .{.mem},3776 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3615 .clobbers = .{ .eflags = true },
3616 .each = .{ .once = &.{3777 .each = .{ .once = &.{
3617 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3778 .{ ._, .v_ps, .sub, .dst0y, .src0y, .src1y, ._ },
3618 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
3619 .{ ._, .vp_b, .maxu, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },
3620 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
3621 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3622 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3623 } },3779 } },
3624 }, .{3780 }, .{
3625 .required_features = .{ .sse2, null, null, null },3781 .required_features = .{ .avx, null, null, null },
3626 .src_constraints = .{3782 .src_constraints = .{
3627 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },3783 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
3628 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },3784 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
3785 .any,
3629 },3786 },
3630 .patterns = &.{3787 .patterns = &.{
3631 .{ .src = .{ .to_mem, .to_mem } },3788 .{ .src = .{ .to_mem, .to_mem, .none } },
3632 },3789 },
3633 .extra_temps = .{3790 .extra_temps = .{
3634 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3791 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3635 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },3792 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
3636 .unused,3793 .unused,
3637 .unused,3794 .unused,
3638 .unused,3795 .unused,
...@@ -3644,26 +3801,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3644,26 +3801,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3644 .dst_temps = .{.mem},3801 .dst_temps = .{.mem},
3645 .clobbers = .{ .eflags = true },3802 .clobbers = .{ .eflags = true },
3646 .each = .{ .once = &.{3803 .each = .{ .once = &.{
3647 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3804 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3648 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },3805 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
3649 .{ ._, .p_b, .maxu, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },3806 .{ ._, .v_ps, .sub, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
3650 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },3807 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
3651 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },3808 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
3652 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },3809 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3653 } },3810 } },
3654 }, .{3811 }, .{
3655 .required_features = .{ .cmov, .slow_incdec, null, null },3812 .required_features = .{ .sse, null, null, null },
3656 .src_constraints = .{3813 .src_constraints = .{
3657 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },3814 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
3658 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },3815 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
3816 .any,
3659 },3817 },
3660 .patterns = &.{3818 .patterns = &.{
3661 .{ .src = .{ .to_mem, .to_mem } },3819 .{ .src = .{ .to_mem, .to_mem, .none } },
3662 },3820 },
3663 .extra_temps = .{3821 .extra_temps = .{
3664 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3822 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3665 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },3823 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
3666 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },3824 .unused,
3667 .unused,3825 .unused,
3668 .unused,3826 .unused,
3669 .unused,3827 .unused,
...@@ -3674,90 +3832,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3674,90 +3832,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3674 .dst_temps = .{.mem},3832 .dst_temps = .{.mem},
3675 .clobbers = .{ .eflags = true },3833 .clobbers = .{ .eflags = true },
3676 .each = .{ .once = &.{3834 .each = .{ .once = &.{
3677 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3835 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3678 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },3836 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
3679 .{ ._, ._, .movzx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ },3837 .{ ._, ._ps, .sub, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
3680 .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ },3838 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
3681 .{ ._, ._b, .cmov, .tmp1d, .tmp2d, ._, ._ },3839 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3682 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
3683 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
3684 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },3840 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3685 } },3841 } },
3686 }, .{3842 }, .{
3687 .required_features = .{ .cmov, null, null, null },3843 .required_features = .{ .avx, null, null, null },
3688 .src_constraints = .{3844 .src_constraints = .{
3689 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },3845 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3690 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },3846 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3847 .any,
3691 },3848 },
3692 .patterns = &.{3849 .patterns = &.{
3693 .{ .src = .{ .to_mem, .to_mem } },3850 .{ .src = .{ .to_sse, .mem, .none } },
3694 },3851 .{ .src = .{ .to_sse, .to_sse, .none } },
3695 .extra_temps = .{
3696 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3697 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
3698 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
3699 .unused,
3700 .unused,
3701 .unused,
3702 .unused,
3703 .unused,
3704 .unused,
3705 },3852 },
3706 .dst_temps = .{.mem},3853 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3707 .clobbers = .{ .eflags = true },
3708 .each = .{ .once = &.{3854 .each = .{ .once = &.{
3709 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3855 .{ ._, .v_sd, .sub, .dst0x, .src0x, .src1q, ._ },
3710 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
3711 .{ ._, ._, .movzx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ },
3712 .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ },
3713 .{ ._, ._b, .cmov, .tmp1d, .tmp2d, ._, ._ },
3714 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
3715 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
3716 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3717 } },3856 } },
3718 }, .{3857 }, .{
3719 .required_features = .{ .slow_incdec, null, null, null },3858 .required_features = .{ .sse2, null, null, null },
3720 .src_constraints = .{3859 .src_constraints = .{
3721 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },3860 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3722 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },3861 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3862 .any,
3723 },3863 },
3724 .patterns = &.{3864 .patterns = &.{
3725 .{ .src = .{ .to_mem, .to_mem } },3865 .{ .src = .{ .to_mut_sse, .mem, .none } },
3726 },3866 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
3727 .extra_temps = .{
3728 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3729 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
3730 .unused,
3731 .unused,
3732 .unused,
3733 .unused,
3734 .unused,
3735 .unused,
3736 .unused,
3737 },3867 },
3738 .dst_temps = .{.mem},3868 .dst_temps = .{.{ .ref = .src0 }},
3739 .clobbers = .{ .eflags = true },
3740 .each = .{ .once = &.{3869 .each = .{ .once = &.{
3741 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3870 .{ ._, ._sd, .sub, .dst0x, .src1q, ._, ._ },
3742 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
3743 .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
3744 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
3745 .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
3746 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
3747 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
3748 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3749 } },3871 } },
3750 }, .{3872 }, .{
3873 .required_features = .{ .x87, null, null, null },
3751 .src_constraints = .{3874 .src_constraints = .{
3752 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },3875 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3753 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },3876 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3877 .any,
3754 },3878 },
3755 .patterns = &.{3879 .patterns = &.{
3756 .{ .src = .{ .to_mem, .to_mem } },3880 .{ .src = .{ .mem, .mem, .none } },
3757 },3881 },
3758 .extra_temps = .{3882 .extra_temps = .{
3759 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3883 .{ .type = .f64, .kind = .{ .reg = .st6 } },
3760 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },3884 .{ .type = .f64, .kind = .{ .reg = .st7 } },
3761 .unused,3885 .unused,
3762 .unused,3886 .unused,
3763 .unused,3887 .unused,
...@@ -3767,89 +3891,70 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3767,89 +3891,70 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3767 .unused,3891 .unused,
3768 },3892 },
3769 .dst_temps = .{.mem},3893 .dst_temps = .{.mem},
3770 .clobbers = .{ .eflags = true },
3771 .each = .{ .once = &.{
3772 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3773 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
3774 .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
3775 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
3776 .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
3777 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
3778 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
3779 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3780 } },
3781 }, .{
3782 .required_features = .{ .sse, .mmx, null, null },
3783 .src_constraints = .{
3784 .{ .scalar_signed_int = .{ .of = .qword, .is = .word } },
3785 .{ .scalar_signed_int = .{ .of = .qword, .is = .word } },
3786 },
3787 .patterns = &.{
3788 .{ .src = .{ .to_mut_mmx, .mem } },
3789 .{ .src = .{ .mem, .to_mut_mmx }, .commute = .{ 0, 1 } },
3790 .{ .src = .{ .to_mut_mmx, .to_mmx } },
3791 },
3792 .dst_temps = .{.{ .ref = .src0 }},
3793 .each = .{ .once = &.{3894 .each = .{ .once = &.{
3794 .{ ._, .p_w, .maxs, .dst0q, .src1q, ._, ._ },3895 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
3896 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
3897 .{ ._, .f_p, .sub, ._, ._, ._, ._ },
3898 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
3795 } },3899 } },
3796 }, .{3900 }, .{
3797 .required_features = .{ .avx, null, null, null },3901 .required_features = .{ .avx, null, null, null },
3798 .src_constraints = .{3902 .src_constraints = .{
3799 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },3903 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3800 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },3904 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3905 .any,
3801 },3906 },
3802 .patterns = &.{3907 .patterns = &.{
3803 .{ .src = .{ .to_sse, .mem } },3908 .{ .src = .{ .to_sse, .mem, .none } },
3804 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },3909 .{ .src = .{ .to_sse, .to_sse, .none } },
3805 .{ .src = .{ .to_sse, .to_sse } },
3806 },3910 },
3807 .dst_temps = .{.{ .rc = .sse }},3911 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3808 .each = .{ .once = &.{3912 .each = .{ .once = &.{
3809 .{ ._, .vp_w, .maxs, .dst0x, .src0x, .src1x, ._ },3913 .{ ._, .v_pd, .sub, .dst0x, .src0x, .src1x, ._ },
3810 } },3914 } },
3811 }, .{3915 }, .{
3812 .required_features = .{ .sse2, null, null, null },3916 .required_features = .{ .sse2, null, null, null },
3813 .src_constraints = .{3917 .src_constraints = .{
3814 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },3918 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3815 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },3919 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3920 .any,
3816 },3921 },
3817 .patterns = &.{3922 .patterns = &.{
3818 .{ .src = .{ .to_mut_sse, .mem } },3923 .{ .src = .{ .to_mut_sse, .mem, .none } },
3819 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },3924 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
3820 .{ .src = .{ .to_mut_sse, .to_sse } },
3821 },3925 },
3822 .dst_temps = .{.{ .ref = .src0 }},3926 .dst_temps = .{.{ .ref = .src0 }},
3823 .each = .{ .once = &.{3927 .each = .{ .once = &.{
3824 .{ ._, .p_w, .maxs, .dst0x, .src1x, ._, ._ },3928 .{ ._, ._pd, .sub, .dst0x, .src1x, ._, ._ },
3825 } },3929 } },
3826 }, .{3930 }, .{
3827 .required_features = .{ .avx2, null, null, null },3931 .required_features = .{ .avx, null, null, null },
3828 .src_constraints = .{3932 .src_constraints = .{
3829 .{ .scalar_signed_int = .{ .of = .yword, .is = .word } },3933 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
3830 .{ .scalar_signed_int = .{ .of = .yword, .is = .word } },3934 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
3935 .any,
3831 },3936 },
3832 .patterns = &.{3937 .patterns = &.{
3833 .{ .src = .{ .to_sse, .mem } },3938 .{ .src = .{ .to_sse, .mem, .none } },
3834 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },3939 .{ .src = .{ .to_sse, .to_sse, .none } },
3835 .{ .src = .{ .to_sse, .to_sse } },
3836 },3940 },
3837 .dst_temps = .{.{ .rc = .sse }},3941 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3838 .each = .{ .once = &.{3942 .each = .{ .once = &.{
3839 .{ ._, .vp_w, .maxs, .dst0y, .src0y, .src1y, ._ },3943 .{ ._, .v_pd, .sub, .dst0y, .src0y, .src1y, ._ },
3840 } },3944 } },
3841 }, .{3945 }, .{
3842 .required_features = .{ .avx2, null, null, null },3946 .required_features = .{ .avx, null, null, null },
3843 .src_constraints = .{3947 .src_constraints = .{
3844 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } },3948 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
3845 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } },3949 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
3950 .any,
3846 },3951 },
3847 .patterns = &.{3952 .patterns = &.{
3848 .{ .src = .{ .to_mem, .to_mem } },3953 .{ .src = .{ .to_mem, .to_mem, .none } },
3849 },3954 },
3850 .extra_temps = .{3955 .extra_temps = .{
3851 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3956 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3852 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },3957 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
3853 .unused,3958 .unused,
3854 .unused,3959 .unused,
3855 .unused,3960 .unused,
...@@ -3861,25 +3966,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3861,25 +3966,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3861 .dst_temps = .{.mem},3966 .dst_temps = .{.mem},
3862 .clobbers = .{ .eflags = true },3967 .clobbers = .{ .eflags = true },
3863 .each = .{ .once = &.{3968 .each = .{ .once = &.{
3864 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3969 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3865 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },3970 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
3866 .{ ._, .vp_w, .maxs, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },3971 .{ ._, .v_pd, .sub, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
3867 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },3972 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
3868 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },3973 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
3869 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },3974 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3870 } },3975 } },
3871 }, .{3976 }, .{
3872 .required_features = .{ .avx, null, null, null },3977 .required_features = .{ .sse2, null, null, null },
3873 .src_constraints = .{3978 .src_constraints = .{
3874 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },3979 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
3875 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },3980 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
3981 .any,
3876 },3982 },
3877 .patterns = &.{3983 .patterns = &.{
3878 .{ .src = .{ .to_mem, .to_mem } },3984 .{ .src = .{ .to_mem, .to_mem, .none } },
3879 },3985 },
3880 .extra_temps = .{3986 .extra_temps = .{
3881 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3987 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3882 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },3988 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
3883 .unused,3989 .unused,
3884 .unused,3990 .unused,
3885 .unused,3991 .unused,
...@@ -3891,26 +3997,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3891,26 +3997,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3891 .dst_temps = .{.mem},3997 .dst_temps = .{.mem},
3892 .clobbers = .{ .eflags = true },3998 .clobbers = .{ .eflags = true },
3893 .each = .{ .once = &.{3999 .each = .{ .once = &.{
3894 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4000 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3895 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },4001 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
3896 .{ ._, .vp_w, .maxs, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },4002 .{ ._, ._pd, .sub, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
3897 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },4003 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
3898 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },4004 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3899 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4005 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3900 } },4006 } },
3901 }, .{4007 }, .{
3902 .required_features = .{ .sse2, null, null, null },4008 .required_features = .{ .x87, null, null, null },
3903 .src_constraints = .{4009 .src_constraints = .{
3904 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },4010 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
3905 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },4011 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
4012 .any,
3906 },4013 },
3907 .patterns = &.{4014 .patterns = &.{
3908 .{ .src = .{ .to_mem, .to_mem } },4015 .{ .src = .{ .to_mem, .to_mem, .none } },
3909 },4016 },
3910 .extra_temps = .{4017 .extra_temps = .{
3911 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4018 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3912 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },4019 .{ .type = .f64, .kind = .{ .reg = .st6 } },
3913 .unused,4020 .{ .type = .f64, .kind = .{ .reg = .st7 } },
3914 .unused,4021 .unused,
3915 .unused,4022 .unused,
3916 .unused,4023 .unused,
...@@ -3919,27 +4026,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3919,27 +4026,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3919 .unused,4026 .unused,
3920 },4027 },
3921 .dst_temps = .{.mem},4028 .dst_temps = .{.mem},
3922 .clobbers = .{ .eflags = true },
3923 .each = .{ .once = &.{4029 .each = .{ .once = &.{
3924 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4030 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3925 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },4031 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
3926 .{ ._, .p_w, .maxs, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },4032 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ },
3927 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },4033 .{ ._, .f_p, .sub, ._, ._, ._, ._ },
3928 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },4034 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
4035 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
3929 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4036 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3930 } },4037 } },
3931 }, .{4038 }, .{
3932 .required_features = .{ .cmov, null, null, null },4039 .required_features = .{ .x87, null, null, null },
3933 .src_constraints = .{4040 .src_constraints = .{
3934 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },4041 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
3935 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },4042 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4043 .any,
3936 },4044 },
3937 .patterns = &.{4045 .patterns = &.{
3938 .{ .src = .{ .to_mem, .to_mem } },4046 .{ .src = .{ .mem, .mem, .none } },
3939 },4047 },
3940 .extra_temps = .{4048 .extra_temps = .{
3941 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4049 .{ .type = .f80, .kind = .{ .reg = .st6 } },
3942 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },4050 .{ .type = .f80, .kind = .{ .reg = .st7 } },
3943 .unused,4051 .unused,
3944 .unused,4052 .unused,
3945 .unused,4053 .unused,
...@@ -3948,28 +4056,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3948,28 +4056,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3948 .unused,4056 .unused,
3949 .unused,4057 .unused,
3950 },4058 },
3951 .dst_temps = .{.mem},4059 .dst_temps = .{.{ .rc = .x87 }},
3952 .clobbers = .{ .eflags = true },
3953 .each = .{ .once = &.{4060 .each = .{ .once = &.{
3954 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4061 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
3955 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },4062 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
3956 .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },4063 .{ ._, .f_p, .sub, ._, ._, ._, ._ },
3957 .{ ._, ._l, .cmov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },4064 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
3958 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
3959 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3960 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3961 } },4065 } },
3962 }, .{4066 }, .{
4067 .required_features = .{ .x87, null, null, null },
3963 .src_constraints = .{4068 .src_constraints = .{
3964 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },4069 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
3965 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },4070 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4071 .any,
3966 },4072 },
3967 .patterns = &.{4073 .patterns = &.{
3968 .{ .src = .{ .to_mem, .to_mem } },4074 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
3969 },4075 },
3970 .extra_temps = .{4076 .extra_temps = .{
3971 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4077 .{ .type = .f80, .kind = .{ .reg = .st7 } },
3972 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },4078 .unused,
3973 .unused,4079 .unused,
3974 .unused,4080 .unused,
3975 .unused,4081 .unused,
...@@ -3978,91 +4084,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3978,91 +4084,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3978 .unused,4084 .unused,
3979 .unused,4085 .unused,
3980 },4086 },
3981 .dst_temps = .{.mem},4087 .dst_temps = .{.{ .rc = .x87 }},
3982 .clobbers = .{ .eflags = true },
3983 .each = .{ .once = &.{
3984 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3985 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
3986 .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
3987 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },
3988 .{ ._, ._, .mov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
3989 .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
3990 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3991 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3992 } },
3993 }, .{
3994 .required_features = .{ .avx, null, null, null },
3995 .src_constraints = .{
3996 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
3997 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
3998 },
3999 .patterns = &.{
4000 .{ .src = .{ .to_sse, .mem } },
4001 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
4002 .{ .src = .{ .to_sse, .to_sse } },
4003 },
4004 .dst_temps = .{.{ .rc = .sse }},
4005 .each = .{ .once = &.{
4006 .{ ._, .vp_w, .maxu, .dst0x, .src0x, .src1x, ._ },
4007 } },
4008 }, .{
4009 .required_features = .{ .sse4_1, null, null, null },
4010 .src_constraints = .{
4011 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
4012 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
4013 },
4014 .patterns = &.{
4015 .{ .src = .{ .to_mut_sse, .mem } },
4016 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
4017 .{ .src = .{ .to_mut_sse, .to_sse } },
4018 },
4019 .dst_temps = .{.{ .ref = .src0 }},
4020 .each = .{ .once = &.{
4021 .{ ._, .p_w, .maxu, .dst0x, .src1x, ._, ._ },
4022 } },
4023 }, .{
4024 .required_features = .{ .sse2, null, null, null },
4025 .src_constraints = .{
4026 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
4027 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
4028 },
4029 .patterns = &.{
4030 .{ .src = .{ .to_mut_sse, .mem } },
4031 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
4032 .{ .src = .{ .to_mut_sse, .to_sse } },
4033 },
4034 .dst_temps = .{.{ .ref = .src0 }},
4035 .each = .{ .once = &.{
4036 .{ ._, .p_w, .subus, .dst0x, .src1x, ._, ._ },
4037 .{ ._, .p_w, .add, .dst0x, .src1x, ._, ._ },
4038 } },
4039 }, .{
4040 .required_features = .{ .avx2, null, null, null },
4041 .src_constraints = .{
4042 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } },
4043 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } },
4044 },
4045 .patterns = &.{
4046 .{ .src = .{ .to_sse, .mem } },
4047 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
4048 .{ .src = .{ .to_sse, .to_sse } },
4049 },
4050 .dst_temps = .{.{ .rc = .sse }},
4051 .each = .{ .once = &.{4088 .each = .{ .once = &.{
4052 .{ ._, .vp_w, .maxu, .dst0y, .src0y, .src1y, ._ },4089 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
4090 .{ ._, .f_, .subr, .tmp0t, .src1t, ._, ._ },
4091 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
4053 } },4092 } },
4054 }, .{4093 }, .{
4055 .required_features = .{ .avx2, null, null, null },4094 .required_features = .{ .x87, null, null, null },
4056 .src_constraints = .{4095 .src_constraints = .{
4057 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } },4096 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4058 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } },4097 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4098 .any,
4059 },4099 },
4060 .patterns = &.{4100 .patterns = &.{
4061 .{ .src = .{ .to_mem, .to_mem } },4101 .{ .src = .{ .mem, .to_x87, .none } },
4102 .{ .src = .{ .to_x87, .to_x87, .none } },
4062 },4103 },
4063 .extra_temps = .{4104 .extra_temps = .{
4064 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4105 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4065 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },4106 .unused,
4066 .unused,4107 .unused,
4067 .unused,4108 .unused,
4068 .unused,4109 .unused,
...@@ -4071,29 +4112,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4071,29 +4112,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4071 .unused,4112 .unused,
4072 .unused,4113 .unused,
4073 },4114 },
4074 .dst_temps = .{.mem},4115 .dst_temps = .{.{ .rc = .x87 }},
4075 .clobbers = .{ .eflags = true },
4076 .each = .{ .once = &.{4116 .each = .{ .once = &.{
4077 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4117 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
4078 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },4118 .{ ._, .f_, .sub, .tmp0t, .src1t, ._, ._ },
4079 .{ ._, .vp_w, .maxu, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },4119 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
4080 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
4081 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
4082 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4083 } },4120 } },
4084 }, .{4121 }, .{
4085 .required_features = .{ .avx, null, null, null },4122 .required_features = .{ .x87, null, null, null },
4086 .src_constraints = .{4123 .src_constraints = .{
4087 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },4124 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
4088 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },4125 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
4126 .any,
4089 },4127 },
4090 .patterns = &.{4128 .patterns = &.{
4091 .{ .src = .{ .to_mem, .to_mem } },4129 .{ .src = .{ .to_mem, .to_mem, .none } },
4092 },4130 },
4093 .extra_temps = .{4131 .extra_temps = .{
4094 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4132 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4095 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },4133 .{ .type = .f80, .kind = .{ .reg = .st6 } },
4096 .unused,4134 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4097 .unused,4135 .unused,
4098 .unused,4136 .unused,
4099 .unused,4137 .unused,
...@@ -4102,27 +4140,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4102,27 +4140,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4102 .unused,4140 .unused,
4103 },4141 },
4104 .dst_temps = .{.mem},4142 .dst_temps = .{.mem},
4105 .clobbers = .{ .eflags = true },
4106 .each = .{ .once = &.{4143 .each = .{ .once = &.{
4107 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4144 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4108 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },4145 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
4109 .{ ._, .vp_w, .maxu, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },4146 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
4110 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },4147 .{ ._, .f_p, .sub, ._, ._, ._, ._ },
4148 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
4111 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },4149 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4112 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4150 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4113 } },4151 } },
4114 }, .{4152 }, .{
4115 .required_features = .{ .sse4_1, null, null, null },4153 .required_features = .{ .sse, null, null, null },
4116 .src_constraints = .{4154 .src_constraints = .{
4117 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },4155 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
4118 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },4156 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
4157 .any,
4119 },4158 },
4120 .patterns = &.{4159 .patterns = &.{
4121 .{ .src = .{ .to_mem, .to_mem } },4160 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
4122 },4161 },
4162 .call_frame = .{ .alignment = .@"16" },
4123 .extra_temps = .{4163 .extra_temps = .{
4124 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4164 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },
4125 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },4165 .unused,
4126 .unused,4166 .unused,
4127 .unused,4167 .unused,
4128 .unused,4168 .unused,
...@@ -4131,30 +4171,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4131,30 +4171,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4131 .unused,4171 .unused,
4132 .unused,4172 .unused,
4133 },4173 },
4134 .dst_temps = .{.mem},4174 .dst_temps = .{.{ .ref = .src0 }},
4135 .clobbers = .{ .eflags = true },4175 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4136 .each = .{ .once = &.{4176 .each = .{ .once = &.{
4137 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4177 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
4138 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
4139 .{ ._, .p_w, .maxu, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
4140 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
4141 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4142 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4143 } },4178 } },
4144 }, .{4179 }, .{
4145 .required_features = .{ .sse2, null, null, null },4180 .required_features = .{ .avx, null, null, null },
4146 .src_constraints = .{4181 .src_constraints = .{
4147 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },4182 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4148 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },4183 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4184 .any,
4149 },4185 },
4150 .patterns = &.{4186 .patterns = &.{
4151 .{ .src = .{ .to_mem, .to_mem } },4187 .{ .src = .{ .to_mem, .to_mem, .none } },
4152 },4188 },
4189 .call_frame = .{ .alignment = .@"16" },
4153 .extra_temps = .{4190 .extra_temps = .{
4154 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4191 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4155 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },4192 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4156 .unused,4193 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4157 .unused,4194 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },
4158 .unused,4195 .unused,
4159 .unused,4196 .unused,
4160 .unused,4197 .unused,
...@@ -4162,30 +4199,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4162,30 +4199,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4162 .unused,4199 .unused,
4163 },4200 },
4164 .dst_temps = .{.mem},4201 .dst_temps = .{.mem},
4165 .clobbers = .{ .eflags = true },4202 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4166 .each = .{ .once = &.{4203 .each = .{ .once = &.{
4167 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4204 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4168 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },4205 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4169 .{ ._, .p_w, .subus, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },4206 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4170 .{ ._, .p_w, .add, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },4207 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4171 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },4208 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
4172 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },4209 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4173 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4210 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4174 } },4211 } },
4175 }, .{4212 }, .{
4176 .required_features = .{ .cmov, null, null, null },4213 .required_features = .{ .sse2, null, null, null },
4177 .src_constraints = .{4214 .src_constraints = .{
4178 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },4215 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4179 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },4216 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4217 .any,
4180 },4218 },
4181 .patterns = &.{4219 .patterns = &.{
4182 .{ .src = .{ .to_mem, .to_mem } },4220 .{ .src = .{ .to_mem, .to_mem, .none } },
4183 },4221 },
4222 .call_frame = .{ .alignment = .@"16" },
4184 .extra_temps = .{4223 .extra_temps = .{
4185 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4224 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4186 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },4225 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4187 .unused,4226 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4188 .unused,4227 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },
4189 .unused,4228 .unused,
4190 .unused,4229 .unused,
4191 .unused,4230 .unused,
...@@ -4193,29 +4232,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4193,29 +4232,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4193 .unused,4232 .unused,
4194 },4233 },
4195 .dst_temps = .{.mem},4234 .dst_temps = .{.mem},
4196 .clobbers = .{ .eflags = true },4235 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4197 .each = .{ .once = &.{4236 .each = .{ .once = &.{
4198 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4237 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4199 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },4238 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4200 .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },4239 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4201 .{ ._, ._b, .cmov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },4240 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4202 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },4241 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
4203 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },4242 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4204 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4243 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4205 } },4244 } },
4206 }, .{4245 }, .{
4246 .required_features = .{ .sse, null, null, null },
4207 .src_constraints = .{4247 .src_constraints = .{
4208 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },4248 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4209 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },4249 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4250 .any,
4210 },4251 },
4211 .patterns = &.{4252 .patterns = &.{
4212 .{ .src = .{ .to_mem, .to_mem } },4253 .{ .src = .{ .to_mem, .to_mem, .none } },
4213 },4254 },
4255 .call_frame = .{ .alignment = .@"16" },
4214 .extra_temps = .{4256 .extra_temps = .{
4215 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4257 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4216 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },4258 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4217 .unused,4259 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4218 .unused,4260 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },
4219 .unused,4261 .unused,
4220 .unused,4262 .unused,
4221 .unused,4263 .unused,
...@@ -4223,94 +4265,163 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4223,94 +4265,163 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4223 .unused,4265 .unused,
4224 },4266 },
4225 .dst_temps = .{.mem},4267 .dst_temps = .{.mem},
4226 .clobbers = .{ .eflags = true },4268 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4227 .each = .{ .once = &.{4269 .each = .{ .once = &.{
4228 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4270 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4229 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },4271 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4230 .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },4272 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4231 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },4273 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4232 .{ ._, ._, .mov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },4274 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
4233 .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },4275 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4234 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
4235 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4276 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4236 } },4277 } },
4237 }, .{4278 } }) catch |err| switch (err) {
4238 .required_features = .{ .avx, null, null, null },4279 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
4280 @tagName(air_tag),
4281 cg.typeOf(bin_op.lhs).fmt(pt),
4282 ops[0].tracking(cg),
4283 ops[1].tracking(cg),
4284 }),
4285 else => |e| return e,
4286 };
4287 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
4288 },
4289 .mul, .mul_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, .mul) else fallback: {
4290 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
4291 if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airMulDivBinOp(inst, .mul);
4292 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
4293 var res: [1]Temp = undefined;
4294 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
4295 .required_features = .{ .f16c, null, null, null },
4239 .src_constraints = .{4296 .src_constraints = .{
4240 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },4297 .{ .scalar_float = .{ .of = .word, .is = .word } },
4241 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },4298 .{ .scalar_float = .{ .of = .word, .is = .word } },
4299 .any,
4242 },4300 },
4243 .patterns = &.{4301 .patterns = &.{
4244 .{ .src = .{ .to_sse, .mem } },4302 .{ .src = .{ .to_sse, .to_sse, .none } },
4245 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
4246 .{ .src = .{ .to_sse, .to_sse } },
4247 },4303 },
4248 .dst_temps = .{.{ .rc = .sse }},4304 .extra_temps = .{
4305 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
4306 .unused,
4307 .unused,
4308 .unused,
4309 .unused,
4310 .unused,
4311 .unused,
4312 .unused,
4313 .unused,
4314 },
4315 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
4249 .each = .{ .once = &.{4316 .each = .{ .once = &.{
4250 .{ ._, .vp_d, .maxs, .dst0x, .src0x, .src1x, ._ },4317 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
4318 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
4319 .{ ._, .v_ss, .mul, .dst0x, .dst0x, .tmp0d, ._ },
4320 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
4251 } },4321 } },
4252 }, .{4322 }, .{
4253 .required_features = .{ .sse4_1, null, null, null },4323 .required_features = .{ .sse, null, null, null },
4254 .src_constraints = .{4324 .src_constraints = .{
4255 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },4325 .{ .scalar_float = .{ .of = .word, .is = .word } },
4256 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },4326 .{ .scalar_float = .{ .of = .word, .is = .word } },
4327 .any,
4257 },4328 },
4258 .patterns = &.{4329 .patterns = &.{
4259 .{ .src = .{ .to_mut_sse, .mem } },4330 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
4260 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },4331 },
4261 .{ .src = .{ .to_mut_sse, .to_sse } },4332 .call_frame = .{ .alignment = .@"16" },
4333 .extra_temps = .{
4334 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
4335 .unused,
4336 .unused,
4337 .unused,
4338 .unused,
4339 .unused,
4340 .unused,
4341 .unused,
4342 .unused,
4262 },4343 },
4263 .dst_temps = .{.{ .ref = .src0 }},4344 .dst_temps = .{.{ .ref = .src0 }},
4345 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4264 .each = .{ .once = &.{4346 .each = .{ .once = &.{
4265 .{ ._, .p_d, .maxs, .dst0x, .src1x, ._, ._ },4347 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
4266 } },4348 } },
4267 }, .{4349 }, .{
4268 .required_features = .{ .sse2, null, null, null },4350 .required_features = .{ .f16c, null, null, null },
4269 .src_constraints = .{4351 .src_constraints = .{
4270 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },4352 .{ .scalar_float = .{ .of = .qword, .is = .word } },
4271 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },4353 .{ .scalar_float = .{ .of = .qword, .is = .word } },
4354 .any,
4272 },4355 },
4273 .patterns = &.{4356 .patterns = &.{
4274 .{ .src = .{ .to_mut_sse, .mem } },4357 .{ .src = .{ .mem, .mem, .none } },
4275 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },4358 .{ .src = .{ .to_sse, .mem, .none } },
4276 .{ .src = .{ .to_mut_sse, .to_sse } },4359 .{ .src = .{ .mem, .to_sse, .none } },
4360 .{ .src = .{ .to_sse, .to_sse, .none } },
4277 },4361 },
4278 .dst_temps = .{.{ .rc = .sse }},4362 .extra_temps = .{
4363 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
4364 .unused,
4365 .unused,
4366 .unused,
4367 .unused,
4368 .unused,
4369 .unused,
4370 .unused,
4371 .unused,
4372 },
4373 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
4279 .each = .{ .once = &.{4374 .each = .{ .once = &.{
4280 .{ ._, ._dqa, .mov, .dst0x, .src0x, ._, ._ },4375 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
4281 .{ ._, .p_d, .cmpgt, .dst0x, .src1x, ._, ._ },4376 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
4282 .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ },4377 .{ ._, .v_ps, .mul, .dst0x, .dst0x, .tmp0x, ._ },
4283 .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ },4378 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
4284 .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ },
4285 } },4379 } },
4286 }, .{4380 }, .{
4287 .required_features = .{ .avx2, null, null, null },4381 .required_features = .{ .f16c, null, null, null },
4288 .src_constraints = .{4382 .src_constraints = .{
4289 .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } },4383 .{ .scalar_float = .{ .of = .xword, .is = .word } },
4290 .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } },4384 .{ .scalar_float = .{ .of = .xword, .is = .word } },
4385 .any,
4291 },4386 },
4292 .patterns = &.{4387 .patterns = &.{
4293 .{ .src = .{ .to_sse, .mem } },4388 .{ .src = .{ .mem, .mem, .none } },
4294 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },4389 .{ .src = .{ .to_sse, .mem, .none } },
4295 .{ .src = .{ .to_sse, .to_sse } },4390 .{ .src = .{ .mem, .to_sse, .none } },
4391 .{ .src = .{ .to_sse, .to_sse, .none } },
4296 },4392 },
4297 .dst_temps = .{.{ .rc = .sse }},4393 .extra_temps = .{
4394 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
4395 .unused,
4396 .unused,
4397 .unused,
4398 .unused,
4399 .unused,
4400 .unused,
4401 .unused,
4402 .unused,
4403 },
4404 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
4298 .each = .{ .once = &.{4405 .each = .{ .once = &.{
4299 .{ ._, .vp_d, .maxs, .dst0y, .src0y, .src1y, ._ },4406 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
4407 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
4408 .{ ._, .v_ps, .mul, .dst0y, .dst0y, .tmp0y, ._ },
4409 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
4300 } },4410 } },
4301 }, .{4411 }, .{
4302 .required_features = .{ .avx2, null, null, null },4412 .required_features = .{ .f16c, null, null, null },
4303 .src_constraints = .{4413 .src_constraints = .{
4304 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } },4414 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
4305 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } },4415 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
4416 .any,
4306 },4417 },
4307 .patterns = &.{4418 .patterns = &.{
4308 .{ .src = .{ .to_mem, .to_mem } },4419 .{ .src = .{ .to_mem, .to_mem, .none } },
4309 },4420 },
4310 .extra_temps = .{4421 .extra_temps = .{
4311 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4422 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4312 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },4423 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
4313 .unused,4424 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
4314 .unused,4425 .unused,
4315 .unused,4426 .unused,
4316 .unused,4427 .unused,
...@@ -4321,27 +4432,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4321,27 +4432,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4321 .dst_temps = .{.mem},4432 .dst_temps = .{.mem},
4322 .clobbers = .{ .eflags = true },4433 .clobbers = .{ .eflags = true },
4323 .each = .{ .once = &.{4434 .each = .{ .once = &.{
4324 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4435 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4325 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },4436 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4326 .{ ._, .vp_d, .maxs, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },4437 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4327 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },4438 .{ ._, .v_ps, .mul, .tmp1y, .tmp1y, .tmp2y, ._ },
4328 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },4439 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
4440 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4329 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4441 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4330 } },4442 } },
4331 }, .{4443 }, .{
4332 .required_features = .{ .avx, null, null, null },4444 .required_features = .{ .avx, null, null, null },
4333 .src_constraints = .{4445 .src_constraints = .{
4334 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },4446 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4335 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },4447 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4448 .any,
4336 },4449 },
4337 .patterns = &.{4450 .patterns = &.{
4338 .{ .src = .{ .to_mem, .to_mem } },4451 .{ .src = .{ .to_mem, .to_mem, .none } },
4339 },4452 },
4453 .call_frame = .{ .alignment = .@"16" },
4340 .extra_temps = .{4454 .extra_temps = .{
4341 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4455 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4342 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },4456 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
4343 .unused,4457 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
4344 .unused,4458 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
4345 .unused,4459 .unused,
4346 .unused,4460 .unused,
4347 .unused,4461 .unused,
...@@ -4349,29 +4463,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4349,29 +4463,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4349 .unused,4463 .unused,
4350 },4464 },
4351 .dst_temps = .{.mem},4465 .dst_temps = .{.mem},
4352 .clobbers = .{ .eflags = true },4466 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4353 .each = .{ .once = &.{4467 .each = .{ .once = &.{
4354 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4468 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4355 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },4469 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
4356 .{ ._, .vp_d, .maxs, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },4470 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
4357 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },4471 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
4358 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },4472 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4473 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
4474 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
4359 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4475 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4360 } },4476 } },
4361 }, .{4477 }, .{
4362 .required_features = .{ .sse4_1, null, null, null },4478 .required_features = .{ .sse4_1, null, null, null },
4363 .src_constraints = .{4479 .src_constraints = .{
4364 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },4480 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4365 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },4481 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4482 .any,
4366 },4483 },
4367 .patterns = &.{4484 .patterns = &.{
4368 .{ .src = .{ .to_mem, .to_mem } },4485 .{ .src = .{ .to_mem, .to_mem, .none } },
4369 },4486 },
4487 .call_frame = .{ .alignment = .@"16" },
4370 .extra_temps = .{4488 .extra_temps = .{
4371 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4489 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4372 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },4490 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
4373 .unused,4491 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
4374 .unused,4492 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
4375 .unused,4493 .unused,
4376 .unused,4494 .unused,
4377 .unused,4495 .unused,
...@@ -4379,61 +4497,186 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4379,61 +4497,186 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4379 .unused,4497 .unused,
4380 },4498 },
4381 .dst_temps = .{.mem},4499 .dst_temps = .{.mem},
4382 .clobbers = .{ .eflags = true },4500 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4383 .each = .{ .once = &.{4501 .each = .{ .once = &.{
4384 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4502 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4385 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },4503 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
4386 .{ ._, .p_d, .maxs, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },4504 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
4387 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },4505 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
4388 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },4506 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
4507 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4508 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
4509 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
4389 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4510 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4390 } },4511 } },
4391 }, .{4512 }, .{
4392 .required_features = .{ .sse2, null, null, null },4513 .required_features = .{ .sse2, null, null, null },
4393 .src_constraints = .{4514 .src_constraints = .{
4394 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },4515 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4395 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },4516 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4517 .any,
4396 },4518 },
4397 .patterns = &.{4519 .patterns = &.{
4398 .{ .src = .{ .to_mem, .to_mem } },4520 .{ .src = .{ .to_mem, .to_mem, .none } },
4399 },4521 },
4522 .call_frame = .{ .alignment = .@"16" },
4400 .extra_temps = .{4523 .extra_temps = .{
4401 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4524 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4402 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },4525 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
4403 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },4526 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
4527 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
4528 .{ .type = .f16, .kind = .{ .reg = .ax } },
4529 .unused,
4404 .unused,4530 .unused,
4405 .unused,4531 .unused,
4406 .unused,4532 .unused,
4533 },
4534 .dst_temps = .{.mem},
4535 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4536 .each = .{ .once = &.{
4537 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4538 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
4539 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
4540 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
4541 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
4542 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4543 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
4544 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
4545 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
4546 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4547 } },
4548 }, .{
4549 .required_features = .{ .sse, null, null, null },
4550 .src_constraints = .{
4551 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4552 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4553 .any,
4554 },
4555 .patterns = &.{
4556 .{ .src = .{ .to_mem, .to_mem, .none } },
4557 },
4558 .call_frame = .{ .alignment = .@"16" },
4559 .extra_temps = .{
4560 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4561 .{ .type = .f16, .kind = .{ .reg = .ax } },
4562 .{ .type = .f32, .kind = .mem },
4563 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
4564 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
4565 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
4407 .unused,4566 .unused,
4408 .unused,4567 .unused,
4409 .unused,4568 .unused,
4410 },4569 },
4411 .dst_temps = .{.mem},4570 .dst_temps = .{.mem},
4412 .clobbers = .{ .eflags = true },4571 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4413 .each = .{ .once = &.{4572 .each = .{ .once = &.{
4414 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4573 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4415 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },4574 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
4416 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },4575 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
4417 .{ ._, .p_d, .cmpgt, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },4576 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
4418 .{ ._, .p_, .@"and", .tmp2x, .tmp1x, ._, ._ },4577 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
4419 .{ ._, .p_, .andn, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },4578 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
4420 .{ ._, .p_, .@"or", .tmp1x, .tmp2x, ._, ._ },4579 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
4421 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },4580 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
4422 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },4581 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
4582 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
4583 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
4584 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
4423 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4585 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4424 } },4586 } },
4425 }, .{4587 }, .{
4426 .required_features = .{ .cmov, null, null, null },4588 .required_features = .{ .avx, null, null, null },
4427 .src_constraints = .{4589 .src_constraints = .{
4428 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },4590 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
4429 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },4591 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
4592 .any,
4593 },
4594 .patterns = &.{
4595 .{ .src = .{ .to_sse, .mem, .none } },
4596 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
4597 .{ .src = .{ .to_sse, .to_sse, .none } },
4598 },
4599 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
4600 .each = .{ .once = &.{
4601 .{ ._, .v_ss, .mul, .dst0x, .src0x, .src1d, ._ },
4602 } },
4603 }, .{
4604 .required_features = .{ .sse, null, null, null },
4605 .src_constraints = .{
4606 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
4607 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
4608 .any,
4609 },
4610 .patterns = &.{
4611 .{ .src = .{ .to_mut_sse, .mem, .none } },
4612 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
4613 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
4614 },
4615 .dst_temps = .{.{ .ref = .src0 }},
4616 .each = .{ .once = &.{
4617 .{ ._, ._ss, .mul, .dst0x, .src1d, ._, ._ },
4618 } },
4619 }, .{
4620 .required_features = .{ .avx, null, null, null },
4621 .src_constraints = .{
4622 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
4623 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
4624 .any,
4625 },
4626 .patterns = &.{
4627 .{ .src = .{ .to_sse, .mem, .none } },
4628 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
4629 .{ .src = .{ .to_sse, .to_sse, .none } },
4630 },
4631 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
4632 .each = .{ .once = &.{
4633 .{ ._, .v_ps, .mul, .dst0x, .src0x, .src1x, ._ },
4634 } },
4635 }, .{
4636 .required_features = .{ .sse, null, null, null },
4637 .src_constraints = .{
4638 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
4639 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
4640 .any,
4641 },
4642 .patterns = &.{
4643 .{ .src = .{ .to_mut_sse, .mem, .none } },
4644 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
4645 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
4646 },
4647 .dst_temps = .{.{ .ref = .src0 }},
4648 .each = .{ .once = &.{
4649 .{ ._, ._ps, .mul, .dst0x, .src1x, ._, ._ },
4650 } },
4651 }, .{
4652 .required_features = .{ .avx, null, null, null },
4653 .src_constraints = .{
4654 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
4655 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
4656 .any,
4657 },
4658 .patterns = &.{
4659 .{ .src = .{ .to_sse, .mem, .none } },
4660 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
4661 .{ .src = .{ .to_sse, .to_sse, .none } },
4662 },
4663 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
4664 .each = .{ .once = &.{
4665 .{ ._, .v_ps, .mul, .dst0y, .src0y, .src1y, ._ },
4666 } },
4667 }, .{
4668 .required_features = .{ .avx, null, null, null },
4669 .src_constraints = .{
4670 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
4671 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
4672 .any,
4430 },4673 },
4431 .patterns = &.{4674 .patterns = &.{
4432 .{ .src = .{ .to_mem, .to_mem } },4675 .{ .src = .{ .to_mem, .to_mem, .none } },
4433 },4676 },
4434 .extra_temps = .{4677 .extra_temps = .{
4435 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4678 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4436 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },4679 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
4437 .unused,4680 .unused,
4438 .unused,4681 .unused,
4439 .unused,4682 .unused,
...@@ -4445,25 +4688,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4445,25 +4688,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4445 .dst_temps = .{.mem},4688 .dst_temps = .{.mem},
4446 .clobbers = .{ .eflags = true },4689 .clobbers = .{ .eflags = true },
4447 .each = .{ .once = &.{4690 .each = .{ .once = &.{
4448 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4691 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4449 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },4692 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
4450 .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },4693 .{ ._, .v_ps, .mul, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
4451 .{ ._, ._l, .cmov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },4694 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
4452 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },4695 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
4453 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
4454 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4696 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4455 } },4697 } },
4456 }, .{4698 }, .{
4699 .required_features = .{ .sse, null, null, null },
4457 .src_constraints = .{4700 .src_constraints = .{
4458 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },4701 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
4459 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },4702 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
4703 .any,
4460 },4704 },
4461 .patterns = &.{4705 .patterns = &.{
4462 .{ .src = .{ .to_mem, .to_mem } },4706 .{ .src = .{ .to_mem, .to_mem, .none } },
4463 },4707 },
4464 .extra_temps = .{4708 .extra_temps = .{
4465 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4709 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4466 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },4710 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
4467 .unused,4711 .unused,
4468 .unused,4712 .unused,
4469 .unused,4713 .unused,
...@@ -4475,60 +4719,59 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4475,60 +4719,59 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4475 .dst_temps = .{.mem},4719 .dst_temps = .{.mem},
4476 .clobbers = .{ .eflags = true },4720 .clobbers = .{ .eflags = true },
4477 .each = .{ .once = &.{4721 .each = .{ .once = &.{
4478 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4722 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4479 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },4723 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4480 .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },4724 .{ ._, ._ps, .mul, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4481 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },4725 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
4482 .{ ._, ._, .mov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },4726 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4483 .{ .@"1:", ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
4484 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
4485 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4727 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4486 } },4728 } },
4487 }, .{4729 }, .{
4488 .required_features = .{ .avx, null, null, null },4730 .required_features = .{ .avx, null, null, null },
4489 .src_constraints = .{4731 .src_constraints = .{
4490 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },4732 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
4491 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },4733 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
4734 .any,
4492 },4735 },
4493 .patterns = &.{4736 .patterns = &.{
4494 .{ .src = .{ .to_sse, .mem } },4737 .{ .src = .{ .to_sse, .mem, .none } },
4495 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },4738 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
4496 .{ .src = .{ .to_sse, .to_sse } },4739 .{ .src = .{ .to_sse, .to_sse, .none } },
4497 },4740 },
4498 .dst_temps = .{.{ .rc = .sse }},4741 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
4499 .each = .{ .once = &.{4742 .each = .{ .once = &.{
4500 .{ ._, .vp_d, .maxu, .dst0x, .src0x, .src1x, ._ },4743 .{ ._, .v_sd, .mul, .dst0x, .src0x, .src1q, ._ },
4501 } },4744 } },
4502 }, .{4745 }, .{
4503 .required_features = .{ .sse4_1, null, null, null },4746 .required_features = .{ .sse2, null, null, null },
4504 .src_constraints = .{4747 .src_constraints = .{
4505 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },4748 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
4506 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },4749 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
4750 .any,
4507 },4751 },
4508 .patterns = &.{4752 .patterns = &.{
4509 .{ .src = .{ .to_mut_sse, .mem } },4753 .{ .src = .{ .to_mut_sse, .mem, .none } },
4510 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },4754 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
4511 .{ .src = .{ .to_mut_sse, .to_sse } },4755 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
4512 },4756 },
4513 .dst_temps = .{.{ .ref = .src0 }},4757 .dst_temps = .{.{ .ref = .src0 }},
4514 .each = .{ .once = &.{4758 .each = .{ .once = &.{
4515 .{ ._, .p_d, .maxu, .dst0x, .src1x, ._, ._ },4759 .{ ._, ._sd, .mul, .dst0x, .src1q, ._, ._ },
4516 } },4760 } },
4517 }, .{4761 }, .{
4518 .required_features = .{ .sse2, null, null, null },4762 .required_features = .{ .x87, null, null, null },
4519 .src_constraints = .{4763 .src_constraints = .{
4520 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },4764 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
4521 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },4765 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
4766 .any,
4522 },4767 },
4523 .patterns = &.{4768 .patterns = &.{
4524 .{ .src = .{ .to_mut_sse, .mem } },4769 .{ .src = .{ .mem, .mem, .none } },
4525 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
4526 .{ .src = .{ .to_mut_sse, .to_sse } },
4527 },4770 },
4528 .extra_temps = .{4771 .extra_temps = .{
4529 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },4772 .{ .type = .f64, .kind = .{ .reg = .st6 } },
4530 .{ .type = .vector_4_u32, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },4773 .{ .type = .f64, .kind = .{ .reg = .st7 } },
4531 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },4774 .unused,
4532 .unused,4775 .unused,
4533 .unused,4776 .unused,
4534 .unused,4777 .unused,
...@@ -4536,45 +4779,74 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4536,45 +4779,74 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4536 .unused,4779 .unused,
4537 .unused,4780 .unused,
4538 },4781 },
4539 .dst_temps = .{.{ .rc = .sse }},4782 .dst_temps = .{.mem},
4540 .each = .{ .once = &.{4783 .each = .{ .once = &.{
4541 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },4784 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
4542 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },4785 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
4543 .{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ },4786 .{ ._, .f_p, .mul, ._, ._, ._, ._ },
4544 .{ ._, .p_, .xor, .dst0x, .src0x, ._, ._ },4787 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
4545 .{ ._, .p_, .xor, .tmp2x, .src1x, ._, ._ },
4546 .{ ._, .p_d, .cmpgt, .dst0x, .tmp2x, ._, ._ },
4547 .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ },
4548 .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ },
4549 .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ },
4550 } },4788 } },
4551 }, .{4789 }, .{
4552 .required_features = .{ .avx2, null, null, null },4790 .required_features = .{ .avx, null, null, null },
4553 .src_constraints = .{4791 .src_constraints = .{
4554 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } },4792 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
4555 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } },4793 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
4794 .any,
4556 },4795 },
4557 .patterns = &.{4796 .patterns = &.{
4558 .{ .src = .{ .to_sse, .mem } },4797 .{ .src = .{ .to_sse, .mem, .none } },
4559 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },4798 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
4560 .{ .src = .{ .to_sse, .to_sse } },4799 .{ .src = .{ .to_sse, .to_sse, .none } },
4561 },4800 },
4562 .dst_temps = .{.{ .rc = .sse }},4801 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
4563 .each = .{ .once = &.{4802 .each = .{ .once = &.{
4564 .{ ._, .vp_d, .maxu, .dst0y, .src0y, .src1y, ._ },4803 .{ ._, .v_pd, .mul, .dst0x, .src0x, .src1x, ._ },
4565 } },4804 } },
4566 }, .{4805 }, .{
4567 .required_features = .{ .avx2, null, null, null },4806 .required_features = .{ .sse2, null, null, null },
4568 .src_constraints = .{4807 .src_constraints = .{
4569 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } },4808 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
4570 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } },4809 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
4810 .any,
4811 },
4812 .patterns = &.{
4813 .{ .src = .{ .to_mut_sse, .mem, .none } },
4814 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
4815 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
4816 },
4817 .dst_temps = .{.{ .ref = .src0 }},
4818 .each = .{ .once = &.{
4819 .{ ._, ._pd, .mul, .dst0x, .src1x, ._, ._ },
4820 } },
4821 }, .{
4822 .required_features = .{ .avx, null, null, null },
4823 .src_constraints = .{
4824 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
4825 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
4826 .any,
4827 },
4828 .patterns = &.{
4829 .{ .src = .{ .to_sse, .mem, .none } },
4830 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
4831 .{ .src = .{ .to_sse, .to_sse, .none } },
4832 },
4833 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
4834 .each = .{ .once = &.{
4835 .{ ._, .v_pd, .mul, .dst0y, .src0y, .src1y, ._ },
4836 } },
4837 }, .{
4838 .required_features = .{ .avx, null, null, null },
4839 .src_constraints = .{
4840 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
4841 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
4842 .any,
4571 },4843 },
4572 .patterns = &.{4844 .patterns = &.{
4573 .{ .src = .{ .to_mem, .to_mem } },4845 .{ .src = .{ .to_mem, .to_mem, .none } },
4574 },4846 },
4575 .extra_temps = .{4847 .extra_temps = .{
4576 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4848 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4577 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },4849 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
4578 .unused,4850 .unused,
4579 .unused,4851 .unused,
4580 .unused,4852 .unused,
...@@ -4586,25 +4858,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4586,25 +4858,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4586 .dst_temps = .{.mem},4858 .dst_temps = .{.mem},
4587 .clobbers = .{ .eflags = true },4859 .clobbers = .{ .eflags = true },
4588 .each = .{ .once = &.{4860 .each = .{ .once = &.{
4589 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4861 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4590 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },4862 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
4591 .{ ._, .vp_d, .maxu, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },4863 .{ ._, .v_pd, .mul, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
4592 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },4864 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
4593 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },4865 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
4594 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4866 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4595 } },4867 } },
4596 }, .{4868 }, .{
4597 .required_features = .{ .avx, null, null, null },4869 .required_features = .{ .sse2, null, null, null },
4598 .src_constraints = .{4870 .src_constraints = .{
4599 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },4871 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
4600 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },4872 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
4873 .any,
4601 },4874 },
4602 .patterns = &.{4875 .patterns = &.{
4603 .{ .src = .{ .to_mem, .to_mem } },4876 .{ .src = .{ .to_mem, .to_mem, .none } },
4604 },4877 },
4605 .extra_temps = .{4878 .extra_temps = .{
4606 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4879 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4607 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },4880 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
4608 .unused,4881 .unused,
4609 .unused,4882 .unused,
4610 .unused,4883 .unused,
...@@ -4616,26 +4889,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4616,26 +4889,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4616 .dst_temps = .{.mem},4889 .dst_temps = .{.mem},
4617 .clobbers = .{ .eflags = true },4890 .clobbers = .{ .eflags = true },
4618 .each = .{ .once = &.{4891 .each = .{ .once = &.{
4619 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4892 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4620 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },4893 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4621 .{ ._, .vp_d, .maxu, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },4894 .{ ._, ._pd, .mul, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4622 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },4895 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
4623 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },4896 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4624 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4897 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4625 } },4898 } },
4626 }, .{4899 }, .{
4627 .required_features = .{ .sse4_1, null, null, null },4900 .required_features = .{ .x87, null, null, null },
4628 .src_constraints = .{4901 .src_constraints = .{
4629 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },4902 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
4630 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },4903 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
4904 .any,
4631 },4905 },
4632 .patterns = &.{4906 .patterns = &.{
4633 .{ .src = .{ .to_mem, .to_mem } },4907 .{ .src = .{ .to_mem, .to_mem, .none } },
4634 },4908 },
4635 .extra_temps = .{4909 .extra_temps = .{
4636 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4910 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4637 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },4911 .{ .type = .f64, .kind = .{ .reg = .st6 } },
4638 .unused,4912 .{ .type = .f64, .kind = .{ .reg = .st7 } },
4639 .unused,4913 .unused,
4640 .unused,4914 .unused,
4641 .unused,4915 .unused,
...@@ -4644,67 +4918,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4644,67 +4918,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4644 .unused,4918 .unused,
4645 },4919 },
4646 .dst_temps = .{.mem},4920 .dst_temps = .{.mem},
4647 .clobbers = .{ .eflags = true },
4648 .each = .{ .once = &.{4921 .each = .{ .once = &.{
4649 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4922 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4650 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },4923 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
4651 .{ ._, .p_d, .maxu, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },4924 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ },
4652 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },4925 .{ ._, .f_p, .mul, ._, ._, ._, ._ },
4653 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },4926 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
4927 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
4654 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4928 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4655 } },4929 } },
4656 }, .{4930 }, .{
4657 .required_features = .{ .sse2, null, null, null },4931 .required_features = .{ .x87, null, null, null },
4658 .src_constraints = .{4932 .src_constraints = .{
4659 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },4933 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4660 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },4934 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4935 .any,
4661 },4936 },
4662 .patterns = &.{4937 .patterns = &.{
4663 .{ .src = .{ .to_mem, .to_mem } },4938 .{ .src = .{ .mem, .mem, .none } },
4664 },4939 },
4665 .extra_temps = .{4940 .extra_temps = .{
4666 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4941 .{ .type = .f80, .kind = .{ .reg = .st6 } },
4667 .{ .type = .vector_4_u32, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },4942 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4668 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
4669 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
4670 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
4671 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
4672 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
4673 .unused,4943 .unused,
4674 .unused,4944 .unused,
4675 },4945 .unused,
4676 .dst_temps = .{.mem},4946 .unused,
4677 .clobbers = .{ .eflags = true },4947 .unused,
4948 .unused,
4949 .unused,
4950 },
4951 .dst_temps = .{.{ .rc = .x87 }},
4678 .each = .{ .once = &.{4952 .each = .{ .once = &.{
4679 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },4953 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
4680 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },4954 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
4681 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4955 .{ ._, .f_p, .mul, ._, ._, ._, ._ },
4682 .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },4956 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
4683 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
4684 .{ ._, ._dqa, .mov, .tmp5x, .tmp3x, ._, ._ },
4685 .{ ._, ._dqa, .mov, .tmp6x, .tmp4x, ._, ._ },
4686 .{ ._, .p_, .xor, .tmp5x, .tmp2x, ._, ._ },
4687 .{ ._, .p_, .xor, .tmp6x, .tmp2x, ._, ._ },
4688 .{ ._, .p_d, .cmpgt, .tmp5x, .tmp6x, ._, ._ },
4689 .{ ._, .p_, .@"and", .tmp3x, .tmp5x, ._, ._ },
4690 .{ ._, .p_, .andn, .tmp5x, .tmp4x, ._, ._ },
4691 .{ ._, .p_, .@"or", .tmp3x, .tmp5x, ._, ._ },
4692 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
4693 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4694 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4695 } },4957 } },
4696 }, .{4958 }, .{
4697 .required_features = .{ .cmov, null, null, null },4959 .required_features = .{ .x87, null, null, null },
4698 .src_constraints = .{4960 .src_constraints = .{
4699 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },4961 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4700 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },4962 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4963 .any,
4701 },4964 },
4702 .patterns = &.{4965 .patterns = &.{
4703 .{ .src = .{ .to_mem, .to_mem } },4966 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
4967 .{ .src = .{ .mem, .to_x87, .none } },
4968 .{ .src = .{ .to_x87, .to_x87, .none } },
4704 },4969 },
4705 .extra_temps = .{4970 .extra_temps = .{
4706 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4971 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4707 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },4972 .unused,
4708 .unused,4973 .unused,
4709 .unused,4974 .unused,
4710 .unused,4975 .unused,
...@@ -4713,29 +4978,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4713,29 +4978,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4713 .unused,4978 .unused,
4714 .unused,4979 .unused,
4715 },4980 },
4716 .dst_temps = .{.mem},4981 .dst_temps = .{.{ .rc = .x87 }},
4717 .clobbers = .{ .eflags = true },
4718 .each = .{ .once = &.{4982 .each = .{ .once = &.{
4719 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4983 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
4720 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },4984 .{ ._, .f_, .mul, .tmp0t, .src1t, ._, ._ },
4721 .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },4985 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
4722 .{ ._, ._b, .cmov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
4723 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
4724 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
4725 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4726 } },4986 } },
4727 }, .{4987 }, .{
4988 .required_features = .{ .x87, null, null, null },
4728 .src_constraints = .{4989 .src_constraints = .{
4729 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },4990 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
4730 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },4991 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
4992 .any,
4731 },4993 },
4732 .patterns = &.{4994 .patterns = &.{
4733 .{ .src = .{ .to_mem, .to_mem } },4995 .{ .src = .{ .to_mem, .to_mem, .none } },
4734 },4996 },
4735 .extra_temps = .{4997 .extra_temps = .{
4736 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4998 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4737 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },4999 .{ .type = .f80, .kind = .{ .reg = .st6 } },
4738 .unused,5000 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4739 .unused,5001 .unused,
4740 .unused,5002 .unused,
4741 .unused,5003 .unused,
...@@ -4744,44 +5006,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4744,44 +5006,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4744 .unused,5006 .unused,
4745 },5007 },
4746 .dst_temps = .{.mem},5008 .dst_temps = .{.mem},
4747 .clobbers = .{ .eflags = true },
4748 .each = .{ .once = &.{5009 .each = .{ .once = &.{
4749 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5010 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4750 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },5011 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
4751 .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },5012 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
4752 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },5013 .{ ._, .f_p, .mul, ._, ._, ._, ._ },
4753 .{ ._, ._, .mov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },5014 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
4754 .{ .@"1:", ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },5015 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4755 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
4756 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5016 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4757 } },5017 } },
4758 }, .{5018 }, .{
4759 .required_features = .{ .avx, null, null, null },5019 .required_features = .{ .sse, null, null, null },
4760 .src_constraints = .{
4761 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
4762 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
4763 },
4764 .patterns = &.{
4765 .{ .src = .{ .to_sse, .to_sse } },
4766 },
4767 .dst_temps = .{.{ .rc = .sse }},
4768 .each = .{ .once = &.{
4769 .{ ._, .vp_q, .cmpgt, .dst0x, .src1x, .src0x, ._ },
4770 .{ ._, .vp_b, .blendv, .dst0x, .src0x, .src1x, .dst0x },
4771 } },
4772 }, .{
4773 .required_features = .{ .sse4_2, null, null, null },
4774 .src_constraints = .{5020 .src_constraints = .{
4775 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },5021 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
4776 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },5022 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
5023 .any,
4777 },5024 },
4778 .patterns = &.{5025 .patterns = &.{
4779 .{ .src = .{ .to_mut_sse, .mem } },5026 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
4780 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
4781 .{ .src = .{ .to_mut_sse, .to_sse } },
4782 },5027 },
5028 .call_frame = .{ .alignment = .@"16" },
4783 .extra_temps = .{5029 .extra_temps = .{
4784 .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } },5030 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
4785 .unused,5031 .unused,
4786 .unused,5032 .unused,
4787 .unused,5033 .unused,
...@@ -4792,39 +5038,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4792,39 +5038,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4792 .unused,5038 .unused,
4793 },5039 },
4794 .dst_temps = .{.{ .ref = .src0 }},5040 .dst_temps = .{.{ .ref = .src0 }},
5041 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4795 .each = .{ .once = &.{5042 .each = .{ .once = &.{
4796 .{ ._, ._dqa, .mov, .tmp0x, .src1x, ._, ._ },5043 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
4797 .{ ._, .p_q, .cmpgt, .tmp0x, .src0x, ._, ._ },
4798 .{ ._, .p_b, .blendv, .dst0x, .src1x, .tmp0x, ._ },
4799 } },
4800 }, .{
4801 .required_features = .{ .avx2, null, null, null },
4802 .src_constraints = .{
4803 .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } },
4804 .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } },
4805 },
4806 .patterns = &.{
4807 .{ .src = .{ .to_sse, .to_sse } },
4808 },
4809 .dst_temps = .{.{ .rc = .sse }},
4810 .each = .{ .once = &.{
4811 .{ ._, .vp_q, .cmpgt, .dst0y, .src1y, .src0y, ._ },
4812 .{ ._, .vp_b, .blendv, .dst0y, .src0y, .src1y, .dst0y },
4813 } },5044 } },
4814 }, .{5045 }, .{
4815 .required_features = .{ .avx2, null, null, null },5046 .required_features = .{ .avx, null, null, null },
4816 .src_constraints = .{5047 .src_constraints = .{
4817 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } },5048 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4818 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } },5049 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5050 .any,
4819 },5051 },
4820 .patterns = &.{5052 .patterns = &.{
4821 .{ .src = .{ .to_mem, .to_mem } },5053 .{ .src = .{ .to_mem, .to_mem, .none } },
4822 },5054 },
5055 .call_frame = .{ .alignment = .@"16" },
4823 .extra_temps = .{5056 .extra_temps = .{
4824 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5057 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4825 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },5058 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4826 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },5059 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4827 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },5060 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
4828 .unused,5061 .unused,
4829 .unused,5062 .unused,
4830 .unused,5063 .unused,
...@@ -4832,31 +5065,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4832,31 +5065,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4832 .unused,5065 .unused,
4833 },5066 },
4834 .dst_temps = .{.mem},5067 .dst_temps = .{.mem},
4835 .clobbers = .{ .eflags = true },5068 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4836 .each = .{ .once = &.{5069 .each = .{ .once = &.{
4837 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5070 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4838 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },5071 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4839 .{ ._, .v_dqa, .mov, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },5072 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4840 .{ ._, .vp_q, .cmpgt, .tmp3y, .tmp2y, .tmp1y, ._ },5073 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4841 .{ ._, .vp_b, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },5074 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
4842 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },5075 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4843 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
4844 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5076 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4845 } },5077 } },
4846 }, .{5078 }, .{
4847 .required_features = .{ .avx, null, null, null },5079 .required_features = .{ .sse2, null, null, null },
4848 .src_constraints = .{5080 .src_constraints = .{
4849 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },5081 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4850 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },5082 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5083 .any,
4851 },5084 },
4852 .patterns = &.{5085 .patterns = &.{
4853 .{ .src = .{ .to_mem, .to_mem } },5086 .{ .src = .{ .to_mem, .to_mem, .none } },
4854 },5087 },
5088 .call_frame = .{ .alignment = .@"16" },
4855 .extra_temps = .{5089 .extra_temps = .{
4856 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5090 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4857 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },5091 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4858 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },5092 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4859 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },5093 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
4860 .unused,5094 .unused,
4861 .unused,5095 .unused,
4862 .unused,5096 .unused,
...@@ -4864,31 +5098,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4864,31 +5098,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4864 .unused,5098 .unused,
4865 },5099 },
4866 .dst_temps = .{.mem},5100 .dst_temps = .{.mem},
4867 .clobbers = .{ .eflags = true },5101 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4868 .each = .{ .once = &.{5102 .each = .{ .once = &.{
4869 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5103 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4870 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },5104 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4871 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },5105 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4872 .{ ._, .vp_q, .cmpgt, .tmp3x, .tmp2x, .tmp1x, ._ },5106 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4873 .{ ._, .vp_b, .blendv, .tmp1x, .tmp1x, .tmp2x, .tmp3x },5107 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
4874 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
4875 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },5108 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4876 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5109 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4877 } },5110 } },
4878 }, .{5111 }, .{
4879 .required_features = .{ .sse4_2, null, null, null },5112 .required_features = .{ .sse, null, null, null },
4880 .src_constraints = .{5113 .src_constraints = .{
4881 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },5114 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4882 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },5115 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5116 .any,
4883 },5117 },
4884 .patterns = &.{5118 .patterns = &.{
4885 .{ .src = .{ .to_mem, .to_mem } },5119 .{ .src = .{ .to_mem, .to_mem, .none } },
4886 },5120 },
5121 .call_frame = .{ .alignment = .@"16" },
4887 .extra_temps = .{5122 .extra_temps = .{
4888 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5123 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4889 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },5124 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4890 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },5125 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4891 .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } },5126 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
4892 .unused,5127 .unused,
4893 .unused,5128 .unused,
4894 .unused,5129 .unused,
...@@ -4896,30 +5131,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4896,30 +5131,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4896 .unused,5131 .unused,
4897 },5132 },
4898 .dst_temps = .{.mem},5133 .dst_temps = .{.mem},
4899 .clobbers = .{ .eflags = true },5134 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4900 .each = .{ .once = &.{5135 .each = .{ .once = &.{
4901 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5136 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4902 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },5137 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4903 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },5138 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4904 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },5139 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4905 .{ ._, .p_q, .cmpgt, .tmp3x, .tmp1x, ._, ._ },5140 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
4906 .{ ._, .p_b, .blendv, .tmp1x, .tmp2x, .tmp3x, ._ },
4907 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
4908 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },5141 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4909 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5142 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4910 } },5143 } },
4911 }, .{5144 } }) catch |err| switch (err) {
4912 .required_features = .{ .@"64bit", .cmov, null, null },5145 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
5146 @tagName(air_tag),
5147 cg.typeOf(bin_op.lhs).fmt(pt),
5148 ops[0].tracking(cg),
5149 ops[1].tracking(cg),
5150 }),
5151 else => |e| return e,
5152 };
5153 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
5154 },
5155 .div_float, .div_float_optimized, .div_exact, .div_exact_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, switch (air_tag) {
5156 else => unreachable,
5157 .div_float, .div_float_optimized => .div_float,
5158 .div_exact, .div_exact_optimized => .div_exact,
5159 }) else fallback: {
5160 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
5161 if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airMulDivBinOp(inst, .div_exact);
5162 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
5163 var res: [1]Temp = undefined;
5164 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
5165 .required_features = .{ .f16c, null, null, null },
4913 .src_constraints = .{5166 .src_constraints = .{
4914 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },5167 .{ .scalar_float = .{ .of = .word, .is = .word } },
4915 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },5168 .{ .scalar_float = .{ .of = .word, .is = .word } },
5169 .any,
4916 },5170 },
4917 .patterns = &.{5171 .patterns = &.{
4918 .{ .src = .{ .to_mem, .to_mem } },5172 .{ .src = .{ .to_sse, .to_sse, .none } },
4919 },5173 },
4920 .extra_temps = .{5174 .extra_temps = .{
4921 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5175 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
4922 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },5176 .unused,
4923 .unused,5177 .unused,
4924 .unused,5178 .unused,
4925 .unused,5179 .unused,
...@@ -4928,29 +5182,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4928,29 +5182,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4928 .unused,5182 .unused,
4929 .unused,5183 .unused,
4930 },5184 },
4931 .dst_temps = .{.mem},5185 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
4932 .clobbers = .{ .eflags = true },
4933 .each = .{ .once = &.{5186 .each = .{ .once = &.{
4934 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5187 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
4935 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },5188 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
4936 .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },5189 .{ ._, .v_ss, .div, .dst0x, .dst0x, .tmp0d, ._ },
4937 .{ ._, ._l, .cmov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },5190 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
4938 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
4939 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
4940 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4941 } },5191 } },
4942 }, .{5192 }, .{
4943 .required_features = .{ .@"64bit", null, null, null },5193 .required_features = .{ .sse, null, null, null },
4944 .src_constraints = .{5194 .src_constraints = .{
4945 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },5195 .{ .scalar_float = .{ .of = .word, .is = .word } },
4946 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },5196 .{ .scalar_float = .{ .of = .word, .is = .word } },
5197 .any,
4947 },5198 },
4948 .patterns = &.{5199 .patterns = &.{
4949 .{ .src = .{ .to_mem, .to_mem } },5200 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
4950 },5201 },
5202 .call_frame = .{ .alignment = .@"16" },
4951 .extra_temps = .{5203 .extra_temps = .{
4952 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5204 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
4953 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },5205 .unused,
4954 .unused,5206 .unused,
4955 .unused,5207 .unused,
4956 .unused,5208 .unused,
...@@ -4959,33 +5211,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4959,33 +5211,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4959 .unused,5211 .unused,
4960 .unused,5212 .unused,
4961 },5213 },
4962 .dst_temps = .{.mem},5214 .dst_temps = .{.{ .ref = .src0 }},
4963 .clobbers = .{ .eflags = true },5215 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4964 .each = .{ .once = &.{5216 .each = .{ .once = &.{
4965 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5217 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
4966 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
4967 .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
4968 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },
4969 .{ ._, ._, .mov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
4970 .{ .@"1:", ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
4971 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
4972 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4973 } },5218 } },
4974 }, .{5219 }, .{
4975 .required_features = .{ .avx, null, null, null },5220 .required_features = .{ .f16c, null, null, null },
4976 .src_constraints = .{5221 .src_constraints = .{
4977 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },5222 .{ .scalar_float = .{ .of = .qword, .is = .word } },
4978 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },5223 .{ .scalar_float = .{ .of = .qword, .is = .word } },
5224 .any,
4979 },5225 },
4980 .patterns = &.{5226 .patterns = &.{
4981 .{ .src = .{ .to_sse, .mem } },5227 .{ .src = .{ .mem, .mem, .none } },
4982 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },5228 .{ .src = .{ .to_sse, .mem, .none } },
4983 .{ .src = .{ .to_sse, .to_sse } },5229 .{ .src = .{ .mem, .to_sse, .none } },
5230 .{ .src = .{ .to_sse, .to_sse, .none } },
4984 },5231 },
4985 .extra_temps = .{5232 .extra_temps = .{
4986 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },5233 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
4987 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },5234 .unused,
4988 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },5235 .unused,
4989 .unused,5236 .unused,
4990 .unused,5237 .unused,
4991 .unused,5238 .unused,
...@@ -4993,62 +5240,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4993,62 +5240,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4993 .unused,5240 .unused,
4994 .unused,5241 .unused,
4995 },5242 },
4996 .dst_temps = .{.{ .rc = .sse }},5243 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
4997 .each = .{ .once = &.{5244 .each = .{ .once = &.{
4998 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },5245 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
4999 .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },5246 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
5000 .{ ._, .vp_, .xor, .dst0x, .tmp2x, .src0x, ._ },5247 .{ ._, .v_ps, .div, .dst0x, .dst0x, .tmp0x, ._ },
5001 .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .src1x, ._ },5248 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
5002 .{ ._, .vp_q, .cmpgt, .dst0x, .tmp2x, .dst0x, ._ },
5003 .{ ._, .vp_b, .blendv, .dst0x, .src0x, .src1x, .dst0x },
5004 } },5249 } },
5005 }, .{5250 }, .{
5006 .required_features = .{ .sse4_2, null, null, null },5251 .required_features = .{ .f16c, null, null, null },
5007 .src_constraints = .{5252 .src_constraints = .{
5008 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },5253 .{ .scalar_float = .{ .of = .xword, .is = .word } },
5009 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },5254 .{ .scalar_float = .{ .of = .xword, .is = .word } },
5255 .any,
5010 },5256 },
5011 .patterns = &.{5257 .patterns = &.{
5012 .{ .src = .{ .to_mut_sse, .mem } },5258 .{ .src = .{ .mem, .mem, .none } },
5013 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },5259 .{ .src = .{ .to_sse, .mem, .none } },
5014 .{ .src = .{ .to_mut_sse, .to_sse } },5260 .{ .src = .{ .mem, .to_sse, .none } },
5261 .{ .src = .{ .to_sse, .to_sse, .none } },
5015 },5262 },
5016 .extra_temps = .{5263 .extra_temps = .{
5017 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },5264 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
5018 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },5265 .unused,
5019 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },5266 .unused,
5020 .{ .type = .vector_2_u64, .kind = .{ .reg = .xmm0 } },5267 .unused,
5021 .unused,5268 .unused,
5022 .unused,5269 .unused,
5023 .unused,5270 .unused,
5024 .unused,5271 .unused,
5025 .unused,5272 .unused,
5026 },5273 },
5027 .dst_temps = .{.{ .ref = .src0 }},5274 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5028 .each = .{ .once = &.{5275 .each = .{ .once = &.{
5029 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },5276 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
5030 .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },5277 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
5031 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },5278 .{ ._, .v_ps, .div, .dst0y, .dst0y, .tmp0y, ._ },
5032 .{ ._, .p_, .xor, .tmp2x, .src0x, ._, ._ },5279 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
5033 .{ ._, .p_, .xor, .tmp3x, .src1x, ._, ._ },
5034 .{ ._, .p_q, .cmpgt, .tmp3x, .tmp2x, ._, ._ },
5035 .{ ._, .p_b, .blendv, .dst0x, .src1x, .tmp3x, ._ },
5036 } },5280 } },
5037 }, .{5281 }, .{
5038 .required_features = .{ .avx2, null, null, null },5282 .required_features = .{ .f16c, null, null, null },
5039 .src_constraints = .{5283 .src_constraints = .{
5040 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } },5284 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
5041 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } },5285 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
5286 .any,
5042 },5287 },
5043 .patterns = &.{5288 .patterns = &.{
5044 .{ .src = .{ .to_sse, .mem } },5289 .{ .src = .{ .to_mem, .to_mem, .none } },
5045 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
5046 .{ .src = .{ .to_sse, .to_sse } },
5047 },5290 },
5048 .extra_temps = .{5291 .extra_temps = .{
5049 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },5292 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5050 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },5293 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
5051 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },5294 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
5052 .unused,5295 .unused,
5053 .unused,5296 .unused,
5054 .unused,5297 .unused,
...@@ -5056,277 +5299,251 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5056,277 +5299,251 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5056 .unused,5299 .unused,
5057 .unused,5300 .unused,
5058 },5301 },
5059 .dst_temps = .{.{ .rc = .sse }},5302 .dst_temps = .{.mem},
5303 .clobbers = .{ .eflags = true },
5060 .each = .{ .once = &.{5304 .each = .{ .once = &.{
5061 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },5305 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5062 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ },5306 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5063 .{ ._, .vp_, .xor, .dst0y, .tmp2y, .src0y, ._ },5307 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5064 .{ ._, .vp_, .xor, .tmp2y, .tmp2y, .src1y, ._ },5308 .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .tmp2y, ._ },
5065 .{ ._, .vp_q, .cmpgt, .dst0y, .tmp2y, .dst0y, ._ },5309 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
5066 .{ ._, .vp_b, .blendv, .dst0y, .src0y, .src1y, .dst0y },5310 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5311 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5067 } },5312 } },
5068 }, .{5313 }, .{
5069 .required_features = .{ .avx2, null, null, null },5314 .required_features = .{ .avx, null, null, null },
5070 .src_constraints = .{5315 .src_constraints = .{
5071 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } },5316 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5072 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } },5317 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5318 .any,
5073 },5319 },
5074 .patterns = &.{5320 .patterns = &.{
5075 .{ .src = .{ .to_mem, .to_mem } },5321 .{ .src = .{ .to_mem, .to_mem, .none } },
5076 },5322 },
5323 .call_frame = .{ .alignment = .@"16" },
5077 .extra_temps = .{5324 .extra_temps = .{
5078 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5325 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5079 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },5326 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5080 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },5327 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
5081 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },5328 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
5082 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },5329 .unused,
5083 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },5330 .unused,
5084 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },5331 .unused,
5085 .unused,5332 .unused,
5086 .unused,5333 .unused,
5087 },5334 },
5088 .dst_temps = .{.mem},5335 .dst_temps = .{.mem},
5089 .clobbers = .{ .eflags = true },5336 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5090 .each = .{ .once = &.{5337 .each = .{ .once = &.{
5091 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },5338 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5092 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ },5339 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
5093 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5340 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
5094 .{ .@"0:", .v_dqa, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },5341 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
5095 .{ ._, .v_dqa, .mov, .tmp4y, .memia(.src1y, .tmp0, .add_size), ._, ._ },5342 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5096 .{ ._, .vp_, .xor, .tmp5y, .tmp3y, .tmp2y, ._ },5343 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
5097 .{ ._, .vp_, .xor, .tmp6y, .tmp4y, .tmp2y, ._ },5344 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
5098 .{ ._, .vp_q, .cmpgt, .tmp5y, .tmp6y, .tmp5y, ._ },
5099 .{ ._, .vp_b, .blendv, .tmp3y, .tmp3y, .tmp4y, .tmp5y },
5100 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
5101 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
5102 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5345 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5103 } },5346 } },
5104 }, .{5347 }, .{
5105 .required_features = .{ .avx, null, null, null },5348 .required_features = .{ .sse4_1, null, null, null },
5106 .src_constraints = .{5349 .src_constraints = .{
5107 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },5350 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5108 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },5351 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5352 .any,
5109 },5353 },
5110 .patterns = &.{5354 .patterns = &.{
5111 .{ .src = .{ .to_mem, .to_mem } },5355 .{ .src = .{ .to_mem, .to_mem, .none } },
5112 },5356 },
5357 .call_frame = .{ .alignment = .@"16" },
5113 .extra_temps = .{5358 .extra_temps = .{
5114 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5359 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5115 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },5360 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5116 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },5361 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
5117 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },5362 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
5118 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },5363 .unused,
5119 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },5364 .unused,
5120 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },5365 .unused,
5121 .unused,5366 .unused,
5122 .unused,5367 .unused,
5123 },5368 },
5124 .dst_temps = .{.mem},5369 .dst_temps = .{.mem},
5125 .clobbers = .{ .eflags = true },5370 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5126 .each = .{ .once = &.{5371 .each = .{ .once = &.{
5127 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },5372 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5128 .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },5373 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
5129 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5374 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
5130 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },5375 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
5131 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },5376 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
5132 .{ ._, .vp_, .xor, .tmp5x, .tmp3x, .tmp2x, ._ },5377 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5133 .{ ._, .vp_, .xor, .tmp6x, .tmp4x, .tmp2x, ._ },5378 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
5134 .{ ._, .vp_q, .cmpgt, .tmp5x, .tmp6x, .tmp5x, ._ },5379 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
5135 .{ ._, .vp_b, .blendv, .tmp3x, .tmp3x, .tmp4x, .tmp5x },
5136 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
5137 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5138 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5380 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5139 } },5381 } },
5140 }, .{5382 }, .{
5141 .required_features = .{ .sse4_2, null, null, null },5383 .required_features = .{ .sse2, null, null, null },
5142 .src_constraints = .{5384 .src_constraints = .{
5143 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },5385 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5144 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },5386 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5387 .any,
5145 },5388 },
5146 .patterns = &.{5389 .patterns = &.{
5147 .{ .src = .{ .to_mem, .to_mem } },5390 .{ .src = .{ .to_mem, .to_mem, .none } },
5148 },5391 },
5392 .call_frame = .{ .alignment = .@"16" },
5149 .extra_temps = .{5393 .extra_temps = .{
5150 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5394 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5151 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },5395 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5152 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },5396 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
5153 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },5397 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
5154 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },5398 .{ .type = .f16, .kind = .{ .reg = .ax } },
5155 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },5399 .unused,
5156 .{ .type = .vector_2_u64, .kind = .{ .reg = .xmm0 } },5400 .unused,
5157 .unused,5401 .unused,
5158 .unused,5402 .unused,
5159 },5403 },
5160 .dst_temps = .{.mem},5404 .dst_temps = .{.mem},
5161 .clobbers = .{ .eflags = true },5405 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5162 .each = .{ .once = &.{5406 .each = .{ .once = &.{
5163 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },5407 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5164 .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },5408 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
5165 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5409 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
5166 .{ .@"0:", ._dqa, .mov, .tmp5x, .tmp2x, ._, ._ },5410 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
5167 .{ ._, ._dqa, .mov, .tmp6x, .tmp2x, ._, ._ },5411 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
5168 .{ ._, ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },5412 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5169 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },5413 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
5170 .{ ._, .p_, .xor, .tmp5x, .tmp3x, ._, ._ },5414 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
5171 .{ ._, .p_, .xor, .tmp6x, .tmp4x, ._, ._ },5415 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
5172 .{ ._, .p_q, .cmpgt, .tmp6x, .tmp5x, ._, ._ },
5173 .{ ._, .p_b, .blendv, .tmp3x, .tmp4x, .tmp6x, ._ },
5174 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
5175 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5176 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5416 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5177 } },5417 } },
5178 }, .{5418 }, .{
5179 .required_features = .{ .@"64bit", .cmov, null, null },5419 .required_features = .{ .sse, null, null, null },
5180 .src_constraints = .{5420 .src_constraints = .{
5181 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },5421 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5182 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },5422 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5423 .any,
5183 },5424 },
5184 .patterns = &.{5425 .patterns = &.{
5185 .{ .src = .{ .to_mem, .to_mem } },5426 .{ .src = .{ .to_mem, .to_mem, .none } },
5186 },5427 },
5428 .call_frame = .{ .alignment = .@"16" },
5187 .extra_temps = .{5429 .extra_temps = .{
5188 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5430 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5189 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },5431 .{ .type = .f16, .kind = .{ .reg = .ax } },
5190 .unused,5432 .{ .type = .f32, .kind = .mem },
5191 .unused,5433 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5192 .unused,5434 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
5193 .unused,5435 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
5194 .unused,5436 .unused,
5195 .unused,5437 .unused,
5196 .unused,5438 .unused,
5197 },5439 },
5198 .dst_temps = .{.mem},5440 .dst_temps = .{.mem},
5199 .clobbers = .{ .eflags = true },5441 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5200 .each = .{ .once = &.{5442 .each = .{ .once = &.{
5201 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5443 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5202 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },5444 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
5203 .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },5445 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
5204 .{ ._, ._b, .cmov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },5446 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
5205 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },5447 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
5206 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },5448 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
5449 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
5450 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
5451 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
5452 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
5453 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
5454 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
5207 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5455 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5208 } },5456 } },
5209 }, .{5457 }, .{
5210 .required_features = .{ .@"64bit", null, null, null },5458 .required_features = .{ .avx, null, null, null },
5211 .src_constraints = .{5459 .src_constraints = .{
5212 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },5460 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5213 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },5461 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5462 .any,
5214 },5463 },
5215 .patterns = &.{5464 .patterns = &.{
5216 .{ .src = .{ .to_mem, .to_mem } },5465 .{ .src = .{ .to_sse, .mem, .none } },
5466 .{ .src = .{ .to_sse, .to_sse, .none } },
5217 },5467 },
5218 .extra_temps = .{5468 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5219 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5469 .each = .{ .once = &.{
5220 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },5470 .{ ._, .v_ss, .div, .dst0x, .src0x, .src1d, ._ },
5221 .unused,5471 } },
5222 .unused,5472 }, .{
5223 .unused,5473 .required_features = .{ .sse, null, null, null },
5224 .unused,5474 .src_constraints = .{
5225 .unused,5475 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5226 .unused,5476 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5227 .unused,5477 .any,
5228 },5478 },
5229 .dst_temps = .{.mem},5479 .patterns = &.{
5230 .clobbers = .{ .eflags = true },5480 .{ .src = .{ .to_mut_sse, .mem, .none } },
5481 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
5482 },
5483 .dst_temps = .{.{ .ref = .src0 }},
5231 .each = .{ .once = &.{5484 .each = .{ .once = &.{
5232 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5485 .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ },
5233 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
5234 .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5235 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
5236 .{ ._, ._, .mov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5237 .{ .@"1:", ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
5238 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
5239 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5240 } },5486 } },
5241 }, .{5487 }, .{
5242 .required_features = .{ .@"64bit", .cmov, null, null },5488 .required_features = .{ .avx, null, null, null },
5243 .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int },5489 .src_constraints = .{
5490 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5491 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5492 .any,
5493 },
5244 .patterns = &.{5494 .patterns = &.{
5245 .{ .src = .{ .to_mem, .to_mem } },5495 .{ .src = .{ .to_sse, .mem, .none } },
5496 .{ .src = .{ .to_sse, .to_sse, .none } },
5246 },5497 },
5247 .extra_temps = .{5498 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5248 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5249 .{ .type = .isize, .kind = .{ .reg = .rsi } },
5250 .{ .type = .u64, .kind = .{ .reg = .rdi } },
5251 .{ .type = .u64, .kind = .{ .reg = .rcx } },
5252 .unused,
5253 .unused,
5254 .unused,
5255 .unused,
5256 .unused,
5257 },
5258 .dst_temps = .{.mem},
5259 .clobbers = .{ .eflags = true },
5260 .each = .{ .once = &.{5499 .each = .{ .once = &.{
5261 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5500 .{ ._, .v_ps, .div, .dst0x, .src0x, .src1x, ._ },
5262 .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ },
5263 .{ ._, ._c, .cl, ._, ._, ._, ._ },
5264 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
5265 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5266 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
5267 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
5268 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
5269 .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
5270 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5271 .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },
5272 .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },
5273 .{ ._, ._l, .cmov, .tmp1p, .tmp2p, ._, ._ },
5274 .{ ._, ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },
5275 .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },
5276 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
5277 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
5278 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5279 } },5501 } },
5280 }, .{5502 }, .{
5281 .required_features = .{ .@"64bit", null, null, null },5503 .required_features = .{ .sse, null, null, null },
5282 .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int },5504 .src_constraints = .{
5505 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5506 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5507 .any,
5508 },
5283 .patterns = &.{5509 .patterns = &.{
5284 .{ .src = .{ .to_mem, .to_mem } },5510 .{ .src = .{ .to_mut_sse, .mem, .none } },
5511 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
5285 },5512 },
5286 .extra_temps = .{5513 .dst_temps = .{.{ .ref = .src0 }},
5287 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5514 .each = .{ .once = &.{
5288 .{ .type = .isize, .kind = .{ .reg = .rsi } },5515 .{ ._, ._ps, .div, .dst0x, .src1x, ._, ._ },
5289 .{ .type = .u64, .kind = .{ .reg = .rdi } },5516 } },
5290 .{ .type = .u64, .kind = .{ .reg = .rcx } },5517 }, .{
5291 .unused,5518 .required_features = .{ .avx, null, null, null },
5292 .unused,5519 .src_constraints = .{
5293 .unused,5520 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
5294 .unused,5521 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
5295 .unused,5522 .any,
5296 },5523 },
5297 .dst_temps = .{.mem},5524 .patterns = &.{
5298 .clobbers = .{ .eflags = true },5525 .{ .src = .{ .to_sse, .mem, .none } },
5526 .{ .src = .{ .to_sse, .to_sse, .none } },
5527 },
5528 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5299 .each = .{ .once = &.{5529 .each = .{ .once = &.{
5300 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5530 .{ ._, .v_ps, .div, .dst0y, .src0y, .src1y, ._ },
5301 .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ },
5302 .{ ._, ._c, .cl, ._, ._, ._, ._ },
5303 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
5304 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5305 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
5306 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
5307 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
5308 .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
5309 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5310 .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },
5311 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },
5312 .{ ._, ._, .lea, .tmp1p, .memiad(.src1, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },
5313 .{ .@"1:", ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },
5314 .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },
5315 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
5316 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
5317 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5318 } },5531 } },
5319 }, .{5532 }, .{
5320 .required_features = .{ .@"64bit", .cmov, null, null },5533 .required_features = .{ .avx, null, null, null },
5321 .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int },5534 .src_constraints = .{
5535 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
5536 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
5537 .any,
5538 },
5322 .patterns = &.{5539 .patterns = &.{
5323 .{ .src = .{ .to_mem, .to_mem } },5540 .{ .src = .{ .to_mem, .to_mem, .none } },
5324 },5541 },
5325 .extra_temps = .{5542 .extra_temps = .{
5326 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5543 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5327 .{ .type = .isize, .kind = .{ .reg = .rsi } },5544 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
5328 .{ .type = .u64, .kind = .{ .reg = .rdi } },5545 .unused,
5329 .{ .type = .u64, .kind = .{ .reg = .rcx } },5546 .unused,
5330 .unused,5547 .unused,
5331 .unused,5548 .unused,
5332 .unused,5549 .unused,
...@@ -5336,34 +5553,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5336,34 +5553,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5336 .dst_temps = .{.mem},5553 .dst_temps = .{.mem},
5337 .clobbers = .{ .eflags = true },5554 .clobbers = .{ .eflags = true },
5338 .each = .{ .once = &.{5555 .each = .{ .once = &.{
5339 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5556 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5340 .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },5557 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
5341 .{ ._, ._c, .cl, ._, ._, ._, ._ },5558 .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
5342 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },5559 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
5343 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },5560 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
5344 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },5561 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5345 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
5346 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
5347 .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ },
5348 .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_size_sub_elem_size), ._, ._ },
5349 .{ ._, ._b, .cmov, .tmp1p, .tmp2p, ._, ._ },
5350 .{ ._, ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_size_sub_elem_size), ._, ._ },
5351 .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },
5352 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
5353 .{ ._, ._, .@"test", .tmp0p, .tmp0p, ._, ._ },
5354 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
5355 } },5562 } },
5356 }, .{5563 }, .{
5357 .required_features = .{ .@"64bit", null, null, null },5564 .required_features = .{ .sse, null, null, null },
5358 .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int },5565 .src_constraints = .{
5566 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
5567 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
5568 .any,
5569 },
5359 .patterns = &.{5570 .patterns = &.{
5360 .{ .src = .{ .to_mem, .to_mem } },5571 .{ .src = .{ .to_mem, .to_mem, .none } },
5361 },5572 },
5362 .extra_temps = .{5573 .extra_temps = .{
5363 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5574 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5364 .{ .type = .isize, .kind = .{ .reg = .rsi } },5575 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
5365 .{ .type = .u64, .kind = .{ .reg = .rdi } },5576 .unused,
5366 .{ .type = .u64, .kind = .{ .reg = .rcx } },5577 .unused,
5367 .unused,5578 .unused,
5368 .unused,5579 .unused,
5369 .unused,5580 .unused,
...@@ -5373,93 +5584,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5373,93 +5584,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5373 .dst_temps = .{.mem},5584 .dst_temps = .{.mem},
5374 .clobbers = .{ .eflags = true },5585 .clobbers = .{ .eflags = true },
5375 .each = .{ .once = &.{5586 .each = .{ .once = &.{
5376 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5587 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5377 .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },5588 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5378 .{ ._, ._c, .cl, ._, ._, ._, ._ },5589 .{ ._, ._ps, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5379 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },5590 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
5380 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },5591 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5381 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },5592 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5382 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
5383 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
5384 .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ },
5385 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
5386 .{ ._, ._, .lea, .tmp1p, .memia(.src1, .tmp0, .add_size_sub_elem_size), ._, ._ },
5387 .{ .@"1:", ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_size_sub_elem_size), ._, ._ },
5388 .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },
5389 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
5390 .{ ._, ._, .@"test", .tmp0p, .tmp0p, ._, ._ },
5391 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
5392 } },5593 } },
5393 }, .{5594 }, .{
5394 .required_features = .{ .f16c, null, null, null },5595 .required_features = .{ .avx, null, null, null },
5395 .src_constraints = .{5596 .src_constraints = .{
5396 .{ .scalar_float = .{ .of = .word, .is = .word } },5597 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5397 .{ .scalar_float = .{ .of = .word, .is = .word } },5598 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5599 .any,
5398 },5600 },
5399 .patterns = &.{5601 .patterns = &.{
5400 .{ .src = .{ .to_sse, .to_sse } },5602 .{ .src = .{ .to_sse, .mem, .none } },
5401 },5603 .{ .src = .{ .to_sse, .to_sse, .none } },
5402 .extra_temps = .{
5403 .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
5404 .{ .type = .f16, .kind = .{ .rc = .sse } },
5405 .unused,
5406 .unused,
5407 .unused,
5408 .unused,
5409 .unused,
5410 .unused,
5411 .unused,
5412 },5604 },
5413 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},5605 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5414 .each = .{ .once = &.{5606 .each = .{ .once = &.{
5415 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },5607 .{ ._, .v_sd, .div, .dst0x, .src0x, .src1q, ._ },
5416 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
5417 .{ ._, .v_ss, .cmp, .tmp1x, .dst0x, .dst0x, .vp(.unord) },
5418 .{ ._, .v_ss, .max, .dst0x, .tmp0x, .dst0x, ._ },
5419 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x },
5420 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
5421 } },5608 } },
5422 }, .{5609 }, .{
5423 .required_features = .{ .sse, null, null, null },5610 .required_features = .{ .sse2, null, null, null },
5424 .src_constraints = .{5611 .src_constraints = .{
5425 .{ .scalar_float = .{ .of = .word, .is = .word } },5612 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5426 .{ .scalar_float = .{ .of = .word, .is = .word } },5613 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5614 .any,
5427 },5615 },
5428 .patterns = &.{5616 .patterns = &.{
5429 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },5617 .{ .src = .{ .to_mut_sse, .mem, .none } },
5430 },5618 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
5431 .call_frame = .{ .alignment = .@"16" },
5432 .extra_temps = .{
5433 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
5434 .unused,
5435 .unused,
5436 .unused,
5437 .unused,
5438 .unused,
5439 .unused,
5440 .unused,
5441 .unused,
5442 },5619 },
5443 .dst_temps = .{.{ .ref = .src0 }},5620 .dst_temps = .{.{ .ref = .src0 }},
5444 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5445 .each = .{ .once = &.{5621 .each = .{ .once = &.{
5446 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },5622 .{ ._, ._sd, .div, .dst0x, .src1q, ._, ._ },
5447 } },5623 } },
5448 }, .{5624 }, .{
5449 .required_features = .{ .f16c, null, null, null },5625 .required_features = .{ .x87, null, null, null },
5450 .src_constraints = .{5626 .src_constraints = .{
5451 .{ .scalar_float = .{ .of = .qword, .is = .word } },5627 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5452 .{ .scalar_float = .{ .of = .qword, .is = .word } },5628 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5629 .any,
5453 },5630 },
5454 .patterns = &.{5631 .patterns = &.{
5455 .{ .src = .{ .mem, .mem } },5632 .{ .src = .{ .mem, .mem, .none } },
5456 .{ .src = .{ .to_sse, .mem } },
5457 .{ .src = .{ .mem, .to_sse } },
5458 .{ .src = .{ .to_sse, .to_sse } },
5459 },5633 },
5460 .extra_temps = .{5634 .extra_temps = .{
5461 .{ .type = .vector_4_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },5635 .{ .type = .f64, .kind = .{ .reg = .st6 } },
5462 .{ .type = .vector_4_f16, .kind = .{ .rc = .sse } },5636 .{ .type = .f64, .kind = .{ .reg = .st7 } },
5463 .unused,5637 .unused,
5464 .unused,5638 .unused,
5465 .unused,5639 .unused,
...@@ -5468,128 +5642,73 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5468,128 +5642,73 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5468 .unused,5642 .unused,
5469 .unused,5643 .unused,
5470 },5644 },
5471 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},5645 .dst_temps = .{.mem},
5472 .each = .{ .once = &.{5646 .each = .{ .once = &.{
5473 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },5647 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
5474 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },5648 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
5475 .{ ._, .v_ps, .cmp, .tmp1x, .dst0x, .dst0x, .vp(.unord) },5649 .{ ._, .f_p, .div, ._, ._, ._, ._ },
5476 .{ ._, .v_ps, .max, .dst0x, .tmp0x, .dst0x, ._ },5650 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
5477 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x },
5478 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
5479 } },5651 } },
5480 }, .{5652 }, .{
5481 .required_features = .{ .f16c, null, null, null },5653 .required_features = .{ .avx, null, null, null },
5482 .src_constraints = .{5654 .src_constraints = .{
5483 .{ .scalar_float = .{ .of = .xword, .is = .word } },5655 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
5484 .{ .scalar_float = .{ .of = .xword, .is = .word } },5656 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
5657 .any,
5485 },5658 },
5486 .patterns = &.{5659 .patterns = &.{
5487 .{ .src = .{ .mem, .mem } },5660 .{ .src = .{ .to_sse, .mem, .none } },
5488 .{ .src = .{ .to_sse, .mem } },5661 .{ .src = .{ .to_sse, .to_sse, .none } },
5489 .{ .src = .{ .mem, .to_sse } },
5490 .{ .src = .{ .to_sse, .to_sse } },
5491 },
5492 .extra_temps = .{
5493 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
5494 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },
5495 .unused,
5496 .unused,
5497 .unused,
5498 .unused,
5499 .unused,
5500 .unused,
5501 .unused,
5502 },5662 },
5503 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},5663 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5504 .each = .{ .once = &.{5664 .each = .{ .once = &.{
5505 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },5665 .{ ._, .v_pd, .div, .dst0x, .src0x, .src1x, ._ },
5506 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
5507 .{ ._, .v_ps, .cmp, .tmp1y, .dst0y, .dst0y, .vp(.unord) },
5508 .{ ._, .v_ps, .max, .dst0y, .tmp0y, .dst0y, ._ },
5509 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp0y, .tmp1y },
5510 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0y, .rm(.{}), ._ },
5511 } },5666 } },
5512 }, .{5667 }, .{
5513 .required_features = .{ .f16c, null, null, null },5668 .required_features = .{ .sse2, null, null, null },
5514 .src_constraints = .{5669 .src_constraints = .{
5515 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },5670 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
5516 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },5671 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
5672 .any,
5517 },5673 },
5518 .patterns = &.{5674 .patterns = &.{
5519 .{ .src = .{ .to_mem, .to_mem } },5675 .{ .src = .{ .to_mut_sse, .mem, .none } },
5676 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
5520 },5677 },
5521 .extra_temps = .{5678 .dst_temps = .{.{ .ref = .src0 }},
5522 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5523 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },
5524 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },
5525 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },
5526 .unused,
5527 .unused,
5528 .unused,
5529 .unused,
5530 .unused,
5531 },
5532 .dst_temps = .{.mem},
5533 .clobbers = .{ .eflags = true },
5534 .each = .{ .once = &.{5679 .each = .{ .once = &.{
5535 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5680 .{ ._, ._pd, .div, .dst0x, .src1x, ._, ._ },
5536 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
5537 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_size), ._, ._ },
5538 .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },
5539 .{ ._, .v_ps, .max, .tmp1y, .tmp2y, .tmp1y, ._ },
5540 .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },
5541 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_size), .tmp1y, .rm(.{}), ._ },
5542 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5543 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5544 } },5681 } },
5545 }, .{5682 }, .{
5546 .required_features = .{ .avx, null, null, null },5683 .required_features = .{ .avx, null, null, null },
5547 .src_constraints = .{5684 .src_constraints = .{
5548 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },5685 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
5549 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },5686 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
5687 .any,
5550 },5688 },
5551 .patterns = &.{5689 .patterns = &.{
5552 .{ .src = .{ .to_mem, .to_mem } },5690 .{ .src = .{ .to_sse, .mem, .none } },
5553 },5691 .{ .src = .{ .to_sse, .to_sse, .none } },
5554 .call_frame = .{ .alignment = .@"16" },
5555 .extra_temps = .{
5556 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5557 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5558 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
5559 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
5560 .unused,
5561 .unused,
5562 .unused,
5563 .unused,
5564 .unused,
5565 },5692 },
5566 .dst_temps = .{.mem},5693 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5567 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5568 .each = .{ .once = &.{5694 .each = .{ .once = &.{
5569 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5695 .{ ._, .v_pd, .div, .dst0y, .src0y, .src1y, ._ },
5570 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
5571 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_size), .ui(0) },
5572 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0) },
5573 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5574 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ },
5575 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
5576 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5577 } },5696 } },
5578 }, .{5697 }, .{
5579 .required_features = .{ .sse4_1, null, null, null },5698 .required_features = .{ .avx, null, null, null },
5580 .src_constraints = .{5699 .src_constraints = .{
5581 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },5700 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
5582 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },5701 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
5702 .any,
5583 },5703 },
5584 .patterns = &.{5704 .patterns = &.{
5585 .{ .src = .{ .to_mem, .to_mem } },5705 .{ .src = .{ .to_mem, .to_mem, .none } },
5586 },5706 },
5587 .call_frame = .{ .alignment = .@"16" },
5588 .extra_temps = .{5707 .extra_temps = .{
5589 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5708 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5590 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },5709 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
5591 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },5710 .unused,
5592 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },5711 .unused,
5593 .unused,5712 .unused,
5594 .unused,5713 .unused,
5595 .unused,5714 .unused,
...@@ -5597,103 +5716,90 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5597,103 +5716,90 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5597 .unused,5716 .unused,
5598 },5717 },
5599 .dst_temps = .{.mem},5718 .dst_temps = .{.mem},
5600 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },5719 .clobbers = .{ .eflags = true },
5601 .each = .{ .once = &.{5720 .each = .{ .once = &.{
5602 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5721 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5603 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },5722 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
5604 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },5723 .{ ._, .v_pd, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
5605 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ },5724 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
5606 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ },5725 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
5607 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5608 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ },
5609 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
5610 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5726 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5611 } },5727 } },
5612 }, .{5728 }, .{
5613 .required_features = .{ .sse2, null, null, null },5729 .required_features = .{ .sse2, null, null, null },
5614 .src_constraints = .{5730 .src_constraints = .{
5615 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },5731 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
5616 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },5732 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
5733 .any,
5617 },5734 },
5618 .patterns = &.{5735 .patterns = &.{
5619 .{ .src = .{ .to_mem, .to_mem } },5736 .{ .src = .{ .to_mem, .to_mem, .none } },
5620 },5737 },
5621 .call_frame = .{ .alignment = .@"16" },
5622 .extra_temps = .{5738 .extra_temps = .{
5623 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5739 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5624 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },5740 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
5625 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },5741 .unused,
5626 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },5742 .unused,
5627 .{ .type = .f16, .kind = .{ .reg = .ax } },5743 .unused,
5628 .unused,5744 .unused,
5629 .unused,5745 .unused,
5630 .unused,5746 .unused,
5631 .unused,5747 .unused,
5632 },5748 },
5633 .dst_temps = .{.mem},5749 .dst_temps = .{.mem},
5634 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },5750 .clobbers = .{ .eflags = true },
5635 .each = .{ .once = &.{5751 .each = .{ .once = &.{
5636 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5752 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5637 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },5753 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5638 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },5754 .{ ._, ._pd, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5639 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ },5755 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
5640 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ },5756 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5641 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5642 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
5643 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp4w, ._, ._ },
5644 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
5645 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5757 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5646 } },5758 } },
5647 }, .{5759 }, .{
5648 .required_features = .{ .sse, null, null, null },5760 .required_features = .{ .x87, null, null, null },
5649 .src_constraints = .{5761 .src_constraints = .{
5650 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },5762 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
5651 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },5763 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
5764 .any,
5652 },5765 },
5653 .patterns = &.{5766 .patterns = &.{
5654 .{ .src = .{ .to_mem, .to_mem } },5767 .{ .src = .{ .to_mem, .to_mem, .none } },
5655 },5768 },
5656 .call_frame = .{ .alignment = .@"16" },
5657 .extra_temps = .{5769 .extra_temps = .{
5658 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5770 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5659 .{ .type = .f16, .kind = .{ .reg = .ax } },5771 .{ .type = .f64, .kind = .{ .reg = .st6 } },
5660 .{ .type = .f32, .kind = .mem },5772 .{ .type = .f64, .kind = .{ .reg = .st7 } },
5661 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },5773 .unused,
5662 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },5774 .unused,
5663 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },5775 .unused,
5664 .unused,5776 .unused,
5665 .unused,5777 .unused,
5666 .unused,5778 .unused,
5667 },5779 },
5668 .dst_temps = .{.mem},5780 .dst_temps = .{.mem},
5669 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5670 .each = .{ .once = &.{5781 .each = .{ .once = &.{
5671 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5782 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5672 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },5783 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
5673 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },5784 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ },
5674 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },5785 .{ ._, .f_p, .div, ._, ._, ._, ._ },
5675 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_size), ._, ._ },5786 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
5676 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },5787 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
5677 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
5678 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
5679 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
5680 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
5681 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
5682 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
5683 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5788 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5684 } },5789 } },
5685 }, .{5790 }, .{
5686 .required_features = .{ .avx, null, null, null },5791 .required_features = .{ .x87, null, null, null },
5687 .src_constraints = .{5792 .src_constraints = .{
5688 .{ .scalar_float = .{ .of = .dword, .is = .dword } },5793 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
5689 .{ .scalar_float = .{ .of = .dword, .is = .dword } },5794 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
5795 .any,
5690 },5796 },
5691 .patterns = &.{5797 .patterns = &.{
5692 .{ .src = .{ .to_sse, .to_sse } },5798 .{ .src = .{ .mem, .mem, .none } },
5693 },5799 },
5694 .extra_temps = .{5800 .extra_temps = .{
5695 .{ .type = .f32, .kind = .{ .rc = .sse } },5801 .{ .type = .f80, .kind = .{ .reg = .st6 } },
5696 .unused,5802 .{ .type = .f80, .kind = .{ .reg = .st7 } },
5697 .unused,5803 .unused,
5698 .unused,5804 .unused,
5699 .unused,5805 .unused,
...@@ -5702,39 +5808,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5702,39 +5808,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5702 .unused,5808 .unused,
5703 .unused,5809 .unused,
5704 },5810 },
5705 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},5811 .dst_temps = .{.{ .rc = .x87 }},
5706 .each = .{ .once = &.{
5707 .{ ._, .v_ss, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) },
5708 .{ ._, .v_ss, .max, .dst0x, .src1x, .src0x, ._ },
5709 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },
5710 } },
5711 }, .{
5712 .required_features = .{ .sse4_1, null, null, null },
5713 .src_constraints = .{
5714 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5715 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5716 },
5717 .patterns = &.{
5718 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } },
5719 },
5720 .dst_temps = .{.{ .rc = .sse }},
5721 .each = .{ .once = &.{5812 .each = .{ .once = &.{
5722 .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ },5813 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
5723 .{ ._, ._ss, .max, .dst0x, .src0x, ._, ._ },5814 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
5724 .{ ._, ._ss, .cmp, .src0x, .src0x, .vp(.unord), ._ },5815 .{ ._, .f_p, .div, ._, ._, ._, ._ },
5725 .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ },5816 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
5726 } },5817 } },
5727 }, .{5818 }, .{
5728 .required_features = .{ .sse, null, null, null },5819 .required_features = .{ .x87, null, null, null },
5729 .src_constraints = .{5820 .src_constraints = .{
5730 .{ .scalar_float = .{ .of = .dword, .is = .dword } },5821 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
5731 .{ .scalar_float = .{ .of = .dword, .is = .dword } },5822 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
5823 .any,
5732 },5824 },
5733 .patterns = &.{5825 .patterns = &.{
5734 .{ .src = .{ .to_mut_sse, .to_sse } },5826 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
5735 },5827 },
5736 .extra_temps = .{5828 .extra_temps = .{
5737 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },5829 .{ .type = .f80, .kind = .{ .reg = .st7 } },
5738 .unused,5830 .unused,
5739 .unused,5831 .unused,
5740 .unused,5832 .unused,
...@@ -5744,26 +5836,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5744,26 +5836,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5744 .unused,5836 .unused,
5745 .unused,5837 .unused,
5746 },5838 },
5747 .dst_temps = .{.{ .ref = .src0 }},5839 .dst_temps = .{.{ .rc = .x87 }},
5748 .each = .{ .once = &.{5840 .each = .{ .once = &.{
5749 .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ },5841 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
5750 .{ ._, ._ss, .max, .tmp0x, .src0x, ._, ._ },5842 .{ ._, .f_, .divr, .tmp0t, .src1t, ._, ._ },
5751 .{ ._, ._ss, .cmp, .dst0x, .src0x, .vp(.ord), ._ },5843 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
5752 .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ },
5753 .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ },
5754 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },
5755 } },5844 } },
5756 }, .{5845 }, .{
5757 .required_features = .{ .avx, null, null, null },5846 .required_features = .{ .x87, null, null, null },
5758 .src_constraints = .{5847 .src_constraints = .{
5759 .{ .scalar_float = .{ .of = .xword, .is = .dword } },5848 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
5760 .{ .scalar_float = .{ .of = .xword, .is = .dword } },5849 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
5850 .any,
5761 },5851 },
5762 .patterns = &.{5852 .patterns = &.{
5763 .{ .src = .{ .to_sse, .to_sse } },5853 .{ .src = .{ .mem, .to_x87, .none } },
5854 .{ .src = .{ .to_x87, .to_x87, .none } },
5764 },5855 },
5765 .extra_temps = .{5856 .extra_temps = .{
5766 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },5857 .{ .type = .f80, .kind = .{ .reg = .st7 } },
5767 .unused,5858 .unused,
5768 .unused,5859 .unused,
5769 .unused,5860 .unused,
...@@ -5773,45 +5864,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5773,45 +5864,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5773 .unused,5864 .unused,
5774 .unused,5865 .unused,
5775 },5866 },
5776 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},5867 .dst_temps = .{.{ .rc = .x87 }},
5777 .each = .{ .once = &.{
5778 .{ ._, .v_ps, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) },
5779 .{ ._, .v_ps, .max, .dst0x, .src1x, .src0x, ._ },
5780 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },
5781 } },
5782 }, .{
5783 .required_features = .{ .sse4_1, null, null, null },
5784 .src_constraints = .{
5785 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5786 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5787 },
5788 .patterns = &.{
5789 .{ .src = .{ .{ .to_reg = .xmm0 }, .mem } },
5790 .{ .src = .{ .mem, .{ .to_reg = .xmm0 } }, .commute = .{ 0, 1 } },
5791 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } },
5792 },
5793 .dst_temps = .{.{ .rc = .sse }},
5794 .each = .{ .once = &.{5868 .each = .{ .once = &.{
5795 .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ },5869 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
5796 .{ ._, ._ps, .max, .dst0x, .src0x, ._, ._ },5870 .{ ._, .f_, .div, .tmp0t, .src1t, ._, ._ },
5797 .{ ._, ._ps, .cmp, .src0x, .src0x, .vp(.unord), ._ },5871 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
5798 .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ },
5799 } },5872 } },
5800 }, .{5873 }, .{
5801 .required_features = .{ .sse, null, null, null },5874 .required_features = .{ .x87, null, null, null },
5802 .src_constraints = .{5875 .src_constraints = .{
5803 .{ .scalar_float = .{ .of = .xword, .is = .dword } },5876 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
5804 .{ .scalar_float = .{ .of = .xword, .is = .dword } },5877 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
5878 .any,
5805 },5879 },
5806 .patterns = &.{5880 .patterns = &.{
5807 .{ .src = .{ .to_mut_sse, .mem } },5881 .{ .src = .{ .to_mem, .to_mem, .none } },
5808 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
5809 .{ .src = .{ .to_mut_sse, .to_sse } },
5810 },5882 },
5811 .extra_temps = .{5883 .extra_temps = .{
5812 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },5884 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5813 .unused,5885 .{ .type = .f80, .kind = .{ .reg = .st6 } },
5814 .unused,5886 .{ .type = .f80, .kind = .{ .reg = .st7 } },
5815 .unused,5887 .unused,
5816 .unused,5888 .unused,
5817 .unused,5889 .unused,
...@@ -5819,26 +5891,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5819,26 +5891,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5819 .unused,5891 .unused,
5820 .unused,5892 .unused,
5821 },5893 },
5822 .dst_temps = .{.{ .ref = .src0 }},5894 .dst_temps = .{.mem},
5823 .each = .{ .once = &.{5895 .each = .{ .once = &.{
5824 .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ },5896 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5825 .{ ._, ._ps, .max, .tmp0x, .src0x, ._, ._ },5897 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
5826 .{ ._, ._ps, .cmp, .dst0x, .src0x, .vp(.ord), ._ },5898 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
5827 .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ },5899 .{ ._, .f_p, .div, ._, ._, ._, ._ },
5828 .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ },5900 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
5829 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },5901 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5902 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5830 } },5903 } },
5831 }, .{5904 }, .{
5832 .required_features = .{ .avx, null, null, null },5905 .required_features = .{ .sse, null, null, null },
5833 .src_constraints = .{5906 .src_constraints = .{
5834 .{ .scalar_float = .{ .of = .yword, .is = .dword } },5907 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
5835 .{ .scalar_float = .{ .of = .yword, .is = .dword } },5908 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
5909 .any,
5836 },5910 },
5837 .patterns = &.{5911 .patterns = &.{
5838 .{ .src = .{ .to_sse, .to_sse } },5912 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
5839 },5913 },
5914 .call_frame = .{ .alignment = .@"16" },
5840 .extra_temps = .{5915 .extra_temps = .{
5841 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },5916 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
5842 .unused,5917 .unused,
5843 .unused,5918 .unused,
5844 .unused,5919 .unused,
...@@ -5848,26 +5923,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5848,26 +5923,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5848 .unused,5923 .unused,
5849 .unused,5924 .unused,
5850 },5925 },
5851 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},5926 .dst_temps = .{.{ .ref = .src0 }},
5927 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5852 .each = .{ .once = &.{5928 .each = .{ .once = &.{
5853 .{ ._, .v_ps, .cmp, .tmp0y, .src0y, .src0y, .vp(.unord) },5929 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
5854 .{ ._, .v_ps, .max, .dst0y, .src1y, .src0y, ._ },
5855 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .src1y, .tmp0y },
5856 } },5930 } },
5857 }, .{5931 }, .{
5858 .required_features = .{ .avx, null, null, null },5932 .required_features = .{ .avx, null, null, null },
5859 .src_constraints = .{5933 .src_constraints = .{
5860 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },5934 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5861 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },5935 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5936 .any,
5862 },5937 },
5863 .patterns = &.{5938 .patterns = &.{
5864 .{ .src = .{ .to_mem, .to_mem } },5939 .{ .src = .{ .to_mem, .to_mem, .none } },
5865 },5940 },
5941 .call_frame = .{ .alignment = .@"16" },
5866 .extra_temps = .{5942 .extra_temps = .{
5867 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5943 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5868 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },5944 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
5869 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },5945 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
5870 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },5946 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
5871 .unused,5947 .unused,
5872 .unused,5948 .unused,
5873 .unused,5949 .unused,
...@@ -5875,32 +5951,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5875,32 +5951,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5875 .unused,5951 .unused,
5876 },5952 },
5877 .dst_temps = .{.mem},5953 .dst_temps = .{.mem},
5878 .clobbers = .{ .eflags = true },5954 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5879 .each = .{ .once = &.{5955 .each = .{ .once = &.{
5880 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5956 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5881 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },5957 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5882 .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },5958 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5883 .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },5959 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5884 .{ ._, .v_ps, .max, .tmp1y, .tmp2y, .tmp1y, ._ },5960 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
5885 .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },5961 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5886 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
5887 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
5888 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5962 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5889 } },5963 } },
5890 }, .{5964 }, .{
5891 .required_features = .{ .sse4_1, null, null, null },5965 .required_features = .{ .sse2, null, null, null },
5892 .src_constraints = .{5966 .src_constraints = .{
5893 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },5967 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5894 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },5968 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5969 .any,
5895 },5970 },
5896 .patterns = &.{5971 .patterns = &.{
5897 .{ .src = .{ .to_mem, .to_mem } },5972 .{ .src = .{ .to_mem, .to_mem, .none } },
5898 },5973 },
5974 .call_frame = .{ .alignment = .@"16" },
5899 .extra_temps = .{5975 .extra_temps = .{
5900 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5976 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5901 .{ .type = .vector_4_f32, .kind = .{ .reg = .xmm0 } },5977 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
5902 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },5978 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
5903 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },5979 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
5904 .unused,5980 .unused,
5905 .unused,5981 .unused,
5906 .unused,5982 .unused,
...@@ -5908,371 +5984,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5908,371 +5984,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5908 .unused,5984 .unused,
5909 },5985 },
5910 .dst_temps = .{.mem},5986 .dst_temps = .{.mem},
5911 .clobbers = .{ .eflags = true },5987 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5912 .each = .{ .once = &.{5988 .each = .{ .once = &.{
5913 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5989 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5914 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },5990 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5915 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },5991 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5916 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },5992 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5917 .{ ._, ._ps, .max, .tmp3x, .tmp1x, ._, ._ },5993 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
5918 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },
5919 .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
5920 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
5921 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5922 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5923 } },
5924 }, .{
5925 .required_features = .{ .sse, null, null, null },
5926 .src_constraints = .{
5927 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
5928 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
5929 },
5930 .patterns = &.{
5931 .{ .src = .{ .to_mem, .to_mem } },
5932 },
5933 .extra_temps = .{
5934 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5935 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
5936 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
5937 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
5938 .unused,
5939 .unused,
5940 .unused,
5941 .unused,
5942 .unused,
5943 },
5944 .dst_temps = .{.mem},
5945 .clobbers = .{ .eflags = true },
5946 .each = .{ .once = &.{
5947 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5948 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
5949 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
5950 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
5951 .{ ._, ._ps, .max, .tmp3x, .tmp1x, ._, ._ },
5952 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.ord), ._ },
5953 .{ ._, ._ps, .@"and", .tmp3x, .tmp1x, ._, ._ },
5954 .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ },
5955 .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ },
5956 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
5957 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5958 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5959 } },
5960 }, .{
5961 .required_features = .{ .avx, null, null, null },
5962 .src_constraints = .{
5963 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5964 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5965 },
5966 .patterns = &.{
5967 .{ .src = .{ .to_sse, .to_sse } },
5968 },
5969 .extra_temps = .{
5970 .{ .type = .f64, .kind = .{ .rc = .sse } },
5971 .unused,
5972 .unused,
5973 .unused,
5974 .unused,
5975 .unused,
5976 .unused,
5977 .unused,
5978 .unused,
5979 },
5980 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5981 .each = .{ .once = &.{
5982 .{ ._, .v_sd, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) },
5983 .{ ._, .v_sd, .max, .dst0x, .src1x, .src0x, ._ },
5984 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },
5985 } },
5986 }, .{
5987 .required_features = .{ .sse4_1, null, null, null },
5988 .src_constraints = .{
5989 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5990 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5991 },
5992 .patterns = &.{
5993 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } },
5994 },
5995 .dst_temps = .{.{ .rc = .sse }},
5996 .each = .{ .once = &.{
5997 .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ },
5998 .{ ._, ._sd, .max, .dst0x, .src0x, ._, ._ },
5999 .{ ._, ._sd, .cmp, .src0x, .src0x, .vp(.unord), ._ },
6000 .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ },
6001 } },
6002 }, .{
6003 .required_features = .{ .sse2, null, null, null },
6004 .src_constraints = .{
6005 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
6006 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
6007 },
6008 .patterns = &.{
6009 .{ .src = .{ .to_mut_sse, .to_sse } },
6010 },
6011 .extra_temps = .{
6012 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
6013 .unused,
6014 .unused,
6015 .unused,
6016 .unused,
6017 .unused,
6018 .unused,
6019 .unused,
6020 .unused,
6021 },
6022 .dst_temps = .{.{ .ref = .src0 }},
6023 .each = .{ .once = &.{
6024 .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ },
6025 .{ ._, ._sd, .max, .tmp0x, .src0x, ._, ._ },
6026 .{ ._, ._sd, .cmp, .dst0x, .src0x, .vp(.ord), ._ },
6027 .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ },
6028 .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ },
6029 .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ },
6030 } },
6031 }, .{
6032 .required_features = .{ .sse, null, null, null },
6033 .src_constraints = .{
6034 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
6035 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
6036 },
6037 .patterns = &.{
6038 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },
6039 },
6040 .call_frame = .{ .alignment = .@"16" },
6041 .extra_temps = .{
6042 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmax" } } },
6043 .unused,
6044 .unused,
6045 .unused,
6046 .unused,
6047 .unused,
6048 .unused,
6049 .unused,
6050 .unused,
6051 },
6052 .dst_temps = .{.{ .ref = .src0 }},
6053 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6054 .each = .{ .once = &.{
6055 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
6056 } },
6057 }, .{
6058 .required_features = .{ .avx, null, null, null },
6059 .src_constraints = .{
6060 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
6061 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
6062 },
6063 .patterns = &.{
6064 .{ .src = .{ .to_sse, .to_sse } },
6065 },
6066 .extra_temps = .{
6067 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
6068 .unused,
6069 .unused,
6070 .unused,
6071 .unused,
6072 .unused,
6073 .unused,
6074 .unused,
6075 .unused,
6076 },
6077 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6078 .each = .{ .once = &.{
6079 .{ ._, .v_pd, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) },
6080 .{ ._, .v_pd, .max, .dst0x, .src1x, .src0x, ._ },
6081 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },
6082 } },
6083 }, .{
6084 .required_features = .{ .sse4_1, null, null, null },
6085 .src_constraints = .{
6086 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
6087 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
6088 },
6089 .patterns = &.{
6090 .{ .src = .{ .{ .to_reg = .xmm0 }, .mem } },
6091 .{ .src = .{ .mem, .{ .to_reg = .xmm0 } }, .commute = .{ 0, 1 } },
6092 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } },
6093 },
6094 .dst_temps = .{.{ .rc = .sse }},
6095 .each = .{ .once = &.{
6096 .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ },
6097 .{ ._, ._pd, .max, .dst0x, .src0x, ._, ._ },
6098 .{ ._, ._pd, .cmp, .src0x, .src0x, .vp(.unord), ._ },
6099 .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ },
6100 } },
6101 }, .{
6102 .required_features = .{ .sse2, null, null, null },
6103 .src_constraints = .{
6104 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
6105 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
6106 },
6107 .patterns = &.{
6108 .{ .src = .{ .to_mut_sse, .mem } },
6109 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
6110 .{ .src = .{ .to_mut_sse, .to_sse } },
6111 },
6112 .extra_temps = .{
6113 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
6114 .unused,
6115 .unused,
6116 .unused,
6117 .unused,
6118 .unused,
6119 .unused,
6120 .unused,
6121 .unused,
6122 },
6123 .dst_temps = .{.{ .ref = .src0 }},
6124 .each = .{ .once = &.{
6125 .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ },
6126 .{ ._, ._pd, .max, .tmp0x, .src0x, ._, ._ },
6127 .{ ._, ._pd, .cmp, .dst0x, .src0x, .vp(.ord), ._ },
6128 .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ },
6129 .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ },
6130 .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ },
6131 } },
6132 }, .{
6133 .required_features = .{ .avx, null, null, null },
6134 .src_constraints = .{
6135 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
6136 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
6137 },
6138 .patterns = &.{
6139 .{ .src = .{ .to_sse, .to_sse } },
6140 },
6141 .extra_temps = .{
6142 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
6143 .unused,
6144 .unused,
6145 .unused,
6146 .unused,
6147 .unused,
6148 .unused,
6149 .unused,
6150 .unused,
6151 },
6152 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6153 .each = .{ .once = &.{
6154 .{ ._, .v_pd, .cmp, .tmp0y, .src0y, .src0y, .vp(.unord) },
6155 .{ ._, .v_pd, .max, .dst0y, .src1y, .src0y, ._ },
6156 .{ ._, .v_pd, .blendv, .dst0y, .dst0y, .src1y, .tmp0y },
6157 } },
6158 }, .{
6159 .required_features = .{ .avx, null, null, null },
6160 .src_constraints = .{
6161 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
6162 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
6163 },
6164 .patterns = &.{
6165 .{ .src = .{ .to_mem, .to_mem } },
6166 },
6167 .extra_temps = .{
6168 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6169 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
6170 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
6171 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
6172 .unused,
6173 .unused,
6174 .unused,
6175 .unused,
6176 .unused,
6177 },
6178 .dst_temps = .{.mem},
6179 .clobbers = .{ .eflags = true },
6180 .each = .{ .once = &.{
6181 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6182 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
6183 .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
6184 .{ ._, .v_pd, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },
6185 .{ ._, .v_pd, .max, .tmp1y, .tmp2y, .tmp1y, ._ },
6186 .{ ._, .v_pd, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },
6187 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
6188 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
6189 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6190 } },
6191 }, .{
6192 .required_features = .{ .sse4_1, null, null, null },
6193 .src_constraints = .{
6194 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
6195 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
6196 },
6197 .patterns = &.{
6198 .{ .src = .{ .to_mem, .to_mem } },
6199 },
6200 .extra_temps = .{
6201 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6202 .{ .type = .vector_2_f64, .kind = .{ .reg = .xmm0 } },
6203 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
6204 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
6205 .unused,
6206 .unused,
6207 .unused,
6208 .unused,
6209 .unused,
6210 },
6211 .dst_temps = .{.mem},
6212 .clobbers = .{ .eflags = true },
6213 .each = .{ .once = &.{
6214 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6215 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
6216 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
6217 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
6218 .{ ._, ._pd, .max, .tmp3x, .tmp1x, ._, ._ },
6219 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },
6220 .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
6221 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
6222 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6223 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6224 } },
6225 }, .{
6226 .required_features = .{ .sse2, null, null, null },
6227 .src_constraints = .{
6228 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
6229 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
6230 },
6231 .patterns = &.{
6232 .{ .src = .{ .to_mem, .to_mem } },
6233 },
6234 .extra_temps = .{
6235 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6236 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
6237 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
6238 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
6239 .unused,
6240 .unused,
6241 .unused,
6242 .unused,
6243 .unused,
6244 },
6245 .dst_temps = .{.mem},
6246 .clobbers = .{ .eflags = true },
6247 .each = .{ .once = &.{
6248 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6249 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
6250 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
6251 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
6252 .{ ._, ._pd, .max, .tmp3x, .tmp1x, ._, ._ },
6253 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.ord), ._ },
6254 .{ ._, ._pd, .@"and", .tmp3x, .tmp1x, ._, ._ },
6255 .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ },
6256 .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ },
6257 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
6258 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },5994 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6259 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5995 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6260 } },5996 } },
6261 }, .{5997 }, .{
6262 .required_features = .{ .sse, null, null, null },5998 .required_features = .{ .sse, null, null, null },
6263 .src_constraints = .{5999 .src_constraints = .{
6264 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },6000 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
6265 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },6001 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
6002 .any,
6266 },6003 },
6267 .patterns = &.{6004 .patterns = &.{
6268 .{ .src = .{ .to_mem, .to_mem } },6005 .{ .src = .{ .to_mem, .to_mem, .none } },
6269 },6006 },
6270 .call_frame = .{ .alignment = .@"16" },6007 .call_frame = .{ .alignment = .@"16" },
6271 .extra_temps = .{6008 .extra_temps = .{
6272 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },6009 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6273 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },6010 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
6274 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },6011 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
6275 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmax" } } },6012 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
6276 .unused,6013 .unused,
6277 .unused,6014 .unused,
6278 .unused,6015 .unused,
...@@ -6282,372 +6019,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -6282,372 +6019,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6282 .dst_temps = .{.mem},6019 .dst_temps = .{.mem},
6283 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },6020 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6284 .each = .{ .once = &.{6021 .each = .{ .once = &.{
6285 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },6022 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6286 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },6023 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
6287 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },6024 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
6288 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
6289 .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_size), ._, ._ },
6290 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },6025 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6291 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },6026 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
6292 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
6293 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6294 } },
6295 }, .{
6296 .required_features = .{ .x87, .cmov, null, null },
6297 .src_constraints = .{
6298 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
6299 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
6300 },
6301 .patterns = &.{
6302 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },
6303 .{ .src = .{ .mem, .to_x87 } },
6304 .{ .src = .{ .to_x87, .to_x87 } },
6305 },
6306 .extra_temps = .{
6307 .{ .type = .f80, .kind = .{ .reg = .st7 } },
6308 .unused,
6309 .unused,
6310 .unused,
6311 .unused,
6312 .unused,
6313 .unused,
6314 .unused,
6315 .unused,
6316 },
6317 .dst_temps = .{.{ .mut_rc = .{ .ref = .src1, .rc = .x87 } }},
6318 .clobbers = .{ .eflags = true },
6319 .each = .{ .once = &.{
6320 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
6321 .{ ._, .f_, .ucomi, .tmp0t, .tmp0t, ._, ._ },
6322 .{ ._, .f_u, .cmov, .tmp0t, .src1t, ._, ._ },
6323 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
6324 .{ ._, .f_, .ucomi, .tmp0t, .src1t, ._, ._ },
6325 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
6326 .{ ._, .f_nb, .cmov, .tmp0t, .src1t, ._, ._ },
6327 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
6328 } },
6329 }, .{
6330 .required_features = .{ .sahf, .x87, null, null },
6331 .src_constraints = .{
6332 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
6333 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
6334 },
6335 .patterns = &.{
6336 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },
6337 .{ .src = .{ .mem, .to_x87 } },
6338 .{ .src = .{ .to_x87, .to_x87 } },
6339 },
6340 .extra_temps = .{
6341 .{ .type = .f80, .kind = .{ .reg = .st7 } },
6342 .{ .type = .u8, .kind = .{ .reg = .ah } },
6343 .unused,
6344 .unused,
6345 .unused,
6346 .unused,
6347 .unused,
6348 .unused,
6349 .unused,
6350 },
6351 .dst_temps = .{.{ .mut_rc = .{ .ref = .src1, .rc = .x87 } }},
6352 .clobbers = .{ .eflags = true },
6353 .each = .{ .once = &.{
6354 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
6355 .{ ._, .f_, .ucom, .tmp0t, ._, ._, ._ },
6356 .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ },
6357 .{ ._, ._, .sahf, ._, ._, ._, ._ },
6358 .{ ._, ._p, .j, .@"0f", ._, ._, ._ },
6359 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
6360 .{ ._, .f_, .ucom, .src1t, ._, ._, ._ },
6361 .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ },
6362 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
6363 .{ ._, ._, .sahf, ._, ._, ._, ._ },
6364 .{ ._, ._b, .j, .@"1f", ._, ._, ._ },
6365 .{ .@"0:", .f_p, .st, .tmp0t, ._, ._, ._ },
6366 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
6367 .{ .@"1:", .f_p, .st, .dst0t, ._, ._, ._ },
6368 } },
6369 }, .{
6370 .required_features = .{ .x87, null, null, null },
6371 .src_constraints = .{
6372 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
6373 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
6374 },
6375 .patterns = &.{
6376 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },
6377 .{ .src = .{ .mem, .to_x87 } },
6378 .{ .src = .{ .to_x87, .to_x87 } },
6379 },
6380 .extra_temps = .{
6381 .{ .type = .f80, .kind = .{ .reg = .st7 } },
6382 .{ .type = .u8, .kind = .{ .reg = .ah } },
6383 .unused,
6384 .unused,
6385 .unused,
6386 .unused,
6387 .unused,
6388 .unused,
6389 .unused,
6390 },
6391 .dst_temps = .{.{ .mut_rc = .{ .ref = .src1, .rc = .x87 } }},
6392 .clobbers = .{ .eflags = true },
6393 .each = .{ .once = &.{
6394 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
6395 .{ ._, .f_, .xam, ._, ._, ._, ._ },
6396 .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ },
6397 .{ ._, ._, .@"test", .tmp1b, .si(0b1_000_100), ._, ._ },
6398 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
6399 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
6400 .{ ._, .f_, .ucom, .src1t, ._, ._, ._ },
6401 .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ },
6402 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
6403 .{ ._, ._, .@"test", .tmp1b, .si(0b0_000_001), ._, ._ },
6404 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
6405 .{ .@"0:", .f_p, .st, .tmp0t, ._, ._, ._ },
6406 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
6407 .{ .@"1:", .f_p, .st, .dst0t, ._, ._, ._ },
6408 } },
6409 }, .{
6410 .required_features = .{ .x87, .cmov, null, null },
6411 .src_constraints = .{
6412 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
6413 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
6414 },
6415 .patterns = &.{
6416 .{ .src = .{ .to_mem, .to_mem } },
6417 },
6418 .extra_temps = .{
6419 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6420 .{ .type = .f80, .kind = .{ .reg = .st6 } },
6421 .{ .type = .f80, .kind = .{ .reg = .st7 } },
6422 .unused,
6423 .unused,
6424 .unused,
6425 .unused,
6426 .unused,
6427 .unused,
6428 },
6429 .dst_temps = .{.mem},
6430 .clobbers = .{ .eflags = true },
6431 .each = .{ .once = &.{
6432 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6433 .{ .@"0:", .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
6434 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
6435 .{ ._, .f_, .ucomi, .tmp1t, .tmp1t, ._, ._ },
6436 .{ ._, .f_u, .cmov, .tmp1t, .tmp2t, ._, ._ },
6437 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
6438 .{ ._, .f_, .ucomi, .tmp1t, .tmp2t, ._, ._ },
6439 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
6440 .{ ._, .f_nb, .cmov, .tmp1t, .tmp2t, ._, ._ },
6441 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_size), ._, ._, ._ },
6442 .{ ._, .f_p, .st, .tmp2t, ._, ._, ._ },
6443 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6444 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6445 } },
6446 }, .{
6447 .required_features = .{ .sahf, .x87, null, null },
6448 .src_constraints = .{
6449 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
6450 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
6451 },
6452 .patterns = &.{
6453 .{ .src = .{ .to_mem, .to_mem } },
6454 },
6455 .extra_temps = .{
6456 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6457 .{ .type = .f80, .kind = .{ .reg = .st6 } },
6458 .{ .type = .f80, .kind = .{ .reg = .st7 } },
6459 .{ .type = .u8, .kind = .{ .reg = .ah } },
6460 .unused,
6461 .unused,
6462 .unused,
6463 .unused,
6464 .unused,
6465 },
6466 .dst_temps = .{.mem},
6467 .clobbers = .{ .eflags = true },
6468 .each = .{ .once = &.{
6469 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6470 .{ .@"0:", .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
6471 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
6472 .{ ._, .f_, .ucom, .tmp1t, ._, ._, ._ },
6473 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
6474 .{ ._, ._, .sahf, ._, ._, ._, ._ },
6475 .{ ._, ._p, .j, .@"1f", ._, ._, ._ },
6476 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
6477 .{ ._, .f_, .ucom, .tmp2t, ._, ._, ._ },
6478 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
6479 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
6480 .{ ._, ._, .sahf, ._, ._, ._, ._ },
6481 .{ ._, ._b, .j, .@"2f", ._, ._, ._ },
6482 .{ .@"1:", .f_p, .st, .tmp1t, ._, ._, ._ },
6483 .{ ._, .f_, .ld, .tmp2t, ._, ._, ._ },
6484 .{ .@"2:", .f_p, .st, .memia(.dst0t, .tmp0, .add_size), ._, ._, ._ },
6485 .{ ._, .f_p, .st, .tmp2t, ._, ._, ._ },
6486 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6487 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6488 } },
6489 }, .{
6490 .required_features = .{ .x87, null, null, null },
6491 .src_constraints = .{
6492 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
6493 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
6494 },
6495 .patterns = &.{
6496 .{ .src = .{ .to_mem, .to_mem } },
6497 },
6498 .extra_temps = .{
6499 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6500 .{ .type = .f80, .kind = .{ .reg = .st6 } },
6501 .{ .type = .f80, .kind = .{ .reg = .st7 } },
6502 .{ .type = .u8, .kind = .{ .reg = .ah } },
6503 .unused,
6504 .unused,
6505 .unused,
6506 .unused,
6507 .unused,
6508 },
6509 .dst_temps = .{.mem},
6510 .clobbers = .{ .eflags = true },
6511 .each = .{ .once = &.{
6512 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6513 .{ .@"0:", .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
6514 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
6515 .{ ._, .f_, .xam, ._, ._, ._, ._ },
6516 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
6517 .{ ._, ._, .@"test", .tmp3b, .si(0b1_000_100), ._, ._ },
6518 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
6519 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
6520 .{ ._, .f_, .ucom, .tmp2t, ._, ._, ._ },
6521 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
6522 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
6523 .{ ._, ._, .@"test", .tmp3b, .si(0b0_000_001), ._, ._ },
6524 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
6525 .{ .@"1:", .f_p, .st, .tmp1t, ._, ._, ._ },
6526 .{ ._, .f_, .ld, .tmp2t, ._, ._, ._ },
6527 .{ .@"2:", .f_p, .st, .memia(.dst0t, .tmp0, .add_size), ._, ._, ._ },
6528 .{ ._, .f_p, .st, .tmp2t, ._, ._, ._ },
6529 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6530 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6531 } },
6532 }, .{
6533 .required_features = .{ .sse, null, null, null },
6534 .src_constraints = .{
6535 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
6536 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
6537 },
6538 .patterns = &.{
6539 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },
6540 },
6541 .call_frame = .{ .alignment = .@"16" },
6542 .extra_temps = .{
6543 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
6544 .unused,
6545 .unused,
6546 .unused,
6547 .unused,
6548 .unused,
6549 .unused,
6550 .unused,
6551 .unused,
6552 },
6553 .dst_temps = .{.{ .ref = .src0 }},
6554 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6555 .each = .{ .once = &.{
6556 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
6557 } },
6558 }, .{
6559 .required_features = .{ .avx, null, null, null },
6560 .src_constraints = .{
6561 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
6562 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
6563 },
6564 .patterns = &.{
6565 .{ .src = .{ .to_mem, .to_mem } },
6566 },
6567 .call_frame = .{ .alignment = .@"16" },
6568 .extra_temps = .{
6569 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6570 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
6571 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
6572 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
6573 .unused,
6574 .unused,
6575 .unused,
6576 .unused,
6577 .unused,
6578 },
6579 .dst_temps = .{.mem},
6580 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6581 .each = .{ .once = &.{
6582 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6583 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
6584 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
6585 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6586 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
6587 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6588 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6589 } },
6590 }, .{
6591 .required_features = .{ .sse2, null, null, null },
6592 .src_constraints = .{
6593 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
6594 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
6595 },
6596 .patterns = &.{
6597 .{ .src = .{ .to_mem, .to_mem } },
6598 },
6599 .call_frame = .{ .alignment = .@"16" },
6600 .extra_temps = .{
6601 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6602 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
6603 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
6604 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
6605 .unused,
6606 .unused,
6607 .unused,
6608 .unused,
6609 .unused,
6610 },
6611 .dst_temps = .{.mem},
6612 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6613 .each = .{ .once = &.{
6614 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6615 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
6616 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
6617 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6618 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
6619 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6620 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6621 } },
6622 }, .{
6623 .required_features = .{ .sse, null, null, null },
6624 .src_constraints = .{
6625 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
6626 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
6627 },
6628 .patterns = &.{
6629 .{ .src = .{ .to_mem, .to_mem } },
6630 },
6631 .call_frame = .{ .alignment = .@"16" },
6632 .extra_temps = .{
6633 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6634 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
6635 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
6636 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
6637 .unused,
6638 .unused,
6639 .unused,
6640 .unused,
6641 .unused,
6642 },
6643 .dst_temps = .{.mem},
6644 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6645 .each = .{ .once = &.{
6646 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6647 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
6648 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
6649 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6650 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
6651 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },6027 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6652 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },6028 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6653 } },6029 } },
...@@ -6662,440 +6038,9683 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -6662,440 +6038,9683 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6662 };6038 };
6663 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);6039 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
6664 },6040 },
6665 .min => |air_tag| if (use_old) try cg.airBinOp(inst, air_tag) else {6041 .div_trunc, .div_floor => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, air_tag) else fallback: {
6666 const bin_op = air_datas[@intFromEnum(inst)].bin_op;6042 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
6043 if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airMulDivBinOp(inst, air_tag);
6667 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });6044 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
6668 var res: [1]Temp = undefined;6045 var res: [1]Temp = undefined;
6669 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{6046 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, switch (@as(bits.RoundMode.Direction, switch (air_tag) {
6670 .required_features = .{ .cmov, null, null, null },6047 else => unreachable,
6671 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } },6048 .div_trunc => .zero,
6672 .patterns = &.{6049 .div_floor => .down,
6673 .{ .src = .{ .to_mut_gpr, .to_gpr } },6050 })) {
6674 },6051 else => unreachable,
6675 .dst_temps = .{.{ .ref = .src0 }},6052 inline .zero, .down => |direction| comptime &.{ .{
6676 .clobbers = .{ .eflags = true },6053 .required_features = .{ .f16c, null, null, null },
6677 .each = .{ .once = &.{6054 .src_constraints = .{
6678 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },6055 .{ .scalar_float = .{ .of = .word, .is = .word } },
6679 .{ ._, ._ge, .cmov, .dst0d, .src1d, ._, ._ },6056 .{ .scalar_float = .{ .of = .word, .is = .word } },
6680 } },6057 .any,
6681 }, .{6058 },
6682 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } },6059 .patterns = &.{
6683 .patterns = &.{6060 .{ .src = .{ .to_sse, .to_sse, .none } },
6684 .{ .src = .{ .to_mut_gpr, .mem } },6061 },
6685 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6062 .extra_temps = .{
6686 .{ .src = .{ .to_mut_gpr, .to_gpr } },6063 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
6687 },6064 .unused,
6688 .dst_temps = .{.{ .ref = .src0 }},6065 .unused,
6689 .clobbers = .{ .eflags = true },6066 .unused,
6690 .each = .{ .once = &.{6067 .unused,
6691 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },6068 .unused,
6692 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },6069 .unused,
6693 .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ },6070 .unused,
6694 } },6071 .unused,
6695 }, .{6072 },
6696 .required_features = .{ .cmov, null, null, null },6073 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6697 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } },6074 .each = .{ .once = &.{
6698 .patterns = &.{6075 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
6699 .{ .src = .{ .to_mut_gpr, .to_gpr } },6076 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
6700 },6077 .{ ._, .v_ss, .div, .dst0x, .dst0x, .tmp0d, ._ },
6701 .dst_temps = .{.{ .ref = .src0 }},6078 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
6702 .clobbers = .{ .eflags = true },6079 .{ ._, .v_ps, .cvtph2, .dst0x, .dst0q, ._, ._ },
6703 .each = .{ .once = &.{6080 .{ ._, .v_ss, .round, .dst0x, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }) },
6704 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },6081 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
6705 .{ ._, ._ae, .cmov, .dst0d, .src1d, ._, ._ },6082 } },
6706 } },6083 }, .{
6707 }, .{6084 .required_features = .{ .sse, null, null, null },
6708 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } },6085 .src_constraints = .{
6709 .patterns = &.{6086 .{ .scalar_float = .{ .of = .word, .is = .word } },
6710 .{ .src = .{ .to_mut_gpr, .mem } },6087 .{ .scalar_float = .{ .of = .word, .is = .word } },
6711 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6088 .any,
6712 .{ .src = .{ .to_mut_gpr, .to_gpr } },6089 },
6713 },6090 .patterns = &.{
6714 .dst_temps = .{.{ .ref = .src0 }},6091 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
6715 .clobbers = .{ .eflags = true },6092 },
6716 .each = .{ .once = &.{6093 .call_frame = .{ .alignment = .@"16" },
6717 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },6094 .extra_temps = .{
6718 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },6095 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
6719 .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ },6096 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6720 } },6097 else => unreachable,
6721 }, .{6098 .zero => "__trunch",
6722 .required_features = .{ .cmov, null, null, null },6099 .down => "__floorh",
6723 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } },6100 } } } },
6724 .patterns = &.{6101 .unused,
6725 .{ .src = .{ .to_mut_gpr, .mem } },6102 .unused,
6726 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6103 .unused,
6727 .{ .src = .{ .to_mut_gpr, .to_gpr } },6104 .unused,
6728 },6105 .unused,
6729 .dst_temps = .{.{ .ref = .src0 }},6106 .unused,
6730 .clobbers = .{ .eflags = true },6107 .unused,
6731 .each = .{ .once = &.{6108 },
6732 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },6109 .dst_temps = .{.{ .ref = .src0 }},
6733 .{ ._, ._ge, .cmov, .dst0w, .src1w, ._, ._ },6110 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6734 } },6111 .each = .{ .once = &.{
6735 }, .{6112 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
6736 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } },6113 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
6737 .patterns = &.{6114 } },
6738 .{ .src = .{ .to_mut_gpr, .mem } },6115 }, .{
6739 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6116 .required_features = .{ .f16c, null, null, null },
6740 .{ .src = .{ .to_mut_gpr, .to_gpr } },6117 .src_constraints = .{
6741 },6118 .{ .scalar_float = .{ .of = .qword, .is = .word } },
6742 .dst_temps = .{.{ .ref = .src0 }},6119 .{ .scalar_float = .{ .of = .qword, .is = .word } },
6743 .clobbers = .{ .eflags = true },6120 .any,
6744 .each = .{ .once = &.{6121 },
6745 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },6122 .patterns = &.{
6746 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },6123 .{ .src = .{ .mem, .mem, .none } },
6747 .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ },6124 .{ .src = .{ .to_sse, .mem, .none } },
6748 } },6125 .{ .src = .{ .mem, .to_sse, .none } },
6749 }, .{6126 .{ .src = .{ .to_sse, .to_sse, .none } },
6750 .required_features = .{ .cmov, null, null, null },6127 },
6751 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } },6128 .extra_temps = .{
6752 .patterns = &.{6129 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
6753 .{ .src = .{ .to_mut_gpr, .mem } },6130 .unused,
6754 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6131 .unused,
6755 .{ .src = .{ .to_mut_gpr, .to_gpr } },6132 .unused,
6756 },6133 .unused,
6757 .dst_temps = .{.{ .ref = .src0 }},6134 .unused,
6758 .clobbers = .{ .eflags = true },6135 .unused,
6759 .each = .{ .once = &.{6136 .unused,
6760 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },6137 .unused,
6761 .{ ._, ._ae, .cmov, .dst0w, .src1w, ._, ._ },6138 },
6762 } },6139 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6763 }, .{6140 .each = .{ .once = &.{
6764 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } },6141 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
6765 .patterns = &.{6142 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
6766 .{ .src = .{ .to_mut_gpr, .mem } },6143 .{ ._, .v_ps, .div, .dst0x, .dst0x, .tmp0x, ._ },
6767 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6144 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
6768 .{ .src = .{ .to_mut_gpr, .to_gpr } },6145 .{ ._, .v_ps, .cvtph2, .dst0x, .dst0q, ._, ._ },
6769 },6146 .{ ._, .v_ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6770 .dst_temps = .{.{ .ref = .src0 }},6147 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
6771 .clobbers = .{ .eflags = true },6148 } },
6772 .each = .{ .once = &.{6149 }, .{
6773 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },6150 .required_features = .{ .f16c, null, null, null },
6774 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },6151 .src_constraints = .{
6775 .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ },6152 .{ .scalar_float = .{ .of = .xword, .is = .word } },
6776 } },6153 .{ .scalar_float = .{ .of = .xword, .is = .word } },
6777 }, .{6154 .any,
6778 .required_features = .{ .cmov, null, null, null },6155 },
6779 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } },6156 .patterns = &.{
6780 .patterns = &.{6157 .{ .src = .{ .mem, .mem, .none } },
6781 .{ .src = .{ .to_mut_gpr, .mem } },6158 .{ .src = .{ .to_sse, .mem, .none } },
6782 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6159 .{ .src = .{ .mem, .to_sse, .none } },
6783 .{ .src = .{ .to_mut_gpr, .to_gpr } },6160 .{ .src = .{ .to_sse, .to_sse, .none } },
6784 },6161 },
6785 .dst_temps = .{.{ .ref = .src0 }},6162 .extra_temps = .{
6786 .clobbers = .{ .eflags = true },6163 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
6787 .each = .{ .once = &.{6164 .unused,
6788 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },6165 .unused,
6789 .{ ._, ._ge, .cmov, .dst0d, .src1d, ._, ._ },6166 .unused,
6790 } },6167 .unused,
6791 }, .{6168 .unused,
6792 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } },6169 .unused,
6793 .patterns = &.{6170 .unused,
6794 .{ .src = .{ .to_mut_gpr, .mem } },6171 .unused,
6795 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6172 },
6796 .{ .src = .{ .to_mut_gpr, .to_gpr } },6173 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6797 },6174 .each = .{ .once = &.{
6798 .dst_temps = .{.{ .ref = .src0 }},6175 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
6799 .clobbers = .{ .eflags = true },6176 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
6800 .each = .{ .once = &.{6177 .{ ._, .v_ps, .div, .dst0y, .dst0y, .tmp0y, ._ },
6801 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },6178 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
6802 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },6179 .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ },
6803 .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ },6180 .{ ._, .v_ps, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6804 } },6181 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
6805 }, .{6182 } },
6806 .required_features = .{ .cmov, null, null, null },6183 }, .{
6807 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } },6184 .required_features = .{ .f16c, null, null, null },
6808 .patterns = &.{6185 .src_constraints = .{
6809 .{ .src = .{ .to_mut_gpr, .mem } },6186 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
6810 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6187 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
6811 .{ .src = .{ .to_mut_gpr, .to_gpr } },6188 .any,
6812 },6189 },
6813 .dst_temps = .{.{ .ref = .src0 }},6190 .patterns = &.{
6814 .clobbers = .{ .eflags = true },6191 .{ .src = .{ .to_mem, .to_mem, .none } },
6815 .each = .{ .once = &.{6192 },
6816 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },6193 .extra_temps = .{
6817 .{ ._, ._ae, .cmov, .dst0d, .src1d, ._, ._ },6194 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6818 } },6195 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
6819 }, .{6196 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
6820 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } },6197 .unused,
6821 .patterns = &.{6198 .unused,
6822 .{ .src = .{ .to_mut_gpr, .mem } },6199 .unused,
6823 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6200 .unused,
6824 .{ .src = .{ .to_mut_gpr, .to_gpr } },6201 .unused,
6825 },6202 .unused,
6826 .dst_temps = .{.{ .ref = .src0 }},6203 },
6827 .clobbers = .{ .eflags = true },6204 .dst_temps = .{.mem},
6828 .each = .{ .once = &.{6205 .clobbers = .{ .eflags = true },
6829 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },6206 .each = .{ .once = &.{
6830 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },6207 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6831 .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ },6208 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
6832 } },6209 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
6833 }, .{6210 .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .tmp2y, ._ },
6834 .required_features = .{ .@"64bit", .cmov, null, null },6211 .{ ._, .v_, .cvtps2ph, .tmp1x, .tmp1y, .rm(.{}), ._ },
6835 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } },6212 .{ ._, .v_ps, .cvtph2, .tmp1y, .tmp1x, ._, ._ },
6836 .patterns = &.{6213 .{ ._, .v_ps, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6837 .{ .src = .{ .to_mut_gpr, .mem } },6214 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
6838 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6215 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6839 .{ .src = .{ .to_mut_gpr, .to_gpr } },6216 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6840 },6217 } },
6841 .dst_temps = .{.{ .ref = .src0 }},6218 }, .{
6842 .clobbers = .{ .eflags = true },6219 .required_features = .{ .avx, null, null, null },
6843 .each = .{ .once = &.{6220 .src_constraints = .{
6844 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },6221 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6845 .{ ._, ._ge, .cmov, .dst0q, .src1q, ._, ._ },6222 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6846 } },6223 .any,
6847 }, .{6224 },
6848 .required_features = .{ .@"64bit", null, null, null },6225 .patterns = &.{
6849 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } },6226 .{ .src = .{ .to_mem, .to_mem, .none } },
6850 .patterns = &.{6227 },
6851 .{ .src = .{ .to_mut_gpr, .mem } },6228 .call_frame = .{ .alignment = .@"16" },
6852 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6229 .extra_temps = .{
6853 .{ .src = .{ .to_mut_gpr, .to_gpr } },6230 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6854 },6231 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
6855 .dst_temps = .{.{ .ref = .src0 }},6232 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
6856 .clobbers = .{ .eflags = true },6233 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
6857 .each = .{ .once = &.{6234 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6858 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },6235 else => unreachable,
6859 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },6236 .zero => "__trunch",
6860 .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ },6237 .down => "__floorh",
6861 } },6238 } } } },
6862 }, .{6239 .unused,
6863 .required_features = .{ .@"64bit", .cmov, null, null },6240 .unused,
6864 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } },6241 .unused,
6865 .patterns = &.{6242 .unused,
6866 .{ .src = .{ .to_mut_gpr, .mem } },6243 },
6867 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6244 .dst_temps = .{.mem},
6868 .{ .src = .{ .to_mut_gpr, .to_gpr } },6245 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6869 },6246 .each = .{ .once = &.{
6870 .dst_temps = .{.{ .ref = .src0 }},6247 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6871 .clobbers = .{ .eflags = true },6248 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
6872 .each = .{ .once = &.{6249 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
6873 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },6250 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
6874 .{ ._, ._ae, .cmov, .dst0q, .src1q, ._, ._ },6251 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6875 } },6252 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
6876 }, .{6253 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
6877 .required_features = .{ .@"64bit", null, null, null },6254 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
6878 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } },6255 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6879 .patterns = &.{6256 } },
6880 .{ .src = .{ .to_mut_gpr, .mem } },6257 }, .{
6881 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6258 .required_features = .{ .sse4_1, null, null, null },
6882 .{ .src = .{ .to_mut_gpr, .to_gpr } },6259 .src_constraints = .{
6883 },6260 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6884 .dst_temps = .{.{ .ref = .src0 }},6261 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6885 .clobbers = .{ .eflags = true },6262 .any,
6886 .each = .{ .once = &.{6263 },
6887 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },6264 .patterns = &.{
6888 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },6265 .{ .src = .{ .to_mem, .to_mem, .none } },
6889 .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ },6266 },
6890 } },6267 .call_frame = .{ .alignment = .@"16" },
6891 }, .{6268 .extra_temps = .{
6892 .required_features = .{ .@"64bit", .cmov, null, null },6269 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6893 .src_constraints = .{ .any_signed_int, .any_signed_int },6270 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
6894 .patterns = &.{6271 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
6895 .{ .src = .{ .to_mem, .to_mem } },6272 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
6896 },6273 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6897 .extra_temps = .{6274 else => unreachable,
6898 .{ .type = .isize, .kind = .{ .reg = .rsi } },6275 .zero => "__trunch",
6899 .{ .type = .u64, .kind = .{ .reg = .rdi } },6276 .down => "__floorh",
6900 .{ .type = .u64, .kind = .{ .reg = .rcx } },6277 } } } },
6901 .unused,6278 .unused,
6902 .unused,6279 .unused,
6903 .unused,6280 .unused,
6904 .unused,6281 .unused,
6905 .unused,6282 },
6906 .unused,6283 .dst_temps = .{.mem},
6907 },6284 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6908 .dst_temps = .{.mem},6285 .each = .{ .once = &.{
6909 .clobbers = .{ .eflags = true },6286 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6910 .each = .{ .once = &.{6287 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
6911 .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ },6288 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
6912 .{ ._, ._c, .cl, ._, ._, ._, ._ },6289 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
6913 .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },6290 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
6914 .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },6291 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6915 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },6292 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
6916 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },6293 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
6917 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },6294 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
6918 .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ },6295 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6919 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },6296 } },
6920 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },6297 }, .{
6921 .{ ._, ._ge, .cmov, .tmp0p, .tmp1p, ._, ._ },6298 .required_features = .{ .sse2, null, null, null },
6922 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },6299 .src_constraints = .{
6923 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },6300 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6924 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },6301 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6925 } },6302 .any,
6926 }, .{6303 },
6927 .required_features = .{ .@"64bit", null, null, null },6304 .patterns = &.{
6928 .src_constraints = .{ .any_signed_int, .any_signed_int },6305 .{ .src = .{ .to_mem, .to_mem, .none } },
6929 .patterns = &.{6306 },
6930 .{ .src = .{ .to_mem, .to_mem } },6307 .call_frame = .{ .alignment = .@"16" },
6931 },6308 .extra_temps = .{
6932 .extra_temps = .{6309 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6933 .{ .type = .isize, .kind = .{ .reg = .rsi } },6310 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
6934 .{ .type = .u64, .kind = .{ .reg = .rdi } },6311 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
6935 .{ .type = .u64, .kind = .{ .reg = .rcx } },6312 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
6936 .unused,6313 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6937 .unused,6314 else => unreachable,
6938 .unused,6315 .zero => "__trunch",
6939 .unused,6316 .down => "__floorh",
6940 .unused,6317 } } } },
6941 .unused,6318 .{ .type = .f16, .kind = .{ .reg = .ax } },
6942 },6319 .unused,
6943 .dst_temps = .{.mem},6320 .unused,
6944 .clobbers = .{ .eflags = true },6321 .unused,
6945 .each = .{ .once = &.{6322 },
6946 .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ },6323 .dst_temps = .{.mem},
6947 .{ ._, ._c, .cl, ._, ._, ._, ._ },6324 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6948 .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },6325 .each = .{ .once = &.{
6949 .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },6326 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6950 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },6327 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
6951 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },6328 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
6952 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },6329 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
6953 .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ },6330 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
6954 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },6331 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6955 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },6332 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
6956 .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ },6333 .{ ._, .p_w, .extr, .tmp5d, .tmp1x, .ui(0), ._ },
6957 .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },6334 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp5w, ._, ._ },
6958 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },6335 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
6959 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },6336 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6960 } },6337 } },
6961 }, .{6338 }, .{
6962 .required_features = .{ .@"64bit", .cmov, null, null },6339 .required_features = .{ .sse, null, null, null },
6963 .src_constraints = .{ .any_unsigned_int, .any_unsigned_int },6340 .src_constraints = .{
6964 .patterns = &.{6341 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6965 .{ .src = .{ .to_mem, .to_mem } },6342 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6966 },6343 .any,
6967 .extra_temps = .{6344 },
6968 .{ .type = .isize, .kind = .{ .reg = .rsi } },6345 .patterns = &.{
6969 .{ .type = .u64, .kind = .{ .reg = .rdi } },6346 .{ .src = .{ .to_mem, .to_mem, .none } },
6970 .{ .type = .u64, .kind = .{ .reg = .rcx } },6347 },
6971 .unused,6348 .call_frame = .{ .alignment = .@"16" },
6972 .unused,6349 .extra_temps = .{
6973 .unused,6350 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6974 .unused,6351 .{ .type = .f16, .kind = .{ .reg = .ax } },
6975 .unused,6352 .{ .type = .f32, .kind = .mem },
6976 .unused,6353 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
6977 },6354 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
6978 .dst_temps = .{.mem},6355 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
6979 .clobbers = .{ .eflags = true },6356 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6980 .each = .{ .once = &.{6357 else => unreachable,
6981 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ },6358 .zero => "__trunch",
6982 .{ ._, ._c, .cl, ._, ._, ._, ._ },6359 .down => "__floorh",
6983 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ },6360 } } } },
6984 .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ },6361 .unused,
6985 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },6362 .unused,
6986 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },6363 },
6987 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },6364 .dst_temps = .{.mem},
6988 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },6365 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6989 .{ ._, ._ae, .cmov, .tmp0p, .tmp1p, ._, ._ },6366 .each = .{ .once = &.{
6990 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },6367 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6991 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },6368 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
6992 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },6369 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
6993 } },6370 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
6994 }, .{6371 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
6995 .required_features = .{ .@"64bit", null, null, null },6372 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
6996 .src_constraints = .{ .any_unsigned_int, .any_unsigned_int },6373 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
6997 .patterns = &.{6374 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
6998 .{ .src = .{ .to_mem, .to_mem } },6375 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
6999 },6376 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
7000 .extra_temps = .{6377 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
7001 .{ .type = .isize, .kind = .{ .reg = .rsi } },6378 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
7002 .{ .type = .u64, .kind = .{ .reg = .rdi } },6379 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
7003 .{ .type = .u64, .kind = .{ .reg = .rcx } },6380 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7004 .unused,6381 } },
7005 .unused,6382 }, .{
7006 .unused,6383 .required_features = .{ .avx, null, null, null },
7007 .unused,6384 .src_constraints = .{
7008 .unused,6385 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
7009 .unused,6386 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
7010 },6387 .any,
7011 .dst_temps = .{.mem},6388 },
7012 .clobbers = .{ .eflags = true },6389 .patterns = &.{
7013 .each = .{ .once = &.{6390 .{ .src = .{ .to_sse, .mem, .none } },
7014 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ },6391 .{ .src = .{ .to_sse, .to_sse, .none } },
7015 .{ ._, ._c, .cl, ._, ._, ._, ._ },6392 },
7016 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ },6393 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
7017 .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ },6394 .each = .{ .once = &.{
7018 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },6395 .{ ._, .v_ss, .div, .dst0x, .src0x, .src1d, ._ },
7019 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },6396 .{ ._, .v_ss, .round, .dst0x, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }) },
7020 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },6397 } },
7021 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },6398 }, .{
7022 .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ },6399 .required_features = .{ .sse4_1, null, null, null },
7023 .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },6400 .src_constraints = .{
7024 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },6401 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
7025 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },6402 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
7026 } },6403 .any,
7027 }, .{6404 },
7028 .required_features = .{ .avx, null, null, null },6405 .patterns = &.{
7029 .src_constraints = .{6406 .{ .src = .{ .to_mut_sse, .mem, .none } },
7030 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },6407 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
7031 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },6408 },
7032 },6409 .dst_temps = .{.{ .ref = .src0 }},
7033 .patterns = &.{6410 .each = .{ .once = &.{
7034 .{ .src = .{ .to_sse, .mem } },6411 .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ },
7035 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },6412 .{ ._, ._ss, .round, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7036 .{ .src = .{ .to_sse, .to_sse } },6413 } },
7037 },6414 }, .{
7038 .dst_temps = .{.{ .rc = .sse }},6415 .required_features = .{ .sse, null, null, null },
7039 .each = .{ .once = &.{6416 .src_constraints = .{
7040 .{ ._, .vp_b, .mins, .dst0x, .src0x, .src1x, ._ },6417 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
7041 } },6418 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
7042 }, .{6419 .any,
7043 .required_features = .{ .sse4_1, null, null, null },6420 },
7044 .src_constraints = .{6421 .patterns = &.{
7045 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },6422 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } },
7046 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },6423 },
7047 },6424 .call_frame = .{ .alignment = .@"16" },
7048 .patterns = &.{6425 .extra_temps = .{
7049 .{ .src = .{ .to_mut_sse, .mem } },6426 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7050 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },6427 else => unreachable,
7051 .{ .src = .{ .to_mut_sse, .to_sse } },6428 .zero => "truncf",
7052 },6429 .down => "floorf",
7053 .dst_temps = .{.{ .ref = .src0 }},6430 } } } },
7054 .each = .{ .once = &.{6431 .unused,
7055 .{ ._, .p_b, .mins, .dst0x, .src1x, ._, ._ },6432 .unused,
7056 } },6433 .unused,
7057 }, .{6434 .unused,
7058 .required_features = .{ .sse2, null, null, null },6435 .unused,
7059 .src_constraints = .{6436 .unused,
7060 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },6437 .unused,
7061 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },6438 .unused,
7062 },6439 },
7063 .patterns = &.{6440 .dst_temps = .{.{ .ref = .src0 }},
7064 .{ .src = .{ .to_mut_sse, .mem } },6441 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7065 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },6442 .each = .{ .once = &.{
7066 .{ .src = .{ .to_mut_sse, .to_sse } },6443 .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ },
7067 },6444 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
7068 .dst_temps = .{.{ .rc = .sse }},6445 } },
7069 .each = .{ .once = &.{6446 }, .{
7070 .{ ._, ._dqa, .mov, .dst0x, .src1x, ._, ._ },6447 .required_features = .{ .avx, null, null, null },
7071 .{ ._, .p_b, .cmpgt, .dst0x, .src0x, ._, ._ },6448 .src_constraints = .{
7072 .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ },6449 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
7073 .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ },6450 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
7074 .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ },6451 .any,
7075 } },6452 },
7076 }, .{6453 .patterns = &.{
7077 .required_features = .{ .avx2, null, null, null },6454 .{ .src = .{ .to_sse, .mem, .none } },
7078 .src_constraints = .{6455 .{ .src = .{ .to_sse, .to_sse, .none } },
7079 .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } },6456 },
7080 .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } },6457 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
7081 },6458 .each = .{ .once = &.{
7082 .patterns = &.{6459 .{ ._, .v_ps, .div, .dst0x, .src0x, .src1x, ._ },
7083 .{ .src = .{ .to_sse, .mem } },6460 .{ ._, .v_ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7084 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },6461 } },
7085 .{ .src = .{ .to_sse, .to_sse } },6462 }, .{
7086 },6463 .required_features = .{ .sse4_1, null, null, null },
7087 .dst_temps = .{.{ .rc = .sse }},6464 .src_constraints = .{
7088 .each = .{ .once = &.{6465 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
7089 .{ ._, .vp_b, .mins, .dst0y, .src0y, .src1y, ._ },6466 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
7090 } },6467 .any,
7091 }, .{6468 },
7092 .required_features = .{ .avx2, null, null, null },6469 .patterns = &.{
7093 .src_constraints = .{6470 .{ .src = .{ .to_mut_sse, .mem, .none } },
7094 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } },6471 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
7095 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } },6472 },
7096 },6473 .dst_temps = .{.{ .ref = .src0 }},
6474 .each = .{ .once = &.{
6475 .{ ._, ._ps, .div, .dst0x, .src1x, ._, ._ },
6476 .{ ._, ._ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6477 } },
6478 }, .{
6479 .required_features = .{ .sse, null, null, null },
6480 .src_constraints = .{
6481 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
6482 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
6483 .any,
6484 },
6485 .patterns = &.{
6486 .{ .src = .{ .to_mem, .to_mem, .none } },
6487 },
6488 .call_frame = .{ .alignment = .@"16" },
6489 .extra_temps = .{
6490 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6491 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
6492 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6493 else => unreachable,
6494 .zero => "truncf",
6495 .down => "floorf",
6496 } } } },
6497 .unused,
6498 .unused,
6499 .unused,
6500 .unused,
6501 .unused,
6502 .unused,
6503 },
6504 .dst_temps = .{.mem},
6505 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6506 .each = .{ .once = &.{
6507 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6508 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
6509 .{ ._, ._ss, .div, .tmp1x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },
6510 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
6511 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
6512 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
6513 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6514 } },
6515 }, .{
6516 .required_features = .{ .avx, null, null, null },
6517 .src_constraints = .{
6518 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
6519 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
6520 .any,
6521 },
6522 .patterns = &.{
6523 .{ .src = .{ .to_sse, .mem, .none } },
6524 .{ .src = .{ .to_sse, .to_sse, .none } },
6525 },
6526 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6527 .each = .{ .once = &.{
6528 .{ ._, .v_ps, .div, .dst0y, .src0y, .src1y, ._ },
6529 .{ ._, .v_ps, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6530 } },
6531 }, .{
6532 .required_features = .{ .avx, null, null, null },
6533 .src_constraints = .{
6534 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
6535 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
6536 .any,
6537 },
6538 .patterns = &.{
6539 .{ .src = .{ .to_mem, .to_mem, .none } },
6540 },
6541 .extra_temps = .{
6542 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6543 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
6544 .unused,
6545 .unused,
6546 .unused,
6547 .unused,
6548 .unused,
6549 .unused,
6550 .unused,
6551 },
6552 .dst_temps = .{.mem},
6553 .clobbers = .{ .eflags = true },
6554 .each = .{ .once = &.{
6555 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6556 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
6557 .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
6558 .{ ._, .v_ps, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6559 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
6560 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
6561 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6562 } },
6563 }, .{
6564 .required_features = .{ .sse4_1, null, null, null },
6565 .src_constraints = .{
6566 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
6567 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
6568 .any,
6569 },
6570 .patterns = &.{
6571 .{ .src = .{ .to_mem, .to_mem, .none } },
6572 },
6573 .extra_temps = .{
6574 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6575 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
6576 .unused,
6577 .unused,
6578 .unused,
6579 .unused,
6580 .unused,
6581 .unused,
6582 .unused,
6583 },
6584 .dst_temps = .{.mem},
6585 .clobbers = .{ .eflags = true },
6586 .each = .{ .once = &.{
6587 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6588 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
6589 .{ ._, ._ps, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
6590 .{ ._, ._ps, .round, .tmp1x, .tmp1x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6591 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
6592 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6593 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6594 } },
6595 }, .{
6596 .required_features = .{ .avx, null, null, null },
6597 .src_constraints = .{
6598 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
6599 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
6600 .any,
6601 },
6602 .patterns = &.{
6603 .{ .src = .{ .to_sse, .mem, .none } },
6604 .{ .src = .{ .to_sse, .to_sse, .none } },
6605 },
6606 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6607 .each = .{ .once = &.{
6608 .{ ._, .v_sd, .div, .dst0x, .src0x, .src1q, ._ },
6609 .{ ._, .v_sd, .round, .dst0x, .dst0x, .dst0q, .rm(.{ .direction = direction, .precision = .inexact }) },
6610 } },
6611 }, .{
6612 .required_features = .{ .sse4_1, null, null, null },
6613 .src_constraints = .{
6614 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
6615 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
6616 .any,
6617 },
6618 .patterns = &.{
6619 .{ .src = .{ .to_mut_sse, .mem, .none } },
6620 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
6621 },
6622 .dst_temps = .{.{ .ref = .src0 }},
6623 .each = .{ .once = &.{
6624 .{ ._, ._sd, .div, .dst0x, .src1q, ._, ._ },
6625 .{ ._, ._sd, .round, .dst0x, .dst0q, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6626 } },
6627 }, .{
6628 .required_features = .{ .sse2, null, null, null },
6629 .src_constraints = .{
6630 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
6631 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
6632 .any,
6633 },
6634 .patterns = &.{
6635 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } },
6636 },
6637 .call_frame = .{ .alignment = .@"16" },
6638 .extra_temps = .{
6639 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6640 else => unreachable,
6641 .zero => "trunc",
6642 .down => "floor",
6643 } } } },
6644 .unused,
6645 .unused,
6646 .unused,
6647 .unused,
6648 .unused,
6649 .unused,
6650 .unused,
6651 .unused,
6652 },
6653 .dst_temps = .{.{ .ref = .src0 }},
6654 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6655 .each = .{ .once = &.{
6656 .{ ._, ._sd, .div, .dst0x, .src1q, ._, ._ },
6657 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
6658 } },
6659 }, .{
6660 .required_features = .{ .sse, null, null, null },
6661 .src_constraints = .{
6662 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
6663 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
6664 .any,
6665 },
6666 .patterns = &.{
6667 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
6668 },
6669 .call_frame = .{ .alignment = .@"16" },
6670 .extra_temps = .{
6671 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },
6672 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6673 else => unreachable,
6674 .zero => "trunc",
6675 .down => "floor",
6676 } } } },
6677 .unused,
6678 .unused,
6679 .unused,
6680 .unused,
6681 .unused,
6682 .unused,
6683 .unused,
6684 },
6685 .dst_temps = .{.{ .ref = .src0 }},
6686 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6687 .each = .{ .once = &.{
6688 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
6689 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
6690 } },
6691 }, .{
6692 .required_features = .{ .avx, null, null, null },
6693 .src_constraints = .{
6694 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
6695 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
6696 .any,
6697 },
6698 .patterns = &.{
6699 .{ .src = .{ .to_sse, .mem, .none } },
6700 .{ .src = .{ .to_sse, .to_sse, .none } },
6701 },
6702 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6703 .each = .{ .once = &.{
6704 .{ ._, .v_pd, .div, .dst0x, .src0x, .src1x, ._ },
6705 .{ ._, .v_pd, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6706 } },
6707 }, .{
6708 .required_features = .{ .sse4_1, null, null, null },
6709 .src_constraints = .{
6710 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
6711 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
6712 .any,
6713 },
6714 .patterns = &.{
6715 .{ .src = .{ .to_mut_sse, .mem, .none } },
6716 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
6717 },
6718 .dst_temps = .{.{ .ref = .src0 }},
6719 .each = .{ .once = &.{
6720 .{ ._, ._pd, .div, .dst0x, .src1x, ._, ._ },
6721 .{ ._, ._pd, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6722 } },
6723 }, .{
6724 .required_features = .{ .avx, null, null, null },
6725 .src_constraints = .{
6726 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
6727 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
6728 .any,
6729 },
6730 .patterns = &.{
6731 .{ .src = .{ .to_sse, .mem, .none } },
6732 .{ .src = .{ .to_sse, .to_sse, .none } },
6733 },
6734 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6735 .each = .{ .once = &.{
6736 .{ ._, .v_pd, .div, .dst0y, .src0y, .src1y, ._ },
6737 .{ ._, .v_pd, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6738 } },
6739 }, .{
6740 .required_features = .{ .avx, null, null, null },
6741 .src_constraints = .{
6742 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
6743 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
6744 .any,
6745 },
6746 .patterns = &.{
6747 .{ .src = .{ .to_mem, .to_mem, .none } },
6748 },
6749 .extra_temps = .{
6750 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6751 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
6752 .unused,
6753 .unused,
6754 .unused,
6755 .unused,
6756 .unused,
6757 .unused,
6758 .unused,
6759 },
6760 .dst_temps = .{.mem},
6761 .clobbers = .{ .eflags = true },
6762 .each = .{ .once = &.{
6763 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6764 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
6765 .{ ._, .v_pd, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
6766 .{ ._, .v_pd, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6767 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
6768 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
6769 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6770 } },
6771 }, .{
6772 .required_features = .{ .sse4_1, null, null, null },
6773 .src_constraints = .{
6774 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
6775 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
6776 .any,
6777 },
6778 .patterns = &.{
6779 .{ .src = .{ .to_mem, .to_mem, .none } },
6780 },
6781 .extra_temps = .{
6782 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6783 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
6784 .unused,
6785 .unused,
6786 .unused,
6787 .unused,
6788 .unused,
6789 .unused,
6790 .unused,
6791 },
6792 .dst_temps = .{.mem},
6793 .clobbers = .{ .eflags = true },
6794 .each = .{ .once = &.{
6795 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6796 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
6797 .{ ._, ._pd, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
6798 .{ ._, ._pd, .round, .tmp1x, .tmp1x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6799 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
6800 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6801 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6802 } },
6803 }, .{
6804 .required_features = .{ .sse2, null, null, null },
6805 .src_constraints = .{
6806 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
6807 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
6808 .any,
6809 },
6810 .patterns = &.{
6811 .{ .src = .{ .to_mem, .to_mem, .none } },
6812 },
6813 .call_frame = .{ .alignment = .@"16" },
6814 .extra_temps = .{
6815 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6816 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
6817 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6818 else => unreachable,
6819 .zero => "trunc",
6820 .down => "floor",
6821 } } } },
6822 .unused,
6823 .unused,
6824 .unused,
6825 .unused,
6826 .unused,
6827 .unused,
6828 },
6829 .dst_temps = .{.mem},
6830 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6831 .each = .{ .once = &.{
6832 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6833 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
6834 .{ ._, ._sd, .div, .tmp1x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
6835 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
6836 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
6837 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
6838 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6839 } },
6840 }, .{
6841 .required_features = .{ .sse, null, null, null },
6842 .src_constraints = .{
6843 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
6844 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
6845 .any,
6846 },
6847 .patterns = &.{
6848 .{ .src = .{ .to_mem, .to_mem, .none } },
6849 },
6850 .call_frame = .{ .alignment = .@"16" },
6851 .extra_temps = .{
6852 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6853 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
6854 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
6855 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },
6856 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6857 else => unreachable,
6858 .zero => "trunc",
6859 .down => "floor",
6860 } } } },
6861 .unused,
6862 .unused,
6863 .unused,
6864 .unused,
6865 },
6866 .dst_temps = .{.mem},
6867 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6868 .each = .{ .once = &.{
6869 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6870 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
6871 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },
6872 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
6873 .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
6874 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6875 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
6876 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
6877 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
6878 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6879 } },
6880 }, .{
6881 .required_features = .{ .x87, null, null, null },
6882 .src_constraints = .{
6883 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
6884 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
6885 .any,
6886 },
6887 .patterns = &.{
6888 .{ .src = .{ .to_mem, .to_mem, .none } },
6889 },
6890 .call_frame = .{ .size = 16, .alignment = .@"16" },
6891 .extra_temps = .{
6892 .{ .type = .f80, .kind = .{ .reg = .st6 } },
6893 .{ .type = .f80, .kind = .{ .reg = .st7 } },
6894 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
6895 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6896 else => unreachable,
6897 .zero => "__truncx",
6898 .down => "__floorx",
6899 } } } },
6900 .unused,
6901 .unused,
6902 .unused,
6903 .unused,
6904 .unused,
6905 },
6906 .dst_temps = .{.{ .reg = .st0 }},
6907 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6908 .each = .{ .once = &.{
6909 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
6910 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
6911 .{ ._, .f_p, .div, ._, ._, ._, ._ },
6912 .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ },
6913 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6914 } },
6915 }, .{
6916 .required_features = .{ .x87, null, null, null },
6917 .src_constraints = .{
6918 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
6919 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
6920 .any,
6921 },
6922 .patterns = &.{
6923 .{ .src = .{ .mem, .mem, .none } },
6924 },
6925 .call_frame = .{ .size = 16, .alignment = .@"16" },
6926 .extra_temps = .{
6927 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6928 .{ .type = .f80, .kind = .{ .reg = .st6 } },
6929 .{ .type = .f80, .kind = .{ .reg = .st7 } },
6930 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
6931 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6932 else => unreachable,
6933 .zero => "__truncx",
6934 .down => "__floorx",
6935 } } } },
6936 .unused,
6937 .unused,
6938 .unused,
6939 .unused,
6940 },
6941 .dst_temps = .{.mem},
6942 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6943 .each = .{ .once = &.{
6944 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6945 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
6946 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
6947 .{ ._, .f_p, .div, ._, ._, ._, ._ },
6948 .{ ._, .f_p, .st, .mem(.tmp3t), ._, ._, ._ },
6949 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
6950 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
6951 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
6952 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6953 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6954 } },
6955 }, .{
6956 .required_features = .{ .sse, null, null, null },
6957 .src_constraints = .{
6958 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
6959 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
6960 .any,
6961 },
6962 .patterns = &.{
6963 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
6964 },
6965 .call_frame = .{ .alignment = .@"16" },
6966 .extra_temps = .{
6967 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
6968 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6969 else => unreachable,
6970 .zero => "truncq",
6971 .down => "floorq",
6972 } } } },
6973 .unused,
6974 .unused,
6975 .unused,
6976 .unused,
6977 .unused,
6978 .unused,
6979 .unused,
6980 },
6981 .dst_temps = .{.{ .ref = .src0 }},
6982 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6983 .each = .{ .once = &.{
6984 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
6985 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
6986 } },
6987 }, .{
6988 .required_features = .{ .avx, null, null, null },
6989 .src_constraints = .{
6990 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
6991 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
6992 .any,
6993 },
6994 .patterns = &.{
6995 .{ .src = .{ .to_mem, .to_mem, .none } },
6996 },
6997 .call_frame = .{ .alignment = .@"16" },
6998 .extra_temps = .{
6999 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7000 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
7001 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
7002 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
7003 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7004 else => unreachable,
7005 .zero => "truncq",
7006 .down => "floorq",
7007 } } } },
7008 .unused,
7009 .unused,
7010 .unused,
7011 .unused,
7012 },
7013 .dst_temps = .{.mem},
7014 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7015 .each = .{ .once = &.{
7016 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7017 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
7018 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
7019 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
7020 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
7021 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
7022 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
7023 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7024 } },
7025 }, .{
7026 .required_features = .{ .sse2, null, null, null },
7027 .src_constraints = .{
7028 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
7029 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
7030 .any,
7031 },
7032 .patterns = &.{
7033 .{ .src = .{ .to_mem, .to_mem, .none } },
7034 },
7035 .call_frame = .{ .alignment = .@"16" },
7036 .extra_temps = .{
7037 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7038 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
7039 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
7040 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
7041 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7042 else => unreachable,
7043 .zero => "truncq",
7044 .down => "floorq",
7045 } } } },
7046 .unused,
7047 .unused,
7048 .unused,
7049 .unused,
7050 },
7051 .dst_temps = .{.mem},
7052 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7053 .each = .{ .once = &.{
7054 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7055 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
7056 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
7057 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
7058 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
7059 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
7060 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
7061 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7062 } },
7063 }, .{
7064 .required_features = .{ .sse, null, null, null },
7065 .src_constraints = .{
7066 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
7067 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
7068 .any,
7069 },
7070 .patterns = &.{
7071 .{ .src = .{ .to_mem, .to_mem, .none } },
7072 },
7073 .call_frame = .{ .alignment = .@"16" },
7074 .extra_temps = .{
7075 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7076 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
7077 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
7078 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
7079 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7080 else => unreachable,
7081 .zero => "truncq",
7082 .down => "floorq",
7083 } } } },
7084 .unused,
7085 .unused,
7086 .unused,
7087 .unused,
7088 },
7089 .dst_temps = .{.mem},
7090 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7091 .each = .{ .once = &.{
7092 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7093 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
7094 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
7095 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
7096 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
7097 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
7098 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
7099 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7100 } },
7101 } },
7102 }) catch |err| switch (err) {
7103 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
7104 @tagName(air_tag),
7105 cg.typeOf(bin_op.lhs).fmt(pt),
7106 ops[0].tracking(cg),
7107 ops[1].tracking(cg),
7108 }),
7109 else => |e| return e,
7110 };
7111 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
7112 },
7113 .div_trunc_optimized, .div_floor_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, switch (air_tag) {
7114 else => unreachable,
7115 .div_trunc_optimized => .div_trunc,
7116 .div_floor_optimized => .div_floor,
7117 }) else {
7118 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
7119 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
7120 var res: [1]Temp = undefined;
7121 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, switch (@as(bits.RoundMode.Direction, switch (air_tag) {
7122 else => unreachable,
7123 .div_trunc_optimized => .zero,
7124 .div_floor_optimized => .down,
7125 })) {
7126 else => unreachable,
7127 inline .zero, .down => |direction| comptime &.{ .{
7128 .required_features = .{ .f16c, null, null, null },
7129 .src_constraints = .{
7130 .{ .scalar_float = .{ .of = .word, .is = .word } },
7131 .{ .scalar_float = .{ .of = .word, .is = .word } },
7132 .any,
7133 },
7134 .patterns = &.{
7135 .{ .src = .{ .to_sse, .to_sse, .none } },
7136 },
7137 .extra_temps = .{
7138 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
7139 .unused,
7140 .unused,
7141 .unused,
7142 .unused,
7143 .unused,
7144 .unused,
7145 .unused,
7146 .unused,
7147 },
7148 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
7149 .each = .{ .once = &.{
7150 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
7151 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
7152 .{ ._, .v_ss, .div, .dst0x, .dst0x, .tmp0d, ._ },
7153 .{ ._, .v_ss, .round, .dst0x, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }) },
7154 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
7155 } },
7156 }, .{
7157 .required_features = .{ .sse, null, null, null },
7158 .src_constraints = .{
7159 .{ .scalar_float = .{ .of = .word, .is = .word } },
7160 .{ .scalar_float = .{ .of = .word, .is = .word } },
7161 .any,
7162 },
7163 .patterns = &.{
7164 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
7165 },
7166 .call_frame = .{ .alignment = .@"16" },
7167 .extra_temps = .{
7168 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
7169 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7170 else => unreachable,
7171 .zero => "__trunch",
7172 .down => "__floorh",
7173 } } } },
7174 .unused,
7175 .unused,
7176 .unused,
7177 .unused,
7178 .unused,
7179 .unused,
7180 .unused,
7181 },
7182 .dst_temps = .{.{ .ref = .src0 }},
7183 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7184 .each = .{ .once = &.{
7185 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
7186 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
7187 } },
7188 }, .{
7189 .required_features = .{ .f16c, null, null, null },
7190 .src_constraints = .{
7191 .{ .scalar_float = .{ .of = .qword, .is = .word } },
7192 .{ .scalar_float = .{ .of = .qword, .is = .word } },
7193 .any,
7194 },
7195 .patterns = &.{
7196 .{ .src = .{ .mem, .mem, .none } },
7197 .{ .src = .{ .to_sse, .mem, .none } },
7198 .{ .src = .{ .mem, .to_sse, .none } },
7199 .{ .src = .{ .to_sse, .to_sse, .none } },
7200 },
7201 .extra_temps = .{
7202 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
7203 .unused,
7204 .unused,
7205 .unused,
7206 .unused,
7207 .unused,
7208 .unused,
7209 .unused,
7210 .unused,
7211 },
7212 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
7213 .each = .{ .once = &.{
7214 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
7215 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
7216 .{ ._, .v_ps, .div, .dst0x, .dst0x, .tmp0x, ._ },
7217 .{ ._, .v_ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7218 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
7219 } },
7220 }, .{
7221 .required_features = .{ .f16c, null, null, null },
7222 .src_constraints = .{
7223 .{ .scalar_float = .{ .of = .xword, .is = .word } },
7224 .{ .scalar_float = .{ .of = .xword, .is = .word } },
7225 .any,
7226 },
7227 .patterns = &.{
7228 .{ .src = .{ .mem, .mem, .none } },
7229 .{ .src = .{ .to_sse, .mem, .none } },
7230 .{ .src = .{ .mem, .to_sse, .none } },
7231 .{ .src = .{ .to_sse, .to_sse, .none } },
7232 },
7233 .extra_temps = .{
7234 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
7235 .unused,
7236 .unused,
7237 .unused,
7238 .unused,
7239 .unused,
7240 .unused,
7241 .unused,
7242 .unused,
7243 },
7244 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
7245 .each = .{ .once = &.{
7246 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
7247 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
7248 .{ ._, .v_ps, .div, .dst0y, .dst0y, .tmp0y, ._ },
7249 .{ ._, .v_ps, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7250 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
7251 } },
7252 }, .{
7253 .required_features = .{ .f16c, null, null, null },
7254 .src_constraints = .{
7255 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
7256 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
7257 .any,
7258 },
7259 .patterns = &.{
7260 .{ .src = .{ .to_mem, .to_mem, .none } },
7261 },
7262 .extra_temps = .{
7263 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7264 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
7265 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
7266 .unused,
7267 .unused,
7268 .unused,
7269 .unused,
7270 .unused,
7271 .unused,
7272 },
7273 .dst_temps = .{.mem},
7274 .clobbers = .{ .eflags = true },
7275 .each = .{ .once = &.{
7276 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7277 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
7278 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
7279 .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .tmp2y, ._ },
7280 .{ ._, .v_ps, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7281 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
7282 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
7283 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7284 } },
7285 }, .{
7286 .required_features = .{ .avx, null, null, null },
7287 .src_constraints = .{
7288 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
7289 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
7290 .any,
7291 },
7292 .patterns = &.{
7293 .{ .src = .{ .to_mem, .to_mem, .none } },
7294 },
7295 .call_frame = .{ .alignment = .@"16" },
7296 .extra_temps = .{
7297 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7298 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
7299 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
7300 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
7301 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7302 else => unreachable,
7303 .zero => "__trunch",
7304 .down => "__floorh",
7305 } } } },
7306 .unused,
7307 .unused,
7308 .unused,
7309 .unused,
7310 },
7311 .dst_temps = .{.mem},
7312 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7313 .each = .{ .once = &.{
7314 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7315 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
7316 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
7317 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
7318 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
7319 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
7320 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
7321 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
7322 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7323 } },
7324 }, .{
7325 .required_features = .{ .sse4_1, null, null, null },
7326 .src_constraints = .{
7327 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
7328 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
7329 .any,
7330 },
7331 .patterns = &.{
7332 .{ .src = .{ .to_mem, .to_mem, .none } },
7333 },
7334 .call_frame = .{ .alignment = .@"16" },
7335 .extra_temps = .{
7336 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7337 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
7338 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
7339 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
7340 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7341 else => unreachable,
7342 .zero => "__trunch",
7343 .down => "__floorh",
7344 } } } },
7345 .unused,
7346 .unused,
7347 .unused,
7348 .unused,
7349 },
7350 .dst_temps = .{.mem},
7351 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7352 .each = .{ .once = &.{
7353 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7354 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
7355 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
7356 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
7357 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
7358 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
7359 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
7360 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
7361 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
7362 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7363 } },
7364 }, .{
7365 .required_features = .{ .sse2, null, null, null },
7366 .src_constraints = .{
7367 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
7368 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
7369 .any,
7370 },
7371 .patterns = &.{
7372 .{ .src = .{ .to_mem, .to_mem, .none } },
7373 },
7374 .call_frame = .{ .alignment = .@"16" },
7375 .extra_temps = .{
7376 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7377 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
7378 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
7379 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
7380 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7381 else => unreachable,
7382 .zero => "__trunch",
7383 .down => "__floorh",
7384 } } } },
7385 .{ .type = .f16, .kind = .{ .reg = .ax } },
7386 .unused,
7387 .unused,
7388 .unused,
7389 },
7390 .dst_temps = .{.mem},
7391 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7392 .each = .{ .once = &.{
7393 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7394 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
7395 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
7396 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
7397 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
7398 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
7399 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
7400 .{ ._, .p_w, .extr, .tmp5d, .tmp1x, .ui(0), ._ },
7401 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp5w, ._, ._ },
7402 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
7403 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7404 } },
7405 }, .{
7406 .required_features = .{ .sse, null, null, null },
7407 .src_constraints = .{
7408 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
7409 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
7410 .any,
7411 },
7412 .patterns = &.{
7413 .{ .src = .{ .to_mem, .to_mem, .none } },
7414 },
7415 .call_frame = .{ .alignment = .@"16" },
7416 .extra_temps = .{
7417 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7418 .{ .type = .f16, .kind = .{ .reg = .ax } },
7419 .{ .type = .f32, .kind = .mem },
7420 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
7421 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
7422 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
7423 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7424 else => unreachable,
7425 .zero => "__trunch",
7426 .down => "__floorh",
7427 } } } },
7428 .unused,
7429 .unused,
7430 },
7431 .dst_temps = .{.mem},
7432 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7433 .each = .{ .once = &.{
7434 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7435 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
7436 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
7437 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
7438 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
7439 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
7440 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
7441 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
7442 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
7443 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
7444 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
7445 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
7446 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
7447 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7448 } },
7449 }, .{
7450 .required_features = .{ .avx, null, null, null },
7451 .src_constraints = .{
7452 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
7453 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
7454 .any,
7455 },
7456 .patterns = &.{
7457 .{ .src = .{ .to_sse, .mem, .none } },
7458 .{ .src = .{ .to_sse, .to_sse, .none } },
7459 },
7460 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
7461 .each = .{ .once = &.{
7462 .{ ._, .v_ss, .div, .dst0x, .src0x, .src1d, ._ },
7463 .{ ._, .v_ss, .round, .dst0x, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }) },
7464 } },
7465 }, .{
7466 .required_features = .{ .sse4_1, null, null, null },
7467 .src_constraints = .{
7468 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
7469 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
7470 .any,
7471 },
7472 .patterns = &.{
7473 .{ .src = .{ .to_mut_sse, .mem, .none } },
7474 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
7475 },
7476 .dst_temps = .{.{ .ref = .src0 }},
7477 .each = .{ .once = &.{
7478 .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ },
7479 .{ ._, ._ss, .round, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7480 } },
7481 }, .{
7482 .required_features = .{ .sse, null, null, null },
7483 .src_constraints = .{
7484 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
7485 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
7486 .any,
7487 },
7488 .patterns = &.{
7489 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } },
7490 },
7491 .call_frame = .{ .alignment = .@"16" },
7492 .extra_temps = .{
7493 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7494 else => unreachable,
7495 .zero => "truncf",
7496 .down => "floorf",
7497 } } } },
7498 .unused,
7499 .unused,
7500 .unused,
7501 .unused,
7502 .unused,
7503 .unused,
7504 .unused,
7505 .unused,
7506 },
7507 .dst_temps = .{.{ .ref = .src0 }},
7508 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7509 .each = .{ .once = &.{
7510 .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ },
7511 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
7512 } },
7513 }, .{
7514 .required_features = .{ .avx, null, null, null },
7515 .src_constraints = .{
7516 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
7517 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
7518 .any,
7519 },
7520 .patterns = &.{
7521 .{ .src = .{ .to_sse, .mem, .none } },
7522 .{ .src = .{ .to_sse, .to_sse, .none } },
7523 },
7524 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
7525 .each = .{ .once = &.{
7526 .{ ._, .v_ps, .div, .dst0x, .src0x, .src1x, ._ },
7527 .{ ._, .v_ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7528 } },
7529 }, .{
7530 .required_features = .{ .sse4_1, null, null, null },
7531 .src_constraints = .{
7532 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
7533 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
7534 .any,
7535 },
7536 .patterns = &.{
7537 .{ .src = .{ .to_mut_sse, .mem, .none } },
7538 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
7539 },
7540 .dst_temps = .{.{ .ref = .src0 }},
7541 .each = .{ .once = &.{
7542 .{ ._, ._ps, .div, .dst0x, .src1x, ._, ._ },
7543 .{ ._, ._ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7544 } },
7545 }, .{
7546 .required_features = .{ .sse, null, null, null },
7547 .src_constraints = .{
7548 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
7549 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
7550 .any,
7551 },
7552 .patterns = &.{
7553 .{ .src = .{ .to_mem, .to_mem, .none } },
7554 },
7555 .call_frame = .{ .alignment = .@"16" },
7556 .extra_temps = .{
7557 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7558 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
7559 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7560 else => unreachable,
7561 .zero => "truncf",
7562 .down => "floorf",
7563 } } } },
7564 .unused,
7565 .unused,
7566 .unused,
7567 .unused,
7568 .unused,
7569 .unused,
7570 },
7571 .dst_temps = .{.mem},
7572 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7573 .each = .{ .once = &.{
7574 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7575 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
7576 .{ ._, ._ss, .div, .tmp1x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },
7577 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
7578 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
7579 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
7580 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7581 } },
7582 }, .{
7583 .required_features = .{ .avx, null, null, null },
7584 .src_constraints = .{
7585 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
7586 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
7587 .any,
7588 },
7589 .patterns = &.{
7590 .{ .src = .{ .to_sse, .mem, .none } },
7591 .{ .src = .{ .to_sse, .to_sse, .none } },
7592 },
7593 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
7594 .each = .{ .once = &.{
7595 .{ ._, .v_ps, .div, .dst0y, .src0y, .src1y, ._ },
7596 .{ ._, .v_ps, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7597 } },
7598 }, .{
7599 .required_features = .{ .avx, null, null, null },
7600 .src_constraints = .{
7601 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
7602 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
7603 .any,
7604 },
7605 .patterns = &.{
7606 .{ .src = .{ .to_mem, .to_mem, .none } },
7607 },
7608 .extra_temps = .{
7609 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7610 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
7611 .unused,
7612 .unused,
7613 .unused,
7614 .unused,
7615 .unused,
7616 .unused,
7617 .unused,
7618 },
7619 .dst_temps = .{.mem},
7620 .clobbers = .{ .eflags = true },
7621 .each = .{ .once = &.{
7622 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7623 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
7624 .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
7625 .{ ._, .v_ps, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7626 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
7627 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
7628 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7629 } },
7630 }, .{
7631 .required_features = .{ .sse4_1, null, null, null },
7632 .src_constraints = .{
7633 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
7634 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
7635 .any,
7636 },
7637 .patterns = &.{
7638 .{ .src = .{ .to_mem, .to_mem, .none } },
7639 },
7640 .extra_temps = .{
7641 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7642 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
7643 .unused,
7644 .unused,
7645 .unused,
7646 .unused,
7647 .unused,
7648 .unused,
7649 .unused,
7650 },
7651 .dst_temps = .{.mem},
7652 .clobbers = .{ .eflags = true },
7653 .each = .{ .once = &.{
7654 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7655 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
7656 .{ ._, ._ps, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
7657 .{ ._, ._ps, .round, .tmp1x, .tmp1x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7658 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
7659 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
7660 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7661 } },
7662 }, .{
7663 .required_features = .{ .avx, null, null, null },
7664 .src_constraints = .{
7665 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
7666 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
7667 .any,
7668 },
7669 .patterns = &.{
7670 .{ .src = .{ .to_sse, .mem, .none } },
7671 .{ .src = .{ .to_sse, .to_sse, .none } },
7672 },
7673 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
7674 .each = .{ .once = &.{
7675 .{ ._, .v_sd, .div, .dst0x, .src0x, .src1q, ._ },
7676 .{ ._, .v_sd, .round, .dst0x, .dst0x, .dst0q, .rm(.{ .direction = direction, .precision = .inexact }) },
7677 } },
7678 }, .{
7679 .required_features = .{ .sse4_1, null, null, null },
7680 .src_constraints = .{
7681 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
7682 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
7683 .any,
7684 },
7685 .patterns = &.{
7686 .{ .src = .{ .to_mut_sse, .mem, .none } },
7687 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
7688 },
7689 .dst_temps = .{.{ .ref = .src0 }},
7690 .each = .{ .once = &.{
7691 .{ ._, ._sd, .div, .dst0x, .src1q, ._, ._ },
7692 .{ ._, ._sd, .round, .dst0x, .dst0q, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7693 } },
7694 }, .{
7695 .required_features = .{ .sse2, null, null, null },
7696 .src_constraints = .{
7697 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
7698 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
7699 .any,
7700 },
7701 .patterns = &.{
7702 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } },
7703 },
7704 .call_frame = .{ .alignment = .@"16" },
7705 .extra_temps = .{
7706 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7707 else => unreachable,
7708 .zero => "trunc",
7709 .down => "floor",
7710 } } } },
7711 .unused,
7712 .unused,
7713 .unused,
7714 .unused,
7715 .unused,
7716 .unused,
7717 .unused,
7718 .unused,
7719 },
7720 .dst_temps = .{.{ .ref = .src0 }},
7721 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7722 .each = .{ .once = &.{
7723 .{ ._, ._sd, .div, .dst0x, .src1q, ._, ._ },
7724 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
7725 } },
7726 }, .{
7727 .required_features = .{ .sse, null, null, null },
7728 .src_constraints = .{
7729 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
7730 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
7731 .any,
7732 },
7733 .patterns = &.{
7734 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
7735 },
7736 .call_frame = .{ .alignment = .@"16" },
7737 .extra_temps = .{
7738 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },
7739 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7740 else => unreachable,
7741 .zero => "trunc",
7742 .down => "floor",
7743 } } } },
7744 .unused,
7745 .unused,
7746 .unused,
7747 .unused,
7748 .unused,
7749 .unused,
7750 .unused,
7751 },
7752 .dst_temps = .{.{ .ref = .src0 }},
7753 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7754 .each = .{ .once = &.{
7755 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
7756 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
7757 } },
7758 }, .{
7759 .required_features = .{ .avx, null, null, null },
7760 .src_constraints = .{
7761 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
7762 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
7763 .any,
7764 },
7765 .patterns = &.{
7766 .{ .src = .{ .to_sse, .mem, .none } },
7767 .{ .src = .{ .to_sse, .to_sse, .none } },
7768 },
7769 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
7770 .each = .{ .once = &.{
7771 .{ ._, .v_pd, .div, .dst0x, .src0x, .src1x, ._ },
7772 .{ ._, .v_pd, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7773 } },
7774 }, .{
7775 .required_features = .{ .sse4_1, null, null, null },
7776 .src_constraints = .{
7777 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
7778 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
7779 .any,
7780 },
7781 .patterns = &.{
7782 .{ .src = .{ .to_mut_sse, .mem, .none } },
7783 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
7784 },
7785 .dst_temps = .{.{ .ref = .src0 }},
7786 .each = .{ .once = &.{
7787 .{ ._, ._pd, .div, .dst0x, .src1x, ._, ._ },
7788 .{ ._, ._pd, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7789 } },
7790 }, .{
7791 .required_features = .{ .avx, null, null, null },
7792 .src_constraints = .{
7793 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
7794 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
7795 .any,
7796 },
7797 .patterns = &.{
7798 .{ .src = .{ .to_sse, .mem, .none } },
7799 .{ .src = .{ .to_sse, .to_sse, .none } },
7800 },
7801 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
7802 .each = .{ .once = &.{
7803 .{ ._, .v_pd, .div, .dst0y, .src0y, .src1y, ._ },
7804 .{ ._, .v_pd, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7805 } },
7806 }, .{
7807 .required_features = .{ .avx, null, null, null },
7808 .src_constraints = .{
7809 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
7810 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
7811 .any,
7812 },
7813 .patterns = &.{
7814 .{ .src = .{ .to_mem, .to_mem, .none } },
7815 },
7816 .extra_temps = .{
7817 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7818 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
7819 .unused,
7820 .unused,
7821 .unused,
7822 .unused,
7823 .unused,
7824 .unused,
7825 .unused,
7826 },
7827 .dst_temps = .{.mem},
7828 .clobbers = .{ .eflags = true },
7829 .each = .{ .once = &.{
7830 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7831 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
7832 .{ ._, .v_pd, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
7833 .{ ._, .v_pd, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7834 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
7835 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
7836 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7837 } },
7838 }, .{
7839 .required_features = .{ .sse4_1, null, null, null },
7840 .src_constraints = .{
7841 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
7842 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
7843 .any,
7844 },
7845 .patterns = &.{
7846 .{ .src = .{ .to_mem, .to_mem, .none } },
7847 },
7848 .extra_temps = .{
7849 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7850 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
7851 .unused,
7852 .unused,
7853 .unused,
7854 .unused,
7855 .unused,
7856 .unused,
7857 .unused,
7858 },
7859 .dst_temps = .{.mem},
7860 .clobbers = .{ .eflags = true },
7861 .each = .{ .once = &.{
7862 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7863 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
7864 .{ ._, ._pd, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
7865 .{ ._, ._pd, .round, .tmp1x, .tmp1x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7866 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
7867 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
7868 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7869 } },
7870 }, .{
7871 .required_features = .{ .sse2, null, null, null },
7872 .src_constraints = .{
7873 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
7874 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
7875 .any,
7876 },
7877 .patterns = &.{
7878 .{ .src = .{ .to_mem, .to_mem, .none } },
7879 },
7880 .call_frame = .{ .alignment = .@"16" },
7881 .extra_temps = .{
7882 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7883 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
7884 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7885 else => unreachable,
7886 .zero => "trunc",
7887 .down => "floor",
7888 } } } },
7889 .unused,
7890 .unused,
7891 .unused,
7892 .unused,
7893 .unused,
7894 .unused,
7895 },
7896 .dst_temps = .{.mem},
7897 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7898 .each = .{ .once = &.{
7899 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7900 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
7901 .{ ._, ._sd, .div, .tmp1x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
7902 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
7903 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
7904 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
7905 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7906 } },
7907 }, .{
7908 .required_features = .{ .sse, null, null, null },
7909 .src_constraints = .{
7910 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
7911 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
7912 .any,
7913 },
7914 .patterns = &.{
7915 .{ .src = .{ .to_mem, .to_mem, .none } },
7916 },
7917 .call_frame = .{ .alignment = .@"16" },
7918 .extra_temps = .{
7919 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7920 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
7921 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
7922 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },
7923 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7924 else => unreachable,
7925 .zero => "trunc",
7926 .down => "floor",
7927 } } } },
7928 .unused,
7929 .unused,
7930 .unused,
7931 .unused,
7932 },
7933 .dst_temps = .{.mem},
7934 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7935 .each = .{ .once = &.{
7936 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7937 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
7938 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },
7939 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
7940 .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
7941 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
7942 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
7943 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
7944 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
7945 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7946 } },
7947 }, .{
7948 .required_features = .{ .x87, null, null, null },
7949 .src_constraints = .{
7950 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
7951 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
7952 .any,
7953 },
7954 .patterns = &.{
7955 .{ .src = .{ .mem, .mem, .none } },
7956 },
7957 .call_frame = .{ .size = 16, .alignment = .@"16" },
7958 .extra_temps = .{
7959 .{ .type = .f80, .kind = .{ .reg = .st6 } },
7960 .{ .type = .f80, .kind = .{ .reg = .st7 } },
7961 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
7962 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7963 else => unreachable,
7964 .zero => "__truncx",
7965 .down => "__floorx",
7966 } } } },
7967 .unused,
7968 .unused,
7969 .unused,
7970 .unused,
7971 .unused,
7972 },
7973 .dst_temps = .{.{ .reg = .st0 }},
7974 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7975 .each = .{ .once = &.{
7976 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
7977 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
7978 .{ ._, .f_p, .div, ._, ._, ._, ._ },
7979 .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ },
7980 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
7981 } },
7982 }, .{
7983 .required_features = .{ .x87, null, null, null },
7984 .src_constraints = .{
7985 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
7986 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
7987 .any,
7988 },
7989 .patterns = &.{
7990 .{ .src = .{ .to_x87, .mem, .none } },
7991 },
7992 .call_frame = .{ .size = 16, .alignment = .@"16" },
7993 .extra_temps = .{
7994 .{ .type = .f80, .kind = .{ .reg = .st7 } },
7995 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
7996 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7997 else => unreachable,
7998 .zero => "__truncx",
7999 .down => "__floorx",
8000 } } } },
8001 .unused,
8002 .unused,
8003 .unused,
8004 .unused,
8005 .unused,
8006 .unused,
8007 },
8008 .dst_temps = .{.{ .reg = .st0 }},
8009 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8010 .each = .{ .once = &.{
8011 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
8012 .{ ._, .f_, .divr, .tmp0t, .src1t, ._, ._ },
8013 .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ },
8014 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
8015 } },
8016 }, .{
8017 .required_features = .{ .x87, null, null, null },
8018 .src_constraints = .{
8019 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
8020 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
8021 .any,
8022 },
8023 .patterns = &.{
8024 .{ .src = .{ .mem, .to_x87, .none } },
8025 .{ .src = .{ .to_x87, .to_x87, .none } },
8026 },
8027 .call_frame = .{ .size = 16, .alignment = .@"16" },
8028 .extra_temps = .{
8029 .{ .type = .f80, .kind = .{ .reg = .st7 } },
8030 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
8031 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
8032 else => unreachable,
8033 .zero => "__truncx",
8034 .down => "__floorx",
8035 } } } },
8036 .unused,
8037 .unused,
8038 .unused,
8039 .unused,
8040 .unused,
8041 .unused,
8042 },
8043 .dst_temps = .{.{ .reg = .st0 }},
8044 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8045 .each = .{ .once = &.{
8046 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
8047 .{ ._, .f_, .div, .tmp0t, .src1t, ._, ._ },
8048 .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ },
8049 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
8050 } },
8051 }, .{
8052 .required_features = .{ .x87, null, null, null },
8053 .src_constraints = .{
8054 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
8055 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
8056 .any,
8057 },
8058 .patterns = &.{
8059 .{ .src = .{ .mem, .mem, .none } },
8060 },
8061 .call_frame = .{ .size = 16, .alignment = .@"16" },
8062 .extra_temps = .{
8063 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8064 .{ .type = .f80, .kind = .{ .reg = .st6 } },
8065 .{ .type = .f80, .kind = .{ .reg = .st7 } },
8066 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
8067 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
8068 else => unreachable,
8069 .zero => "__truncx",
8070 .down => "__floorx",
8071 } } } },
8072 .unused,
8073 .unused,
8074 .unused,
8075 .unused,
8076 },
8077 .dst_temps = .{.mem},
8078 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8079 .each = .{ .once = &.{
8080 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8081 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
8082 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
8083 .{ ._, .f_p, .div, ._, ._, ._, ._ },
8084 .{ ._, .f_p, .st, .mem(.tmp3t), ._, ._, ._ },
8085 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
8086 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
8087 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
8088 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
8089 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8090 } },
8091 }, .{
8092 .required_features = .{ .sse, null, null, null },
8093 .src_constraints = .{
8094 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
8095 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
8096 .any,
8097 },
8098 .patterns = &.{
8099 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
8100 },
8101 .call_frame = .{ .alignment = .@"16" },
8102 .extra_temps = .{
8103 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
8104 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
8105 else => unreachable,
8106 .zero => "truncq",
8107 .down => "floorq",
8108 } } } },
8109 .unused,
8110 .unused,
8111 .unused,
8112 .unused,
8113 .unused,
8114 .unused,
8115 .unused,
8116 },
8117 .dst_temps = .{.{ .ref = .src0 }},
8118 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8119 .each = .{ .once = &.{
8120 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
8121 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
8122 } },
8123 }, .{
8124 .required_features = .{ .avx, null, null, null },
8125 .src_constraints = .{
8126 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
8127 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
8128 .any,
8129 },
8130 .patterns = &.{
8131 .{ .src = .{ .to_mem, .to_mem, .none } },
8132 },
8133 .call_frame = .{ .alignment = .@"16" },
8134 .extra_temps = .{
8135 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8136 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8137 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
8138 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
8139 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
8140 else => unreachable,
8141 .zero => "truncq",
8142 .down => "floorq",
8143 } } } },
8144 .unused,
8145 .unused,
8146 .unused,
8147 .unused,
8148 },
8149 .dst_temps = .{.mem},
8150 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8151 .each = .{ .once = &.{
8152 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8153 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
8154 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
8155 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8156 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
8157 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
8158 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
8159 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8160 } },
8161 }, .{
8162 .required_features = .{ .sse2, null, null, null },
8163 .src_constraints = .{
8164 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
8165 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
8166 .any,
8167 },
8168 .patterns = &.{
8169 .{ .src = .{ .to_mem, .to_mem, .none } },
8170 },
8171 .call_frame = .{ .alignment = .@"16" },
8172 .extra_temps = .{
8173 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8174 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8175 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
8176 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
8177 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
8178 else => unreachable,
8179 .zero => "truncq",
8180 .down => "floorq",
8181 } } } },
8182 .unused,
8183 .unused,
8184 .unused,
8185 .unused,
8186 },
8187 .dst_temps = .{.mem},
8188 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8189 .each = .{ .once = &.{
8190 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8191 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
8192 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
8193 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8194 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
8195 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
8196 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
8197 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8198 } },
8199 }, .{
8200 .required_features = .{ .sse, null, null, null },
8201 .src_constraints = .{
8202 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
8203 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
8204 .any,
8205 },
8206 .patterns = &.{
8207 .{ .src = .{ .to_mem, .to_mem, .none } },
8208 },
8209 .call_frame = .{ .alignment = .@"16" },
8210 .extra_temps = .{
8211 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8212 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8213 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
8214 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
8215 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
8216 else => unreachable,
8217 .zero => "truncq",
8218 .down => "floorq",
8219 } } } },
8220 .unused,
8221 .unused,
8222 .unused,
8223 .unused,
8224 },
8225 .dst_temps = .{.mem},
8226 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8227 .each = .{ .once = &.{
8228 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8229 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
8230 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
8231 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8232 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
8233 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
8234 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
8235 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8236 } },
8237 } },
8238 }) catch |err| switch (err) {
8239 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
8240 @tagName(air_tag),
8241 cg.typeOf(bin_op.lhs).fmt(pt),
8242 ops[0].tracking(cg),
8243 ops[1].tracking(cg),
8244 }),
8245 else => |e| return e,
8246 };
8247 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
8248 },
8249 .rem, .rem_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, .rem) else fallback: {
8250 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
8251 if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airMulDivBinOp(inst, .rem);
8252 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
8253 var res: [1]Temp = undefined;
8254 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
8255 .required_features = .{ .sse, null, null, null },
8256 .src_constraints = .{
8257 .{ .scalar_float = .{ .of = .word, .is = .word } },
8258 .{ .scalar_float = .{ .of = .word, .is = .word } },
8259 .any,
8260 },
8261 .patterns = &.{
8262 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
8263 },
8264 .call_frame = .{ .alignment = .@"16" },
8265 .extra_temps = .{
8266 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
8267 .unused,
8268 .unused,
8269 .unused,
8270 .unused,
8271 .unused,
8272 .unused,
8273 .unused,
8274 .unused,
8275 },
8276 .dst_temps = .{.{ .ref = .src0 }},
8277 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8278 .each = .{ .once = &.{
8279 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
8280 } },
8281 }, .{
8282 .required_features = .{ .avx, null, null, null },
8283 .src_constraints = .{
8284 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
8285 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
8286 .any,
8287 },
8288 .patterns = &.{
8289 .{ .src = .{ .to_mem, .to_mem, .none } },
8290 },
8291 .call_frame = .{ .alignment = .@"16" },
8292 .extra_temps = .{
8293 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8294 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
8295 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
8296 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
8297 .unused,
8298 .unused,
8299 .unused,
8300 .unused,
8301 .unused,
8302 },
8303 .dst_temps = .{.mem},
8304 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8305 .each = .{ .once = &.{
8306 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8307 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
8308 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
8309 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
8310 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8311 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
8312 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
8313 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8314 } },
8315 }, .{
8316 .required_features = .{ .sse4_1, null, null, null },
8317 .src_constraints = .{
8318 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
8319 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
8320 .any,
8321 },
8322 .patterns = &.{
8323 .{ .src = .{ .to_mem, .to_mem, .none } },
8324 },
8325 .call_frame = .{ .alignment = .@"16" },
8326 .extra_temps = .{
8327 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8328 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
8329 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
8330 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
8331 .unused,
8332 .unused,
8333 .unused,
8334 .unused,
8335 .unused,
8336 },
8337 .dst_temps = .{.mem},
8338 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8339 .each = .{ .once = &.{
8340 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8341 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
8342 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
8343 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
8344 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
8345 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8346 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
8347 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
8348 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8349 } },
8350 }, .{
8351 .required_features = .{ .sse2, null, null, null },
8352 .src_constraints = .{
8353 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
8354 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
8355 .any,
8356 },
8357 .patterns = &.{
8358 .{ .src = .{ .to_mem, .to_mem, .none } },
8359 },
8360 .call_frame = .{ .alignment = .@"16" },
8361 .extra_temps = .{
8362 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8363 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
8364 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
8365 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
8366 .{ .type = .f16, .kind = .{ .reg = .ax } },
8367 .unused,
8368 .unused,
8369 .unused,
8370 .unused,
8371 },
8372 .dst_temps = .{.mem},
8373 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8374 .each = .{ .once = &.{
8375 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8376 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
8377 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
8378 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
8379 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
8380 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8381 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
8382 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
8383 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
8384 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8385 } },
8386 }, .{
8387 .required_features = .{ .sse, null, null, null },
8388 .src_constraints = .{
8389 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
8390 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
8391 .any,
8392 },
8393 .patterns = &.{
8394 .{ .src = .{ .to_mem, .to_mem, .none } },
8395 },
8396 .call_frame = .{ .alignment = .@"16" },
8397 .extra_temps = .{
8398 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8399 .{ .type = .f16, .kind = .{ .reg = .ax } },
8400 .{ .type = .f32, .kind = .mem },
8401 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
8402 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
8403 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
8404 .unused,
8405 .unused,
8406 .unused,
8407 },
8408 .dst_temps = .{.mem},
8409 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8410 .each = .{ .once = &.{
8411 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8412 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
8413 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
8414 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
8415 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
8416 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
8417 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
8418 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
8419 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
8420 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
8421 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
8422 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
8423 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8424 } },
8425 }, .{
8426 .required_features = .{ .sse, null, null, null },
8427 .src_constraints = .{
8428 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
8429 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
8430 .any,
8431 },
8432 .patterns = &.{
8433 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
8434 },
8435 .call_frame = .{ .alignment = .@"16" },
8436 .extra_temps = .{
8437 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
8438 .unused,
8439 .unused,
8440 .unused,
8441 .unused,
8442 .unused,
8443 .unused,
8444 .unused,
8445 .unused,
8446 },
8447 .dst_temps = .{.{ .ref = .src0 }},
8448 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8449 .each = .{ .once = &.{
8450 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
8451 } },
8452 }, .{
8453 .required_features = .{ .avx, null, null, null },
8454 .src_constraints = .{
8455 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
8456 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
8457 .any,
8458 },
8459 .patterns = &.{
8460 .{ .src = .{ .to_mem, .to_mem, .none } },
8461 },
8462 .call_frame = .{ .alignment = .@"16" },
8463 .extra_temps = .{
8464 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8465 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
8466 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
8467 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
8468 .unused,
8469 .unused,
8470 .unused,
8471 .unused,
8472 .unused,
8473 },
8474 .dst_temps = .{.mem},
8475 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8476 .each = .{ .once = &.{
8477 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8478 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
8479 .{ ._, .v_ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },
8480 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8481 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
8482 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
8483 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8484 } },
8485 }, .{
8486 .required_features = .{ .sse, null, null, null },
8487 .src_constraints = .{
8488 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
8489 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
8490 .any,
8491 },
8492 .patterns = &.{
8493 .{ .src = .{ .to_mem, .to_mem, .none } },
8494 },
8495 .call_frame = .{ .alignment = .@"16" },
8496 .extra_temps = .{
8497 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8498 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
8499 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
8500 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
8501 .unused,
8502 .unused,
8503 .unused,
8504 .unused,
8505 .unused,
8506 },
8507 .dst_temps = .{.mem},
8508 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8509 .each = .{ .once = &.{
8510 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8511 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
8512 .{ ._, ._ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },
8513 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8514 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
8515 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
8516 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8517 } },
8518 }, .{
8519 .required_features = .{ .sse, null, null, null },
8520 .src_constraints = .{
8521 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
8522 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
8523 .any,
8524 },
8525 .patterns = &.{
8526 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
8527 },
8528 .call_frame = .{ .alignment = .@"16" },
8529 .extra_temps = .{
8530 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
8531 .unused,
8532 .unused,
8533 .unused,
8534 .unused,
8535 .unused,
8536 .unused,
8537 .unused,
8538 .unused,
8539 },
8540 .dst_temps = .{.{ .ref = .src0 }},
8541 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8542 .each = .{ .once = &.{
8543 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
8544 } },
8545 }, .{
8546 .required_features = .{ .avx, null, null, null },
8547 .src_constraints = .{
8548 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
8549 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
8550 .any,
8551 },
8552 .patterns = &.{
8553 .{ .src = .{ .to_mem, .to_mem, .none } },
8554 },
8555 .call_frame = .{ .alignment = .@"16" },
8556 .extra_temps = .{
8557 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8558 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
8559 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
8560 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
8561 .unused,
8562 .unused,
8563 .unused,
8564 .unused,
8565 .unused,
8566 },
8567 .dst_temps = .{.mem},
8568 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8569 .each = .{ .once = &.{
8570 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8571 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
8572 .{ ._, .v_sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
8573 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8574 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
8575 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
8576 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8577 } },
8578 }, .{
8579 .required_features = .{ .sse2, null, null, null },
8580 .src_constraints = .{
8581 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
8582 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
8583 .any,
8584 },
8585 .patterns = &.{
8586 .{ .src = .{ .to_mem, .to_mem, .none } },
8587 },
8588 .call_frame = .{ .alignment = .@"16" },
8589 .extra_temps = .{
8590 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8591 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
8592 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
8593 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
8594 .unused,
8595 .unused,
8596 .unused,
8597 .unused,
8598 .unused,
8599 },
8600 .dst_temps = .{.mem},
8601 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8602 .each = .{ .once = &.{
8603 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8604 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
8605 .{ ._, ._sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
8606 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8607 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
8608 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
8609 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8610 } },
8611 }, .{
8612 .required_features = .{ .sse, null, null, null },
8613 .src_constraints = .{
8614 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
8615 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
8616 .any,
8617 },
8618 .patterns = &.{
8619 .{ .src = .{ .to_mem, .to_mem, .none } },
8620 },
8621 .call_frame = .{ .alignment = .@"16" },
8622 .extra_temps = .{
8623 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8624 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
8625 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
8626 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
8627 .unused,
8628 .unused,
8629 .unused,
8630 .unused,
8631 .unused,
8632 },
8633 .dst_temps = .{.mem},
8634 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8635 .each = .{ .once = &.{
8636 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8637 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
8638 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },
8639 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
8640 .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
8641 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8642 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
8643 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
8644 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8645 } },
8646 }, .{
8647 .required_features = .{ .avx, .x87, null, null },
8648 .src_constraints = .{
8649 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
8650 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
8651 .any,
8652 },
8653 .patterns = &.{
8654 .{ .src = .{ .to_mem, .to_mem, .none } },
8655 },
8656 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
8657 .extra_temps = .{
8658 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
8659 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
8660 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
8661 .unused,
8662 .unused,
8663 .unused,
8664 .unused,
8665 .unused,
8666 .unused,
8667 },
8668 .dst_temps = .{.{ .reg = .st0 }},
8669 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8670 .each = .{ .once = &.{
8671 .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ },
8672 .{ ._, .v_dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ },
8673 .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src1x), ._, ._ },
8674 .{ ._, .v_dqa, .mov, .memd(.tmp1x, 16), .tmp0x, ._, ._ },
8675 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
8676 } },
8677 }, .{
8678 .required_features = .{ .sse2, .x87, null, null },
8679 .src_constraints = .{
8680 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
8681 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
8682 .any,
8683 },
8684 .patterns = &.{
8685 .{ .src = .{ .to_mem, .to_mem, .none } },
8686 },
8687 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
8688 .extra_temps = .{
8689 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
8690 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
8691 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
8692 .unused,
8693 .unused,
8694 .unused,
8695 .unused,
8696 .unused,
8697 .unused,
8698 },
8699 .dst_temps = .{.{ .reg = .st0 }},
8700 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8701 .each = .{ .once = &.{
8702 .{ ._, ._dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ },
8703 .{ ._, ._dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ },
8704 .{ ._, ._dqa, .mov, .tmp0x, .mem(.src1x), ._, ._ },
8705 .{ ._, ._dqa, .mov, .memd(.tmp1x, 16), .tmp0x, ._, ._ },
8706 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
8707 } },
8708 }, .{
8709 .required_features = .{ .sse, .x87, null, null },
8710 .src_constraints = .{
8711 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
8712 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
8713 .any,
8714 },
8715 .patterns = &.{
8716 .{ .src = .{ .to_mem, .to_mem, .none } },
8717 },
8718 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
8719 .extra_temps = .{
8720 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
8721 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
8722 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
8723 .unused,
8724 .unused,
8725 .unused,
8726 .unused,
8727 .unused,
8728 .unused,
8729 },
8730 .dst_temps = .{.{ .reg = .st0 }},
8731 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8732 .each = .{ .once = &.{
8733 .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ },
8734 .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ },
8735 .{ ._, ._ps, .mova, .tmp0x, .mem(.src1x), ._, ._ },
8736 .{ ._, ._ps, .mova, .memd(.tmp1x, 16), .tmp0x, ._, ._ },
8737 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
8738 } },
8739 }, .{
8740 .required_features = .{ .avx, .x87, null, null },
8741 .src_constraints = .{
8742 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
8743 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
8744 .any,
8745 },
8746 .patterns = &.{
8747 .{ .src = .{ .to_mem, .to_mem, .none } },
8748 },
8749 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
8750 .extra_temps = .{
8751 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8752 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
8753 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
8754 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
8755 .unused,
8756 .unused,
8757 .unused,
8758 .unused,
8759 .unused,
8760 },
8761 .dst_temps = .{.mem},
8762 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8763 .each = .{ .once = &.{
8764 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8765 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
8766 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
8767 .{ ._, .v_dqa, .mov, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
8768 .{ ._, .v_dqa, .mov, .memd(.tmp2x, 16), .tmp1x, ._, ._ },
8769 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8770 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
8771 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
8772 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
8773 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8774 } },
8775 }, .{
8776 .required_features = .{ .sse2, .x87, null, null },
8777 .src_constraints = .{
8778 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
8779 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
8780 .any,
8781 },
8782 .patterns = &.{
8783 .{ .src = .{ .to_mem, .to_mem, .none } },
8784 },
8785 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
8786 .extra_temps = .{
8787 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8788 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
8789 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
8790 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
8791 .unused,
8792 .unused,
8793 .unused,
8794 .unused,
8795 .unused,
8796 },
8797 .dst_temps = .{.mem},
8798 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8799 .each = .{ .once = &.{
8800 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8801 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
8802 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
8803 .{ ._, ._dqa, .mov, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
8804 .{ ._, ._dqa, .mov, .memd(.tmp2x, 16), .tmp1x, ._, ._ },
8805 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8806 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
8807 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
8808 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
8809 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8810 } },
8811 }, .{
8812 .required_features = .{ .sse, .x87, null, null },
8813 .src_constraints = .{
8814 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
8815 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
8816 .any,
8817 },
8818 .patterns = &.{
8819 .{ .src = .{ .to_mem, .to_mem, .none } },
8820 },
8821 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
8822 .extra_temps = .{
8823 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8824 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
8825 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
8826 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
8827 .unused,
8828 .unused,
8829 .unused,
8830 .unused,
8831 .unused,
8832 },
8833 .dst_temps = .{.mem},
8834 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8835 .each = .{ .once = &.{
8836 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8837 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
8838 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
8839 .{ ._, ._ps, .mova, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
8840 .{ ._, ._ps, .mova, .memd(.tmp2x, 16), .tmp1x, ._, ._ },
8841 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8842 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
8843 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
8844 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
8845 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8846 } },
8847 }, .{
8848 .required_features = .{ .sse, null, null, null },
8849 .src_constraints = .{
8850 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
8851 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
8852 .any,
8853 },
8854 .patterns = &.{
8855 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
8856 },
8857 .call_frame = .{ .alignment = .@"16" },
8858 .extra_temps = .{
8859 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
8860 .unused,
8861 .unused,
8862 .unused,
8863 .unused,
8864 .unused,
8865 .unused,
8866 .unused,
8867 .unused,
8868 },
8869 .dst_temps = .{.{ .ref = .src0 }},
8870 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8871 .each = .{ .once = &.{
8872 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
8873 } },
8874 }, .{
8875 .required_features = .{ .avx, null, null, null },
8876 .src_constraints = .{
8877 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
8878 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
8879 .any,
8880 },
8881 .patterns = &.{
8882 .{ .src = .{ .to_mem, .to_mem, .none } },
8883 },
8884 .call_frame = .{ .alignment = .@"16" },
8885 .extra_temps = .{
8886 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8887 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8888 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
8889 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
8890 .unused,
8891 .unused,
8892 .unused,
8893 .unused,
8894 .unused,
8895 },
8896 .dst_temps = .{.mem},
8897 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8898 .each = .{ .once = &.{
8899 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8900 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
8901 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
8902 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8903 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
8904 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
8905 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8906 } },
8907 }, .{
8908 .required_features = .{ .sse2, null, null, null },
8909 .src_constraints = .{
8910 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
8911 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
8912 .any,
8913 },
8914 .patterns = &.{
8915 .{ .src = .{ .to_mem, .to_mem, .none } },
8916 },
8917 .call_frame = .{ .alignment = .@"16" },
8918 .extra_temps = .{
8919 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8920 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8921 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
8922 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
8923 .unused,
8924 .unused,
8925 .unused,
8926 .unused,
8927 .unused,
8928 },
8929 .dst_temps = .{.mem},
8930 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8931 .each = .{ .once = &.{
8932 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8933 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
8934 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
8935 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8936 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
8937 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
8938 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8939 } },
8940 }, .{
8941 .required_features = .{ .sse, null, null, null },
8942 .src_constraints = .{
8943 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
8944 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
8945 .any,
8946 },
8947 .patterns = &.{
8948 .{ .src = .{ .to_mem, .to_mem, .none } },
8949 },
8950 .call_frame = .{ .alignment = .@"16" },
8951 .extra_temps = .{
8952 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8953 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8954 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
8955 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
8956 .unused,
8957 .unused,
8958 .unused,
8959 .unused,
8960 .unused,
8961 },
8962 .dst_temps = .{.mem},
8963 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8964 .each = .{ .once = &.{
8965 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8966 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
8967 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
8968 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8969 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
8970 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
8971 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8972 } },
8973 } }) catch |err| switch (err) {
8974 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
8975 @tagName(air_tag),
8976 cg.typeOf(bin_op.lhs).fmt(pt),
8977 ops[0].tracking(cg),
8978 ops[1].tracking(cg),
8979 }),
8980 else => |e| return e,
8981 };
8982 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
8983 },
8984 .mod, .mod_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, .mod) else fallback: {
8985 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
8986 if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airMulDivBinOp(inst, .mod);
8987 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
8988 var res: [1]Temp = undefined;
8989 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
8990 .required_features = .{ .f16c, .fast_imm16, null, null },
8991 .src_constraints = .{
8992 .{ .scalar_float = .{ .of = .word, .is = .word } },
8993 .{ .scalar_float = .{ .of = .word, .is = .word } },
8994 .any,
8995 },
8996 .patterns = &.{
8997 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
8998 },
8999 .call_frame = .{ .alignment = .@"16" },
9000 .extra_temps = .{
9001 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
9002 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
9003 .{ .type = .f16, .kind = .{ .reg = .dx } },
9004 .{ .type = .f16, .kind = .{ .reg = .ax } },
9005 .unused,
9006 .unused,
9007 .unused,
9008 .unused,
9009 .unused,
9010 },
9011 .dst_temps = .{.{ .ref = .src0 }},
9012 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9013 .each = .{ .once = &.{
9014 .{ ._, .v_d, .mov, .tmp0d, .src1x, ._, ._ },
9015 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
9016 .{ ._, .v_d, .mov, .tmp2d, .dst0x, ._, ._ },
9017 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
9018 .{ ._, ._, .@"and", .tmp3w, .sa(.src0, .add_smin), ._, ._ },
9019 .{ ._, ._, .xor, .tmp3d, .tmp2d, ._, ._ },
9020 .{ ._, ._, .cmp, .tmp3w, .sa(.src0, .add_smin), ._, ._ },
9021 .{ ._, ._na, .j, .@"0f", ._, ._, ._ },
9022 .{ ._, .v_d, .mov, .src1x, .tmp0d, ._, ._ },
9023 .{ ._, .v_ps, .cvtph2, .src0x, .src0q, ._, ._ },
9024 .{ ._, .v_ps, .cvtph2, .src1x, .src1q, ._, ._ },
9025 .{ ._, .v_ss, .add, .dst0x, .src0x, .src1d, ._ },
9026 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
9027 } },
9028 }, .{
9029 .required_features = .{ .f16c, null, null, null },
9030 .src_constraints = .{
9031 .{ .scalar_float = .{ .of = .word, .is = .word } },
9032 .{ .scalar_float = .{ .of = .word, .is = .word } },
9033 .any,
9034 },
9035 .patterns = &.{
9036 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
9037 },
9038 .call_frame = .{ .alignment = .@"16" },
9039 .extra_temps = .{
9040 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
9041 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
9042 .{ .type = .f16, .kind = .{ .reg = .dx } },
9043 .{ .type = .f16, .kind = .{ .reg = .ax } },
9044 .unused,
9045 .unused,
9046 .unused,
9047 .unused,
9048 .unused,
9049 },
9050 .dst_temps = .{.{ .ref = .src0 }},
9051 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9052 .each = .{ .once = &.{
9053 .{ ._, .v_d, .mov, .tmp0d, .src1x, ._, ._ },
9054 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
9055 .{ ._, .v_d, .mov, .tmp2d, .dst0x, ._, ._ },
9056 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
9057 .{ ._, ._, .@"and", .tmp3d, .sa(.src0, .add_smin), ._, ._ },
9058 .{ ._, ._, .xor, .tmp3d, .tmp2d, ._, ._ },
9059 .{ ._, ._, .cmp, .tmp3w, .sa(.src0, .add_smin), ._, ._ },
9060 .{ ._, ._na, .j, .@"0f", ._, ._, ._ },
9061 .{ ._, .v_d, .mov, .src1x, .tmp0d, ._, ._ },
9062 .{ ._, .v_ps, .cvtph2, .src0x, .src0q, ._, ._ },
9063 .{ ._, .v_ps, .cvtph2, .src1x, .src1q, ._, ._ },
9064 .{ ._, .v_ss, .add, .dst0x, .src0x, .src1d, ._ },
9065 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
9066 } },
9067 }, .{
9068 .required_features = .{ .avx, .fast_imm16, null, null },
9069 .src_constraints = .{
9070 .{ .scalar_float = .{ .of = .word, .is = .word } },
9071 .{ .scalar_float = .{ .of = .word, .is = .word } },
9072 .any,
9073 },
9074 .patterns = &.{
9075 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
9076 },
9077 .call_frame = .{ .alignment = .@"16" },
9078 .extra_temps = .{
9079 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
9080 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
9081 .{ .type = .f16, .kind = .{ .reg = .dx } },
9082 .{ .type = .f16, .kind = .{ .reg = .ax } },
9083 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
9084 .unused,
9085 .unused,
9086 .unused,
9087 .unused,
9088 },
9089 .dst_temps = .{.{ .ref = .src0 }},
9090 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9091 .each = .{ .once = &.{
9092 .{ ._, .v_d, .mov, .tmp0d, .src1x, ._, ._ },
9093 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
9094 .{ ._, .v_d, .mov, .tmp2d, .dst0x, ._, ._ },
9095 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
9096 .{ ._, ._, .@"and", .tmp3w, .sa(.src0, .add_smin), ._, ._ },
9097 .{ ._, ._, .xor, .tmp3d, .tmp2d, ._, ._ },
9098 .{ ._, ._, .cmp, .tmp3w, .sa(.src0, .add_smin), ._, ._ },
9099 .{ ._, ._na, .j, .@"0f", ._, ._, ._ },
9100 .{ ._, .v_d, .mov, .src1x, .tmp0d, ._, ._ },
9101 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
9102 } },
9103 }, .{
9104 .required_features = .{ .avx, null, null, null },
9105 .src_constraints = .{
9106 .{ .scalar_float = .{ .of = .word, .is = .word } },
9107 .{ .scalar_float = .{ .of = .word, .is = .word } },
9108 .any,
9109 },
9110 .patterns = &.{
9111 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
9112 },
9113 .call_frame = .{ .alignment = .@"16" },
9114 .extra_temps = .{
9115 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
9116 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
9117 .{ .type = .f16, .kind = .{ .reg = .dx } },
9118 .{ .type = .f16, .kind = .{ .reg = .ax } },
9119 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
9120 .unused,
9121 .unused,
9122 .unused,
9123 .unused,
9124 },
9125 .dst_temps = .{.{ .ref = .src0 }},
9126 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9127 .each = .{ .once = &.{
9128 .{ ._, .v_d, .mov, .tmp0d, .src1x, ._, ._ },
9129 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
9130 .{ ._, .v_d, .mov, .tmp2d, .dst0x, ._, ._ },
9131 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
9132 .{ ._, ._, .@"and", .tmp3d, .sa(.src0, .add_smin), ._, ._ },
9133 .{ ._, ._, .xor, .tmp3d, .tmp2d, ._, ._ },
9134 .{ ._, ._, .cmp, .tmp3w, .sa(.src0, .add_smin), ._, ._ },
9135 .{ ._, ._na, .j, .@"0f", ._, ._, ._ },
9136 .{ ._, .v_d, .mov, .src1x, .tmp0d, ._, ._ },
9137 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
9138 } },
9139 }, .{
9140 .required_features = .{ .sse2, .fast_imm16, null, null },
9141 .src_constraints = .{
9142 .{ .scalar_float = .{ .of = .word, .is = .word } },
9143 .{ .scalar_float = .{ .of = .word, .is = .word } },
9144 .any,
9145 },
9146 .patterns = &.{
9147 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
9148 },
9149 .call_frame = .{ .alignment = .@"16" },
9150 .extra_temps = .{
9151 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
9152 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
9153 .{ .type = .f16, .kind = .{ .reg = .dx } },
9154 .{ .type = .f16, .kind = .{ .reg = .ax } },
9155 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
9156 .unused,
9157 .unused,
9158 .unused,
9159 .unused,
9160 },
9161 .dst_temps = .{.{ .ref = .src0 }},
9162 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9163 .each = .{ .once = &.{
9164 .{ ._, ._d, .mov, .tmp0d, .src1x, ._, ._ },
9165 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
9166 .{ ._, ._d, .mov, .tmp2d, .dst0x, ._, ._ },
9167 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
9168 .{ ._, ._, .@"and", .tmp3w, .sa(.src0, .add_smin), ._, ._ },
9169 .{ ._, ._, .xor, .tmp3d, .tmp2d, ._, ._ },
9170 .{ ._, ._, .cmp, .tmp3w, .sa(.src0, .add_smin), ._, ._ },
9171 .{ ._, ._na, .j, .@"0f", ._, ._, ._ },
9172 .{ ._, ._d, .mov, .src1x, .tmp0d, ._, ._ },
9173 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
9174 } },
9175 }, .{
9176 .required_features = .{ .sse2, null, null, null },
9177 .src_constraints = .{
9178 .{ .scalar_float = .{ .of = .word, .is = .word } },
9179 .{ .scalar_float = .{ .of = .word, .is = .word } },
9180 .any,
9181 },
9182 .patterns = &.{
9183 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
9184 },
9185 .call_frame = .{ .alignment = .@"16" },
9186 .extra_temps = .{
9187 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
9188 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
9189 .{ .type = .f16, .kind = .{ .reg = .dx } },
9190 .{ .type = .f16, .kind = .{ .reg = .ax } },
9191 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
9192 .unused,
9193 .unused,
9194 .unused,
9195 .unused,
9196 },
9197 .dst_temps = .{.{ .ref = .src0 }},
9198 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9199 .each = .{ .once = &.{
9200 .{ ._, ._d, .mov, .tmp0d, .src1x, ._, ._ },
9201 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
9202 .{ ._, ._d, .mov, .tmp2d, .dst0x, ._, ._ },
9203 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
9204 .{ ._, ._, .@"and", .tmp3d, .sa(.src0, .add_smin), ._, ._ },
9205 .{ ._, ._, .xor, .tmp3d, .tmp2d, ._, ._ },
9206 .{ ._, ._, .cmp, .tmp3w, .sa(.src0, .add_smin), ._, ._ },
9207 .{ ._, ._na, .j, .@"0f", ._, ._, ._ },
9208 .{ ._, ._d, .mov, .src1x, .tmp0d, ._, ._ },
9209 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
9210 } },
9211 }, .{
9212 .required_features = .{ .sse, .fast_imm16, null, null },
9213 .src_constraints = .{
9214 .{ .scalar_float = .{ .of = .word, .is = .word } },
9215 .{ .scalar_float = .{ .of = .word, .is = .word } },
9216 .any,
9217 },
9218 .patterns = &.{
9219 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
9220 },
9221 .call_frame = .{ .alignment = .@"16" },
9222 .extra_temps = .{
9223 .{ .type = .f32, .kind = .mem },
9224 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
9225 .{ .type = .f32, .kind = .mem },
9226 .{ .type = .f16, .kind = .{ .reg = .ax } },
9227 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
9228 .unused,
9229 .unused,
9230 .unused,
9231 .unused,
9232 },
9233 .dst_temps = .{.{ .ref = .src0 }},
9234 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9235 .each = .{ .once = &.{
9236 .{ ._, ._ss, .mov, .mem(.tmp0d), .src1x, ._, ._ },
9237 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
9238 .{ ._, ._ss, .mov, .mem(.tmp2d), .dst0x, ._, ._ },
9239 .{ ._, ._, .mov, .tmp3d, .mem(.tmp0d), ._, ._ },
9240 .{ ._, ._, .@"and", .tmp3w, .sa(.src0, .add_smin), ._, ._ },
9241 .{ ._, ._, .xor, .tmp3d, .mem(.tmp2d), ._, ._ },
9242 .{ ._, ._, .cmp, .tmp3w, .sa(.src0, .add_smin), ._, ._ },
9243 .{ ._, ._na, .j, .@"0f", ._, ._, ._ },
9244 .{ ._, ._ss, .mov, .src1x, .mem(.tmp0d), ._, ._ },
9245 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
9246 } },
9247 }, .{
9248 .required_features = .{ .sse, null, null, null },
9249 .src_constraints = .{
9250 .{ .scalar_float = .{ .of = .word, .is = .word } },
9251 .{ .scalar_float = .{ .of = .word, .is = .word } },
9252 .any,
9253 },
9254 .patterns = &.{
9255 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
9256 },
9257 .call_frame = .{ .alignment = .@"16" },
9258 .extra_temps = .{
9259 .{ .type = .f32, .kind = .mem },
9260 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
9261 .{ .type = .f32, .kind = .mem },
9262 .{ .type = .f16, .kind = .{ .reg = .ax } },
9263 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
9264 .unused,
9265 .unused,
9266 .unused,
9267 .unused,
9268 },
9269 .dst_temps = .{.{ .ref = .src0 }},
9270 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9271 .each = .{ .once = &.{
9272 .{ ._, ._ss, .mov, .mem(.tmp0d), .src1x, ._, ._ },
9273 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
9274 .{ ._, ._ss, .mov, .mem(.tmp2d), .dst0x, ._, ._ },
9275 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_smin), ._, ._ },
9276 .{ ._, ._, .@"and", .tmp3d, .mem(.tmp0d), ._, ._ },
9277 .{ ._, ._, .xor, .tmp3d, .mem(.tmp2d), ._, ._ },
9278 .{ ._, ._, .cmp, .tmp3w, .sa(.src0, .add_smin), ._, ._ },
9279 .{ ._, ._na, .j, .@"0f", ._, ._, ._ },
9280 .{ ._, ._ss, .mov, .src1x, .mem(.tmp0d), ._, ._ },
9281 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
9282 } },
9283 }, .{
9284 .required_features = .{ .f16c, .fast_imm16, null, null },
9285 .src_constraints = .{
9286 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9287 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9288 .any,
9289 },
9290 .patterns = &.{
9291 .{ .src = .{ .to_mem, .to_mem, .none } },
9292 },
9293 .call_frame = .{ .alignment = .@"16" },
9294 .extra_temps = .{
9295 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9296 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
9297 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
9298 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
9299 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
9300 .{ .type = .f16, .kind = .{ .reg = .dx } },
9301 .{ .type = .f16, .kind = .{ .reg = .ax } },
9302 .unused,
9303 .unused,
9304 },
9305 .dst_temps = .{.mem},
9306 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9307 .each = .{ .once = &.{
9308 .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ },
9309 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
9310 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
9311 .{ ._, ._, .movzx, .tmp2d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
9312 .{ ._, .v_d, .mov, .tmp3x, .tmp2d, ._, ._ },
9313 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
9314 .{ ._, .v_d, .mov, .tmp5d, .tmp1x, ._, ._ },
9315 .{ ._, ._, .mov, .tmp6d, .tmp2d, ._, ._ },
9316 .{ ._, ._, .@"and", .tmp6w, .sa(.src0, .add_smin), ._, ._ },
9317 .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ },
9318 .{ ._, ._, .cmp, .tmp6w, .sa(.src0, .add_smin), ._, ._ },
9319 .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
9320 .{ ._, .v_d, .mov, .tmp3x, .tmp2d, ._, ._ },
9321 .{ ._, .v_ps, .cvtph2, .tmp1x, .tmp1x, ._, ._ },
9322 .{ ._, .v_ps, .cvtph2, .tmp3x, .tmp3x, ._, ._ },
9323 .{ ._, .v_ss, .add, .tmp1x, .tmp1x, .tmp3d, ._ },
9324 .{ ._, .v_, .cvtps2ph, .tmp1q, .tmp1x, .rm(.{}), ._ },
9325 .{ .@"1:", .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
9326 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9327 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9328 } },
9329 }, .{
9330 .required_features = .{ .f16c, null, null, null },
9331 .src_constraints = .{
9332 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9333 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9334 .any,
9335 },
9336 .patterns = &.{
9337 .{ .src = .{ .to_mem, .to_mem, .none } },
9338 },
9339 .call_frame = .{ .alignment = .@"16" },
9340 .extra_temps = .{
9341 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9342 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
9343 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
9344 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
9345 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
9346 .{ .type = .f16, .kind = .{ .reg = .dx } },
9347 .{ .type = .f16, .kind = .{ .reg = .ax } },
9348 .unused,
9349 .unused,
9350 },
9351 .dst_temps = .{.mem},
9352 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9353 .each = .{ .once = &.{
9354 .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ },
9355 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
9356 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
9357 .{ ._, ._, .movzx, .tmp2d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
9358 .{ ._, .v_d, .mov, .tmp3x, .tmp2d, ._, ._ },
9359 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
9360 .{ ._, .v_d, .mov, .tmp5d, .tmp1x, ._, ._ },
9361 .{ ._, ._, .mov, .tmp6d, .tmp2d, ._, ._ },
9362 .{ ._, ._, .@"and", .tmp6d, .sa(.src0, .add_smin), ._, ._ },
9363 .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ },
9364 .{ ._, ._, .cmp, .tmp6w, .sa(.src0, .add_smin), ._, ._ },
9365 .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
9366 .{ ._, .v_d, .mov, .tmp3x, .tmp2d, ._, ._ },
9367 .{ ._, .v_ps, .cvtph2, .tmp1x, .tmp1x, ._, ._ },
9368 .{ ._, .v_ps, .cvtph2, .tmp3x, .tmp3x, ._, ._ },
9369 .{ ._, .v_ss, .add, .tmp1x, .tmp1x, .tmp3d, ._ },
9370 .{ ._, .v_, .cvtps2ph, .tmp1q, .tmp1x, .rm(.{}), ._ },
9371 .{ .@"1:", .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
9372 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9373 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9374 } },
9375 }, .{
9376 .required_features = .{ .avx, .fast_imm16, null, null },
9377 .src_constraints = .{
9378 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9379 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9380 .any,
9381 },
9382 .patterns = &.{
9383 .{ .src = .{ .to_mem, .to_mem, .none } },
9384 },
9385 .call_frame = .{ .alignment = .@"16" },
9386 .extra_temps = .{
9387 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9388 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
9389 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
9390 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
9391 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
9392 .{ .type = .f16, .kind = .{ .reg = .dx } },
9393 .{ .type = .f16, .kind = .{ .reg = .ax } },
9394 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
9395 .unused,
9396 },
9397 .dst_temps = .{.mem},
9398 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9399 .each = .{ .once = &.{
9400 .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ },
9401 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
9402 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
9403 .{ ._, ._, .movzx, .tmp2d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
9404 .{ ._, .v_d, .mov, .tmp3x, .tmp2d, ._, ._ },
9405 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
9406 .{ ._, .v_d, .mov, .tmp5d, .tmp1x, ._, ._ },
9407 .{ ._, ._, .mov, .tmp6d, .tmp2d, ._, ._ },
9408 .{ ._, ._, .@"and", .tmp6w, .sa(.src0, .add_smin), ._, ._ },
9409 .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ },
9410 .{ ._, ._, .cmp, .tmp6w, .sa(.src0, .add_smin), ._, ._ },
9411 .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
9412 .{ ._, .v_d, .mov, .tmp3x, .tmp2d, ._, ._ },
9413 .{ ._, ._, .call, .tmp7d, ._, ._, ._ },
9414 .{ .@"1:", .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
9415 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9416 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9417 } },
9418 }, .{
9419 .required_features = .{ .avx, null, null, null },
9420 .src_constraints = .{
9421 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9422 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9423 .any,
9424 },
9425 .patterns = &.{
9426 .{ .src = .{ .to_mem, .to_mem, .none } },
9427 },
9428 .call_frame = .{ .alignment = .@"16" },
9429 .extra_temps = .{
9430 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9431 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
9432 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
9433 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
9434 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
9435 .{ .type = .f16, .kind = .{ .reg = .dx } },
9436 .{ .type = .f16, .kind = .{ .reg = .ax } },
9437 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
9438 .unused,
9439 },
9440 .dst_temps = .{.mem},
9441 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9442 .each = .{ .once = &.{
9443 .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ },
9444 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
9445 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
9446 .{ ._, ._, .movzx, .tmp2d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
9447 .{ ._, .v_d, .mov, .tmp3x, .tmp2d, ._, ._ },
9448 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
9449 .{ ._, .v_d, .mov, .tmp5d, .tmp1x, ._, ._ },
9450 .{ ._, ._, .mov, .tmp6d, .tmp2d, ._, ._ },
9451 .{ ._, ._, .@"and", .tmp6d, .sa(.src0, .add_smin), ._, ._ },
9452 .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ },
9453 .{ ._, ._, .cmp, .tmp6w, .sa(.src0, .add_smin), ._, ._ },
9454 .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
9455 .{ ._, .v_d, .mov, .tmp3x, .tmp2d, ._, ._ },
9456 .{ ._, ._, .call, .tmp7d, ._, ._, ._ },
9457 .{ .@"1:", .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
9458 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9459 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9460 } },
9461 }, .{
9462 .required_features = .{ .sse4_1, .fast_imm16, null, null },
9463 .src_constraints = .{
9464 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9465 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9466 .any,
9467 },
9468 .patterns = &.{
9469 .{ .src = .{ .to_mem, .to_mem, .none } },
9470 },
9471 .call_frame = .{ .alignment = .@"16" },
9472 .extra_temps = .{
9473 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9474 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
9475 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
9476 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
9477 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
9478 .{ .type = .f16, .kind = .{ .reg = .dx } },
9479 .{ .type = .f16, .kind = .{ .reg = .ax } },
9480 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
9481 .unused,
9482 },
9483 .dst_temps = .{.mem},
9484 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9485 .each = .{ .once = &.{
9486 .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ },
9487 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
9488 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
9489 .{ ._, ._, .movzx, .tmp2d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
9490 .{ ._, ._d, .mov, .tmp3x, .tmp2d, ._, ._ },
9491 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
9492 .{ ._, ._d, .mov, .tmp5d, .tmp1x, ._, ._ },
9493 .{ ._, ._, .mov, .tmp6d, .tmp2d, ._, ._ },
9494 .{ ._, ._, .@"and", .tmp6w, .sa(.src0, .add_smin), ._, ._ },
9495 .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ },
9496 .{ ._, ._, .cmp, .tmp6w, .sa(.src0, .add_smin), ._, ._ },
9497 .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
9498 .{ ._, ._d, .mov, .tmp3x, .tmp2d, ._, ._ },
9499 .{ ._, ._, .call, .tmp7d, ._, ._, ._ },
9500 .{ .@"1:", .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
9501 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9502 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9503 } },
9504 }, .{
9505 .required_features = .{ .sse4_1, null, null, null },
9506 .src_constraints = .{
9507 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9508 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9509 .any,
9510 },
9511 .patterns = &.{
9512 .{ .src = .{ .to_mem, .to_mem, .none } },
9513 },
9514 .call_frame = .{ .alignment = .@"16" },
9515 .extra_temps = .{
9516 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9517 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
9518 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
9519 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
9520 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
9521 .{ .type = .f16, .kind = .{ .reg = .dx } },
9522 .{ .type = .f16, .kind = .{ .reg = .ax } },
9523 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
9524 .unused,
9525 },
9526 .dst_temps = .{.mem},
9527 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9528 .each = .{ .once = &.{
9529 .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ },
9530 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
9531 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
9532 .{ ._, ._, .movzx, .tmp2d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
9533 .{ ._, ._d, .mov, .tmp3x, .tmp2d, ._, ._ },
9534 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
9535 .{ ._, ._d, .mov, .tmp5d, .tmp1x, ._, ._ },
9536 .{ ._, ._, .mov, .tmp6d, .tmp2d, ._, ._ },
9537 .{ ._, ._, .@"and", .tmp6d, .sa(.src0, .add_smin), ._, ._ },
9538 .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ },
9539 .{ ._, ._, .cmp, .tmp6w, .sa(.src0, .add_smin), ._, ._ },
9540 .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
9541 .{ ._, ._d, .mov, .tmp3x, .tmp2d, ._, ._ },
9542 .{ ._, ._, .call, .tmp7d, ._, ._, ._ },
9543 .{ .@"1:", .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
9544 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9545 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9546 } },
9547 }, .{
9548 .required_features = .{ .sse2, .fast_imm16, null, null },
9549 .src_constraints = .{
9550 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9551 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9552 .any,
9553 },
9554 .patterns = &.{
9555 .{ .src = .{ .to_mem, .to_mem, .none } },
9556 },
9557 .call_frame = .{ .alignment = .@"16" },
9558 .extra_temps = .{
9559 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9560 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
9561 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
9562 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
9563 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
9564 .{ .type = .f16, .kind = .{ .reg = .dx } },
9565 .{ .type = .f16, .kind = .{ .reg = .ax } },
9566 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
9567 .unused,
9568 },
9569 .dst_temps = .{.mem},
9570 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9571 .each = .{ .once = &.{
9572 .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ },
9573 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
9574 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
9575 .{ ._, ._, .movzx, .tmp2d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
9576 .{ ._, ._d, .mov, .tmp3x, .tmp2d, ._, ._ },
9577 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
9578 .{ ._, ._d, .mov, .tmp5d, .tmp1x, ._, ._ },
9579 .{ ._, ._, .mov, .tmp6d, .tmp2d, ._, ._ },
9580 .{ ._, ._, .@"and", .tmp6w, .sa(.src0, .add_smin), ._, ._ },
9581 .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ },
9582 .{ ._, ._, .cmp, .tmp6w, .sa(.src0, .add_smin), ._, ._ },
9583 .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
9584 .{ ._, ._d, .mov, .tmp3x, .tmp2d, ._, ._ },
9585 .{ ._, ._, .call, .tmp7d, ._, ._, ._ },
9586 .{ ._, ._d, .mov, .tmp5d, .tmp1x, ._, ._ },
9587 .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp5w, ._, ._ },
9588 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9589 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9590 } },
9591 }, .{
9592 .required_features = .{ .sse2, null, null, null },
9593 .src_constraints = .{
9594 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9595 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9596 .any,
9597 },
9598 .patterns = &.{
9599 .{ .src = .{ .to_mem, .to_mem, .none } },
9600 },
9601 .call_frame = .{ .alignment = .@"16" },
9602 .extra_temps = .{
9603 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9604 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
9605 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
9606 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
9607 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
9608 .{ .type = .f16, .kind = .{ .reg = .dx } },
9609 .{ .type = .f16, .kind = .{ .reg = .ax } },
9610 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
9611 .unused,
9612 },
9613 .dst_temps = .{.mem},
9614 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9615 .each = .{ .once = &.{
9616 .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ },
9617 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
9618 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
9619 .{ ._, ._, .movzx, .tmp2d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
9620 .{ ._, ._d, .mov, .tmp3x, .tmp2d, ._, ._ },
9621 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
9622 .{ ._, ._d, .mov, .tmp5d, .tmp1x, ._, ._ },
9623 .{ ._, ._, .mov, .tmp6d, .tmp2d, ._, ._ },
9624 .{ ._, ._, .@"and", .tmp6d, .sa(.src0, .add_smin), ._, ._ },
9625 .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ },
9626 .{ ._, ._, .cmp, .tmp6w, .sa(.src0, .add_smin), ._, ._ },
9627 .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
9628 .{ ._, ._d, .mov, .tmp3x, .tmp2d, ._, ._ },
9629 .{ ._, ._, .call, .tmp7d, ._, ._, ._ },
9630 .{ ._, ._d, .mov, .tmp5d, .tmp1x, ._, ._ },
9631 .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp5w, ._, ._ },
9632 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9633 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9634 } },
9635 }, .{
9636 .required_features = .{ .sse, .fast_imm16, null, null },
9637 .src_constraints = .{
9638 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9639 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9640 .any,
9641 },
9642 .patterns = &.{
9643 .{ .src = .{ .to_mem, .to_mem, .none } },
9644 },
9645 .call_frame = .{ .alignment = .@"16" },
9646 .extra_temps = .{
9647 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9648 .{ .type = .f16, .kind = .{ .reg = .ax } },
9649 .{ .type = .f32, .kind = .mem },
9650 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
9651 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
9652 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
9653 .{ .type = .f32, .kind = .mem },
9654 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
9655 .unused,
9656 },
9657 .dst_temps = .{.mem},
9658 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9659 .each = .{ .once = &.{
9660 .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ },
9661 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
9662 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
9663 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
9664 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
9665 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
9666 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
9667 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
9668 .{ ._, ._ss, .mov, .mem(.tmp6d), .tmp3x, ._, ._ },
9669 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
9670 .{ ._, ._, .@"and", .tmp1w, .sa(.src0, .add_smin), ._, ._ },
9671 .{ ._, ._, .xor, .tmp1d, .mem(.tmp6d), ._, ._ },
9672 .{ ._, ._, .cmp, .tmp1w, .sa(.src0, .add_smin), ._, ._ },
9673 .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
9674 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
9675 .{ ._, ._, .call, .tmp7d, ._, ._, ._ },
9676 .{ ._, ._ss, .mov, .mem(.tmp6d), .tmp3x, ._, ._ },
9677 .{ .@"1:", ._, .mov, .tmp1d, .mem(.tmp6d), ._, ._ },
9678 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
9679 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9680 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9681 } },
9682 }, .{
9683 .required_features = .{ .sse, null, null, null },
9684 .src_constraints = .{
9685 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9686 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9687 .any,
9688 },
9689 .patterns = &.{
9690 .{ .src = .{ .to_mem, .to_mem, .none } },
9691 },
9692 .call_frame = .{ .alignment = .@"16" },
9693 .extra_temps = .{
9694 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9695 .{ .type = .f16, .kind = .{ .reg = .ax } },
9696 .{ .type = .f32, .kind = .mem },
9697 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
9698 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
9699 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
9700 .{ .type = .f32, .kind = .mem },
9701 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
9702 .unused,
9703 },
9704 .dst_temps = .{.mem},
9705 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9706 .each = .{ .once = &.{
9707 .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ },
9708 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
9709 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
9710 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
9711 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
9712 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
9713 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
9714 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
9715 .{ ._, ._ss, .mov, .mem(.tmp6d), .tmp3x, ._, ._ },
9716 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_smin), ._, ._ },
9717 .{ ._, ._, .@"and", .tmp1d, .mem(.tmp2d), ._, ._ },
9718 .{ ._, ._, .xor, .tmp1d, .mem(.tmp6d), ._, ._ },
9719 .{ ._, ._, .cmp, .tmp1w, .sa(.src0, .add_smin), ._, ._ },
9720 .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
9721 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
9722 .{ ._, ._, .call, .tmp7d, ._, ._, ._ },
9723 .{ ._, ._ss, .mov, .mem(.tmp6d), .tmp3x, ._, ._ },
9724 .{ .@"1:", ._, .mov, .tmp1d, .mem(.tmp6d), ._, ._ },
9725 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
9726 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9727 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9728 } },
9729 }, .{
9730 .required_features = .{ .avx, null, null, null },
9731 .src_constraints = .{
9732 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
9733 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
9734 .any,
9735 },
9736 .patterns = &.{
9737 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
9738 },
9739 .call_frame = .{ .alignment = .@"16" },
9740 .extra_temps = .{
9741 .{ .type = .f32, .kind = .{ .rc = .general_purpose } },
9742 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
9743 .{ .type = .f32, .kind = .{ .reg = .edx } },
9744 .{ .type = .f32, .kind = .{ .reg = .eax } },
9745 .unused,
9746 .unused,
9747 .unused,
9748 .unused,
9749 .unused,
9750 },
9751 .dst_temps = .{.{ .ref = .src0 }},
9752 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9753 .each = .{ .once = &.{
9754 .{ ._, .v_d, .mov, .tmp0d, .src1x, ._, ._ },
9755 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
9756 .{ ._, .v_d, .mov, .tmp2d, .dst0x, ._, ._ },
9757 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
9758 .{ ._, ._, .@"and", .tmp3d, .sa(.src0, .add_smin), ._, ._ },
9759 .{ ._, ._, .xor, .tmp3d, .tmp2d, ._, ._ },
9760 .{ ._, ._, .cmp, .tmp3d, .sa(.src0, .add_smin), ._, ._ },
9761 .{ ._, ._na, .j, .@"0f", ._, ._, ._ },
9762 .{ ._, .v_d, .mov, .src1x, .tmp0d, ._, ._ },
9763 .{ ._, .v_ss, .add, .dst0x, .src0x, .src1d, ._ },
9764 } },
9765 }, .{
9766 .required_features = .{ .sse2, null, null, null },
9767 .src_constraints = .{
9768 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
9769 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
9770 .any,
9771 },
9772 .patterns = &.{
9773 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
9774 },
9775 .call_frame = .{ .alignment = .@"16" },
9776 .extra_temps = .{
9777 .{ .type = .f32, .kind = .{ .rc = .general_purpose } },
9778 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
9779 .{ .type = .f32, .kind = .{ .reg = .edx } },
9780 .{ .type = .f32, .kind = .{ .reg = .eax } },
9781 .unused,
9782 .unused,
9783 .unused,
9784 .unused,
9785 .unused,
9786 },
9787 .dst_temps = .{.{ .ref = .src0 }},
9788 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9789 .each = .{ .once = &.{
9790 .{ ._, ._d, .mov, .tmp0d, .src1x, ._, ._ },
9791 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
9792 .{ ._, ._d, .mov, .tmp2d, .dst0x, ._, ._ },
9793 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
9794 .{ ._, ._, .@"and", .tmp3d, .sa(.src0, .add_smin), ._, ._ },
9795 .{ ._, ._, .xor, .tmp3d, .tmp2d, ._, ._ },
9796 .{ ._, ._, .cmp, .tmp3d, .sa(.src0, .add_smin), ._, ._ },
9797 .{ ._, ._na, .j, .@"0f", ._, ._, ._ },
9798 .{ ._, ._d, .mov, .src1x, .tmp0d, ._, ._ },
9799 .{ ._, ._ss, .add, .dst0x, .src1d, ._, ._ },
9800 } },
9801 }, .{
9802 .required_features = .{ .sse, null, null, null },
9803 .src_constraints = .{
9804 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
9805 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
9806 .any,
9807 },
9808 .patterns = &.{
9809 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
9810 },
9811 .call_frame = .{ .alignment = .@"16" },
9812 .extra_temps = .{
9813 .{ .type = .f32, .kind = .mem },
9814 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
9815 .{ .type = .f32, .kind = .mem },
9816 .{ .type = .f32, .kind = .{ .reg = .eax } },
9817 .unused,
9818 .unused,
9819 .unused,
9820 .unused,
9821 .unused,
9822 },
9823 .dst_temps = .{.{ .ref = .src0 }},
9824 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9825 .each = .{ .once = &.{
9826 .{ ._, ._ss, .mov, .mem(.tmp0d), .src1x, ._, ._ },
9827 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
9828 .{ ._, ._ss, .mov, .mem(.tmp2d), .dst0x, ._, ._ },
9829 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
9830 .{ ._, ._, .@"and", .tmp3d, .sa(.src0, .add_smin), ._, ._ },
9831 .{ ._, ._, .xor, .tmp3d, .mem(.tmp2d), ._, ._ },
9832 .{ ._, ._, .cmp, .tmp3d, .sa(.src0, .add_smin), ._, ._ },
9833 .{ ._, ._na, .j, .@"0f", ._, ._, ._ },
9834 .{ ._, ._ss, .add, .dst0x, .mem(.tmp0d), ._, ._ },
9835 } },
9836 }, .{
9837 .required_features = .{ .avx, null, null, null },
9838 .src_constraints = .{
9839 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
9840 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
9841 .any,
9842 },
9843 .patterns = &.{
9844 .{ .src = .{ .to_mem, .to_mem, .none } },
9845 },
9846 .call_frame = .{ .alignment = .@"16" },
9847 .extra_temps = .{
9848 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9849 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
9850 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
9851 .{ .type = .f32, .kind = .{ .rc = .general_purpose } },
9852 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
9853 .{ .type = .f32, .kind = .{ .reg = .edx } },
9854 .{ .type = .f32, .kind = .{ .reg = .eax } },
9855 .unused,
9856 .unused,
9857 },
9858 .dst_temps = .{.mem},
9859 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9860 .each = .{ .once = &.{
9861 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
9862 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
9863 .{ ._, .v_ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },
9864 .{ ._, .v_d, .mov, .tmp3d, .tmp2x, ._, ._ },
9865 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
9866 .{ ._, .v_d, .mov, .tmp5d, .tmp1x, ._, ._ },
9867 .{ ._, ._, .mov, .tmp6d, .tmp3d, ._, ._ },
9868 .{ ._, ._, .@"and", .tmp6d, .sa(.src0, .add_smin), ._, ._ },
9869 .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ },
9870 .{ ._, ._, .cmp, .tmp6d, .sa(.src0, .add_smin), ._, ._ },
9871 .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
9872 .{ ._, .v_d, .mov, .tmp2x, .tmp3d, ._, ._ },
9873 .{ ._, .v_ss, .add, .tmp1x, .tmp1x, .tmp2d, ._ },
9874 .{ .@"1:", .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
9875 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9876 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9877 } },
9878 }, .{
9879 .required_features = .{ .sse2, null, null, null },
9880 .src_constraints = .{
9881 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
9882 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
9883 .any,
9884 },
9885 .patterns = &.{
9886 .{ .src = .{ .to_mem, .to_mem, .none } },
9887 },
9888 .call_frame = .{ .alignment = .@"16" },
9889 .extra_temps = .{
9890 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9891 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
9892 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
9893 .{ .type = .f32, .kind = .{ .rc = .general_purpose } },
9894 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
9895 .{ .type = .f32, .kind = .{ .reg = .edx } },
9896 .{ .type = .f32, .kind = .{ .reg = .eax } },
9897 .unused,
9898 .unused,
9899 },
9900 .dst_temps = .{.mem},
9901 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9902 .each = .{ .once = &.{
9903 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
9904 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
9905 .{ ._, ._ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },
9906 .{ ._, ._d, .mov, .tmp3d, .tmp2x, ._, ._ },
9907 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
9908 .{ ._, ._d, .mov, .tmp5d, .tmp1x, ._, ._ },
9909 .{ ._, ._, .mov, .tmp6d, .tmp3d, ._, ._ },
9910 .{ ._, ._, .@"and", .tmp6d, .sa(.src0, .add_smin), ._, ._ },
9911 .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ },
9912 .{ ._, ._, .cmp, .tmp6d, .sa(.src0, .add_smin), ._, ._ },
9913 .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
9914 .{ ._, ._d, .mov, .tmp2x, .tmp3d, ._, ._ },
9915 .{ ._, ._ss, .add, .tmp1x, .tmp2d, ._, ._ },
9916 .{ .@"1:", ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
9917 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9918 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9919 } },
9920 }, .{
9921 .required_features = .{ .sse, null, null, null },
9922 .src_constraints = .{
9923 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
9924 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
9925 .any,
9926 },
9927 .patterns = &.{
9928 .{ .src = .{ .to_mem, .to_mem, .none } },
9929 },
9930 .call_frame = .{ .alignment = .@"16" },
9931 .extra_temps = .{
9932 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9933 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
9934 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
9935 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
9936 .{ .type = .f32, .kind = .mem },
9937 .{ .type = .f32, .kind = .{ .reg = .eax } },
9938 .unused,
9939 .unused,
9940 .unused,
9941 },
9942 .dst_temps = .{.mem},
9943 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9944 .each = .{ .once = &.{
9945 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
9946 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
9947 .{ ._, ._ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },
9948 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
9949 .{ ._, ._ss, .mov, .mem(.tmp4d), .tmp1x, ._, ._ },
9950 .{ ._, ._, .mov, .tmp5d, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },
9951 .{ ._, ._, .@"and", .tmp5d, .sa(.src0, .add_smin), ._, ._ },
9952 .{ ._, ._, .xor, .tmp5d, .mem(.tmp4d), ._, ._ },
9953 .{ ._, ._, .cmp, .tmp5d, .sa(.src0, .add_smin), ._, ._ },
9954 .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
9955 .{ ._, ._ss, .add, .tmp1x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },
9956 .{ .@"1:", ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
9957 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9958 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9959 } },
9960 }, .{
9961 .required_features = .{ .@"64bit", .avx, null, null },
9962 .src_constraints = .{
9963 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
9964 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
9965 .any,
9966 },
9967 .patterns = &.{
9968 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
9969 },
9970 .call_frame = .{ .alignment = .@"16" },
9971 .extra_temps = .{
9972 .{ .type = .f64, .kind = .{ .rc = .general_purpose } },
9973 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
9974 .{ .type = .f64, .kind = .{ .reg = .rcx } },
9975 .{ .type = .f64, .kind = .{ .reg = .rdx } },
9976 .{ .type = .f64, .kind = .{ .reg = .rax } },
9977 .unused,
9978 .unused,
9979 .unused,
9980 .unused,
9981 },
9982 .dst_temps = .{.{ .ref = .src0 }},
9983 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9984 .each = .{ .once = &.{
9985 .{ ._, .v_q, .mov, .tmp0q, .src1x, ._, ._ },
9986 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
9987 .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_smin), ._, ._ },
9988 .{ ._, .v_q, .mov, .tmp3q, .dst0x, ._, ._ },
9989 .{ ._, ._, .mov, .tmp4q, .tmp0q, ._, ._ },
9990 .{ ._, ._, .@"and", .tmp4q, .tmp2q, ._, ._ },
9991 .{ ._, ._, .xor, .tmp4q, .tmp3q, ._, ._ },
9992 .{ ._, ._, .cmp, .tmp4q, .tmp2q, ._, ._ },
9993 .{ ._, ._na, .j, .@"0f", ._, ._, ._ },
9994 .{ ._, .v_q, .mov, .src1q, .tmp0q, ._, ._ },
9995 .{ ._, .v_sd, .add, .dst0x, .src0x, .src1q, ._ },
9996 } },
9997 }, .{
9998 .required_features = .{ .@"64bit", .sse2, null, null },
9999 .src_constraints = .{
10000 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
10001 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
10002 .any,
10003 },
10004 .patterns = &.{
10005 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
10006 },
10007 .call_frame = .{ .alignment = .@"16" },
10008 .extra_temps = .{
10009 .{ .type = .f64, .kind = .{ .rc = .general_purpose } },
10010 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
10011 .{ .type = .f64, .kind = .{ .reg = .rcx } },
10012 .{ .type = .f64, .kind = .{ .reg = .rdx } },
10013 .{ .type = .f64, .kind = .{ .reg = .rax } },
10014 .unused,
10015 .unused,
10016 .unused,
10017 .unused,
10018 },
10019 .dst_temps = .{.{ .ref = .src0 }},
10020 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10021 .each = .{ .once = &.{
10022 .{ ._, ._q, .mov, .tmp0q, .src1x, ._, ._ },
10023 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
10024 .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_smin), ._, ._ },
10025 .{ ._, ._q, .mov, .tmp3q, .dst0x, ._, ._ },
10026 .{ ._, ._, .mov, .tmp4q, .tmp0q, ._, ._ },
10027 .{ ._, ._, .@"and", .tmp4q, .tmp2q, ._, ._ },
10028 .{ ._, ._, .xor, .tmp4q, .tmp3q, ._, ._ },
10029 .{ ._, ._, .cmp, .tmp4q, .tmp2q, ._, ._ },
10030 .{ ._, ._na, .j, .@"0f", ._, ._, ._ },
10031 .{ ._, ._q, .mov, .src1x, .tmp0q, ._, ._ },
10032 .{ ._, ._sd, .add, .dst0x, .src1q, ._, ._ },
10033 } },
10034 }, .{
10035 .required_features = .{ .@"64bit", .sse, null, null },
10036 .src_constraints = .{
10037 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
10038 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
10039 .any,
10040 },
10041 .patterns = &.{
10042 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
10043 },
10044 .call_frame = .{ .alignment = .@"16" },
10045 .extra_temps = .{
10046 .{ .type = .f64, .kind = .mem },
10047 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
10048 .{ .type = .f64, .kind = .mem },
10049 .{ .type = .f64, .kind = .{ .reg = .rdx } },
10050 .{ .type = .f64, .kind = .{ .reg = .rax } },
10051 .{ .type = .f64, .kind = .{ .reg = .st6 } },
10052 .{ .type = .f64, .kind = .{ .reg = .st7 } },
10053 .unused,
10054 .unused,
10055 },
10056 .dst_temps = .{.{ .ref = .src0 }},
10057 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10058 .each = .{ .once = &.{
10059 .{ ._, ._ps, .movl, .mem(.tmp0q), .src1x, ._, ._ },
10060 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
10061 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_smin), ._, ._ },
10062 .{ ._, ._ps, .movl, .mem(.tmp2q), .dst0x, ._, ._ },
10063 .{ ._, ._, .mov, .tmp4q, .tmp0q, ._, ._ },
10064 .{ ._, ._, .@"and", .tmp4q, .tmp3q, ._, ._ },
10065 .{ ._, ._, .xor, .tmp4q, .mem(.tmp2q), ._, ._ },
10066 .{ ._, ._, .cmp, .tmp4q, .tmp3q, ._, ._ },
10067 .{ ._, ._na, .j, .@"0f", ._, ._, ._ },
10068 .{ ._, .f_, .ld, .mem(.tmp2q), ._, ._, ._ },
10069 .{ ._, .f_, .ld, .mem(.tmp0q), ._, ._, ._ },
10070 .{ ._, .f_p, .add, ._, ._, ._, ._ },
10071 .{ ._, .f_p, .st, .mem(.tmp2q), ._, ._, ._ },
10072 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
10073 .{ ._, ._ps, .movl, .dst0x, .mem(.tmp2q), ._, ._ },
10074 } },
10075 }, .{
10076 .required_features = .{ .@"64bit", .avx, null, null },
10077 .src_constraints = .{
10078 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
10079 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
10080 .any,
10081 },
10082 .patterns = &.{
10083 .{ .src = .{ .to_mem, .to_mem, .none } },
10084 },
10085 .call_frame = .{ .alignment = .@"16" },
10086 .extra_temps = .{
10087 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10088 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
10089 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
10090 .{ .type = .f64, .kind = .{ .rc = .general_purpose } },
10091 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
10092 .{ .type = .f64, .kind = .{ .reg = .rcx } },
10093 .{ .type = .f64, .kind = .{ .reg = .rdx } },
10094 .{ .type = .f64, .kind = .{ .reg = .rax } },
10095 .unused,
10096 },
10097 .dst_temps = .{.mem},
10098 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10099 .each = .{ .once = &.{
10100 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
10101 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
10102 .{ ._, .v_sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
10103 .{ ._, .v_q, .mov, .tmp3q, .tmp2x, ._, ._ },
10104 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
10105 .{ ._, ._, .mov, .tmp5q, .ua(.src0, .add_smin), ._, ._ },
10106 .{ ._, .v_q, .mov, .tmp6q, .tmp1x, ._, ._ },
10107 .{ ._, ._, .mov, .tmp7q, .tmp3q, ._, ._ },
10108 .{ ._, ._, .@"and", .tmp7q, .tmp5q, ._, ._ },
10109 .{ ._, ._, .xor, .tmp7q, .tmp6q, ._, ._ },
10110 .{ ._, ._, .cmp, .tmp7q, .tmp5q, ._, ._ },
10111 .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
10112 .{ ._, .v_q, .mov, .tmp2x, .tmp3q, ._, ._ },
10113 .{ ._, .v_sd, .add, .tmp1x, .tmp1x, .tmp2q, ._ },
10114 .{ .@"1:", .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
10115 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
10116 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10117 } },
10118 }, .{
10119 .required_features = .{ .@"64bit", .sse2, null, null },
10120 .src_constraints = .{
10121 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
10122 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
10123 .any,
10124 },
10125 .patterns = &.{
10126 .{ .src = .{ .to_mem, .to_mem, .none } },
10127 },
10128 .call_frame = .{ .alignment = .@"16" },
10129 .extra_temps = .{
10130 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10131 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
10132 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
10133 .{ .type = .f64, .kind = .{ .rc = .general_purpose } },
10134 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
10135 .{ .type = .f64, .kind = .{ .reg = .rcx } },
10136 .{ .type = .f64, .kind = .{ .reg = .rdx } },
10137 .{ .type = .f64, .kind = .{ .reg = .rax } },
10138 .unused,
10139 },
10140 .dst_temps = .{.mem},
10141 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10142 .each = .{ .once = &.{
10143 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
10144 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
10145 .{ ._, ._sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
10146 .{ ._, ._q, .mov, .tmp3q, .tmp2x, ._, ._ },
10147 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
10148 .{ ._, ._, .mov, .tmp5q, .ua(.src0, .add_smin), ._, ._ },
10149 .{ ._, ._q, .mov, .tmp6q, .tmp1x, ._, ._ },
10150 .{ ._, ._, .mov, .tmp7q, .tmp3q, ._, ._ },
10151 .{ ._, ._, .@"and", .tmp7q, .tmp5q, ._, ._ },
10152 .{ ._, ._, .xor, .tmp7q, .tmp6q, ._, ._ },
10153 .{ ._, ._, .cmp, .tmp7q, .tmp5q, ._, ._ },
10154 .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
10155 .{ ._, ._q, .mov, .tmp2x, .tmp3q, ._, ._ },
10156 .{ ._, ._sd, .add, .tmp1x, .tmp2q, ._, ._ },
10157 .{ .@"1:", ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
10158 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
10159 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10160 } },
10161 }, .{
10162 .required_features = .{ .@"64bit", .sse, null, null },
10163 .src_constraints = .{
10164 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
10165 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
10166 .any,
10167 },
10168 .patterns = &.{
10169 .{ .src = .{ .to_mem, .to_mem, .none } },
10170 },
10171 .call_frame = .{ .alignment = .@"16" },
10172 .extra_temps = .{
10173 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10174 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
10175 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
10176 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
10177 .{ .type = .f64, .kind = .{ .reg = .rdx } },
10178 .{ .type = .f64, .kind = .mem },
10179 .{ .type = .f64, .kind = .{ .reg = .rax } },
10180 .{ .type = .f64, .kind = .{ .reg = .st6 } },
10181 .{ .type = .f64, .kind = .{ .reg = .st7 } },
10182 },
10183 .dst_temps = .{.mem},
10184 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10185 .each = .{ .once = &.{
10186 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
10187 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
10188 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },
10189 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
10190 .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
10191 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
10192 .{ ._, ._, .mov, .tmp4q, .ua(.src0, .add_smin), ._, ._ },
10193 .{ ._, ._ps, .movl, .mem(.tmp5q), .tmp1x, ._, ._ },
10194 .{ ._, ._, .mov, .tmp6q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
10195 .{ ._, ._, .@"and", .tmp6q, .tmp4q, ._, ._ },
10196 .{ ._, ._, .xor, .tmp6q, .mem(.tmp5q), ._, ._ },
10197 .{ ._, ._, .cmp, .tmp6q, .tmp4q, ._, ._ },
10198 .{ ._, ._na, .j, .@"1f", ._, ._, ._ },
10199 .{ ._, .f_, .ld, .mem(.tmp5q), ._, ._, ._ },
10200 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ },
10201 .{ ._, .f_p, .add, ._, ._, ._, ._ },
10202 .{ ._, .f_p, .st, .mem(.tmp5q), ._, ._, ._ },
10203 .{ ._, ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
10204 .{ ._, ._ps, .movl, .tmp1x, .mem(.tmp5q), ._, ._ },
10205 .{ .@"1:", ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
10206 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
10207 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10208 } },
10209 }, .{
10210 .required_features = .{ .@"64bit", .avx, .x87, .fast_imm16 },
10211 .src_constraints = .{
10212 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
10213 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
10214 .any,
10215 },
10216 .patterns = &.{
10217 .{ .src = .{ .to_mem, .to_mem, .none } },
10218 },
10219 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
10220 .extra_temps = .{
10221 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
10222 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
10223 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
10224 .{ .type = .f80, .kind = .{ .reg = .st7 } },
10225 .{ .type = .f80, .kind = .{ .reg = .rax } },
10226 .unused,
10227 .unused,
10228 .unused,
10229 .unused,
10230 },
10231 .dst_temps = .{.{ .reg = .st0 }},
10232 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10233 .each = .{ .once = &.{
10234 .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ },
10235 .{ ._, .v_dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ },
10236 .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src1x), ._, ._ },
10237 .{ ._, .v_dqa, .mov, .memd(.tmp1x, 16), .tmp0x, ._, ._ },
10238 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
10239 .{ ._, .f_, .ld, .dst0t, ._, ._, ._ },
10240 .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ },
10241 .{ ._, ._, .movzx, .tmp4d, .memd(.tmp1w, 16 + 8), ._, ._ },
10242 .{ ._, ._, .@"and", .tmp4w, .sa(.src0, .add_smin), ._, ._ },
10243 .{ ._, ._, .xor, .tmp4w, .memd(.tmp1w, 8), ._, ._ },
10244 .{ ._, ._, .cmp, .mem(.tmp1q), .si(1), ._, ._ },
10245 .{ ._, ._, .sbb, .tmp4w, .sa(.src0, .add_smin), ._, ._ },
10246 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
10247 .{ ._, .f_, .ld, .memd(.tmp1t, 16), ._, ._, ._ },
10248 .{ ._, .f_p, .add, ._, ._, ._, ._ },
10249 } },
10250 }, .{
10251 .required_features = .{ .@"64bit", .avx, .x87, null },
10252 .src_constraints = .{
10253 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
10254 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
10255 .any,
10256 },
10257 .patterns = &.{
10258 .{ .src = .{ .to_mem, .to_mem, .none } },
10259 },
10260 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
10261 .extra_temps = .{
10262 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
10263 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
10264 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
10265 .{ .type = .f80, .kind = .{ .reg = .st7 } },
10266 .{ .type = .f80, .kind = .{ .reg = .rax } },
10267 .unused,
10268 .unused,
10269 .unused,
10270 .unused,
10271 },
10272 .dst_temps = .{.{ .reg = .st0 }},
10273 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10274 .each = .{ .once = &.{
10275 .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ },
10276 .{ ._, .v_dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ },
10277 .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src1x), ._, ._ },
10278 .{ ._, .v_dqa, .mov, .memd(.tmp1x, 16), .tmp0x, ._, ._ },
10279 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
10280 .{ ._, .f_, .ld, .dst0t, ._, ._, ._ },
10281 .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ },
10282 .{ ._, ._, .mov, .tmp4d, .sa(.src0, .add_smin), ._, ._ },
10283 .{ ._, ._, .@"and", .tmp4w, .memd(.tmp1w, 16 + 8), ._, ._ },
10284 .{ ._, ._, .xor, .tmp4w, .memd(.tmp1w, 8), ._, ._ },
10285 .{ ._, ._, .cmp, .mem(.tmp1q), .si(1), ._, ._ },
10286 .{ ._, ._, .sbb, .tmp4w, .sa(.src0, .add_smin), ._, ._ },
10287 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
10288 .{ ._, .f_, .ld, .memd(.tmp1t, 16), ._, ._, ._ },
10289 .{ ._, .f_p, .add, ._, ._, ._, ._ },
10290 } },
10291 }, .{
10292 .required_features = .{ .@"64bit", .sse2, .x87, .fast_imm16 },
10293 .src_constraints = .{
10294 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
10295 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
10296 .any,
10297 },
10298 .patterns = &.{
10299 .{ .src = .{ .to_mem, .to_mem, .none } },
10300 },
10301 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
10302 .extra_temps = .{
10303 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
10304 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
10305 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
10306 .{ .type = .f80, .kind = .{ .reg = .st7 } },
10307 .{ .type = .f80, .kind = .{ .reg = .rax } },
10308 .unused,
10309 .unused,
10310 .unused,
10311 .unused,
10312 },
10313 .dst_temps = .{.{ .reg = .st0 }},
10314 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10315 .each = .{ .once = &.{
10316 .{ ._, ._dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ },
10317 .{ ._, ._dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ },
10318 .{ ._, ._dqa, .mov, .tmp0x, .mem(.src1x), ._, ._ },
10319 .{ ._, ._dqa, .mov, .memd(.tmp1x, 16), .tmp0x, ._, ._ },
10320 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
10321 .{ ._, .f_, .ld, .dst0t, ._, ._, ._ },
10322 .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ },
10323 .{ ._, ._, .movzx, .tmp4d, .memd(.tmp1w, 16 + 8), ._, ._ },
10324 .{ ._, ._, .@"and", .tmp4w, .sa(.src0, .add_smin), ._, ._ },
10325 .{ ._, ._, .xor, .tmp4w, .memd(.tmp1w, 8), ._, ._ },
10326 .{ ._, ._, .cmp, .mem(.tmp1q), .si(1), ._, ._ },
10327 .{ ._, ._, .sbb, .tmp4w, .sa(.src0, .add_smin), ._, ._ },
10328 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
10329 .{ ._, .f_, .ld, .memd(.tmp1t, 16), ._, ._, ._ },
10330 .{ ._, .f_p, .add, ._, ._, ._, ._ },
10331 } },
10332 }, .{
10333 .required_features = .{ .@"64bit", .sse2, .x87, null },
10334 .src_constraints = .{
10335 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
10336 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
10337 .any,
10338 },
10339 .patterns = &.{
10340 .{ .src = .{ .to_mem, .to_mem, .none } },
10341 },
10342 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
10343 .extra_temps = .{
10344 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
10345 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
10346 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
10347 .{ .type = .f80, .kind = .{ .reg = .st7 } },
10348 .{ .type = .f80, .kind = .{ .reg = .rax } },
10349 .unused,
10350 .unused,
10351 .unused,
10352 .unused,
10353 },
10354 .dst_temps = .{.{ .reg = .st0 }},
10355 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10356 .each = .{ .once = &.{
10357 .{ ._, ._dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ },
10358 .{ ._, ._dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ },
10359 .{ ._, ._dqa, .mov, .tmp0x, .mem(.src1x), ._, ._ },
10360 .{ ._, ._dqa, .mov, .memd(.tmp1x, 16), .tmp0x, ._, ._ },
10361 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
10362 .{ ._, .f_, .ld, .dst0t, ._, ._, ._ },
10363 .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ },
10364 .{ ._, ._, .mov, .tmp4d, .sa(.src0, .add_smin), ._, ._ },
10365 .{ ._, ._, .@"and", .tmp4w, .memd(.tmp1w, 16 + 8), ._, ._ },
10366 .{ ._, ._, .xor, .tmp4w, .memd(.tmp1w, 8), ._, ._ },
10367 .{ ._, ._, .cmp, .mem(.tmp1q), .si(1), ._, ._ },
10368 .{ ._, ._, .sbb, .tmp4w, .sa(.src0, .add_smin), ._, ._ },
10369 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
10370 .{ ._, .f_, .ld, .memd(.tmp1t, 16), ._, ._, ._ },
10371 .{ ._, .f_p, .add, ._, ._, ._, ._ },
10372 } },
10373 }, .{
10374 .required_features = .{ .@"64bit", .sse, .x87, .fast_imm16 },
10375 .src_constraints = .{
10376 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
10377 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
10378 .any,
10379 },
10380 .patterns = &.{
10381 .{ .src = .{ .to_mem, .to_mem, .none } },
10382 },
10383 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
10384 .extra_temps = .{
10385 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
10386 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
10387 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
10388 .{ .type = .f80, .kind = .{ .reg = .st7 } },
10389 .{ .type = .f80, .kind = .{ .reg = .rax } },
10390 .unused,
10391 .unused,
10392 .unused,
10393 .unused,
10394 },
10395 .dst_temps = .{.{ .reg = .st0 }},
10396 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10397 .each = .{ .once = &.{
10398 .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ },
10399 .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ },
10400 .{ ._, ._ps, .mova, .tmp0x, .mem(.src1x), ._, ._ },
10401 .{ ._, ._ps, .mova, .memd(.tmp1x, 16), .tmp0x, ._, ._ },
10402 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
10403 .{ ._, .f_, .ld, .dst0t, ._, ._, ._ },
10404 .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ },
10405 .{ ._, ._, .movzx, .tmp4d, .memd(.tmp1w, 16 + 8), ._, ._ },
10406 .{ ._, ._, .@"and", .tmp4w, .sa(.src0, .add_smin), ._, ._ },
10407 .{ ._, ._, .xor, .tmp4w, .memd(.tmp1w, 8), ._, ._ },
10408 .{ ._, ._, .cmp, .mem(.tmp1q), .si(1), ._, ._ },
10409 .{ ._, ._, .sbb, .tmp4w, .sa(.src0, .add_smin), ._, ._ },
10410 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
10411 .{ ._, .f_, .ld, .memd(.tmp1t, 16), ._, ._, ._ },
10412 .{ ._, .f_p, .add, ._, ._, ._, ._ },
10413 } },
10414 }, .{
10415 .required_features = .{ .@"64bit", .sse, .x87, null },
10416 .src_constraints = .{
10417 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
10418 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
10419 .any,
10420 },
10421 .patterns = &.{
10422 .{ .src = .{ .to_mem, .to_mem, .none } },
10423 },
10424 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
10425 .extra_temps = .{
10426 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
10427 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
10428 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
10429 .{ .type = .f80, .kind = .{ .reg = .st7 } },
10430 .{ .type = .f80, .kind = .{ .reg = .rax } },
10431 .unused,
10432 .unused,
10433 .unused,
10434 .unused,
10435 },
10436 .dst_temps = .{.{ .reg = .st0 }},
10437 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10438 .each = .{ .once = &.{
10439 .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ },
10440 .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ },
10441 .{ ._, ._ps, .mova, .tmp0x, .mem(.src1x), ._, ._ },
10442 .{ ._, ._ps, .mova, .memd(.tmp1x, 16), .tmp0x, ._, ._ },
10443 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
10444 .{ ._, .f_, .ld, .dst0t, ._, ._, ._ },
10445 .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ },
10446 .{ ._, ._, .mov, .tmp4d, .sa(.src0, .add_smin), ._, ._ },
10447 .{ ._, ._, .@"and", .tmp4w, .memd(.tmp1w, 16 + 8), ._, ._ },
10448 .{ ._, ._, .xor, .tmp4w, .memd(.tmp1w, 8), ._, ._ },
10449 .{ ._, ._, .cmp, .mem(.tmp1q), .si(1), ._, ._ },
10450 .{ ._, ._, .sbb, .tmp4w, .sa(.src0, .add_smin), ._, ._ },
10451 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
10452 .{ ._, .f_, .ld, .memd(.tmp1t, 16), ._, ._, ._ },
10453 .{ ._, .f_p, .add, ._, ._, ._, ._ },
10454 } },
10455 }, .{
10456 .required_features = .{ .@"64bit", .avx, .x87, .fast_imm16 },
10457 .src_constraints = .{
10458 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
10459 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
10460 .any,
10461 },
10462 .patterns = &.{
10463 .{ .src = .{ .to_mem, .to_mem, .none } },
10464 },
10465 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
10466 .extra_temps = .{
10467 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10468 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
10469 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
10470 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
10471 .{ .type = .f80, .kind = .{ .reg = .st7 } },
10472 .{ .type = .f80, .kind = .{ .reg = .rax } },
10473 .unused,
10474 .unused,
10475 .unused,
10476 },
10477 .dst_temps = .{.mem},
10478 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10479 .each = .{ .once = &.{
10480 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
10481 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
10482 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
10483 .{ ._, .v_dqa, .mov, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
10484 .{ ._, .v_dqa, .mov, .memd(.tmp2x, 16), .tmp1x, ._, ._ },
10485 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
10486 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
10487 .{ ._, .f_, .ld, .tmp4t, ._, ._, ._ },
10488 .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ },
10489 .{ ._, ._, .movzx, .tmp5d, .memd(.tmp2w, 16 + 8), ._, ._ },
10490 .{ ._, ._, .@"and", .tmp5w, .sa(.src0, .add_smin), ._, ._ },
10491 .{ ._, ._, .xor, .tmp5w, .memd(.tmp2w, 8), ._, ._ },
10492 .{ ._, ._, .cmp, .mem(.tmp2q), .si(1), ._, ._ },
10493 .{ ._, ._, .sbb, .tmp5w, .sa(.src0, .add_smin), ._, ._ },
10494 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
10495 .{ ._, .f_, .ld, .memd(.tmp2t, 16), ._, ._, ._ },
10496 .{ ._, .f_p, .add, ._, ._, ._, ._ },
10497 .{ .@"1:", .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
10498 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
10499 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10500 } },
10501 }, .{
10502 .required_features = .{ .@"64bit", .avx, .x87, null },
10503 .src_constraints = .{
10504 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
10505 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
10506 .any,
10507 },
10508 .patterns = &.{
10509 .{ .src = .{ .to_mem, .to_mem, .none } },
10510 },
10511 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
10512 .extra_temps = .{
10513 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10514 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
10515 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
10516 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
10517 .{ .type = .f80, .kind = .{ .reg = .st7 } },
10518 .{ .type = .f80, .kind = .{ .reg = .rax } },
10519 .unused,
10520 .unused,
10521 .unused,
10522 },
10523 .dst_temps = .{.mem},
10524 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10525 .each = .{ .once = &.{
10526 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
10527 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
10528 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
10529 .{ ._, .v_dqa, .mov, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
10530 .{ ._, .v_dqa, .mov, .memd(.tmp2x, 16), .tmp1x, ._, ._ },
10531 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
10532 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
10533 .{ ._, .f_, .ld, .tmp4t, ._, ._, ._ },
10534 .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ },
10535 .{ ._, ._, .mov, .tmp5d, .sa(.src0, .add_smin), ._, ._ },
10536 .{ ._, ._, .@"and", .tmp5w, .memd(.tmp2w, 16 + 8), ._, ._ },
10537 .{ ._, ._, .xor, .tmp5w, .memd(.tmp2w, 8), ._, ._ },
10538 .{ ._, ._, .cmp, .mem(.tmp2q), .si(1), ._, ._ },
10539 .{ ._, ._, .sbb, .tmp5w, .sa(.src0, .add_smin), ._, ._ },
10540 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
10541 .{ ._, .f_, .ld, .memd(.tmp2t, 16), ._, ._, ._ },
10542 .{ ._, .f_p, .add, ._, ._, ._, ._ },
10543 .{ .@"1:", .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
10544 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
10545 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10546 } },
10547 }, .{
10548 .required_features = .{ .@"64bit", .sse2, .x87, .fast_imm16 },
10549 .src_constraints = .{
10550 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
10551 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
10552 .any,
10553 },
10554 .patterns = &.{
10555 .{ .src = .{ .to_mem, .to_mem, .none } },
10556 },
10557 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
10558 .extra_temps = .{
10559 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10560 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
10561 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
10562 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
10563 .{ .type = .f80, .kind = .{ .reg = .st7 } },
10564 .{ .type = .f80, .kind = .{ .reg = .rax } },
10565 .unused,
10566 .unused,
10567 .unused,
10568 },
10569 .dst_temps = .{.mem},
10570 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10571 .each = .{ .once = &.{
10572 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
10573 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
10574 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
10575 .{ ._, ._dqa, .mov, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
10576 .{ ._, ._dqa, .mov, .memd(.tmp2x, 16), .tmp1x, ._, ._ },
10577 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
10578 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
10579 .{ ._, .f_, .ld, .tmp4t, ._, ._, ._ },
10580 .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ },
10581 .{ ._, ._, .movzx, .tmp5d, .memd(.tmp2w, 16 + 8), ._, ._ },
10582 .{ ._, ._, .@"and", .tmp5w, .sa(.src0, .add_smin), ._, ._ },
10583 .{ ._, ._, .xor, .tmp5w, .memd(.tmp2w, 8), ._, ._ },
10584 .{ ._, ._, .cmp, .mem(.tmp2q), .si(1), ._, ._ },
10585 .{ ._, ._, .sbb, .tmp5w, .sa(.src0, .add_smin), ._, ._ },
10586 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
10587 .{ ._, .f_, .ld, .memd(.tmp2t, 16), ._, ._, ._ },
10588 .{ ._, .f_p, .add, ._, ._, ._, ._ },
10589 .{ .@"1:", .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
10590 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
10591 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10592 } },
10593 }, .{
10594 .required_features = .{ .@"64bit", .sse2, .x87, null },
10595 .src_constraints = .{
10596 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
10597 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
10598 .any,
10599 },
10600 .patterns = &.{
10601 .{ .src = .{ .to_mem, .to_mem, .none } },
10602 },
10603 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
10604 .extra_temps = .{
10605 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10606 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
10607 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
10608 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
10609 .{ .type = .f80, .kind = .{ .reg = .st7 } },
10610 .{ .type = .f80, .kind = .{ .reg = .rax } },
10611 .unused,
10612 .unused,
10613 .unused,
10614 },
10615 .dst_temps = .{.mem},
10616 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10617 .each = .{ .once = &.{
10618 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
10619 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
10620 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
10621 .{ ._, ._dqa, .mov, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
10622 .{ ._, ._dqa, .mov, .memd(.tmp2x, 16), .tmp1x, ._, ._ },
10623 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
10624 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
10625 .{ ._, .f_, .ld, .tmp4t, ._, ._, ._ },
10626 .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ },
10627 .{ ._, ._, .mov, .tmp5d, .sa(.src0, .add_smin), ._, ._ },
10628 .{ ._, ._, .@"and", .tmp5w, .memd(.tmp2w, 16 + 8), ._, ._ },
10629 .{ ._, ._, .xor, .tmp5w, .memd(.tmp2w, 8), ._, ._ },
10630 .{ ._, ._, .cmp, .mem(.tmp2q), .si(1), ._, ._ },
10631 .{ ._, ._, .sbb, .tmp5w, .sa(.src0, .add_smin), ._, ._ },
10632 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
10633 .{ ._, .f_, .ld, .memd(.tmp2t, 16), ._, ._, ._ },
10634 .{ ._, .f_p, .add, ._, ._, ._, ._ },
10635 .{ .@"1:", .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
10636 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
10637 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10638 } },
10639 }, .{
10640 .required_features = .{ .@"64bit", .sse, .x87, .fast_imm16 },
10641 .src_constraints = .{
10642 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
10643 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
10644 .any,
10645 },
10646 .patterns = &.{
10647 .{ .src = .{ .to_mem, .to_mem, .none } },
10648 },
10649 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
10650 .extra_temps = .{
10651 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10652 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
10653 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
10654 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
10655 .{ .type = .f80, .kind = .{ .reg = .st7 } },
10656 .{ .type = .f80, .kind = .{ .reg = .rax } },
10657 .unused,
10658 .unused,
10659 .unused,
10660 },
10661 .dst_temps = .{.mem},
10662 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10663 .each = .{ .once = &.{
10664 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
10665 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
10666 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
10667 .{ ._, ._ps, .mova, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
10668 .{ ._, ._ps, .mova, .memd(.tmp2x, 16), .tmp1x, ._, ._ },
10669 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
10670 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
10671 .{ ._, .f_, .ld, .tmp4t, ._, ._, ._ },
10672 .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ },
10673 .{ ._, ._, .movzx, .tmp5d, .memd(.tmp2w, 16 + 8), ._, ._ },
10674 .{ ._, ._, .@"and", .tmp5w, .sa(.src0, .add_smin), ._, ._ },
10675 .{ ._, ._, .xor, .tmp5w, .memd(.tmp2w, 8), ._, ._ },
10676 .{ ._, ._, .cmp, .mem(.tmp2q), .si(1), ._, ._ },
10677 .{ ._, ._, .sbb, .tmp5w, .sa(.src0, .add_smin), ._, ._ },
10678 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
10679 .{ ._, .f_, .ld, .memd(.tmp2t, 16), ._, ._, ._ },
10680 .{ ._, .f_p, .add, ._, ._, ._, ._ },
10681 .{ .@"1:", .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
10682 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
10683 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10684 } },
10685 }, .{
10686 .required_features = .{ .@"64bit", .sse, .x87, null },
10687 .src_constraints = .{
10688 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
10689 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
10690 .any,
10691 },
10692 .patterns = &.{
10693 .{ .src = .{ .to_mem, .to_mem, .none } },
10694 },
10695 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
10696 .extra_temps = .{
10697 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10698 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
10699 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
10700 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
10701 .{ .type = .f80, .kind = .{ .reg = .st7 } },
10702 .{ .type = .f80, .kind = .{ .reg = .rax } },
10703 .unused,
10704 .unused,
10705 .unused,
10706 },
10707 .dst_temps = .{.mem},
10708 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10709 .each = .{ .once = &.{
10710 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
10711 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
10712 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
10713 .{ ._, ._ps, .mova, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
10714 .{ ._, ._ps, .mova, .memd(.tmp2x, 16), .tmp1x, ._, ._ },
10715 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
10716 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
10717 .{ ._, .f_, .ld, .tmp4t, ._, ._, ._ },
10718 .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ },
10719 .{ ._, ._, .mov, .tmp5d, .sa(.src0, .add_smin), ._, ._ },
10720 .{ ._, ._, .@"and", .tmp5w, .memd(.tmp2w, 16 + 8), ._, ._ },
10721 .{ ._, ._, .xor, .tmp5w, .memd(.tmp2w, 8), ._, ._ },
10722 .{ ._, ._, .cmp, .mem(.tmp2q), .si(1), ._, ._ },
10723 .{ ._, ._, .sbb, .tmp5w, .sa(.src0, .add_smin), ._, ._ },
10724 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
10725 .{ ._, .f_, .ld, .memd(.tmp2t, 16), ._, ._, ._ },
10726 .{ ._, .f_p, .add, ._, ._, ._, ._ },
10727 .{ .@"1:", .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
10728 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
10729 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10730 } },
10731 }, .{
10732 .required_features = .{ .@"64bit", .avx, null, null },
10733 .src_constraints = .{
10734 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
10735 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
10736 .any,
10737 },
10738 .patterns = &.{
10739 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
10740 },
10741 .call_frame = .{ .alignment = .@"16" },
10742 .extra_temps = .{
10743 .{ .type = .f128, .kind = .mem },
10744 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
10745 .{ .type = .f128, .kind = .{ .reg = .rcx } },
10746 .{ .type = .f128, .kind = .{ .reg = .rdx } },
10747 .{ .type = .f128, .kind = .{ .reg = .rax } },
10748 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
10749 .unused,
10750 .unused,
10751 .unused,
10752 },
10753 .dst_temps = .{.{ .ref = .src0 }},
10754 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10755 .each = .{ .once = &.{
10756 .{ ._, .v_dqa, .mov, .mem(.tmp0x), .src1x, ._, ._ },
10757 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
10758 .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_smin), ._, ._ },
10759 .{ ._, .vp_q, .extr, .tmp3q, .dst0x, .ui(1), ._ },
10760 .{ ._, ._, .mov, .tmp4q, .tmp2q, ._, ._ },
10761 .{ ._, ._, .@"and", .tmp4q, .memd(.tmp0q, 8), ._, ._ },
10762 .{ ._, ._, .xor, .tmp4q, .tmp3q, ._, ._ },
10763 .{ ._, .v_q, .mov, .tmp3q, .dst0x, ._, ._ },
10764 .{ ._, ._, .cmp, .tmp3q, .si(1), ._, ._ },
10765 .{ ._, ._, .sbb, .tmp4q, .tmp2q, ._, ._ },
10766 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
10767 .{ ._, .v_dqa, .mov, .src1x, .mem(.tmp0x), ._, ._ },
10768 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
10769 } },
10770 }, .{
10771 .required_features = .{ .@"64bit", .sse4_1, null, null },
10772 .src_constraints = .{
10773 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
10774 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
10775 .any,
10776 },
10777 .patterns = &.{
10778 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
10779 },
10780 .call_frame = .{ .alignment = .@"16" },
10781 .extra_temps = .{
10782 .{ .type = .f128, .kind = .mem },
10783 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
10784 .{ .type = .f128, .kind = .{ .reg = .rcx } },
10785 .{ .type = .f128, .kind = .{ .reg = .rdx } },
10786 .{ .type = .f128, .kind = .{ .reg = .rax } },
10787 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
10788 .unused,
10789 .unused,
10790 .unused,
10791 },
10792 .dst_temps = .{.{ .ref = .src0 }},
10793 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10794 .each = .{ .once = &.{
10795 .{ ._, ._dqa, .mov, .mem(.tmp0x), .src1x, ._, ._ },
10796 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
10797 .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_smin), ._, ._ },
10798 .{ ._, .p_q, .extr, .tmp3q, .dst0x, .ui(1), ._ },
10799 .{ ._, ._, .mov, .tmp4q, .tmp2q, ._, ._ },
10800 .{ ._, ._, .@"and", .tmp4q, .memd(.tmp0q, 8), ._, ._ },
10801 .{ ._, ._, .xor, .tmp4q, .tmp3q, ._, ._ },
10802 .{ ._, ._q, .mov, .tmp3q, .dst0x, ._, ._ },
10803 .{ ._, ._, .cmp, .tmp3q, .si(1), ._, ._ },
10804 .{ ._, ._, .sbb, .tmp4q, .tmp2q, ._, ._ },
10805 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
10806 .{ ._, ._dqa, .mov, .src1x, .mem(.tmp0x), ._, ._ },
10807 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
10808 } },
10809 }, .{
10810 .required_features = .{ .@"64bit", .sse2, null, null },
10811 .src_constraints = .{
10812 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
10813 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
10814 .any,
10815 },
10816 .patterns = &.{
10817 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
10818 },
10819 .call_frame = .{ .alignment = .@"16" },
10820 .extra_temps = .{
10821 .{ .type = .f128, .kind = .mem },
10822 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
10823 .{ .type = .f128, .kind = .{ .reg = .rcx } },
10824 .{ .type = .f128, .kind = .{ .reg = .rdx } },
10825 .{ .type = .f128, .kind = .{ .reg = .rax } },
10826 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
10827 .unused,
10828 .unused,
10829 .unused,
10830 },
10831 .dst_temps = .{.{ .ref = .src0 }},
10832 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10833 .each = .{ .once = &.{
10834 .{ ._, ._dqa, .mov, .mem(.tmp0x), .src1x, ._, ._ },
10835 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
10836 .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_smin), ._, ._ },
10837 .{ ._, .p_d, .shuf, .src1x, .dst0x, .ui(0b11_10_11_10), ._ },
10838 .{ ._, ._q, .mov, .tmp3q, .src1x, ._, ._ },
10839 .{ ._, ._, .mov, .tmp4q, .tmp2q, ._, ._ },
10840 .{ ._, ._, .@"and", .tmp4q, .memd(.tmp0q, 8), ._, ._ },
10841 .{ ._, ._, .xor, .tmp4q, .tmp3q, ._, ._ },
10842 .{ ._, ._q, .mov, .tmp3q, .dst0x, ._, ._ },
10843 .{ ._, ._, .cmp, .tmp3q, .si(1), ._, ._ },
10844 .{ ._, ._, .sbb, .tmp4q, .tmp2q, ._, ._ },
10845 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
10846 .{ ._, ._dqa, .mov, .src1x, .mem(.tmp0x), ._, ._ },
10847 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
10848 } },
10849 }, .{
10850 .required_features = .{ .@"64bit", .sse, null, null },
10851 .src_constraints = .{
10852 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
10853 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
10854 .any,
10855 },
10856 .patterns = &.{
10857 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
10858 },
10859 .call_frame = .{ .alignment = .@"16" },
10860 .extra_temps = .{
10861 .{ .type = .f128, .kind = .mem },
10862 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
10863 .{ .type = .f128, .kind = .{ .reg = .rdx } },
10864 .{ .type = .f128, .kind = .mem },
10865 .{ .type = .f128, .kind = .{ .reg = .rax } },
10866 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
10867 .unused,
10868 .unused,
10869 .unused,
10870 },
10871 .dst_temps = .{.{ .ref = .src0 }},
10872 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10873 .each = .{ .once = &.{
10874 .{ ._, ._ps, .mova, .mem(.tmp0x), .src1x, ._, ._ },
10875 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
10876 .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_smin), ._, ._ },
10877 .{ ._, ._ps, .mova, .mem(.tmp3x), .dst0x, ._, ._ },
10878 .{ ._, ._, .mov, .tmp4q, .tmp2q, ._, ._ },
10879 .{ ._, ._, .@"and", .tmp4q, .memd(.tmp0q, 8), ._, ._ },
10880 .{ ._, ._, .xor, .tmp4q, .memd(.tmp3q, 8), ._, ._ },
10881 .{ ._, ._, .cmp, .mem(.tmp3q), .si(1), ._, ._ },
10882 .{ ._, ._, .sbb, .tmp4q, .tmp2q, ._, ._ },
10883 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
10884 .{ ._, ._ps, .mova, .src1x, .mem(.tmp0x), ._, ._ },
10885 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
10886 } },
10887 }, .{
10888 .required_features = .{ .@"64bit", .avx, null, null },
10889 .src_constraints = .{
10890 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
10891 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
10892 .any,
10893 },
10894 .patterns = &.{
10895 .{ .src = .{ .to_mem, .to_mem, .none } },
10896 },
10897 .call_frame = .{ .alignment = .@"16" },
10898 .extra_temps = .{
10899 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10900 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
10901 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
10902 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
10903 .{ .type = .f128, .kind = .{ .reg = .rcx } },
10904 .{ .type = .f128, .kind = .{ .reg = .rdx } },
10905 .{ .type = .f128, .kind = .{ .reg = .rax } },
10906 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
10907 .unused,
10908 },
10909 .dst_temps = .{.mem},
10910 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10911 .each = .{ .once = &.{
10912 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
10913 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
10914 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
10915 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
10916 .{ ._, ._, .mov, .tmp4q, .ua(.src0, .add_smin), ._, ._ },
10917 .{ ._, .vp_q, .extr, .tmp5q, .tmp1x, .ui(1), ._ },
10918 .{ ._, ._, .mov, .tmp6q, .tmp4q, ._, ._ },
10919 .{ ._, ._, .@"and", .tmp6q, .memiad(.src1q, .tmp0, .add_unaligned_size, 8), ._, ._ },
10920 .{ ._, ._, .xor, .tmp6q, .tmp5q, ._, ._ },
10921 .{ ._, .v_q, .mov, .tmp5q, .tmp1x, ._, ._ },
10922 .{ ._, ._, .cmp, .tmp5q, .si(1), ._, ._ },
10923 .{ ._, ._, .sbb, .tmp6q, .tmp4q, ._, ._ },
10924 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
10925 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
10926 .{ ._, ._, .call, .tmp7d, ._, ._, ._ },
10927 .{ .@"1:", .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
10928 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
10929 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10930 } },
10931 }, .{
10932 .required_features = .{ .@"64bit", .sse4_1, null, null },
10933 .src_constraints = .{
10934 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
10935 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
10936 .any,
10937 },
10938 .patterns = &.{
10939 .{ .src = .{ .to_mem, .to_mem, .none } },
10940 },
10941 .call_frame = .{ .alignment = .@"16" },
10942 .extra_temps = .{
10943 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10944 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
10945 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
10946 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
10947 .{ .type = .f128, .kind = .{ .reg = .rcx } },
10948 .{ .type = .f128, .kind = .{ .reg = .rdx } },
10949 .{ .type = .f128, .kind = .{ .reg = .rax } },
10950 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
10951 .unused,
10952 },
10953 .dst_temps = .{.mem},
10954 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10955 .each = .{ .once = &.{
10956 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
10957 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
10958 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
10959 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
10960 .{ ._, ._, .mov, .tmp4q, .ua(.src0, .add_smin), ._, ._ },
10961 .{ ._, .p_q, .extr, .tmp5q, .tmp1x, .ui(1), ._ },
10962 .{ ._, ._, .mov, .tmp6q, .tmp4q, ._, ._ },
10963 .{ ._, ._, .@"and", .tmp6q, .memiad(.src1q, .tmp0, .add_unaligned_size, 8), ._, ._ },
10964 .{ ._, ._, .xor, .tmp6q, .tmp5q, ._, ._ },
10965 .{ ._, ._q, .mov, .tmp5q, .tmp1x, ._, ._ },
10966 .{ ._, ._, .cmp, .tmp5q, .si(1), ._, ._ },
10967 .{ ._, ._, .sbb, .tmp6q, .tmp4q, ._, ._ },
10968 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
10969 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
10970 .{ ._, ._, .call, .tmp7d, ._, ._, ._ },
10971 .{ .@"1:", ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
10972 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
10973 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10974 } },
10975 }, .{
10976 .required_features = .{ .@"64bit", .sse2, null, null },
10977 .src_constraints = .{
10978 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
10979 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
10980 .any,
10981 },
10982 .patterns = &.{
10983 .{ .src = .{ .to_mem, .to_mem, .none } },
10984 },
10985 .call_frame = .{ .alignment = .@"16" },
10986 .extra_temps = .{
10987 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10988 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
10989 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
10990 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
10991 .{ .type = .f128, .kind = .{ .reg = .rcx } },
10992 .{ .type = .f128, .kind = .{ .reg = .rdx } },
10993 .{ .type = .f128, .kind = .{ .reg = .rax } },
10994 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
10995 .unused,
10996 },
10997 .dst_temps = .{.mem},
10998 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10999 .each = .{ .once = &.{
11000 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
11001 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
11002 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
11003 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
11004 .{ ._, ._, .mov, .tmp4q, .ua(.src0, .add_smin), ._, ._ },
11005 .{ ._, .p_d, .shuf, .tmp2x, .tmp1x, .ui(0b11_10_11_10), ._ },
11006 .{ ._, ._q, .mov, .tmp5q, .tmp2x, ._, ._ },
11007 .{ ._, ._, .mov, .tmp6q, .tmp4q, ._, ._ },
11008 .{ ._, ._, .@"and", .tmp6q, .memiad(.src1q, .tmp0, .add_unaligned_size, 8), ._, ._ },
11009 .{ ._, ._, .xor, .tmp6q, .tmp5q, ._, ._ },
11010 .{ ._, ._q, .mov, .tmp5q, .tmp1x, ._, ._ },
11011 .{ ._, ._, .cmp, .tmp5q, .si(1), ._, ._ },
11012 .{ ._, ._, .sbb, .tmp6q, .tmp4q, ._, ._ },
11013 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
11014 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
11015 .{ ._, ._, .call, .tmp7d, ._, ._, ._ },
11016 .{ .@"1:", ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
11017 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
11018 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11019 } },
11020 }, .{
11021 .required_features = .{ .@"64bit", .sse, null, null },
11022 .src_constraints = .{
11023 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
11024 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
11025 .any,
11026 },
11027 .patterns = &.{
11028 .{ .src = .{ .to_mem, .to_mem, .none } },
11029 },
11030 .call_frame = .{ .alignment = .@"16" },
11031 .extra_temps = .{
11032 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11033 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
11034 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
11035 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
11036 .{ .type = .f128, .kind = .{ .reg = .rdx } },
11037 .{ .type = .f128, .kind = .mem },
11038 .{ .type = .f128, .kind = .{ .reg = .rax } },
11039 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
11040 .unused,
11041 },
11042 .dst_temps = .{.mem},
11043 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
11044 .each = .{ .once = &.{
11045 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
11046 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
11047 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
11048 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
11049 .{ ._, ._, .mov, .tmp4q, .ua(.src0, .add_smin), ._, ._ },
11050 .{ ._, ._ps, .mova, .mem(.tmp5x), .tmp1x, ._, ._ },
11051 .{ ._, ._, .mov, .tmp6q, .tmp4q, ._, ._ },
11052 .{ ._, ._, .@"and", .tmp6q, .memiad(.src1q, .tmp0, .add_unaligned_size, 8), ._, ._ },
11053 .{ ._, ._, .xor, .tmp6q, .memd(.tmp5q, 8), ._, ._ },
11054 .{ ._, ._, .cmp, .mem(.tmp5q), .si(1), ._, ._ },
11055 .{ ._, ._, .sbb, .tmp6q, .tmp4q, ._, ._ },
11056 .{ ._, ._nae, .j, .@"1f", ._, ._, ._ },
11057 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
11058 .{ ._, ._, .call, .tmp7d, ._, ._, ._ },
11059 .{ .@"1:", ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
11060 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
11061 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11062 } },
11063 } }) catch |err| switch (err) {
11064 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
11065 @tagName(air_tag),
11066 cg.typeOf(bin_op.lhs).fmt(pt),
11067 ops[0].tracking(cg),
11068 ops[1].tracking(cg),
11069 }),
11070 else => |e| return e,
11071 };
11072 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
11073 },
11074 .ptr_add => |air_tag| if (use_old) try cg.airPtrArithmetic(inst, air_tag) else {
11075 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
11076 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
11077 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
11078 try ops[0].toSlicePtr(cg);
11079 var res: [1]Temp = undefined;
11080 if (ty_pl.ty.toType().elemType2(zcu).hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{ty_pl.ty.toType()}, &ops, comptime &.{ .{
11081 .patterns = &.{
11082 .{ .src = .{ .to_gpr, .simm32, .none } },
11083 },
11084 .dst_temps = .{.{ .rc = .general_purpose }},
11085 .each = .{ .once = &.{
11086 .{ ._, ._, .lea, .dst0p, .leaa(.src0, .add_src0_elem_size_times_src1), ._, ._ },
11087 } },
11088 }, .{
11089 .dst_constraints = .{.{ .elem_size_is = 1 }},
11090 .patterns = &.{
11091 .{ .src = .{ .to_gpr, .to_gpr, .none } },
11092 },
11093 .dst_temps = .{.{ .rc = .general_purpose }},
11094 .each = .{ .once = &.{
11095 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
11096 } },
11097 }, .{
11098 .dst_constraints = .{.{ .elem_size_is = 2 }},
11099 .patterns = &.{
11100 .{ .src = .{ .to_gpr, .to_gpr, .none } },
11101 },
11102 .dst_temps = .{.{ .rc = .general_purpose }},
11103 .each = .{ .once = &.{
11104 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"2", .src1), ._, ._ },
11105 } },
11106 }, .{
11107 .dst_constraints = .{.{ .elem_size_is = 2 + 1 }},
11108 .patterns = &.{
11109 .{ .src = .{ .to_gpr, .to_gpr, .none } },
11110 },
11111 .dst_temps = .{.{ .rc = .general_purpose }},
11112 .each = .{ .once = &.{
11113 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"2", .src1), ._, ._ },
11114 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
11115 } },
11116 }, .{
11117 .dst_constraints = .{.{ .elem_size_is = 4 }},
11118 .patterns = &.{
11119 .{ .src = .{ .to_gpr, .to_gpr, .none } },
11120 },
11121 .dst_temps = .{.{ .rc = .general_purpose }},
11122 .each = .{ .once = &.{
11123 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"4", .src1), ._, ._ },
11124 } },
11125 }, .{
11126 .dst_constraints = .{.{ .elem_size_is = 4 + 1 }},
11127 .patterns = &.{
11128 .{ .src = .{ .to_gpr, .to_gpr, .none } },
11129 },
11130 .dst_temps = .{.{ .ref = .src1 }},
11131 .each = .{ .once = &.{
11132 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ },
11133 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
11134 } },
11135 }, .{
11136 .required_features = .{ .@"64bit", null, null, null },
11137 .dst_constraints = .{.{ .elem_size_is = 8 }},
11138 .patterns = &.{
11139 .{ .src = .{ .to_gpr, .to_gpr, .none } },
11140 },
11141 .dst_temps = .{.{ .rc = .general_purpose }},
11142 .each = .{ .once = &.{
11143 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"8", .src1), ._, ._ },
11144 } },
11145 }, .{
11146 .required_features = .{ .@"64bit", null, null, null },
11147 .dst_constraints = .{.{ .elem_size_is = 8 + 1 }},
11148 .patterns = &.{
11149 .{ .src = .{ .to_gpr, .to_gpr, .none } },
11150 },
11151 .dst_temps = .{.{ .ref = .src1 }},
11152 .each = .{ .once = &.{
11153 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ },
11154 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
11155 } },
11156 }, .{
11157 .dst_constraints = .{.po2_elem_size},
11158 .patterns = &.{
11159 .{ .src = .{ .to_gpr, .to_mut_gpr, .none } },
11160 },
11161 .dst_temps = .{.{ .ref = .src1 }},
11162 .clobbers = .{ .eflags = true },
11163 .each = .{ .once = &.{
11164 .{ ._, ._l, .sh, .src1p, .sa(.none, .add_log2_src0_elem_size), ._, ._ },
11165 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
11166 } },
11167 }, .{
11168 .patterns = &.{
11169 .{ .src = .{ .to_gpr, .to_gpr, .none } },
11170 },
11171 .dst_temps = .{.{ .rc = .general_purpose }},
11172 .clobbers = .{ .eflags = true },
11173 .each = .{ .once = &.{
11174 .{ ._, .i_, .mul, .dst0p, .src1p, .sa(.none, .add_src0_elem_size), ._ },
11175 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
11176 } },
11177 } }) catch |err| switch (err) {
11178 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
11179 @tagName(air_tag),
11180 cg.typeOf(bin_op.lhs).fmt(pt),
11181 ops[0].tracking(cg),
11182 ops[1].tracking(cg),
11183 }),
11184 else => |e| return e,
11185 } else { // hack around Sema OPV bugs
11186 res[0] = ops[0];
11187 }
11188 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
11189 },
11190 .ptr_sub => |air_tag| if (use_old) try cg.airPtrArithmetic(inst, air_tag) else {
11191 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
11192 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
11193 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
11194 try ops[0].toSlicePtr(cg);
11195 var res: [1]Temp = undefined;
11196 if (ty_pl.ty.toType().elemType2(zcu).hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{ty_pl.ty.toType()}, &ops, comptime &.{ .{
11197 .patterns = &.{
11198 .{ .src = .{ .to_gpr, .simm32, .none } },
11199 },
11200 .dst_temps = .{.{ .rc = .general_purpose }},
11201 .each = .{ .once = &.{
11202 .{ ._, ._, .lea, .dst0p, .leaa(.src0, .sub_src0_elem_size_times_src1), ._, ._ },
11203 } },
11204 }, .{
11205 .dst_constraints = .{.{ .elem_size_is = 1 }},
11206 .patterns = &.{
11207 .{ .src = .{ .to_gpr, .to_mut_gpr, .none } },
11208 },
11209 .dst_temps = .{.{ .ref = .src1 }},
11210 .clobbers = .{ .eflags = true },
11211 .each = .{ .once = &.{
11212 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
11213 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
11214 } },
11215 }, .{
11216 .dst_constraints = .{.{ .elem_size_is = 2 }},
11217 .patterns = &.{
11218 .{ .src = .{ .to_gpr, .to_mut_gpr, .none } },
11219 },
11220 .dst_temps = .{.{ .ref = .src1 }},
11221 .clobbers = .{ .eflags = true },
11222 .each = .{ .once = &.{
11223 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
11224 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"2", .src1), ._, ._ },
11225 } },
11226 }, .{
11227 .dst_constraints = .{.{ .elem_size_is = 2 + 1 }},
11228 .patterns = &.{
11229 .{ .src = .{ .to_gpr, .to_gpr, .none } },
11230 },
11231 .dst_temps = .{.{ .rc = .general_purpose }},
11232 .clobbers = .{ .eflags = true },
11233 .each = .{ .once = &.{
11234 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"2", .src1), ._, ._ },
11235 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },
11236 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
11237 } },
11238 }, .{
11239 .dst_constraints = .{.{ .elem_size_is = 4 }},
11240 .patterns = &.{
11241 .{ .src = .{ .to_gpr, .to_mut_gpr, .none } },
11242 },
11243 .dst_temps = .{.{ .ref = .src1 }},
11244 .clobbers = .{ .eflags = true },
11245 .each = .{ .once = &.{
11246 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
11247 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"4", .src1), ._, ._ },
11248 } },
11249 }, .{
11250 .dst_constraints = .{.{ .elem_size_is = 4 + 1 }},
11251 .patterns = &.{
11252 .{ .src = .{ .to_gpr, .to_gpr, .none } },
11253 },
11254 .dst_temps = .{.{ .rc = .general_purpose }},
11255 .clobbers = .{ .eflags = true },
11256 .each = .{ .once = &.{
11257 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ },
11258 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },
11259 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
11260 } },
11261 }, .{
11262 .required_features = .{ .@"64bit", null, null, null },
11263 .dst_constraints = .{.{ .elem_size_is = 8 }},
11264 .patterns = &.{
11265 .{ .src = .{ .to_gpr, .to_mut_gpr, .none } },
11266 },
11267 .dst_temps = .{.{ .ref = .src1 }},
11268 .clobbers = .{ .eflags = true },
11269 .each = .{ .once = &.{
11270 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
11271 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"8", .src1), ._, ._ },
11272 } },
11273 }, .{
11274 .required_features = .{ .@"64bit", null, null, null },
11275 .dst_constraints = .{.{ .elem_size_is = 8 + 1 }},
11276 .patterns = &.{
11277 .{ .src = .{ .to_gpr, .to_gpr, .none } },
11278 },
11279 .dst_temps = .{.{ .rc = .general_purpose }},
11280 .clobbers = .{ .eflags = true },
11281 .each = .{ .once = &.{
11282 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ },
11283 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },
11284 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
11285 } },
11286 }, .{
11287 .dst_constraints = .{.po2_elem_size},
11288 .patterns = &.{
11289 .{ .src = .{ .to_gpr, .to_mut_gpr, .none } },
11290 },
11291 .dst_temps = .{.{ .ref = .src1 }},
11292 .clobbers = .{ .eflags = true },
11293 .each = .{ .once = &.{
11294 .{ ._, ._l, .sa, .src1p, .sa(.none, .add_log2_src0_elem_size), ._, ._ },
11295 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
11296 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
11297 } },
11298 }, .{
11299 .patterns = &.{
11300 .{ .src = .{ .to_gpr, .to_gpr, .none } },
11301 },
11302 .dst_temps = .{.{ .rc = .general_purpose }},
11303 .clobbers = .{ .eflags = true },
11304 .each = .{ .once = &.{
11305 .{ ._, .i_, .mul, .dst0p, .src1p, .sa(.none, .sub_src0_elem_size), ._ },
11306 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
11307 } },
11308 } }) catch |err| switch (err) {
11309 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
11310 @tagName(air_tag),
11311 cg.typeOf(bin_op.lhs).fmt(pt),
11312 ops[0].tracking(cg),
11313 ops[1].tracking(cg),
11314 }),
11315 else => |e| return e,
11316 } else {
11317 // hack around Sema OPV bugs
11318 res[0] = ops[0];
11319 }
11320 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
11321 },
11322 .max => |air_tag| if (use_old) try cg.airBinOp(inst, air_tag) else {
11323 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
11324 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
11325 var res: [1]Temp = undefined;
11326 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
11327 .required_features = .{ .cmov, null, null, null },
11328 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any },
11329 .patterns = &.{
11330 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
11331 },
11332 .dst_temps = .{.{ .ref = .src0 }},
11333 .clobbers = .{ .eflags = true },
11334 .each = .{ .once = &.{
11335 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
11336 .{ ._, ._l, .cmov, .dst0d, .src1d, ._, ._ },
11337 } },
11338 }, .{
11339 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any },
11340 .patterns = &.{
11341 .{ .src = .{ .to_mut_gpr, .mem, .none } },
11342 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
11343 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
11344 },
11345 .dst_temps = .{.{ .ref = .src0 }},
11346 .clobbers = .{ .eflags = true },
11347 .each = .{ .once = &.{
11348 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
11349 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },
11350 .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ },
11351 } },
11352 }, .{
11353 .required_features = .{ .cmov, null, null, null },
11354 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
11355 .patterns = &.{
11356 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
11357 },
11358 .dst_temps = .{.{ .ref = .src0 }},
11359 .clobbers = .{ .eflags = true },
11360 .each = .{ .once = &.{
11361 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
11362 .{ ._, ._b, .cmov, .dst0d, .src1d, ._, ._ },
11363 } },
11364 }, .{
11365 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
11366 .patterns = &.{
11367 .{ .src = .{ .to_mut_gpr, .mem, .none } },
11368 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
11369 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
11370 },
11371 .dst_temps = .{.{ .ref = .src0 }},
11372 .clobbers = .{ .eflags = true },
11373 .each = .{ .once = &.{
11374 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
11375 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },
11376 .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ },
11377 } },
11378 }, .{
11379 .required_features = .{ .cmov, null, null, null },
11380 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any },
11381 .patterns = &.{
11382 .{ .src = .{ .to_mut_gpr, .mem, .none } },
11383 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
11384 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
11385 },
11386 .dst_temps = .{.{ .ref = .src0 }},
11387 .clobbers = .{ .eflags = true },
11388 .each = .{ .once = &.{
11389 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
11390 .{ ._, ._l, .cmov, .dst0w, .src1w, ._, ._ },
11391 } },
11392 }, .{
11393 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any },
11394 .patterns = &.{
11395 .{ .src = .{ .to_mut_gpr, .mem, .none } },
11396 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
11397 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
11398 },
11399 .dst_temps = .{.{ .ref = .src0 }},
11400 .clobbers = .{ .eflags = true },
11401 .each = .{ .once = &.{
11402 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
11403 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },
11404 .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ },
11405 } },
11406 }, .{
11407 .required_features = .{ .cmov, null, null, null },
11408 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
11409 .patterns = &.{
11410 .{ .src = .{ .to_mut_gpr, .mem, .none } },
11411 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
11412 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
11413 },
11414 .dst_temps = .{.{ .ref = .src0 }},
11415 .clobbers = .{ .eflags = true },
11416 .each = .{ .once = &.{
11417 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
11418 .{ ._, ._b, .cmov, .dst0w, .src1w, ._, ._ },
11419 } },
11420 }, .{
11421 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
11422 .patterns = &.{
11423 .{ .src = .{ .to_mut_gpr, .mem, .none } },
11424 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
11425 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
11426 },
11427 .dst_temps = .{.{ .ref = .src0 }},
11428 .clobbers = .{ .eflags = true },
11429 .each = .{ .once = &.{
11430 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
11431 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },
11432 .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ },
11433 } },
11434 }, .{
11435 .required_features = .{ .cmov, null, null, null },
11436 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any },
11437 .patterns = &.{
11438 .{ .src = .{ .to_mut_gpr, .mem, .none } },
11439 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
11440 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
11441 },
11442 .dst_temps = .{.{ .ref = .src0 }},
11443 .clobbers = .{ .eflags = true },
11444 .each = .{ .once = &.{
11445 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
11446 .{ ._, ._l, .cmov, .dst0d, .src1d, ._, ._ },
11447 } },
11448 }, .{
11449 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any },
11450 .patterns = &.{
11451 .{ .src = .{ .to_mut_gpr, .mem, .none } },
11452 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
11453 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
11454 },
11455 .dst_temps = .{.{ .ref = .src0 }},
11456 .clobbers = .{ .eflags = true },
11457 .each = .{ .once = &.{
11458 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
11459 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },
11460 .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ },
11461 } },
11462 }, .{
11463 .required_features = .{ .cmov, null, null, null },
11464 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any },
11465 .patterns = &.{
11466 .{ .src = .{ .to_mut_gpr, .mem, .none } },
11467 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
11468 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
11469 },
11470 .dst_temps = .{.{ .ref = .src0 }},
11471 .clobbers = .{ .eflags = true },
11472 .each = .{ .once = &.{
11473 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
11474 .{ ._, ._b, .cmov, .dst0d, .src1d, ._, ._ },
11475 } },
11476 }, .{
11477 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any },
11478 .patterns = &.{
11479 .{ .src = .{ .to_mut_gpr, .mem, .none } },
11480 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
11481 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
11482 },
11483 .dst_temps = .{.{ .ref = .src0 }},
11484 .clobbers = .{ .eflags = true },
11485 .each = .{ .once = &.{
11486 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
11487 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },
11488 .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ },
11489 } },
11490 }, .{
11491 .required_features = .{ .@"64bit", .cmov, null, null },
11492 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any },
11493 .patterns = &.{
11494 .{ .src = .{ .to_mut_gpr, .mem, .none } },
11495 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
11496 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
11497 },
11498 .dst_temps = .{.{ .ref = .src0 }},
11499 .clobbers = .{ .eflags = true },
11500 .each = .{ .once = &.{
11501 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
11502 .{ ._, ._l, .cmov, .dst0q, .src1q, ._, ._ },
11503 } },
11504 }, .{
11505 .required_features = .{ .@"64bit", null, null, null },
11506 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any },
11507 .patterns = &.{
11508 .{ .src = .{ .to_mut_gpr, .mem, .none } },
11509 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
11510 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
11511 },
11512 .dst_temps = .{.{ .ref = .src0 }},
11513 .clobbers = .{ .eflags = true },
11514 .each = .{ .once = &.{
11515 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
11516 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },
11517 .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ },
11518 } },
11519 }, .{
11520 .required_features = .{ .@"64bit", .cmov, null, null },
11521 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any },
11522 .patterns = &.{
11523 .{ .src = .{ .to_mut_gpr, .mem, .none } },
11524 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
11525 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
11526 },
11527 .dst_temps = .{.{ .ref = .src0 }},
11528 .clobbers = .{ .eflags = true },
11529 .each = .{ .once = &.{
11530 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
11531 .{ ._, ._b, .cmov, .dst0q, .src1q, ._, ._ },
11532 } },
11533 }, .{
11534 .required_features = .{ .@"64bit", null, null, null },
11535 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any },
11536 .patterns = &.{
11537 .{ .src = .{ .to_mut_gpr, .mem, .none } },
11538 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
11539 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
11540 },
11541 .dst_temps = .{.{ .ref = .src0 }},
11542 .clobbers = .{ .eflags = true },
11543 .each = .{ .once = &.{
11544 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
11545 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },
11546 .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ },
11547 } },
11548 }, .{
11549 .required_features = .{ .@"64bit", .cmov, null, null },
11550 .src_constraints = .{ .any_signed_int, .any_signed_int, .any },
11551 .patterns = &.{
11552 .{ .src = .{ .to_mem, .to_mem, .none } },
11553 },
11554 .extra_temps = .{
11555 .{ .type = .isize, .kind = .{ .reg = .rsi } },
11556 .{ .type = .u64, .kind = .{ .reg = .rdi } },
11557 .{ .type = .u64, .kind = .{ .reg = .rcx } },
11558 .unused,
11559 .unused,
11560 .unused,
11561 .unused,
11562 .unused,
11563 .unused,
11564 },
11565 .dst_temps = .{.mem},
11566 .clobbers = .{ .eflags = true },
11567 .each = .{ .once = &.{
11568 .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ },
11569 .{ ._, ._c, .cl, ._, ._, ._, ._ },
11570 .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
11571 .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
11572 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
11573 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
11574 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
11575 .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ },
11576 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
11577 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
11578 .{ ._, ._l, .cmov, .tmp0p, .tmp1p, ._, ._ },
11579 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
11580 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
11581 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
11582 } },
11583 }, .{
11584 .required_features = .{ .@"64bit", null, null, null },
11585 .src_constraints = .{ .any_signed_int, .any_signed_int, .any },
11586 .patterns = &.{
11587 .{ .src = .{ .to_mem, .to_mem, .none } },
11588 },
11589 .extra_temps = .{
11590 .{ .type = .isize, .kind = .{ .reg = .rsi } },
11591 .{ .type = .u64, .kind = .{ .reg = .rdi } },
11592 .{ .type = .u64, .kind = .{ .reg = .rcx } },
11593 .unused,
11594 .unused,
11595 .unused,
11596 .unused,
11597 .unused,
11598 .unused,
11599 },
11600 .dst_temps = .{.mem},
11601 .clobbers = .{ .eflags = true },
11602 .each = .{ .once = &.{
11603 .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ },
11604 .{ ._, ._c, .cl, ._, ._, ._, ._ },
11605 .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
11606 .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
11607 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
11608 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
11609 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
11610 .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ },
11611 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
11612 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },
11613 .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ },
11614 .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
11615 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
11616 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
11617 } },
11618 }, .{
11619 .required_features = .{ .@"64bit", .cmov, null, null },
11620 .src_constraints = .{ .any_unsigned_int, .any_unsigned_int, .any },
11621 .patterns = &.{
11622 .{ .src = .{ .to_mem, .to_mem, .none } },
11623 },
11624 .extra_temps = .{
11625 .{ .type = .isize, .kind = .{ .reg = .rsi } },
11626 .{ .type = .u64, .kind = .{ .reg = .rdi } },
11627 .{ .type = .u64, .kind = .{ .reg = .rcx } },
11628 .unused,
11629 .unused,
11630 .unused,
11631 .unused,
11632 .unused,
11633 .unused,
11634 },
11635 .dst_temps = .{.mem},
11636 .clobbers = .{ .eflags = true },
11637 .each = .{ .once = &.{
11638 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ },
11639 .{ ._, ._c, .cl, ._, ._, ._, ._ },
11640 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ },
11641 .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ },
11642 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
11643 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
11644 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
11645 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
11646 .{ ._, ._b, .cmov, .tmp0p, .tmp1p, ._, ._ },
11647 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
11648 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
11649 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
11650 } },
11651 }, .{
11652 .required_features = .{ .@"64bit", null, null, null },
11653 .src_constraints = .{ .any_unsigned_int, .any_unsigned_int, .any },
11654 .patterns = &.{
11655 .{ .src = .{ .to_mem, .to_mem, .none } },
11656 },
11657 .extra_temps = .{
11658 .{ .type = .isize, .kind = .{ .reg = .rsi } },
11659 .{ .type = .u64, .kind = .{ .reg = .rdi } },
11660 .{ .type = .u64, .kind = .{ .reg = .rcx } },
11661 .unused,
11662 .unused,
11663 .unused,
11664 .unused,
11665 .unused,
11666 .unused,
11667 },
11668 .dst_temps = .{.mem},
11669 .clobbers = .{ .eflags = true },
11670 .each = .{ .once = &.{
11671 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ },
11672 .{ ._, ._c, .cl, ._, ._, ._, ._ },
11673 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ },
11674 .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ },
11675 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
11676 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
11677 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
11678 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },
11679 .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ },
11680 .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
11681 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
11682 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
11683 } },
11684 }, .{
11685 .required_features = .{ .avx, null, null, null },
11686 .src_constraints = .{
11687 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
11688 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
11689 .any,
11690 },
11691 .patterns = &.{
11692 .{ .src = .{ .to_sse, .mem, .none } },
11693 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
11694 .{ .src = .{ .to_sse, .to_sse, .none } },
11695 },
11696 .dst_temps = .{.{ .rc = .sse }},
11697 .each = .{ .once = &.{
11698 .{ ._, .vp_b, .maxs, .dst0x, .src0x, .src1x, ._ },
11699 } },
11700 }, .{
11701 .required_features = .{ .sse4_1, null, null, null },
11702 .src_constraints = .{
11703 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
11704 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
11705 .any,
11706 },
11707 .patterns = &.{
11708 .{ .src = .{ .to_mut_sse, .mem, .none } },
11709 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
11710 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
11711 },
11712 .dst_temps = .{.{ .ref = .src0 }},
11713 .each = .{ .once = &.{
11714 .{ ._, .p_b, .maxs, .dst0x, .src1x, ._, ._ },
11715 } },
11716 }, .{
11717 .required_features = .{ .sse2, null, null, null },
11718 .src_constraints = .{
11719 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
11720 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
11721 .any,
11722 },
11723 .patterns = &.{
11724 .{ .src = .{ .to_mut_sse, .mem, .none } },
11725 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
11726 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
11727 },
11728 .dst_temps = .{.{ .rc = .sse }},
11729 .each = .{ .once = &.{
11730 .{ ._, ._dqa, .mov, .dst0x, .src0x, ._, ._ },
11731 .{ ._, .p_b, .cmpgt, .dst0x, .src1x, ._, ._ },
11732 .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ },
11733 .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ },
11734 .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ },
11735 } },
11736 }, .{
11737 .required_features = .{ .avx2, null, null, null },
11738 .src_constraints = .{
11739 .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } },
11740 .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } },
11741 .any,
11742 },
11743 .patterns = &.{
11744 .{ .src = .{ .to_sse, .mem, .none } },
11745 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
11746 .{ .src = .{ .to_sse, .to_sse, .none } },
11747 },
11748 .dst_temps = .{.{ .rc = .sse }},
11749 .each = .{ .once = &.{
11750 .{ ._, .vp_b, .maxs, .dst0y, .src0y, .src1y, ._ },
11751 } },
11752 }, .{
11753 .required_features = .{ .avx2, null, null, null },
11754 .src_constraints = .{
11755 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } },
11756 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } },
11757 .any,
11758 },
11759 .patterns = &.{
11760 .{ .src = .{ .to_mem, .to_mem, .none } },
11761 },
11762 .extra_temps = .{
11763 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11764 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
11765 .unused,
11766 .unused,
11767 .unused,
11768 .unused,
11769 .unused,
11770 .unused,
11771 .unused,
11772 },
11773 .dst_temps = .{.mem},
11774 .clobbers = .{ .eflags = true },
11775 .each = .{ .once = &.{
11776 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11777 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
11778 .{ ._, .vp_b, .maxs, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
11779 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
11780 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
11781 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11782 } },
11783 }, .{
11784 .required_features = .{ .avx, null, null, null },
11785 .src_constraints = .{
11786 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
11787 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
11788 .any,
11789 },
11790 .patterns = &.{
11791 .{ .src = .{ .to_mem, .to_mem, .none } },
11792 },
11793 .extra_temps = .{
11794 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11795 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
11796 .unused,
11797 .unused,
11798 .unused,
11799 .unused,
11800 .unused,
11801 .unused,
11802 .unused,
11803 },
11804 .dst_temps = .{.mem},
11805 .clobbers = .{ .eflags = true },
11806 .each = .{ .once = &.{
11807 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11808 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
11809 .{ ._, .vp_b, .maxs, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },
11810 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
11811 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
11812 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11813 } },
11814 }, .{
11815 .required_features = .{ .sse4_1, null, null, null },
11816 .src_constraints = .{
11817 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
11818 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
11819 .any,
11820 },
11821 .patterns = &.{
11822 .{ .src = .{ .to_mem, .to_mem, .none } },
11823 },
11824 .extra_temps = .{
11825 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11826 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
11827 .unused,
11828 .unused,
11829 .unused,
11830 .unused,
11831 .unused,
11832 .unused,
11833 .unused,
11834 },
11835 .dst_temps = .{.mem},
11836 .clobbers = .{ .eflags = true },
11837 .each = .{ .once = &.{
11838 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11839 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
11840 .{ ._, .p_b, .maxs, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
11841 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
11842 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
11843 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11844 } },
11845 }, .{
11846 .required_features = .{ .sse2, null, null, null },
11847 .src_constraints = .{
11848 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
11849 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
11850 .any,
11851 },
11852 .patterns = &.{
11853 .{ .src = .{ .to_mem, .to_mem, .none } },
11854 },
11855 .extra_temps = .{
11856 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11857 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
11858 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
11859 .unused,
11860 .unused,
11861 .unused,
11862 .unused,
11863 .unused,
11864 .unused,
11865 },
11866 .dst_temps = .{.mem},
11867 .clobbers = .{ .eflags = true },
11868 .each = .{ .once = &.{
11869 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11870 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
11871 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
11872 .{ ._, .p_b, .cmpgt, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
11873 .{ ._, .p_, .@"and", .tmp2x, .tmp1x, ._, ._ },
11874 .{ ._, .p_, .andn, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
11875 .{ ._, .p_, .@"or", .tmp1x, .tmp2x, ._, ._ },
11876 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
11877 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
11878 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11879 } },
11880 }, .{
11881 .required_features = .{ .cmov, .slow_incdec, null, null },
11882 .src_constraints = .{
11883 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
11884 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
11885 .any,
11886 },
11887 .patterns = &.{
11888 .{ .src = .{ .to_mem, .to_mem, .none } },
11889 },
11890 .extra_temps = .{
11891 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11892 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
11893 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
11894 .unused,
11895 .unused,
11896 .unused,
11897 .unused,
11898 .unused,
11899 .unused,
11900 },
11901 .dst_temps = .{.mem},
11902 .clobbers = .{ .eflags = true },
11903 .each = .{ .once = &.{
11904 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11905 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
11906 .{ ._, ._, .movsx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ },
11907 .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ },
11908 .{ ._, ._l, .cmov, .tmp1d, .tmp2d, ._, ._ },
11909 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
11910 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
11911 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11912 } },
11913 }, .{
11914 .required_features = .{ .cmov, null, null, null },
11915 .src_constraints = .{
11916 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
11917 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
11918 .any,
11919 },
11920 .patterns = &.{
11921 .{ .src = .{ .to_mem, .to_mem, .none } },
11922 },
11923 .extra_temps = .{
11924 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11925 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
11926 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
11927 .unused,
11928 .unused,
11929 .unused,
11930 .unused,
11931 .unused,
11932 .unused,
11933 },
11934 .dst_temps = .{.mem},
11935 .clobbers = .{ .eflags = true },
11936 .each = .{ .once = &.{
11937 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11938 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
11939 .{ ._, ._, .movsx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ },
11940 .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ },
11941 .{ ._, ._l, .cmov, .tmp1d, .tmp2d, ._, ._ },
11942 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
11943 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
11944 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
11945 } },
11946 }, .{
11947 .required_features = .{ .slow_incdec, null, null, null },
11948 .src_constraints = .{
11949 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
11950 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
11951 .any,
11952 },
11953 .patterns = &.{
11954 .{ .src = .{ .to_mem, .to_mem, .none } },
11955 },
11956 .extra_temps = .{
11957 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11958 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
11959 .unused,
11960 .unused,
11961 .unused,
11962 .unused,
11963 .unused,
11964 .unused,
11965 .unused,
11966 },
11967 .dst_temps = .{.mem},
11968 .clobbers = .{ .eflags = true },
11969 .each = .{ .once = &.{
11970 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11971 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
11972 .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
11973 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },
11974 .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
11975 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
11976 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
11977 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11978 } },
11979 }, .{
11980 .src_constraints = .{
11981 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
11982 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
11983 .any,
11984 },
11985 .patterns = &.{
11986 .{ .src = .{ .to_mem, .to_mem, .none } },
11987 },
11988 .extra_temps = .{
11989 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11990 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
11991 .unused,
11992 .unused,
11993 .unused,
11994 .unused,
11995 .unused,
11996 .unused,
11997 .unused,
11998 },
11999 .dst_temps = .{.mem},
12000 .clobbers = .{ .eflags = true },
12001 .each = .{ .once = &.{
12002 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12003 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
12004 .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
12005 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },
12006 .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
12007 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
12008 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
12009 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
12010 } },
12011 }, .{
12012 .required_features = .{ .sse, .mmx, null, null },
12013 .src_constraints = .{
12014 .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } },
12015 .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } },
12016 .any,
12017 },
12018 .patterns = &.{
12019 .{ .src = .{ .to_mut_mmx, .mem, .none } },
12020 .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } },
12021 .{ .src = .{ .to_mut_mmx, .to_mmx, .none } },
12022 },
12023 .dst_temps = .{.{ .ref = .src0 }},
12024 .each = .{ .once = &.{
12025 .{ ._, .p_b, .maxu, .dst0q, .src1q, ._, ._ },
12026 } },
12027 }, .{
12028 .required_features = .{ .avx, null, null, null },
12029 .src_constraints = .{
12030 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
12031 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
12032 .any,
12033 },
12034 .patterns = &.{
12035 .{ .src = .{ .to_sse, .mem, .none } },
12036 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
12037 .{ .src = .{ .to_sse, .to_sse, .none } },
12038 },
12039 .dst_temps = .{.{ .rc = .sse }},
12040 .each = .{ .once = &.{
12041 .{ ._, .vp_b, .maxu, .dst0x, .src0x, .src1x, ._ },
12042 } },
12043 }, .{
12044 .required_features = .{ .sse2, null, null, null },
12045 .src_constraints = .{
12046 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
12047 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
12048 .any,
12049 },
12050 .patterns = &.{
12051 .{ .src = .{ .to_mut_sse, .mem, .none } },
12052 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
12053 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
12054 },
12055 .dst_temps = .{.{ .ref = .src0 }},
12056 .each = .{ .once = &.{
12057 .{ ._, .p_b, .maxu, .dst0x, .src1x, ._, ._ },
12058 } },
12059 }, .{
12060 .required_features = .{ .avx2, null, null, null },
12061 .src_constraints = .{
12062 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
12063 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
12064 .any,
12065 },
12066 .patterns = &.{
12067 .{ .src = .{ .to_sse, .mem, .none } },
12068 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
12069 .{ .src = .{ .to_sse, .to_sse, .none } },
12070 },
12071 .dst_temps = .{.{ .rc = .sse }},
12072 .each = .{ .once = &.{
12073 .{ ._, .vp_b, .maxu, .dst0y, .src0y, .src1y, ._ },
12074 } },
12075 }, .{
12076 .required_features = .{ .avx2, null, null, null },
12077 .src_constraints = .{
12078 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
12079 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
12080 .any,
12081 },
12082 .patterns = &.{
12083 .{ .src = .{ .to_mem, .to_mem, .none } },
12084 },
12085 .extra_temps = .{
12086 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12087 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },
12088 .unused,
12089 .unused,
12090 .unused,
12091 .unused,
12092 .unused,
12093 .unused,
12094 .unused,
12095 },
12096 .dst_temps = .{.mem},
12097 .clobbers = .{ .eflags = true },
12098 .each = .{ .once = &.{
12099 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12100 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
12101 .{ ._, .vp_b, .maxu, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
12102 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
12103 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
12104 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12105 } },
12106 }, .{
12107 .required_features = .{ .avx, null, null, null },
12108 .src_constraints = .{
12109 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
12110 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
12111 .any,
12112 },
12113 .patterns = &.{
12114 .{ .src = .{ .to_mem, .to_mem, .none } },
12115 },
12116 .extra_temps = .{
12117 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12118 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
12119 .unused,
12120 .unused,
12121 .unused,
12122 .unused,
12123 .unused,
12124 .unused,
12125 .unused,
12126 },
12127 .dst_temps = .{.mem},
12128 .clobbers = .{ .eflags = true },
12129 .each = .{ .once = &.{
12130 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12131 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
12132 .{ ._, .vp_b, .maxu, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },
12133 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
12134 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
12135 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12136 } },
12137 }, .{
12138 .required_features = .{ .sse2, null, null, null },
12139 .src_constraints = .{
12140 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
12141 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
12142 .any,
12143 },
12144 .patterns = &.{
12145 .{ .src = .{ .to_mem, .to_mem, .none } },
12146 },
12147 .extra_temps = .{
12148 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12149 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
12150 .unused,
12151 .unused,
12152 .unused,
12153 .unused,
12154 .unused,
12155 .unused,
12156 .unused,
12157 },
12158 .dst_temps = .{.mem},
12159 .clobbers = .{ .eflags = true },
12160 .each = .{ .once = &.{
12161 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12162 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
12163 .{ ._, .p_b, .maxu, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
12164 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
12165 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
12166 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12167 } },
12168 }, .{
12169 .required_features = .{ .cmov, .slow_incdec, null, null },
12170 .src_constraints = .{
12171 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
12172 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
12173 .any,
12174 },
12175 .patterns = &.{
12176 .{ .src = .{ .to_mem, .to_mem, .none } },
12177 },
12178 .extra_temps = .{
12179 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12180 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
12181 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
12182 .unused,
12183 .unused,
12184 .unused,
12185 .unused,
12186 .unused,
12187 .unused,
12188 },
12189 .dst_temps = .{.mem},
12190 .clobbers = .{ .eflags = true },
12191 .each = .{ .once = &.{
12192 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12193 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
12194 .{ ._, ._, .movzx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ },
12195 .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ },
12196 .{ ._, ._b, .cmov, .tmp1d, .tmp2d, ._, ._ },
12197 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
12198 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
12199 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12200 } },
12201 }, .{
12202 .required_features = .{ .cmov, null, null, null },
12203 .src_constraints = .{
12204 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
12205 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
12206 .any,
12207 },
12208 .patterns = &.{
12209 .{ .src = .{ .to_mem, .to_mem, .none } },
12210 },
12211 .extra_temps = .{
12212 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12213 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
12214 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
12215 .unused,
12216 .unused,
12217 .unused,
12218 .unused,
12219 .unused,
12220 .unused,
12221 },
12222 .dst_temps = .{.mem},
12223 .clobbers = .{ .eflags = true },
12224 .each = .{ .once = &.{
12225 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12226 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
12227 .{ ._, ._, .movzx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ },
12228 .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ },
12229 .{ ._, ._b, .cmov, .tmp1d, .tmp2d, ._, ._ },
12230 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
12231 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
12232 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
12233 } },
12234 }, .{
12235 .required_features = .{ .slow_incdec, null, null, null },
12236 .src_constraints = .{
12237 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
12238 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
12239 .any,
12240 },
12241 .patterns = &.{
12242 .{ .src = .{ .to_mem, .to_mem, .none } },
12243 },
12244 .extra_temps = .{
12245 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12246 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
12247 .unused,
12248 .unused,
12249 .unused,
12250 .unused,
12251 .unused,
12252 .unused,
12253 .unused,
12254 },
12255 .dst_temps = .{.mem},
12256 .clobbers = .{ .eflags = true },
12257 .each = .{ .once = &.{
12258 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12259 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
12260 .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
12261 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
12262 .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
12263 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
12264 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
12265 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12266 } },
12267 }, .{
12268 .src_constraints = .{
12269 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
12270 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
12271 .any,
12272 },
12273 .patterns = &.{
12274 .{ .src = .{ .to_mem, .to_mem, .none } },
12275 },
12276 .extra_temps = .{
12277 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12278 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
12279 .unused,
12280 .unused,
12281 .unused,
12282 .unused,
12283 .unused,
12284 .unused,
12285 .unused,
12286 },
12287 .dst_temps = .{.mem},
12288 .clobbers = .{ .eflags = true },
12289 .each = .{ .once = &.{
12290 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12291 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
12292 .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
12293 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
12294 .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
12295 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
12296 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
12297 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
12298 } },
12299 }, .{
12300 .required_features = .{ .sse, .mmx, null, null },
12301 .src_constraints = .{
12302 .{ .scalar_signed_int = .{ .of = .qword, .is = .word } },
12303 .{ .scalar_signed_int = .{ .of = .qword, .is = .word } },
12304 .any,
12305 },
12306 .patterns = &.{
12307 .{ .src = .{ .to_mut_mmx, .mem, .none } },
12308 .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } },
12309 .{ .src = .{ .to_mut_mmx, .to_mmx, .none } },
12310 },
12311 .dst_temps = .{.{ .ref = .src0 }},
12312 .each = .{ .once = &.{
12313 .{ ._, .p_w, .maxs, .dst0q, .src1q, ._, ._ },
12314 } },
12315 }, .{
12316 .required_features = .{ .avx, null, null, null },
12317 .src_constraints = .{
12318 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
12319 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
12320 .any,
12321 },
12322 .patterns = &.{
12323 .{ .src = .{ .to_sse, .mem, .none } },
12324 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
12325 .{ .src = .{ .to_sse, .to_sse, .none } },
12326 },
12327 .dst_temps = .{.{ .rc = .sse }},
12328 .each = .{ .once = &.{
12329 .{ ._, .vp_w, .maxs, .dst0x, .src0x, .src1x, ._ },
12330 } },
12331 }, .{
12332 .required_features = .{ .sse2, null, null, null },
12333 .src_constraints = .{
12334 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
12335 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
12336 .any,
12337 },
12338 .patterns = &.{
12339 .{ .src = .{ .to_mut_sse, .mem, .none } },
12340 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
12341 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
12342 },
12343 .dst_temps = .{.{ .ref = .src0 }},
12344 .each = .{ .once = &.{
12345 .{ ._, .p_w, .maxs, .dst0x, .src1x, ._, ._ },
12346 } },
12347 }, .{
12348 .required_features = .{ .avx2, null, null, null },
12349 .src_constraints = .{
12350 .{ .scalar_signed_int = .{ .of = .yword, .is = .word } },
12351 .{ .scalar_signed_int = .{ .of = .yword, .is = .word } },
12352 .any,
12353 },
12354 .patterns = &.{
12355 .{ .src = .{ .to_sse, .mem, .none } },
12356 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
12357 .{ .src = .{ .to_sse, .to_sse, .none } },
12358 },
12359 .dst_temps = .{.{ .rc = .sse }},
12360 .each = .{ .once = &.{
12361 .{ ._, .vp_w, .maxs, .dst0y, .src0y, .src1y, ._ },
12362 } },
12363 }, .{
12364 .required_features = .{ .avx2, null, null, null },
12365 .src_constraints = .{
12366 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } },
12367 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } },
12368 .any,
12369 },
12370 .patterns = &.{
12371 .{ .src = .{ .to_mem, .to_mem, .none } },
12372 },
12373 .extra_temps = .{
12374 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12375 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
12376 .unused,
12377 .unused,
12378 .unused,
12379 .unused,
12380 .unused,
12381 .unused,
12382 .unused,
12383 },
12384 .dst_temps = .{.mem},
12385 .clobbers = .{ .eflags = true },
12386 .each = .{ .once = &.{
12387 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12388 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
12389 .{ ._, .vp_w, .maxs, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
12390 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
12391 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
12392 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12393 } },
12394 }, .{
12395 .required_features = .{ .avx, null, null, null },
12396 .src_constraints = .{
12397 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
12398 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
12399 .any,
12400 },
12401 .patterns = &.{
12402 .{ .src = .{ .to_mem, .to_mem, .none } },
12403 },
12404 .extra_temps = .{
12405 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12406 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
12407 .unused,
12408 .unused,
12409 .unused,
12410 .unused,
12411 .unused,
12412 .unused,
12413 .unused,
12414 },
12415 .dst_temps = .{.mem},
12416 .clobbers = .{ .eflags = true },
12417 .each = .{ .once = &.{
12418 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12419 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
12420 .{ ._, .vp_w, .maxs, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },
12421 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
12422 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
12423 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12424 } },
12425 }, .{
12426 .required_features = .{ .sse2, null, null, null },
12427 .src_constraints = .{
12428 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
12429 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
12430 .any,
12431 },
12432 .patterns = &.{
12433 .{ .src = .{ .to_mem, .to_mem, .none } },
12434 },
12435 .extra_temps = .{
12436 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12437 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
12438 .unused,
12439 .unused,
12440 .unused,
12441 .unused,
12442 .unused,
12443 .unused,
12444 .unused,
12445 },
12446 .dst_temps = .{.mem},
12447 .clobbers = .{ .eflags = true },
12448 .each = .{ .once = &.{
12449 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12450 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
12451 .{ ._, .p_w, .maxs, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
12452 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
12453 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
12454 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12455 } },
12456 }, .{
12457 .required_features = .{ .cmov, null, null, null },
12458 .src_constraints = .{
12459 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
12460 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
12461 .any,
12462 },
12463 .patterns = &.{
12464 .{ .src = .{ .to_mem, .to_mem, .none } },
12465 },
12466 .extra_temps = .{
12467 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12468 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
12469 .unused,
12470 .unused,
12471 .unused,
12472 .unused,
12473 .unused,
12474 .unused,
12475 .unused,
12476 },
12477 .dst_temps = .{.mem},
12478 .clobbers = .{ .eflags = true },
12479 .each = .{ .once = &.{
12480 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12481 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
12482 .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
12483 .{ ._, ._l, .cmov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
12484 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
12485 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
12486 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12487 } },
12488 }, .{
12489 .src_constraints = .{
12490 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
12491 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
12492 .any,
12493 },
12494 .patterns = &.{
12495 .{ .src = .{ .to_mem, .to_mem, .none } },
12496 },
12497 .extra_temps = .{
12498 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12499 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
12500 .unused,
12501 .unused,
12502 .unused,
12503 .unused,
12504 .unused,
12505 .unused,
12506 .unused,
12507 },
12508 .dst_temps = .{.mem},
12509 .clobbers = .{ .eflags = true },
12510 .each = .{ .once = &.{
12511 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12512 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
12513 .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
12514 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },
12515 .{ ._, ._, .mov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
12516 .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
12517 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
12518 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12519 } },
12520 }, .{
12521 .required_features = .{ .avx, null, null, null },
12522 .src_constraints = .{
12523 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
12524 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
12525 .any,
12526 },
12527 .patterns = &.{
12528 .{ .src = .{ .to_sse, .mem, .none } },
12529 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
12530 .{ .src = .{ .to_sse, .to_sse, .none } },
12531 },
12532 .dst_temps = .{.{ .rc = .sse }},
12533 .each = .{ .once = &.{
12534 .{ ._, .vp_w, .maxu, .dst0x, .src0x, .src1x, ._ },
12535 } },
12536 }, .{
12537 .required_features = .{ .sse4_1, null, null, null },
12538 .src_constraints = .{
12539 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
12540 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
12541 .any,
12542 },
12543 .patterns = &.{
12544 .{ .src = .{ .to_mut_sse, .mem, .none } },
12545 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
12546 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
12547 },
12548 .dst_temps = .{.{ .ref = .src0 }},
12549 .each = .{ .once = &.{
12550 .{ ._, .p_w, .maxu, .dst0x, .src1x, ._, ._ },
12551 } },
12552 }, .{
12553 .required_features = .{ .sse2, null, null, null },
12554 .src_constraints = .{
12555 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
12556 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
12557 .any,
12558 },
12559 .patterns = &.{
12560 .{ .src = .{ .to_mut_sse, .mem, .none } },
12561 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
12562 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
12563 },
12564 .dst_temps = .{.{ .ref = .src0 }},
12565 .each = .{ .once = &.{
12566 .{ ._, .p_w, .subus, .dst0x, .src1x, ._, ._ },
12567 .{ ._, .p_w, .add, .dst0x, .src1x, ._, ._ },
12568 } },
12569 }, .{
12570 .required_features = .{ .avx2, null, null, null },
12571 .src_constraints = .{
12572 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } },
12573 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } },
12574 .any,
12575 },
12576 .patterns = &.{
12577 .{ .src = .{ .to_sse, .mem, .none } },
12578 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
12579 .{ .src = .{ .to_sse, .to_sse, .none } },
12580 },
12581 .dst_temps = .{.{ .rc = .sse }},
12582 .each = .{ .once = &.{
12583 .{ ._, .vp_w, .maxu, .dst0y, .src0y, .src1y, ._ },
12584 } },
12585 }, .{
12586 .required_features = .{ .avx2, null, null, null },
12587 .src_constraints = .{
12588 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } },
12589 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } },
12590 .any,
12591 },
12592 .patterns = &.{
12593 .{ .src = .{ .to_mem, .to_mem, .none } },
12594 },
12595 .extra_temps = .{
12596 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12597 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
12598 .unused,
12599 .unused,
12600 .unused,
12601 .unused,
12602 .unused,
12603 .unused,
12604 .unused,
12605 },
12606 .dst_temps = .{.mem},
12607 .clobbers = .{ .eflags = true },
12608 .each = .{ .once = &.{
12609 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12610 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
12611 .{ ._, .vp_w, .maxu, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
12612 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
12613 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
12614 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12615 } },
12616 }, .{
12617 .required_features = .{ .avx, null, null, null },
12618 .src_constraints = .{
12619 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
12620 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
12621 .any,
12622 },
12623 .patterns = &.{
12624 .{ .src = .{ .to_mem, .to_mem, .none } },
12625 },
12626 .extra_temps = .{
12627 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12628 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
12629 .unused,
12630 .unused,
12631 .unused,
12632 .unused,
12633 .unused,
12634 .unused,
12635 .unused,
12636 },
12637 .dst_temps = .{.mem},
12638 .clobbers = .{ .eflags = true },
12639 .each = .{ .once = &.{
12640 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12641 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
12642 .{ ._, .vp_w, .maxu, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },
12643 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
12644 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
12645 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12646 } },
12647 }, .{
12648 .required_features = .{ .sse4_1, null, null, null },
12649 .src_constraints = .{
12650 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
12651 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
12652 .any,
12653 },
12654 .patterns = &.{
12655 .{ .src = .{ .to_mem, .to_mem, .none } },
12656 },
12657 .extra_temps = .{
12658 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12659 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
12660 .unused,
12661 .unused,
12662 .unused,
12663 .unused,
12664 .unused,
12665 .unused,
12666 .unused,
12667 },
12668 .dst_temps = .{.mem},
12669 .clobbers = .{ .eflags = true },
12670 .each = .{ .once = &.{
12671 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12672 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
12673 .{ ._, .p_w, .maxu, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
12674 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
12675 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
12676 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12677 } },
12678 }, .{
12679 .required_features = .{ .sse2, null, null, null },
12680 .src_constraints = .{
12681 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
12682 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
12683 .any,
12684 },
12685 .patterns = &.{
12686 .{ .src = .{ .to_mem, .to_mem, .none } },
12687 },
12688 .extra_temps = .{
12689 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12690 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
12691 .unused,
12692 .unused,
12693 .unused,
12694 .unused,
12695 .unused,
12696 .unused,
12697 .unused,
12698 },
12699 .dst_temps = .{.mem},
12700 .clobbers = .{ .eflags = true },
12701 .each = .{ .once = &.{
12702 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12703 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
12704 .{ ._, .p_w, .subus, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
12705 .{ ._, .p_w, .add, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
12706 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
12707 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
12708 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12709 } },
12710 }, .{
12711 .required_features = .{ .cmov, null, null, null },
12712 .src_constraints = .{
12713 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
12714 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
12715 .any,
12716 },
12717 .patterns = &.{
12718 .{ .src = .{ .to_mem, .to_mem, .none } },
12719 },
12720 .extra_temps = .{
12721 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12722 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
12723 .unused,
12724 .unused,
12725 .unused,
12726 .unused,
12727 .unused,
12728 .unused,
12729 .unused,
12730 },
12731 .dst_temps = .{.mem},
12732 .clobbers = .{ .eflags = true },
12733 .each = .{ .once = &.{
12734 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12735 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
12736 .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
12737 .{ ._, ._b, .cmov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
12738 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
12739 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
12740 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12741 } },
12742 }, .{
12743 .src_constraints = .{
12744 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
12745 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
12746 .any,
12747 },
12748 .patterns = &.{
12749 .{ .src = .{ .to_mem, .to_mem, .none } },
12750 },
12751 .extra_temps = .{
12752 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12753 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
12754 .unused,
12755 .unused,
12756 .unused,
12757 .unused,
12758 .unused,
12759 .unused,
12760 .unused,
12761 },
12762 .dst_temps = .{.mem},
12763 .clobbers = .{ .eflags = true },
12764 .each = .{ .once = &.{
12765 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12766 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
12767 .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
12768 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
12769 .{ ._, ._, .mov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
12770 .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
12771 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
12772 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12773 } },
12774 }, .{
12775 .required_features = .{ .avx, null, null, null },
12776 .src_constraints = .{
12777 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
12778 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
12779 .any,
12780 },
12781 .patterns = &.{
12782 .{ .src = .{ .to_sse, .mem, .none } },
12783 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
12784 .{ .src = .{ .to_sse, .to_sse, .none } },
12785 },
12786 .dst_temps = .{.{ .rc = .sse }},
12787 .each = .{ .once = &.{
12788 .{ ._, .vp_d, .maxs, .dst0x, .src0x, .src1x, ._ },
12789 } },
12790 }, .{
12791 .required_features = .{ .sse4_1, null, null, null },
12792 .src_constraints = .{
12793 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
12794 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
12795 .any,
12796 },
12797 .patterns = &.{
12798 .{ .src = .{ .to_mut_sse, .mem, .none } },
12799 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
12800 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
12801 },
12802 .dst_temps = .{.{ .ref = .src0 }},
12803 .each = .{ .once = &.{
12804 .{ ._, .p_d, .maxs, .dst0x, .src1x, ._, ._ },
12805 } },
12806 }, .{
12807 .required_features = .{ .sse2, null, null, null },
12808 .src_constraints = .{
12809 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
12810 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
12811 .any,
12812 },
12813 .patterns = &.{
12814 .{ .src = .{ .to_mut_sse, .mem, .none } },
12815 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
12816 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
12817 },
12818 .dst_temps = .{.{ .rc = .sse }},
12819 .each = .{ .once = &.{
12820 .{ ._, ._dqa, .mov, .dst0x, .src0x, ._, ._ },
12821 .{ ._, .p_d, .cmpgt, .dst0x, .src1x, ._, ._ },
12822 .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ },
12823 .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ },
12824 .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ },
12825 } },
12826 }, .{
12827 .required_features = .{ .avx2, null, null, null },
12828 .src_constraints = .{
12829 .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } },
12830 .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } },
12831 .any,
12832 },
12833 .patterns = &.{
12834 .{ .src = .{ .to_sse, .mem, .none } },
12835 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
12836 .{ .src = .{ .to_sse, .to_sse, .none } },
12837 },
12838 .dst_temps = .{.{ .rc = .sse }},
12839 .each = .{ .once = &.{
12840 .{ ._, .vp_d, .maxs, .dst0y, .src0y, .src1y, ._ },
12841 } },
12842 }, .{
12843 .required_features = .{ .avx2, null, null, null },
12844 .src_constraints = .{
12845 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } },
12846 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } },
12847 .any,
12848 },
12849 .patterns = &.{
12850 .{ .src = .{ .to_mem, .to_mem, .none } },
12851 },
12852 .extra_temps = .{
12853 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12854 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
12855 .unused,
12856 .unused,
12857 .unused,
12858 .unused,
12859 .unused,
12860 .unused,
12861 .unused,
12862 },
12863 .dst_temps = .{.mem},
12864 .clobbers = .{ .eflags = true },
12865 .each = .{ .once = &.{
12866 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12867 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
12868 .{ ._, .vp_d, .maxs, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
12869 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
12870 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
12871 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12872 } },
12873 }, .{
12874 .required_features = .{ .avx, null, null, null },
12875 .src_constraints = .{
12876 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
12877 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
12878 .any,
12879 },
12880 .patterns = &.{
12881 .{ .src = .{ .to_mem, .to_mem, .none } },
12882 },
12883 .extra_temps = .{
12884 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12885 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
12886 .unused,
12887 .unused,
12888 .unused,
12889 .unused,
12890 .unused,
12891 .unused,
12892 .unused,
12893 },
12894 .dst_temps = .{.mem},
12895 .clobbers = .{ .eflags = true },
12896 .each = .{ .once = &.{
12897 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12898 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
12899 .{ ._, .vp_d, .maxs, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },
12900 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
12901 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
12902 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12903 } },
12904 }, .{
12905 .required_features = .{ .sse4_1, null, null, null },
12906 .src_constraints = .{
12907 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
12908 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
12909 .any,
12910 },
12911 .patterns = &.{
12912 .{ .src = .{ .to_mem, .to_mem, .none } },
12913 },
12914 .extra_temps = .{
12915 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12916 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
12917 .unused,
12918 .unused,
12919 .unused,
12920 .unused,
12921 .unused,
12922 .unused,
12923 .unused,
12924 },
12925 .dst_temps = .{.mem},
12926 .clobbers = .{ .eflags = true },
12927 .each = .{ .once = &.{
12928 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12929 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
12930 .{ ._, .p_d, .maxs, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
12931 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
12932 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
12933 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12934 } },
12935 }, .{
12936 .required_features = .{ .sse2, null, null, null },
12937 .src_constraints = .{
12938 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
12939 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
12940 .any,
12941 },
12942 .patterns = &.{
12943 .{ .src = .{ .to_mem, .to_mem, .none } },
12944 },
12945 .extra_temps = .{
12946 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12947 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
12948 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
12949 .unused,
12950 .unused,
12951 .unused,
12952 .unused,
12953 .unused,
12954 .unused,
12955 },
12956 .dst_temps = .{.mem},
12957 .clobbers = .{ .eflags = true },
12958 .each = .{ .once = &.{
12959 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12960 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
12961 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
12962 .{ ._, .p_d, .cmpgt, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
12963 .{ ._, .p_, .@"and", .tmp2x, .tmp1x, ._, ._ },
12964 .{ ._, .p_, .andn, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
12965 .{ ._, .p_, .@"or", .tmp1x, .tmp2x, ._, ._ },
12966 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
12967 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
12968 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12969 } },
12970 }, .{
12971 .required_features = .{ .cmov, null, null, null },
12972 .src_constraints = .{
12973 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
12974 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
12975 .any,
12976 },
12977 .patterns = &.{
12978 .{ .src = .{ .to_mem, .to_mem, .none } },
12979 },
12980 .extra_temps = .{
12981 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12982 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
12983 .unused,
12984 .unused,
12985 .unused,
12986 .unused,
12987 .unused,
12988 .unused,
12989 .unused,
12990 },
12991 .dst_temps = .{.mem},
12992 .clobbers = .{ .eflags = true },
12993 .each = .{ .once = &.{
12994 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12995 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
12996 .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
12997 .{ ._, ._l, .cmov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
12998 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
12999 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
13000 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13001 } },
13002 }, .{
13003 .src_constraints = .{
13004 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
13005 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
13006 .any,
13007 },
13008 .patterns = &.{
13009 .{ .src = .{ .to_mem, .to_mem, .none } },
13010 },
13011 .extra_temps = .{
13012 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13013 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
13014 .unused,
13015 .unused,
13016 .unused,
13017 .unused,
13018 .unused,
13019 .unused,
13020 .unused,
13021 },
13022 .dst_temps = .{.mem},
13023 .clobbers = .{ .eflags = true },
13024 .each = .{ .once = &.{
13025 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13026 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
13027 .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
13028 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },
13029 .{ ._, ._, .mov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
13030 .{ .@"1:", ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
13031 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
13032 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13033 } },
13034 }, .{
13035 .required_features = .{ .avx, null, null, null },
13036 .src_constraints = .{
13037 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
13038 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
13039 .any,
13040 },
13041 .patterns = &.{
13042 .{ .src = .{ .to_sse, .mem, .none } },
13043 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
13044 .{ .src = .{ .to_sse, .to_sse, .none } },
13045 },
13046 .dst_temps = .{.{ .rc = .sse }},
13047 .each = .{ .once = &.{
13048 .{ ._, .vp_d, .maxu, .dst0x, .src0x, .src1x, ._ },
13049 } },
13050 }, .{
13051 .required_features = .{ .sse4_1, null, null, null },
13052 .src_constraints = .{
13053 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
13054 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
13055 .any,
13056 },
13057 .patterns = &.{
13058 .{ .src = .{ .to_mut_sse, .mem, .none } },
13059 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
13060 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
13061 },
13062 .dst_temps = .{.{ .ref = .src0 }},
13063 .each = .{ .once = &.{
13064 .{ ._, .p_d, .maxu, .dst0x, .src1x, ._, ._ },
13065 } },
13066 }, .{
13067 .required_features = .{ .sse2, null, null, null },
13068 .src_constraints = .{
13069 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
13070 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
13071 .any,
13072 },
13073 .patterns = &.{
13074 .{ .src = .{ .to_mut_sse, .mem, .none } },
13075 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
13076 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
13077 },
13078 .extra_temps = .{
13079 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
13080 .{ .type = .vector_4_u32, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
13081 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
13082 .unused,
13083 .unused,
13084 .unused,
13085 .unused,
13086 .unused,
13087 .unused,
13088 },
13089 .dst_temps = .{.{ .rc = .sse }},
13090 .each = .{ .once = &.{
13091 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
13092 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
13093 .{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ },
13094 .{ ._, .p_, .xor, .dst0x, .src0x, ._, ._ },
13095 .{ ._, .p_, .xor, .tmp2x, .src1x, ._, ._ },
13096 .{ ._, .p_d, .cmpgt, .dst0x, .tmp2x, ._, ._ },
13097 .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ },
13098 .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ },
13099 .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ },
13100 } },
13101 }, .{
13102 .required_features = .{ .avx2, null, null, null },
13103 .src_constraints = .{
13104 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
13105 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
13106 .any,
13107 },
13108 .patterns = &.{
13109 .{ .src = .{ .to_sse, .mem, .none } },
13110 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
13111 .{ .src = .{ .to_sse, .to_sse, .none } },
13112 },
13113 .dst_temps = .{.{ .rc = .sse }},
13114 .each = .{ .once = &.{
13115 .{ ._, .vp_d, .maxu, .dst0y, .src0y, .src1y, ._ },
13116 } },
13117 }, .{
13118 .required_features = .{ .avx2, null, null, null },
13119 .src_constraints = .{
13120 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
13121 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
13122 .any,
13123 },
13124 .patterns = &.{
13125 .{ .src = .{ .to_mem, .to_mem, .none } },
13126 },
13127 .extra_temps = .{
13128 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13129 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
13130 .unused,
13131 .unused,
13132 .unused,
13133 .unused,
13134 .unused,
13135 .unused,
13136 .unused,
13137 },
13138 .dst_temps = .{.mem},
13139 .clobbers = .{ .eflags = true },
13140 .each = .{ .once = &.{
13141 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13142 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
13143 .{ ._, .vp_d, .maxu, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
13144 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
13145 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
13146 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13147 } },
13148 }, .{
13149 .required_features = .{ .avx, null, null, null },
13150 .src_constraints = .{
13151 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
13152 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
13153 .any,
13154 },
13155 .patterns = &.{
13156 .{ .src = .{ .to_mem, .to_mem, .none } },
13157 },
13158 .extra_temps = .{
13159 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13160 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
13161 .unused,
13162 .unused,
13163 .unused,
13164 .unused,
13165 .unused,
13166 .unused,
13167 .unused,
13168 },
13169 .dst_temps = .{.mem},
13170 .clobbers = .{ .eflags = true },
13171 .each = .{ .once = &.{
13172 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13173 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
13174 .{ ._, .vp_d, .maxu, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },
13175 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
13176 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
13177 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13178 } },
13179 }, .{
13180 .required_features = .{ .sse4_1, null, null, null },
13181 .src_constraints = .{
13182 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
13183 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
13184 .any,
13185 },
13186 .patterns = &.{
13187 .{ .src = .{ .to_mem, .to_mem, .none } },
13188 },
13189 .extra_temps = .{
13190 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13191 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
13192 .unused,
13193 .unused,
13194 .unused,
13195 .unused,
13196 .unused,
13197 .unused,
13198 .unused,
13199 },
13200 .dst_temps = .{.mem},
13201 .clobbers = .{ .eflags = true },
13202 .each = .{ .once = &.{
13203 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13204 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
13205 .{ ._, .p_d, .maxu, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
13206 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
13207 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
13208 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13209 } },
13210 }, .{
13211 .required_features = .{ .sse2, null, null, null },
13212 .src_constraints = .{
13213 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
13214 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
13215 .any,
13216 },
13217 .patterns = &.{
13218 .{ .src = .{ .to_mem, .to_mem, .none } },
13219 },
13220 .extra_temps = .{
13221 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13222 .{ .type = .vector_4_u32, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
13223 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
13224 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
13225 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
13226 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
13227 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
13228 .unused,
13229 .unused,
13230 },
13231 .dst_temps = .{.mem},
13232 .clobbers = .{ .eflags = true },
13233 .each = .{ .once = &.{
13234 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
13235 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
13236 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13237 .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
13238 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
13239 .{ ._, ._dqa, .mov, .tmp5x, .tmp3x, ._, ._ },
13240 .{ ._, ._dqa, .mov, .tmp6x, .tmp4x, ._, ._ },
13241 .{ ._, .p_, .xor, .tmp5x, .tmp2x, ._, ._ },
13242 .{ ._, .p_, .xor, .tmp6x, .tmp2x, ._, ._ },
13243 .{ ._, .p_d, .cmpgt, .tmp5x, .tmp6x, ._, ._ },
13244 .{ ._, .p_, .@"and", .tmp3x, .tmp5x, ._, ._ },
13245 .{ ._, .p_, .andn, .tmp5x, .tmp4x, ._, ._ },
13246 .{ ._, .p_, .@"or", .tmp3x, .tmp5x, ._, ._ },
13247 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
13248 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
13249 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13250 } },
13251 }, .{
13252 .required_features = .{ .cmov, null, null, null },
13253 .src_constraints = .{
13254 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
13255 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
13256 .any,
13257 },
13258 .patterns = &.{
13259 .{ .src = .{ .to_mem, .to_mem, .none } },
13260 },
13261 .extra_temps = .{
13262 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13263 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
13264 .unused,
13265 .unused,
13266 .unused,
13267 .unused,
13268 .unused,
13269 .unused,
13270 .unused,
13271 },
13272 .dst_temps = .{.mem},
13273 .clobbers = .{ .eflags = true },
13274 .each = .{ .once = &.{
13275 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13276 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
13277 .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
13278 .{ ._, ._b, .cmov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
13279 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
13280 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
13281 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13282 } },
13283 }, .{
13284 .src_constraints = .{
13285 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
13286 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
13287 .any,
13288 },
13289 .patterns = &.{
13290 .{ .src = .{ .to_mem, .to_mem, .none } },
13291 },
13292 .extra_temps = .{
13293 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13294 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
13295 .unused,
13296 .unused,
13297 .unused,
13298 .unused,
13299 .unused,
13300 .unused,
13301 .unused,
13302 },
13303 .dst_temps = .{.mem},
13304 .clobbers = .{ .eflags = true },
13305 .each = .{ .once = &.{
13306 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13307 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
13308 .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
13309 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
13310 .{ ._, ._, .mov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
13311 .{ .@"1:", ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
13312 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
13313 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13314 } },
13315 }, .{
13316 .required_features = .{ .avx, null, null, null },
13317 .src_constraints = .{
13318 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
13319 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
13320 .any,
13321 },
13322 .patterns = &.{
13323 .{ .src = .{ .to_sse, .to_sse, .none } },
13324 },
13325 .dst_temps = .{.{ .rc = .sse }},
13326 .each = .{ .once = &.{
13327 .{ ._, .vp_q, .cmpgt, .dst0x, .src1x, .src0x, ._ },
13328 .{ ._, .vp_b, .blendv, .dst0x, .src0x, .src1x, .dst0x },
13329 } },
13330 }, .{
13331 .required_features = .{ .sse4_2, null, null, null },
13332 .src_constraints = .{
13333 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
13334 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
13335 .any,
13336 },
13337 .patterns = &.{
13338 .{ .src = .{ .to_mut_sse, .mem, .none } },
13339 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
13340 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
13341 },
13342 .extra_temps = .{
13343 .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } },
13344 .unused,
13345 .unused,
13346 .unused,
13347 .unused,
13348 .unused,
13349 .unused,
13350 .unused,
13351 .unused,
13352 },
13353 .dst_temps = .{.{ .ref = .src0 }},
13354 .each = .{ .once = &.{
13355 .{ ._, ._dqa, .mov, .tmp0x, .src1x, ._, ._ },
13356 .{ ._, .p_q, .cmpgt, .tmp0x, .src0x, ._, ._ },
13357 .{ ._, .p_b, .blendv, .dst0x, .src1x, .tmp0x, ._ },
13358 } },
13359 }, .{
13360 .required_features = .{ .avx2, null, null, null },
13361 .src_constraints = .{
13362 .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } },
13363 .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } },
13364 .any,
13365 },
13366 .patterns = &.{
13367 .{ .src = .{ .to_sse, .to_sse, .none } },
13368 },
13369 .dst_temps = .{.{ .rc = .sse }},
13370 .each = .{ .once = &.{
13371 .{ ._, .vp_q, .cmpgt, .dst0y, .src1y, .src0y, ._ },
13372 .{ ._, .vp_b, .blendv, .dst0y, .src0y, .src1y, .dst0y },
13373 } },
13374 }, .{
13375 .required_features = .{ .avx2, null, null, null },
13376 .src_constraints = .{
13377 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } },
13378 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } },
13379 .any,
13380 },
13381 .patterns = &.{
13382 .{ .src = .{ .to_mem, .to_mem, .none } },
13383 },
13384 .extra_temps = .{
13385 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13386 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
13387 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
13388 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
13389 .unused,
13390 .unused,
13391 .unused,
13392 .unused,
13393 .unused,
13394 },
13395 .dst_temps = .{.mem},
13396 .clobbers = .{ .eflags = true },
13397 .each = .{ .once = &.{
13398 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13399 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
13400 .{ ._, .v_dqa, .mov, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
13401 .{ ._, .vp_q, .cmpgt, .tmp3y, .tmp2y, .tmp1y, ._ },
13402 .{ ._, .vp_b, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },
13403 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
13404 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
13405 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13406 } },
13407 }, .{
13408 .required_features = .{ .avx, null, null, null },
13409 .src_constraints = .{
13410 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
13411 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
13412 .any,
13413 },
13414 .patterns = &.{
13415 .{ .src = .{ .to_mem, .to_mem, .none } },
13416 },
13417 .extra_temps = .{
13418 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13419 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
13420 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
13421 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
13422 .unused,
13423 .unused,
13424 .unused,
13425 .unused,
13426 .unused,
13427 },
13428 .dst_temps = .{.mem},
13429 .clobbers = .{ .eflags = true },
13430 .each = .{ .once = &.{
13431 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13432 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
13433 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
13434 .{ ._, .vp_q, .cmpgt, .tmp3x, .tmp2x, .tmp1x, ._ },
13435 .{ ._, .vp_b, .blendv, .tmp1x, .tmp1x, .tmp2x, .tmp3x },
13436 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
13437 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
13438 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13439 } },
13440 }, .{
13441 .required_features = .{ .sse4_2, null, null, null },
13442 .src_constraints = .{
13443 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
13444 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
13445 .any,
13446 },
13447 .patterns = &.{
13448 .{ .src = .{ .to_mem, .to_mem, .none } },
13449 },
13450 .extra_temps = .{
13451 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13452 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
13453 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
13454 .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } },
13455 .unused,
13456 .unused,
13457 .unused,
13458 .unused,
13459 .unused,
13460 },
13461 .dst_temps = .{.mem},
13462 .clobbers = .{ .eflags = true },
13463 .each = .{ .once = &.{
13464 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13465 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
13466 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
13467 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
13468 .{ ._, .p_q, .cmpgt, .tmp3x, .tmp1x, ._, ._ },
13469 .{ ._, .p_b, .blendv, .tmp1x, .tmp2x, .tmp3x, ._ },
13470 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
13471 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
13472 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13473 } },
13474 }, .{
13475 .required_features = .{ .@"64bit", .cmov, null, null },
13476 .src_constraints = .{
13477 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
13478 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
13479 .any,
13480 },
13481 .patterns = &.{
13482 .{ .src = .{ .to_mem, .to_mem, .none } },
13483 },
13484 .extra_temps = .{
13485 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13486 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
13487 .unused,
13488 .unused,
13489 .unused,
13490 .unused,
13491 .unused,
13492 .unused,
13493 .unused,
13494 },
13495 .dst_temps = .{.mem},
13496 .clobbers = .{ .eflags = true },
13497 .each = .{ .once = &.{
13498 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13499 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
13500 .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
13501 .{ ._, ._l, .cmov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
13502 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
13503 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
13504 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13505 } },
13506 }, .{
13507 .required_features = .{ .@"64bit", null, null, null },
13508 .src_constraints = .{
13509 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
13510 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
13511 .any,
13512 },
13513 .patterns = &.{
13514 .{ .src = .{ .to_mem, .to_mem, .none } },
13515 },
13516 .extra_temps = .{
13517 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13518 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
13519 .unused,
13520 .unused,
13521 .unused,
13522 .unused,
13523 .unused,
13524 .unused,
13525 .unused,
13526 },
13527 .dst_temps = .{.mem},
13528 .clobbers = .{ .eflags = true },
13529 .each = .{ .once = &.{
13530 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13531 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
13532 .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
13533 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },
13534 .{ ._, ._, .mov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
13535 .{ .@"1:", ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
13536 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
13537 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13538 } },
13539 }, .{
13540 .required_features = .{ .avx, null, null, null },
13541 .src_constraints = .{
13542 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
13543 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
13544 .any,
13545 },
13546 .patterns = &.{
13547 .{ .src = .{ .to_sse, .mem, .none } },
13548 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
13549 .{ .src = .{ .to_sse, .to_sse, .none } },
13550 },
13551 .extra_temps = .{
13552 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
13553 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },
13554 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
13555 .unused,
13556 .unused,
13557 .unused,
13558 .unused,
13559 .unused,
13560 .unused,
13561 },
13562 .dst_temps = .{.{ .rc = .sse }},
13563 .each = .{ .once = &.{
13564 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
13565 .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
13566 .{ ._, .vp_, .xor, .dst0x, .tmp2x, .src0x, ._ },
13567 .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .src1x, ._ },
13568 .{ ._, .vp_q, .cmpgt, .dst0x, .tmp2x, .dst0x, ._ },
13569 .{ ._, .vp_b, .blendv, .dst0x, .src0x, .src1x, .dst0x },
13570 } },
13571 }, .{
13572 .required_features = .{ .sse4_2, null, null, null },
13573 .src_constraints = .{
13574 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
13575 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
13576 .any,
13577 },
13578 .patterns = &.{
13579 .{ .src = .{ .to_mut_sse, .mem, .none } },
13580 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
13581 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
13582 },
13583 .extra_temps = .{
13584 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
13585 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },
13586 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
13587 .{ .type = .vector_2_u64, .kind = .{ .reg = .xmm0 } },
13588 .unused,
13589 .unused,
13590 .unused,
13591 .unused,
13592 .unused,
13593 },
13594 .dst_temps = .{.{ .ref = .src0 }},
13595 .each = .{ .once = &.{
13596 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
13597 .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
13598 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
13599 .{ ._, .p_, .xor, .tmp2x, .src0x, ._, ._ },
13600 .{ ._, .p_, .xor, .tmp3x, .src1x, ._, ._ },
13601 .{ ._, .p_q, .cmpgt, .tmp3x, .tmp2x, ._, ._ },
13602 .{ ._, .p_b, .blendv, .dst0x, .src1x, .tmp3x, ._ },
13603 } },
13604 }, .{
13605 .required_features = .{ .avx2, null, null, null },
13606 .src_constraints = .{
13607 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
13608 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
13609 .any,
13610 },
13611 .patterns = &.{
13612 .{ .src = .{ .to_sse, .mem, .none } },
13613 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
13614 .{ .src = .{ .to_sse, .to_sse, .none } },
13615 },
13616 .extra_temps = .{
13617 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
13618 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },
13619 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
13620 .unused,
13621 .unused,
13622 .unused,
13623 .unused,
13624 .unused,
13625 .unused,
13626 },
13627 .dst_temps = .{.{ .rc = .sse }},
13628 .each = .{ .once = &.{
13629 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
13630 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ },
13631 .{ ._, .vp_, .xor, .dst0y, .tmp2y, .src0y, ._ },
13632 .{ ._, .vp_, .xor, .tmp2y, .tmp2y, .src1y, ._ },
13633 .{ ._, .vp_q, .cmpgt, .dst0y, .tmp2y, .dst0y, ._ },
13634 .{ ._, .vp_b, .blendv, .dst0y, .src0y, .src1y, .dst0y },
13635 } },
13636 }, .{
13637 .required_features = .{ .avx2, null, null, null },
13638 .src_constraints = .{
13639 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
13640 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
13641 .any,
13642 },
13643 .patterns = &.{
13644 .{ .src = .{ .to_mem, .to_mem, .none } },
13645 },
13646 .extra_temps = .{
13647 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13648 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },
13649 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
13650 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
13651 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
13652 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
13653 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
13654 .unused,
13655 .unused,
13656 },
13657 .dst_temps = .{.mem},
13658 .clobbers = .{ .eflags = true },
13659 .each = .{ .once = &.{
13660 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
13661 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ },
13662 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13663 .{ .@"0:", .v_dqa, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
13664 .{ ._, .v_dqa, .mov, .tmp4y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
13665 .{ ._, .vp_, .xor, .tmp5y, .tmp3y, .tmp2y, ._ },
13666 .{ ._, .vp_, .xor, .tmp6y, .tmp4y, .tmp2y, ._ },
13667 .{ ._, .vp_q, .cmpgt, .tmp5y, .tmp6y, .tmp5y, ._ },
13668 .{ ._, .vp_b, .blendv, .tmp3y, .tmp3y, .tmp4y, .tmp5y },
13669 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
13670 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
13671 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13672 } },
13673 }, .{
13674 .required_features = .{ .avx, null, null, null },
13675 .src_constraints = .{
13676 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
13677 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
13678 .any,
13679 },
13680 .patterns = &.{
13681 .{ .src = .{ .to_mem, .to_mem, .none } },
13682 },
13683 .extra_temps = .{
13684 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13685 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },
13686 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
13687 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
13688 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
13689 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
13690 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
13691 .unused,
13692 .unused,
13693 },
13694 .dst_temps = .{.mem},
13695 .clobbers = .{ .eflags = true },
13696 .each = .{ .once = &.{
13697 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
13698 .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
13699 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13700 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
13701 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
13702 .{ ._, .vp_, .xor, .tmp5x, .tmp3x, .tmp2x, ._ },
13703 .{ ._, .vp_, .xor, .tmp6x, .tmp4x, .tmp2x, ._ },
13704 .{ ._, .vp_q, .cmpgt, .tmp5x, .tmp6x, .tmp5x, ._ },
13705 .{ ._, .vp_b, .blendv, .tmp3x, .tmp3x, .tmp4x, .tmp5x },
13706 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
13707 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
13708 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13709 } },
13710 }, .{
13711 .required_features = .{ .sse4_2, null, null, null },
13712 .src_constraints = .{
13713 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
13714 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
13715 .any,
13716 },
13717 .patterns = &.{
13718 .{ .src = .{ .to_mem, .to_mem, .none } },
13719 },
13720 .extra_temps = .{
13721 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13722 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },
13723 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
13724 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
13725 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
13726 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
13727 .{ .type = .vector_2_u64, .kind = .{ .reg = .xmm0 } },
13728 .unused,
13729 .unused,
13730 },
13731 .dst_temps = .{.mem},
13732 .clobbers = .{ .eflags = true },
13733 .each = .{ .once = &.{
13734 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
13735 .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
13736 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13737 .{ .@"0:", ._dqa, .mov, .tmp5x, .tmp2x, ._, ._ },
13738 .{ ._, ._dqa, .mov, .tmp6x, .tmp2x, ._, ._ },
13739 .{ ._, ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
13740 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
13741 .{ ._, .p_, .xor, .tmp5x, .tmp3x, ._, ._ },
13742 .{ ._, .p_, .xor, .tmp6x, .tmp4x, ._, ._ },
13743 .{ ._, .p_q, .cmpgt, .tmp6x, .tmp5x, ._, ._ },
13744 .{ ._, .p_b, .blendv, .tmp3x, .tmp4x, .tmp6x, ._ },
13745 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
13746 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
13747 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13748 } },
13749 }, .{
13750 .required_features = .{ .@"64bit", .cmov, null, null },
13751 .src_constraints = .{
13752 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
13753 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
13754 .any,
13755 },
13756 .patterns = &.{
13757 .{ .src = .{ .to_mem, .to_mem, .none } },
13758 },
13759 .extra_temps = .{
13760 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13761 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
13762 .unused,
13763 .unused,
13764 .unused,
13765 .unused,
13766 .unused,
13767 .unused,
13768 .unused,
13769 },
13770 .dst_temps = .{.mem},
13771 .clobbers = .{ .eflags = true },
13772 .each = .{ .once = &.{
13773 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13774 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
13775 .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
13776 .{ ._, ._b, .cmov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
13777 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
13778 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
13779 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13780 } },
13781 }, .{
13782 .required_features = .{ .@"64bit", null, null, null },
13783 .src_constraints = .{
13784 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
13785 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
13786 .any,
13787 },
13788 .patterns = &.{
13789 .{ .src = .{ .to_mem, .to_mem, .none } },
13790 },
13791 .extra_temps = .{
13792 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13793 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
13794 .unused,
13795 .unused,
13796 .unused,
13797 .unused,
13798 .unused,
13799 .unused,
13800 .unused,
13801 },
13802 .dst_temps = .{.mem},
13803 .clobbers = .{ .eflags = true },
13804 .each = .{ .once = &.{
13805 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13806 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
13807 .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
13808 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
13809 .{ ._, ._, .mov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
13810 .{ .@"1:", ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
13811 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
13812 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13813 } },
13814 }, .{
13815 .required_features = .{ .@"64bit", .cmov, null, null },
13816 .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int, .any },
13817 .patterns = &.{
13818 .{ .src = .{ .to_mem, .to_mem, .none } },
13819 },
13820 .extra_temps = .{
13821 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13822 .{ .type = .isize, .kind = .{ .reg = .rsi } },
13823 .{ .type = .u64, .kind = .{ .reg = .rdi } },
13824 .{ .type = .u64, .kind = .{ .reg = .rcx } },
13825 .unused,
13826 .unused,
13827 .unused,
13828 .unused,
13829 .unused,
13830 },
13831 .dst_temps = .{.mem},
13832 .clobbers = .{ .eflags = true },
13833 .each = .{ .once = &.{
13834 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13835 .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ },
13836 .{ ._, ._c, .cl, ._, ._, ._, ._ },
13837 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
13838 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
13839 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
13840 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
13841 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
13842 .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
13843 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
13844 .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },
13845 .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },
13846 .{ ._, ._l, .cmov, .tmp1p, .tmp2p, ._, ._ },
13847 .{ ._, ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },
13848 .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },
13849 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
13850 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
13851 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13852 } },
13853 }, .{
13854 .required_features = .{ .@"64bit", null, null, null },
13855 .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int, .any },
13856 .patterns = &.{
13857 .{ .src = .{ .to_mem, .to_mem, .none } },
13858 },
13859 .extra_temps = .{
13860 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13861 .{ .type = .isize, .kind = .{ .reg = .rsi } },
13862 .{ .type = .u64, .kind = .{ .reg = .rdi } },
13863 .{ .type = .u64, .kind = .{ .reg = .rcx } },
13864 .unused,
13865 .unused,
13866 .unused,
13867 .unused,
13868 .unused,
13869 },
13870 .dst_temps = .{.mem},
13871 .clobbers = .{ .eflags = true },
13872 .each = .{ .once = &.{
13873 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13874 .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ },
13875 .{ ._, ._c, .cl, ._, ._, ._, ._ },
13876 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
13877 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
13878 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
13879 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
13880 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
13881 .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
13882 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
13883 .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },
13884 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },
13885 .{ ._, ._, .lea, .tmp1p, .memiad(.src1, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },
13886 .{ .@"1:", ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },
13887 .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },
13888 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
13889 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
13890 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13891 } },
13892 }, .{
13893 .required_features = .{ .@"64bit", .cmov, null, null },
13894 .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int, .any },
13895 .patterns = &.{
13896 .{ .src = .{ .to_mem, .to_mem, .none } },
13897 },
13898 .extra_temps = .{
13899 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13900 .{ .type = .isize, .kind = .{ .reg = .rsi } },
13901 .{ .type = .u64, .kind = .{ .reg = .rdi } },
13902 .{ .type = .u64, .kind = .{ .reg = .rcx } },
13903 .unused,
13904 .unused,
13905 .unused,
13906 .unused,
13907 .unused,
13908 },
13909 .dst_temps = .{.mem},
13910 .clobbers = .{ .eflags = true },
13911 .each = .{ .once = &.{
13912 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13913 .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },
13914 .{ ._, ._c, .cl, ._, ._, ._, ._ },
13915 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
13916 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
13917 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
13918 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
13919 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
13920 .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ },
13921 .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_size_sub_elem_size), ._, ._ },
13922 .{ ._, ._b, .cmov, .tmp1p, .tmp2p, ._, ._ },
13923 .{ ._, ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_size_sub_elem_size), ._, ._ },
13924 .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },
13925 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
13926 .{ ._, ._, .@"test", .tmp0p, .tmp0p, ._, ._ },
13927 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
13928 } },
13929 }, .{
13930 .required_features = .{ .@"64bit", null, null, null },
13931 .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int, .any },
13932 .patterns = &.{
13933 .{ .src = .{ .to_mem, .to_mem, .none } },
13934 },
13935 .extra_temps = .{
13936 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13937 .{ .type = .isize, .kind = .{ .reg = .rsi } },
13938 .{ .type = .u64, .kind = .{ .reg = .rdi } },
13939 .{ .type = .u64, .kind = .{ .reg = .rcx } },
13940 .unused,
13941 .unused,
13942 .unused,
13943 .unused,
13944 .unused,
13945 },
13946 .dst_temps = .{.mem},
13947 .clobbers = .{ .eflags = true },
13948 .each = .{ .once = &.{
13949 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13950 .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },
13951 .{ ._, ._c, .cl, ._, ._, ._, ._ },
13952 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
13953 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
13954 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
13955 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
13956 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
13957 .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ },
13958 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
13959 .{ ._, ._, .lea, .tmp1p, .memia(.src1, .tmp0, .add_size_sub_elem_size), ._, ._ },
13960 .{ .@"1:", ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_size_sub_elem_size), ._, ._ },
13961 .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },
13962 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
13963 .{ ._, ._, .@"test", .tmp0p, .tmp0p, ._, ._ },
13964 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
13965 } },
13966 }, .{
13967 .required_features = .{ .f16c, null, null, null },
13968 .src_constraints = .{
13969 .{ .scalar_float = .{ .of = .word, .is = .word } },
13970 .{ .scalar_float = .{ .of = .word, .is = .word } },
13971 .any,
13972 },
13973 .patterns = &.{
13974 .{ .src = .{ .to_sse, .to_sse, .none } },
13975 },
13976 .extra_temps = .{
13977 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
13978 .{ .type = .f32, .kind = .{ .rc = .sse } },
13979 .unused,
13980 .unused,
13981 .unused,
13982 .unused,
13983 .unused,
13984 .unused,
13985 .unused,
13986 },
13987 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
13988 .each = .{ .once = &.{
13989 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
13990 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
13991 .{ ._, .v_ss, .cmp, .tmp1x, .dst0d, .dst0x, .vp(.unord) },
13992 .{ ._, .v_ss, .max, .dst0x, .tmp0d, .dst0x, ._ },
13993 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x },
13994 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
13995 } },
13996 }, .{
13997 .required_features = .{ .sse, null, null, null },
13998 .src_constraints = .{
13999 .{ .scalar_float = .{ .of = .word, .is = .word } },
14000 .{ .scalar_float = .{ .of = .word, .is = .word } },
14001 .any,
14002 },
14003 .patterns = &.{
14004 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
14005 },
14006 .call_frame = .{ .alignment = .@"16" },
14007 .extra_temps = .{
14008 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
14009 .unused,
14010 .unused,
14011 .unused,
14012 .unused,
14013 .unused,
14014 .unused,
14015 .unused,
14016 .unused,
14017 },
14018 .dst_temps = .{.{ .ref = .src0 }},
14019 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
14020 .each = .{ .once = &.{
14021 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
14022 } },
14023 }, .{
14024 .required_features = .{ .f16c, null, null, null },
14025 .src_constraints = .{
14026 .{ .scalar_float = .{ .of = .qword, .is = .word } },
14027 .{ .scalar_float = .{ .of = .qword, .is = .word } },
14028 .any,
14029 },
14030 .patterns = &.{
14031 .{ .src = .{ .mem, .mem, .none } },
14032 .{ .src = .{ .to_sse, .mem, .none } },
14033 .{ .src = .{ .mem, .to_sse, .none } },
14034 .{ .src = .{ .to_sse, .to_sse, .none } },
14035 },
14036 .extra_temps = .{
14037 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
14038 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
14039 .unused,
14040 .unused,
14041 .unused,
14042 .unused,
14043 .unused,
14044 .unused,
14045 .unused,
14046 },
14047 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
14048 .each = .{ .once = &.{
14049 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
14050 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
14051 .{ ._, .v_ps, .cmp, .tmp1x, .dst0x, .dst0x, .vp(.unord) },
14052 .{ ._, .v_ps, .max, .dst0x, .tmp0x, .dst0x, ._ },
14053 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x },
14054 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
14055 } },
14056 }, .{
14057 .required_features = .{ .f16c, null, null, null },
14058 .src_constraints = .{
14059 .{ .scalar_float = .{ .of = .xword, .is = .word } },
14060 .{ .scalar_float = .{ .of = .xword, .is = .word } },
14061 .any,
14062 },
14063 .patterns = &.{
14064 .{ .src = .{ .mem, .mem, .none } },
14065 .{ .src = .{ .to_sse, .mem, .none } },
14066 .{ .src = .{ .mem, .to_sse, .none } },
14067 .{ .src = .{ .to_sse, .to_sse, .none } },
14068 },
14069 .extra_temps = .{
14070 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
14071 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
14072 .unused,
14073 .unused,
14074 .unused,
14075 .unused,
14076 .unused,
14077 .unused,
14078 .unused,
14079 },
14080 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
14081 .each = .{ .once = &.{
14082 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
14083 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
14084 .{ ._, .v_ps, .cmp, .tmp1y, .dst0y, .dst0y, .vp(.unord) },
14085 .{ ._, .v_ps, .max, .dst0y, .tmp0y, .dst0y, ._ },
14086 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp0y, .tmp1y },
14087 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
14088 } },
14089 }, .{
14090 .required_features = .{ .f16c, null, null, null },
14091 .src_constraints = .{
14092 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
14093 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
14094 .any,
14095 },
14096 .patterns = &.{
14097 .{ .src = .{ .to_mem, .to_mem, .none } },
14098 },
14099 .extra_temps = .{
14100 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14101 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
14102 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
14103 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
14104 .unused,
14105 .unused,
14106 .unused,
14107 .unused,
14108 .unused,
14109 },
14110 .dst_temps = .{.mem},
14111 .clobbers = .{ .eflags = true },
14112 .each = .{ .once = &.{
14113 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
14114 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
14115 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_size), ._, ._ },
14116 .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },
14117 .{ ._, .v_ps, .max, .tmp1y, .tmp2y, .tmp1y, ._ },
14118 .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },
14119 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_size), .tmp1y, .rm(.{}), ._ },
14120 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
14121 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14122 } },
14123 }, .{
14124 .required_features = .{ .avx, null, null, null },
14125 .src_constraints = .{
14126 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
14127 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
14128 .any,
14129 },
14130 .patterns = &.{
14131 .{ .src = .{ .to_mem, .to_mem, .none } },
14132 },
14133 .call_frame = .{ .alignment = .@"16" },
14134 .extra_temps = .{
14135 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14136 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
14137 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
14138 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
14139 .unused,
14140 .unused,
14141 .unused,
14142 .unused,
14143 .unused,
14144 },
14145 .dst_temps = .{.mem},
14146 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
14147 .each = .{ .once = &.{
14148 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
14149 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
14150 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_size), .ui(0) },
14151 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0) },
14152 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
14153 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ },
14154 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
14155 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14156 } },
14157 }, .{
14158 .required_features = .{ .sse4_1, null, null, null },
14159 .src_constraints = .{
14160 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
14161 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
14162 .any,
14163 },
14164 .patterns = &.{
14165 .{ .src = .{ .to_mem, .to_mem, .none } },
14166 },
14167 .call_frame = .{ .alignment = .@"16" },
14168 .extra_temps = .{
14169 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14170 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
14171 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
14172 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
14173 .unused,
14174 .unused,
14175 .unused,
14176 .unused,
14177 .unused,
14178 },
14179 .dst_temps = .{.mem},
14180 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
14181 .each = .{ .once = &.{
14182 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
14183 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
14184 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
14185 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ },
14186 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ },
14187 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
14188 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ },
14189 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
14190 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14191 } },
14192 }, .{
14193 .required_features = .{ .sse2, null, null, null },
14194 .src_constraints = .{
14195 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
14196 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
14197 .any,
14198 },
14199 .patterns = &.{
14200 .{ .src = .{ .to_mem, .to_mem, .none } },
14201 },
14202 .call_frame = .{ .alignment = .@"16" },
14203 .extra_temps = .{
14204 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14205 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
14206 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
14207 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
14208 .{ .type = .f16, .kind = .{ .reg = .ax } },
14209 .unused,
14210 .unused,
14211 .unused,
14212 .unused,
14213 },
14214 .dst_temps = .{.mem},
14215 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
14216 .each = .{ .once = &.{
14217 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
14218 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
14219 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
14220 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ },
14221 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ },
14222 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
14223 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
14224 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp4w, ._, ._ },
14225 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
14226 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14227 } },
14228 }, .{
14229 .required_features = .{ .sse, null, null, null },
14230 .src_constraints = .{
14231 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
14232 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
14233 .any,
14234 },
14235 .patterns = &.{
14236 .{ .src = .{ .to_mem, .to_mem, .none } },
14237 },
14238 .call_frame = .{ .alignment = .@"16" },
14239 .extra_temps = .{
14240 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14241 .{ .type = .f16, .kind = .{ .reg = .ax } },
14242 .{ .type = .f32, .kind = .mem },
14243 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
14244 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
14245 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
14246 .unused,
14247 .unused,
14248 .unused,
14249 },
14250 .dst_temps = .{.mem},
14251 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
14252 .each = .{ .once = &.{
14253 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
14254 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
14255 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
14256 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
14257 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_size), ._, ._ },
14258 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
14259 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
14260 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
14261 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
14262 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
14263 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
14264 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
14265 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14266 } },
14267 }, .{
14268 .required_features = .{ .avx, null, null, null },
14269 .src_constraints = .{
14270 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
14271 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
14272 .any,
14273 },
14274 .patterns = &.{
14275 .{ .src = .{ .to_sse, .to_sse, .none } },
14276 },
14277 .extra_temps = .{
14278 .{ .type = .f32, .kind = .{ .rc = .sse } },
14279 .unused,
14280 .unused,
14281 .unused,
14282 .unused,
14283 .unused,
14284 .unused,
14285 .unused,
14286 .unused,
14287 },
14288 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
14289 .each = .{ .once = &.{
14290 .{ ._, .v_ss, .cmp, .tmp0x, .src0x, .src0d, .vp(.unord) },
14291 .{ ._, .v_ss, .max, .dst0x, .src1x, .src0d, ._ },
14292 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },
14293 } },
14294 }, .{
14295 .required_features = .{ .sse4_1, null, null, null },
14296 .src_constraints = .{
14297 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
14298 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
14299 .any,
14300 },
14301 .patterns = &.{
14302 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } },
14303 },
14304 .dst_temps = .{.{ .rc = .sse }},
14305 .each = .{ .once = &.{
14306 .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ },
14307 .{ ._, ._ss, .max, .dst0x, .src0d, ._, ._ },
14308 .{ ._, ._ss, .cmp, .src0x, .src0d, .sp(.unord), ._ },
14309 .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ },
14310 } },
14311 }, .{
14312 .required_features = .{ .sse, null, null, null },
14313 .src_constraints = .{
14314 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
14315 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
14316 .any,
14317 },
14318 .patterns = &.{
14319 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
14320 },
14321 .extra_temps = .{
14322 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
14323 .unused,
14324 .unused,
14325 .unused,
14326 .unused,
14327 .unused,
14328 .unused,
14329 .unused,
14330 .unused,
14331 },
14332 .dst_temps = .{.{ .ref = .src0 }},
14333 .each = .{ .once = &.{
14334 .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ },
14335 .{ ._, ._ss, .max, .tmp0x, .src0d, ._, ._ },
14336 .{ ._, ._ss, .cmp, .dst0x, .src0d, .sp(.ord), ._ },
14337 .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ },
14338 .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ },
14339 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },
14340 } },
14341 }, .{
14342 .required_features = .{ .avx, null, null, null },
14343 .src_constraints = .{
14344 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
14345 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
14346 .any,
14347 },
14348 .patterns = &.{
14349 .{ .src = .{ .to_sse, .to_sse, .none } },
14350 },
14351 .extra_temps = .{
14352 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
14353 .unused,
14354 .unused,
14355 .unused,
14356 .unused,
14357 .unused,
14358 .unused,
14359 .unused,
14360 .unused,
14361 },
14362 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
14363 .each = .{ .once = &.{
14364 .{ ._, .v_ps, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) },
14365 .{ ._, .v_ps, .max, .dst0x, .src1x, .src0x, ._ },
14366 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },
14367 } },
14368 }, .{
14369 .required_features = .{ .sse4_1, null, null, null },
14370 .src_constraints = .{
14371 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
14372 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
14373 .any,
14374 },
14375 .patterns = &.{
14376 .{ .src = .{ .{ .to_reg = .xmm0 }, .mem, .none } },
14377 .{ .src = .{ .mem, .{ .to_reg = .xmm0 }, .none }, .commute = .{ 0, 1 } },
14378 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } },
14379 },
14380 .dst_temps = .{.{ .rc = .sse }},
14381 .each = .{ .once = &.{
14382 .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ },
14383 .{ ._, ._ps, .max, .dst0x, .src0x, ._, ._ },
14384 .{ ._, ._ps, .cmp, .src0x, .src0x, .sp(.unord), ._ },
14385 .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ },
14386 } },
14387 }, .{
14388 .required_features = .{ .sse, null, null, null },
14389 .src_constraints = .{
14390 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
14391 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
14392 .any,
14393 },
14394 .patterns = &.{
14395 .{ .src = .{ .to_mut_sse, .mem, .none } },
14396 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
14397 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
14398 },
14399 .extra_temps = .{
14400 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
14401 .unused,
14402 .unused,
14403 .unused,
14404 .unused,
14405 .unused,
14406 .unused,
14407 .unused,
14408 .unused,
14409 },
14410 .dst_temps = .{.{ .ref = .src0 }},
14411 .each = .{ .once = &.{
14412 .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ },
14413 .{ ._, ._ps, .max, .tmp0x, .src0x, ._, ._ },
14414 .{ ._, ._ps, .cmp, .dst0x, .src0x, .sp(.ord), ._ },
14415 .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ },
14416 .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ },
14417 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },
14418 } },
14419 }, .{
14420 .required_features = .{ .avx, null, null, null },
14421 .src_constraints = .{
14422 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
14423 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
14424 .any,
14425 },
14426 .patterns = &.{
14427 .{ .src = .{ .to_sse, .to_sse, .none } },
14428 },
14429 .extra_temps = .{
14430 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
14431 .unused,
14432 .unused,
14433 .unused,
14434 .unused,
14435 .unused,
14436 .unused,
14437 .unused,
14438 .unused,
14439 },
14440 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
14441 .each = .{ .once = &.{
14442 .{ ._, .v_ps, .cmp, .tmp0y, .src0y, .src0y, .vp(.unord) },
14443 .{ ._, .v_ps, .max, .dst0y, .src1y, .src0y, ._ },
14444 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .src1y, .tmp0y },
14445 } },
14446 }, .{
14447 .required_features = .{ .avx, null, null, null },
14448 .src_constraints = .{
14449 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
14450 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
14451 .any,
14452 },
14453 .patterns = &.{
14454 .{ .src = .{ .to_mem, .to_mem, .none } },
14455 },
14456 .extra_temps = .{
14457 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14458 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
14459 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
14460 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
14461 .unused,
14462 .unused,
14463 .unused,
14464 .unused,
14465 .unused,
14466 },
14467 .dst_temps = .{.mem},
14468 .clobbers = .{ .eflags = true },
14469 .each = .{ .once = &.{
14470 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
14471 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
14472 .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
14473 .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },
14474 .{ ._, .v_ps, .max, .tmp1y, .tmp2y, .tmp1y, ._ },
14475 .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },
14476 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
14477 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
14478 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14479 } },
14480 }, .{
14481 .required_features = .{ .sse4_1, null, null, null },
14482 .src_constraints = .{
14483 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
14484 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
14485 .any,
14486 },
14487 .patterns = &.{
14488 .{ .src = .{ .to_mem, .to_mem, .none } },
14489 },
14490 .extra_temps = .{
14491 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14492 .{ .type = .vector_4_f32, .kind = .{ .reg = .xmm0 } },
14493 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
14494 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
14495 .unused,
14496 .unused,
14497 .unused,
14498 .unused,
14499 .unused,
14500 },
14501 .dst_temps = .{.mem},
14502 .clobbers = .{ .eflags = true },
14503 .each = .{ .once = &.{
14504 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
14505 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
14506 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
14507 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
14508 .{ ._, ._ps, .max, .tmp3x, .tmp1x, ._, ._ },
14509 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ },
14510 .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
14511 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
14512 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
14513 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14514 } },
14515 }, .{
14516 .required_features = .{ .sse, null, null, null },
14517 .src_constraints = .{
14518 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
14519 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
14520 .any,
14521 },
14522 .patterns = &.{
14523 .{ .src = .{ .to_mem, .to_mem, .none } },
14524 },
14525 .extra_temps = .{
14526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14527 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
14528 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
14529 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
14530 .unused,
14531 .unused,
14532 .unused,
14533 .unused,
14534 .unused,
14535 },
14536 .dst_temps = .{.mem},
14537 .clobbers = .{ .eflags = true },
14538 .each = .{ .once = &.{
14539 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
14540 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
14541 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
14542 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
14543 .{ ._, ._ps, .max, .tmp3x, .tmp1x, ._, ._ },
14544 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ },
14545 .{ ._, ._ps, .@"and", .tmp3x, .tmp1x, ._, ._ },
14546 .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ },
14547 .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ },
14548 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
14549 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
14550 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14551 } },
14552 }, .{
14553 .required_features = .{ .avx, null, null, null },
14554 .src_constraints = .{
14555 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
14556 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
14557 .any,
14558 },
14559 .patterns = &.{
14560 .{ .src = .{ .to_sse, .to_sse, .none } },
14561 },
14562 .extra_temps = .{
14563 .{ .type = .f64, .kind = .{ .rc = .sse } },
14564 .unused,
14565 .unused,
14566 .unused,
14567 .unused,
14568 .unused,
14569 .unused,
14570 .unused,
14571 .unused,
14572 },
14573 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
14574 .each = .{ .once = &.{
14575 .{ ._, .v_sd, .cmp, .tmp0x, .src0x, .src0q, .vp(.unord) },
14576 .{ ._, .v_sd, .max, .dst0x, .src1x, .src0q, ._ },
14577 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },
14578 } },
14579 }, .{
14580 .required_features = .{ .sse4_1, null, null, null },
14581 .src_constraints = .{
14582 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
14583 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
14584 .any,
14585 },
14586 .patterns = &.{
14587 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } },
14588 },
14589 .dst_temps = .{.{ .rc = .sse }},
14590 .each = .{ .once = &.{
14591 .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ },
14592 .{ ._, ._sd, .max, .dst0x, .src0q, ._, ._ },
14593 .{ ._, ._sd, .cmp, .src0x, .src0q, .sp(.unord), ._ },
14594 .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ },
14595 } },
14596 }, .{
14597 .required_features = .{ .sse2, null, null, null },
14598 .src_constraints = .{
14599 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
14600 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
14601 .any,
14602 },
14603 .patterns = &.{
14604 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
14605 },
14606 .extra_temps = .{
14607 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
14608 .unused,
14609 .unused,
14610 .unused,
14611 .unused,
14612 .unused,
14613 .unused,
14614 .unused,
14615 .unused,
14616 },
14617 .dst_temps = .{.{ .ref = .src0 }},
14618 .each = .{ .once = &.{
14619 .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ },
14620 .{ ._, ._sd, .max, .tmp0x, .src0q, ._, ._ },
14621 .{ ._, ._sd, .cmp, .dst0x, .src0q, .sp(.ord), ._ },
14622 .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ },
14623 .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ },
14624 .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ },
14625 } },
14626 }, .{
14627 .required_features = .{ .sse, null, null, null },
14628 .src_constraints = .{
14629 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
14630 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
14631 .any,
14632 },
14633 .patterns = &.{
14634 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
14635 },
14636 .call_frame = .{ .alignment = .@"16" },
14637 .extra_temps = .{
14638 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmax" } } },
14639 .unused,
14640 .unused,
14641 .unused,
14642 .unused,
14643 .unused,
14644 .unused,
14645 .unused,
14646 .unused,
14647 },
14648 .dst_temps = .{.{ .ref = .src0 }},
14649 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
14650 .each = .{ .once = &.{
14651 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
14652 } },
14653 }, .{
14654 .required_features = .{ .avx, null, null, null },
14655 .src_constraints = .{
14656 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
14657 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
14658 .any,
14659 },
14660 .patterns = &.{
14661 .{ .src = .{ .to_sse, .to_sse, .none } },
14662 },
14663 .extra_temps = .{
14664 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
14665 .unused,
14666 .unused,
14667 .unused,
14668 .unused,
14669 .unused,
14670 .unused,
14671 .unused,
14672 .unused,
14673 },
14674 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
14675 .each = .{ .once = &.{
14676 .{ ._, .v_pd, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) },
14677 .{ ._, .v_pd, .max, .dst0x, .src1x, .src0x, ._ },
14678 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },
14679 } },
14680 }, .{
14681 .required_features = .{ .sse4_1, null, null, null },
14682 .src_constraints = .{
14683 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
14684 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
14685 .any,
14686 },
14687 .patterns = &.{
14688 .{ .src = .{ .{ .to_reg = .xmm0 }, .mem, .none } },
14689 .{ .src = .{ .mem, .{ .to_reg = .xmm0 }, .none }, .commute = .{ 0, 1 } },
14690 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } },
14691 },
14692 .dst_temps = .{.{ .rc = .sse }},
14693 .each = .{ .once = &.{
14694 .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ },
14695 .{ ._, ._pd, .max, .dst0x, .src0x, ._, ._ },
14696 .{ ._, ._pd, .cmp, .src0x, .src0x, .sp(.unord), ._ },
14697 .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ },
14698 } },
14699 }, .{
14700 .required_features = .{ .sse2, null, null, null },
14701 .src_constraints = .{
14702 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
14703 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
14704 .any,
14705 },
14706 .patterns = &.{
14707 .{ .src = .{ .to_mut_sse, .mem, .none } },
14708 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
14709 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
14710 },
14711 .extra_temps = .{
14712 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
14713 .unused,
14714 .unused,
14715 .unused,
14716 .unused,
14717 .unused,
14718 .unused,
14719 .unused,
14720 .unused,
14721 },
14722 .dst_temps = .{.{ .ref = .src0 }},
14723 .each = .{ .once = &.{
14724 .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ },
14725 .{ ._, ._pd, .max, .tmp0x, .src0x, ._, ._ },
14726 .{ ._, ._pd, .cmp, .dst0x, .src0x, .sp(.ord), ._ },
14727 .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ },
14728 .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ },
14729 .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ },
14730 } },
14731 }, .{
14732 .required_features = .{ .avx, null, null, null },
14733 .src_constraints = .{
14734 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
14735 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
14736 .any,
14737 },
14738 .patterns = &.{
14739 .{ .src = .{ .to_sse, .to_sse, .none } },
14740 },
14741 .extra_temps = .{
14742 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
14743 .unused,
14744 .unused,
14745 .unused,
14746 .unused,
14747 .unused,
14748 .unused,
14749 .unused,
14750 .unused,
14751 },
14752 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
14753 .each = .{ .once = &.{
14754 .{ ._, .v_pd, .cmp, .tmp0y, .src0y, .src0y, .vp(.unord) },
14755 .{ ._, .v_pd, .max, .dst0y, .src1y, .src0y, ._ },
14756 .{ ._, .v_pd, .blendv, .dst0y, .dst0y, .src1y, .tmp0y },
14757 } },
14758 }, .{
14759 .required_features = .{ .avx, null, null, null },
14760 .src_constraints = .{
14761 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
14762 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
14763 .any,
14764 },
14765 .patterns = &.{
14766 .{ .src = .{ .to_mem, .to_mem, .none } },
14767 },
14768 .extra_temps = .{
14769 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14770 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
14771 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
14772 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
14773 .unused,
14774 .unused,
14775 .unused,
14776 .unused,
14777 .unused,
14778 },
14779 .dst_temps = .{.mem},
14780 .clobbers = .{ .eflags = true },
14781 .each = .{ .once = &.{
14782 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
14783 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
14784 .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
14785 .{ ._, .v_pd, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },
14786 .{ ._, .v_pd, .max, .tmp1y, .tmp2y, .tmp1y, ._ },
14787 .{ ._, .v_pd, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },
14788 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
14789 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
14790 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14791 } },
14792 }, .{
14793 .required_features = .{ .sse4_1, null, null, null },
14794 .src_constraints = .{
14795 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
14796 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
14797 .any,
14798 },
14799 .patterns = &.{
14800 .{ .src = .{ .to_mem, .to_mem, .none } },
14801 },
14802 .extra_temps = .{
14803 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14804 .{ .type = .vector_2_f64, .kind = .{ .reg = .xmm0 } },
14805 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
14806 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
14807 .unused,
14808 .unused,
14809 .unused,
14810 .unused,
14811 .unused,
14812 },
14813 .dst_temps = .{.mem},
14814 .clobbers = .{ .eflags = true },
14815 .each = .{ .once = &.{
14816 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
14817 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
14818 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
14819 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
14820 .{ ._, ._pd, .max, .tmp3x, .tmp1x, ._, ._ },
14821 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ },
14822 .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
14823 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
14824 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
14825 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14826 } },
14827 }, .{
14828 .required_features = .{ .sse2, null, null, null },
14829 .src_constraints = .{
14830 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
14831 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
14832 .any,
14833 },
14834 .patterns = &.{
14835 .{ .src = .{ .to_mem, .to_mem, .none } },
14836 },
14837 .extra_temps = .{
14838 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14839 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
14840 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
14841 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
14842 .unused,
14843 .unused,
14844 .unused,
14845 .unused,
14846 .unused,
14847 },
14848 .dst_temps = .{.mem},
14849 .clobbers = .{ .eflags = true },
14850 .each = .{ .once = &.{
14851 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
14852 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
14853 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
14854 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
14855 .{ ._, ._pd, .max, .tmp3x, .tmp1x, ._, ._ },
14856 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ },
14857 .{ ._, ._pd, .@"and", .tmp3x, .tmp1x, ._, ._ },
14858 .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ },
14859 .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ },
14860 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
14861 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
14862 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14863 } },
14864 }, .{
14865 .required_features = .{ .sse, null, null, null },
14866 .src_constraints = .{
14867 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
14868 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
14869 .any,
14870 },
14871 .patterns = &.{
14872 .{ .src = .{ .to_mem, .to_mem, .none } },
14873 },
14874 .call_frame = .{ .alignment = .@"16" },
14875 .extra_temps = .{
14876 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14877 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
14878 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
14879 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmax" } } },
14880 .unused,
14881 .unused,
14882 .unused,
14883 .unused,
14884 .unused,
14885 },
14886 .dst_temps = .{.mem},
14887 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
14888 .each = .{ .once = &.{
14889 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
14890 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
14891 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },
14892 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
14893 .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_size), ._, ._ },
14894 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
14895 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
14896 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
14897 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14898 } },
14899 }, .{
14900 .required_features = .{ .x87, .cmov, null, null },
14901 .src_constraints = .{
14902 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
14903 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
14904 .any,
14905 },
14906 .patterns = &.{
14907 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
14908 .{ .src = .{ .mem, .to_x87, .none } },
14909 .{ .src = .{ .to_x87, .to_x87, .none } },
14910 },
14911 .extra_temps = .{
14912 .{ .type = .f80, .kind = .{ .reg = .st7 } },
14913 .unused,
14914 .unused,
14915 .unused,
14916 .unused,
14917 .unused,
14918 .unused,
14919 .unused,
14920 .unused,
14921 },
14922 .dst_temps = .{.{ .mut_rc = .{ .ref = .src1, .rc = .x87 } }},
14923 .clobbers = .{ .eflags = true },
14924 .each = .{ .once = &.{
14925 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
14926 .{ ._, .f_, .ucomi, .tmp0t, .tmp0t, ._, ._ },
14927 .{ ._, .f_u, .cmov, .tmp0t, .src1t, ._, ._ },
14928 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
14929 .{ ._, .f_, .ucomi, .tmp0t, .src1t, ._, ._ },
14930 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
14931 .{ ._, .f_nb, .cmov, .tmp0t, .src1t, ._, ._ },
14932 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
14933 } },
14934 }, .{
14935 .required_features = .{ .sahf, .x87, null, null },
14936 .src_constraints = .{
14937 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
14938 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
14939 .any,
14940 },
14941 .patterns = &.{
14942 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
14943 .{ .src = .{ .mem, .to_x87, .none } },
14944 .{ .src = .{ .to_x87, .to_x87, .none } },
14945 },
14946 .extra_temps = .{
14947 .{ .type = .f80, .kind = .{ .reg = .st7 } },
14948 .{ .type = .u8, .kind = .{ .reg = .ah } },
14949 .unused,
14950 .unused,
14951 .unused,
14952 .unused,
14953 .unused,
14954 .unused,
14955 .unused,
14956 },
14957 .dst_temps = .{.{ .mut_rc = .{ .ref = .src1, .rc = .x87 } }},
14958 .clobbers = .{ .eflags = true },
14959 .each = .{ .once = &.{
14960 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
14961 .{ ._, .f_, .ucom, .tmp0t, ._, ._, ._ },
14962 .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ },
14963 .{ ._, ._, .sahf, ._, ._, ._, ._ },
14964 .{ ._, ._p, .j, .@"0f", ._, ._, ._ },
14965 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
14966 .{ ._, .f_, .ucom, .src1t, ._, ._, ._ },
14967 .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ },
14968 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
14969 .{ ._, ._, .sahf, ._, ._, ._, ._ },
14970 .{ ._, ._b, .j, .@"1f", ._, ._, ._ },
14971 .{ .@"0:", .f_p, .st, .tmp0t, ._, ._, ._ },
14972 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
14973 .{ .@"1:", .f_p, .st, .dst0t, ._, ._, ._ },
14974 } },
14975 }, .{
14976 .required_features = .{ .x87, null, null, null },
14977 .src_constraints = .{
14978 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
14979 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
14980 .any,
14981 },
14982 .patterns = &.{
14983 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
14984 .{ .src = .{ .mem, .to_x87, .none } },
14985 .{ .src = .{ .to_x87, .to_x87, .none } },
14986 },
14987 .extra_temps = .{
14988 .{ .type = .f80, .kind = .{ .reg = .st7 } },
14989 .{ .type = .u8, .kind = .{ .reg = .ah } },
14990 .unused,
14991 .unused,
14992 .unused,
14993 .unused,
14994 .unused,
14995 .unused,
14996 .unused,
14997 },
14998 .dst_temps = .{.{ .mut_rc = .{ .ref = .src1, .rc = .x87 } }},
14999 .clobbers = .{ .eflags = true },
15000 .each = .{ .once = &.{
15001 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
15002 .{ ._, .f_, .xam, ._, ._, ._, ._ },
15003 .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ },
15004 .{ ._, ._, .@"test", .tmp1b, .si(0b1_000_100), ._, ._ },
15005 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
15006 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
15007 .{ ._, .f_, .ucom, .src1t, ._, ._, ._ },
15008 .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ },
15009 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
15010 .{ ._, ._, .@"test", .tmp1b, .si(0b0_000_001), ._, ._ },
15011 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
15012 .{ .@"0:", .f_p, .st, .tmp0t, ._, ._, ._ },
15013 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
15014 .{ .@"1:", .f_p, .st, .dst0t, ._, ._, ._ },
15015 } },
15016 }, .{
15017 .required_features = .{ .x87, .cmov, null, null },
15018 .src_constraints = .{
15019 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
15020 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
15021 .any,
15022 },
15023 .patterns = &.{
15024 .{ .src = .{ .to_mem, .to_mem, .none } },
15025 },
15026 .extra_temps = .{
15027 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
15028 .{ .type = .f80, .kind = .{ .reg = .st6 } },
15029 .{ .type = .f80, .kind = .{ .reg = .st7 } },
15030 .unused,
15031 .unused,
15032 .unused,
15033 .unused,
15034 .unused,
15035 .unused,
15036 },
15037 .dst_temps = .{.mem},
15038 .clobbers = .{ .eflags = true },
15039 .each = .{ .once = &.{
15040 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
15041 .{ .@"0:", .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
15042 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
15043 .{ ._, .f_, .ucomi, .tmp1t, .tmp1t, ._, ._ },
15044 .{ ._, .f_u, .cmov, .tmp1t, .tmp2t, ._, ._ },
15045 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
15046 .{ ._, .f_, .ucomi, .tmp1t, .tmp2t, ._, ._ },
15047 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
15048 .{ ._, .f_nb, .cmov, .tmp1t, .tmp2t, ._, ._ },
15049 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_size), ._, ._, ._ },
15050 .{ ._, .f_p, .st, .tmp2t, ._, ._, ._ },
15051 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
15052 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
15053 } },
15054 }, .{
15055 .required_features = .{ .sahf, .x87, null, null },
15056 .src_constraints = .{
15057 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
15058 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
15059 .any,
15060 },
15061 .patterns = &.{
15062 .{ .src = .{ .to_mem, .to_mem, .none } },
15063 },
15064 .extra_temps = .{
15065 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
15066 .{ .type = .f80, .kind = .{ .reg = .st6 } },
15067 .{ .type = .f80, .kind = .{ .reg = .st7 } },
15068 .{ .type = .u8, .kind = .{ .reg = .ah } },
15069 .unused,
15070 .unused,
15071 .unused,
15072 .unused,
15073 .unused,
15074 },
15075 .dst_temps = .{.mem},
15076 .clobbers = .{ .eflags = true },
15077 .each = .{ .once = &.{
15078 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
15079 .{ .@"0:", .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
15080 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
15081 .{ ._, .f_, .ucom, .tmp1t, ._, ._, ._ },
15082 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
15083 .{ ._, ._, .sahf, ._, ._, ._, ._ },
15084 .{ ._, ._p, .j, .@"1f", ._, ._, ._ },
15085 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
15086 .{ ._, .f_, .ucom, .tmp2t, ._, ._, ._ },
15087 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
15088 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
15089 .{ ._, ._, .sahf, ._, ._, ._, ._ },
15090 .{ ._, ._b, .j, .@"2f", ._, ._, ._ },
15091 .{ .@"1:", .f_p, .st, .tmp1t, ._, ._, ._ },
15092 .{ ._, .f_, .ld, .tmp2t, ._, ._, ._ },
15093 .{ .@"2:", .f_p, .st, .memia(.dst0t, .tmp0, .add_size), ._, ._, ._ },
15094 .{ ._, .f_p, .st, .tmp2t, ._, ._, ._ },
15095 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
15096 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
15097 } },
15098 }, .{
15099 .required_features = .{ .x87, null, null, null },
15100 .src_constraints = .{
15101 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
15102 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
15103 .any,
15104 },
15105 .patterns = &.{
15106 .{ .src = .{ .to_mem, .to_mem, .none } },
15107 },
15108 .extra_temps = .{
15109 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
15110 .{ .type = .f80, .kind = .{ .reg = .st6 } },
15111 .{ .type = .f80, .kind = .{ .reg = .st7 } },
15112 .{ .type = .u8, .kind = .{ .reg = .ah } },
15113 .unused,
15114 .unused,
15115 .unused,
15116 .unused,
15117 .unused,
15118 },
15119 .dst_temps = .{.mem},
15120 .clobbers = .{ .eflags = true },
15121 .each = .{ .once = &.{
15122 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
15123 .{ .@"0:", .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
15124 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
15125 .{ ._, .f_, .xam, ._, ._, ._, ._ },
15126 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
15127 .{ ._, ._, .@"test", .tmp3b, .si(0b1_000_100), ._, ._ },
15128 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
15129 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
15130 .{ ._, .f_, .ucom, .tmp2t, ._, ._, ._ },
15131 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
15132 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
15133 .{ ._, ._, .@"test", .tmp3b, .si(0b0_000_001), ._, ._ },
15134 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
15135 .{ .@"1:", .f_p, .st, .tmp1t, ._, ._, ._ },
15136 .{ ._, .f_, .ld, .tmp2t, ._, ._, ._ },
15137 .{ .@"2:", .f_p, .st, .memia(.dst0t, .tmp0, .add_size), ._, ._, ._ },
15138 .{ ._, .f_p, .st, .tmp2t, ._, ._, ._ },
15139 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
15140 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
15141 } },
15142 }, .{
15143 .required_features = .{ .sse, null, null, null },
15144 .src_constraints = .{
15145 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
15146 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
15147 .any,
15148 },
15149 .patterns = &.{
15150 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
15151 },
15152 .call_frame = .{ .alignment = .@"16" },
15153 .extra_temps = .{
15154 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
15155 .unused,
15156 .unused,
15157 .unused,
15158 .unused,
15159 .unused,
15160 .unused,
15161 .unused,
15162 .unused,
15163 },
15164 .dst_temps = .{.{ .ref = .src0 }},
15165 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
15166 .each = .{ .once = &.{
15167 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
15168 } },
15169 }, .{
15170 .required_features = .{ .avx, null, null, null },
15171 .src_constraints = .{
15172 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
15173 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
15174 .any,
15175 },
15176 .patterns = &.{
15177 .{ .src = .{ .to_mem, .to_mem, .none } },
15178 },
15179 .call_frame = .{ .alignment = .@"16" },
15180 .extra_temps = .{
15181 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
15182 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
15183 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
15184 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
15185 .unused,
15186 .unused,
15187 .unused,
15188 .unused,
15189 .unused,
15190 },
15191 .dst_temps = .{.mem},
15192 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
15193 .each = .{ .once = &.{
15194 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
15195 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
15196 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
15197 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
15198 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
15199 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
15200 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
15201 } },
15202 }, .{
15203 .required_features = .{ .sse2, null, null, null },
15204 .src_constraints = .{
15205 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
15206 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
15207 .any,
15208 },
15209 .patterns = &.{
15210 .{ .src = .{ .to_mem, .to_mem, .none } },
15211 },
15212 .call_frame = .{ .alignment = .@"16" },
15213 .extra_temps = .{
15214 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
15215 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
15216 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
15217 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
15218 .unused,
15219 .unused,
15220 .unused,
15221 .unused,
15222 .unused,
15223 },
15224 .dst_temps = .{.mem},
15225 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
15226 .each = .{ .once = &.{
15227 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
15228 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
15229 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
15230 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
15231 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
15232 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
15233 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
15234 } },
15235 }, .{
15236 .required_features = .{ .sse, null, null, null },
15237 .src_constraints = .{
15238 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
15239 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
15240 .any,
15241 },
15242 .patterns = &.{
15243 .{ .src = .{ .to_mem, .to_mem, .none } },
15244 },
15245 .call_frame = .{ .alignment = .@"16" },
15246 .extra_temps = .{
15247 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
15248 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
15249 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
15250 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
15251 .unused,
15252 .unused,
15253 .unused,
15254 .unused,
15255 .unused,
15256 },
15257 .dst_temps = .{.mem},
15258 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
15259 .each = .{ .once = &.{
15260 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
15261 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
15262 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
15263 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
15264 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
15265 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
15266 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
15267 } },
15268 } }) catch |err| switch (err) {
15269 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
15270 @tagName(air_tag),
15271 cg.typeOf(bin_op.lhs).fmt(pt),
15272 ops[0].tracking(cg),
15273 ops[1].tracking(cg),
15274 }),
15275 else => |e| return e,
15276 };
15277 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
15278 },
15279 .min => |air_tag| if (use_old) try cg.airBinOp(inst, air_tag) else {
15280 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
15281 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
15282 var res: [1]Temp = undefined;
15283 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
15284 .required_features = .{ .cmov, null, null, null },
15285 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any },
15286 .patterns = &.{
15287 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
15288 },
15289 .dst_temps = .{.{ .ref = .src0 }},
15290 .clobbers = .{ .eflags = true },
15291 .each = .{ .once = &.{
15292 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
15293 .{ ._, ._ge, .cmov, .dst0d, .src1d, ._, ._ },
15294 } },
15295 }, .{
15296 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any },
15297 .patterns = &.{
15298 .{ .src = .{ .to_mut_gpr, .mem, .none } },
15299 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15300 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
15301 },
15302 .dst_temps = .{.{ .ref = .src0 }},
15303 .clobbers = .{ .eflags = true },
15304 .each = .{ .once = &.{
15305 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
15306 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },
15307 .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ },
15308 } },
15309 }, .{
15310 .required_features = .{ .cmov, null, null, null },
15311 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
15312 .patterns = &.{
15313 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
15314 },
15315 .dst_temps = .{.{ .ref = .src0 }},
15316 .clobbers = .{ .eflags = true },
15317 .each = .{ .once = &.{
15318 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
15319 .{ ._, ._ae, .cmov, .dst0d, .src1d, ._, ._ },
15320 } },
15321 }, .{
15322 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
15323 .patterns = &.{
15324 .{ .src = .{ .to_mut_gpr, .mem, .none } },
15325 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15326 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
15327 },
15328 .dst_temps = .{.{ .ref = .src0 }},
15329 .clobbers = .{ .eflags = true },
15330 .each = .{ .once = &.{
15331 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
15332 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
15333 .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ },
15334 } },
15335 }, .{
15336 .required_features = .{ .cmov, null, null, null },
15337 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any },
15338 .patterns = &.{
15339 .{ .src = .{ .to_mut_gpr, .mem, .none } },
15340 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15341 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
15342 },
15343 .dst_temps = .{.{ .ref = .src0 }},
15344 .clobbers = .{ .eflags = true },
15345 .each = .{ .once = &.{
15346 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
15347 .{ ._, ._ge, .cmov, .dst0w, .src1w, ._, ._ },
15348 } },
15349 }, .{
15350 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any },
15351 .patterns = &.{
15352 .{ .src = .{ .to_mut_gpr, .mem, .none } },
15353 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15354 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
15355 },
15356 .dst_temps = .{.{ .ref = .src0 }},
15357 .clobbers = .{ .eflags = true },
15358 .each = .{ .once = &.{
15359 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
15360 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },
15361 .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ },
15362 } },
15363 }, .{
15364 .required_features = .{ .cmov, null, null, null },
15365 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
15366 .patterns = &.{
15367 .{ .src = .{ .to_mut_gpr, .mem, .none } },
15368 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15369 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
15370 },
15371 .dst_temps = .{.{ .ref = .src0 }},
15372 .clobbers = .{ .eflags = true },
15373 .each = .{ .once = &.{
15374 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
15375 .{ ._, ._ae, .cmov, .dst0w, .src1w, ._, ._ },
15376 } },
15377 }, .{
15378 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
15379 .patterns = &.{
15380 .{ .src = .{ .to_mut_gpr, .mem, .none } },
15381 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15382 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
15383 },
15384 .dst_temps = .{.{ .ref = .src0 }},
15385 .clobbers = .{ .eflags = true },
15386 .each = .{ .once = &.{
15387 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
15388 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
15389 .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ },
15390 } },
15391 }, .{
15392 .required_features = .{ .cmov, null, null, null },
15393 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any },
15394 .patterns = &.{
15395 .{ .src = .{ .to_mut_gpr, .mem, .none } },
15396 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15397 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
15398 },
15399 .dst_temps = .{.{ .ref = .src0 }},
15400 .clobbers = .{ .eflags = true },
15401 .each = .{ .once = &.{
15402 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
15403 .{ ._, ._ge, .cmov, .dst0d, .src1d, ._, ._ },
15404 } },
15405 }, .{
15406 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any },
15407 .patterns = &.{
15408 .{ .src = .{ .to_mut_gpr, .mem, .none } },
15409 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15410 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
15411 },
15412 .dst_temps = .{.{ .ref = .src0 }},
15413 .clobbers = .{ .eflags = true },
15414 .each = .{ .once = &.{
15415 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
15416 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },
15417 .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ },
15418 } },
15419 }, .{
15420 .required_features = .{ .cmov, null, null, null },
15421 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any },
15422 .patterns = &.{
15423 .{ .src = .{ .to_mut_gpr, .mem, .none } },
15424 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15425 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
15426 },
15427 .dst_temps = .{.{ .ref = .src0 }},
15428 .clobbers = .{ .eflags = true },
15429 .each = .{ .once = &.{
15430 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
15431 .{ ._, ._ae, .cmov, .dst0d, .src1d, ._, ._ },
15432 } },
15433 }, .{
15434 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any },
15435 .patterns = &.{
15436 .{ .src = .{ .to_mut_gpr, .mem, .none } },
15437 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15438 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
15439 },
15440 .dst_temps = .{.{ .ref = .src0 }},
15441 .clobbers = .{ .eflags = true },
15442 .each = .{ .once = &.{
15443 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
15444 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
15445 .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ },
15446 } },
15447 }, .{
15448 .required_features = .{ .@"64bit", .cmov, null, null },
15449 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any },
15450 .patterns = &.{
15451 .{ .src = .{ .to_mut_gpr, .mem, .none } },
15452 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15453 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
15454 },
15455 .dst_temps = .{.{ .ref = .src0 }},
15456 .clobbers = .{ .eflags = true },
15457 .each = .{ .once = &.{
15458 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
15459 .{ ._, ._ge, .cmov, .dst0q, .src1q, ._, ._ },
15460 } },
15461 }, .{
15462 .required_features = .{ .@"64bit", null, null, null },
15463 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any },
15464 .patterns = &.{
15465 .{ .src = .{ .to_mut_gpr, .mem, .none } },
15466 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15467 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
15468 },
15469 .dst_temps = .{.{ .ref = .src0 }},
15470 .clobbers = .{ .eflags = true },
15471 .each = .{ .once = &.{
15472 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
15473 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },
15474 .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ },
15475 } },
15476 }, .{
15477 .required_features = .{ .@"64bit", .cmov, null, null },
15478 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any },
15479 .patterns = &.{
15480 .{ .src = .{ .to_mut_gpr, .mem, .none } },
15481 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15482 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
15483 },
15484 .dst_temps = .{.{ .ref = .src0 }},
15485 .clobbers = .{ .eflags = true },
15486 .each = .{ .once = &.{
15487 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
15488 .{ ._, ._ae, .cmov, .dst0q, .src1q, ._, ._ },
15489 } },
15490 }, .{
15491 .required_features = .{ .@"64bit", null, null, null },
15492 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any },
15493 .patterns = &.{
15494 .{ .src = .{ .to_mut_gpr, .mem, .none } },
15495 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15496 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
15497 },
15498 .dst_temps = .{.{ .ref = .src0 }},
15499 .clobbers = .{ .eflags = true },
15500 .each = .{ .once = &.{
15501 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
15502 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
15503 .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ },
15504 } },
15505 }, .{
15506 .required_features = .{ .@"64bit", .cmov, null, null },
15507 .src_constraints = .{ .any_signed_int, .any_signed_int, .any },
15508 .patterns = &.{
15509 .{ .src = .{ .to_mem, .to_mem, .none } },
15510 },
15511 .extra_temps = .{
15512 .{ .type = .isize, .kind = .{ .reg = .rsi } },
15513 .{ .type = .u64, .kind = .{ .reg = .rdi } },
15514 .{ .type = .u64, .kind = .{ .reg = .rcx } },
15515 .unused,
15516 .unused,
15517 .unused,
15518 .unused,
15519 .unused,
15520 .unused,
15521 },
15522 .dst_temps = .{.mem},
15523 .clobbers = .{ .eflags = true },
15524 .each = .{ .once = &.{
15525 .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ },
15526 .{ ._, ._c, .cl, ._, ._, ._, ._ },
15527 .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
15528 .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
15529 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
15530 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
15531 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
15532 .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ },
15533 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
15534 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
15535 .{ ._, ._ge, .cmov, .tmp0p, .tmp1p, ._, ._ },
15536 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
15537 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
15538 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
15539 } },
15540 }, .{
15541 .required_features = .{ .@"64bit", null, null, null },
15542 .src_constraints = .{ .any_signed_int, .any_signed_int, .any },
15543 .patterns = &.{
15544 .{ .src = .{ .to_mem, .to_mem, .none } },
15545 },
15546 .extra_temps = .{
15547 .{ .type = .isize, .kind = .{ .reg = .rsi } },
15548 .{ .type = .u64, .kind = .{ .reg = .rdi } },
15549 .{ .type = .u64, .kind = .{ .reg = .rcx } },
15550 .unused,
15551 .unused,
15552 .unused,
15553 .unused,
15554 .unused,
15555 .unused,
15556 },
15557 .dst_temps = .{.mem},
15558 .clobbers = .{ .eflags = true },
15559 .each = .{ .once = &.{
15560 .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ },
15561 .{ ._, ._c, .cl, ._, ._, ._, ._ },
15562 .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
15563 .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
15564 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
15565 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
15566 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
15567 .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ },
15568 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
15569 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },
15570 .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ },
15571 .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
15572 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
15573 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
15574 } },
15575 }, .{
15576 .required_features = .{ .@"64bit", .cmov, null, null },
15577 .src_constraints = .{ .any_unsigned_int, .any_unsigned_int, .any },
15578 .patterns = &.{
15579 .{ .src = .{ .to_mem, .to_mem, .none } },
15580 },
15581 .extra_temps = .{
15582 .{ .type = .isize, .kind = .{ .reg = .rsi } },
15583 .{ .type = .u64, .kind = .{ .reg = .rdi } },
15584 .{ .type = .u64, .kind = .{ .reg = .rcx } },
15585 .unused,
15586 .unused,
15587 .unused,
15588 .unused,
15589 .unused,
15590 .unused,
15591 },
15592 .dst_temps = .{.mem},
15593 .clobbers = .{ .eflags = true },
15594 .each = .{ .once = &.{
15595 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ },
15596 .{ ._, ._c, .cl, ._, ._, ._, ._ },
15597 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ },
15598 .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ },
15599 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
15600 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
15601 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
15602 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
15603 .{ ._, ._ae, .cmov, .tmp0p, .tmp1p, ._, ._ },
15604 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
15605 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
15606 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
15607 } },
15608 }, .{
15609 .required_features = .{ .@"64bit", null, null, null },
15610 .src_constraints = .{ .any_unsigned_int, .any_unsigned_int, .any },
15611 .patterns = &.{
15612 .{ .src = .{ .to_mem, .to_mem, .none } },
15613 },
15614 .extra_temps = .{
15615 .{ .type = .isize, .kind = .{ .reg = .rsi } },
15616 .{ .type = .u64, .kind = .{ .reg = .rdi } },
15617 .{ .type = .u64, .kind = .{ .reg = .rcx } },
15618 .unused,
15619 .unused,
15620 .unused,
15621 .unused,
15622 .unused,
15623 .unused,
15624 },
15625 .dst_temps = .{.mem},
15626 .clobbers = .{ .eflags = true },
15627 .each = .{ .once = &.{
15628 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ },
15629 .{ ._, ._c, .cl, ._, ._, ._, ._ },
15630 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ },
15631 .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ },
15632 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
15633 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
15634 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
15635 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
15636 .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ },
15637 .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
15638 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
15639 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
15640 } },
15641 }, .{
15642 .required_features = .{ .avx, null, null, null },
15643 .src_constraints = .{
15644 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
15645 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
15646 .any,
15647 },
15648 .patterns = &.{
15649 .{ .src = .{ .to_sse, .mem, .none } },
15650 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
15651 .{ .src = .{ .to_sse, .to_sse, .none } },
15652 },
15653 .dst_temps = .{.{ .rc = .sse }},
15654 .each = .{ .once = &.{
15655 .{ ._, .vp_b, .mins, .dst0x, .src0x, .src1x, ._ },
15656 } },
15657 }, .{
15658 .required_features = .{ .sse4_1, null, null, null },
15659 .src_constraints = .{
15660 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
15661 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
15662 .any,
15663 },
15664 .patterns = &.{
15665 .{ .src = .{ .to_mut_sse, .mem, .none } },
15666 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
15667 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
15668 },
15669 .dst_temps = .{.{ .ref = .src0 }},
15670 .each = .{ .once = &.{
15671 .{ ._, .p_b, .mins, .dst0x, .src1x, ._, ._ },
15672 } },
15673 }, .{
15674 .required_features = .{ .sse2, null, null, null },
15675 .src_constraints = .{
15676 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
15677 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
15678 .any,
15679 },
15680 .patterns = &.{
15681 .{ .src = .{ .to_mut_sse, .mem, .none } },
15682 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
15683 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
15684 },
15685 .dst_temps = .{.{ .rc = .sse }},
15686 .each = .{ .once = &.{
15687 .{ ._, ._dqa, .mov, .dst0x, .src1x, ._, ._ },
15688 .{ ._, .p_b, .cmpgt, .dst0x, .src0x, ._, ._ },
15689 .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ },
15690 .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ },
15691 .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ },
15692 } },
15693 }, .{
15694 .required_features = .{ .avx2, null, null, null },
15695 .src_constraints = .{
15696 .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } },
15697 .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } },
15698 .any,
15699 },
15700 .patterns = &.{
15701 .{ .src = .{ .to_sse, .mem, .none } },
15702 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
15703 .{ .src = .{ .to_sse, .to_sse, .none } },
15704 },
15705 .dst_temps = .{.{ .rc = .sse }},
15706 .each = .{ .once = &.{
15707 .{ ._, .vp_b, .mins, .dst0y, .src0y, .src1y, ._ },
15708 } },
15709 }, .{
15710 .required_features = .{ .avx2, null, null, null },
15711 .src_constraints = .{
15712 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } },
15713 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } },
15714 .any,
15715 },
7097 .patterns = &.{15716 .patterns = &.{
7098 .{ .src = .{ .to_mem, .to_mem } },15717 .{ .src = .{ .to_mem, .to_mem, .none } },
7099 },15718 },
7100 .extra_temps = .{15719 .extra_temps = .{
7101 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15720 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7123,9 +15742,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7123,9 +15742,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7123 .src_constraints = .{15742 .src_constraints = .{
7124 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },15743 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
7125 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },15744 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
15745 .any,
7126 },15746 },
7127 .patterns = &.{15747 .patterns = &.{
7128 .{ .src = .{ .to_mem, .to_mem } },15748 .{ .src = .{ .to_mem, .to_mem, .none } },
7129 },15749 },
7130 .extra_temps = .{15750 .extra_temps = .{
7131 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15751 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7153,9 +15773,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7153,9 +15773,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7153 .src_constraints = .{15773 .src_constraints = .{
7154 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },15774 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
7155 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },15775 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
15776 .any,
7156 },15777 },
7157 .patterns = &.{15778 .patterns = &.{
7158 .{ .src = .{ .to_mem, .to_mem } },15779 .{ .src = .{ .to_mem, .to_mem, .none } },
7159 },15780 },
7160 .extra_temps = .{15781 .extra_temps = .{
7161 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15782 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7183,9 +15804,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7183,9 +15804,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7183 .src_constraints = .{15804 .src_constraints = .{
7184 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },15805 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
7185 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },15806 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
15807 .any,
7186 },15808 },
7187 .patterns = &.{15809 .patterns = &.{
7188 .{ .src = .{ .to_mem, .to_mem } },15810 .{ .src = .{ .to_mem, .to_mem, .none } },
7189 },15811 },
7190 .extra_temps = .{15812 .extra_temps = .{
7191 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15813 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7217,9 +15839,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7217,9 +15839,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7217 .src_constraints = .{15839 .src_constraints = .{
7218 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },15840 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
7219 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },15841 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
15842 .any,
7220 },15843 },
7221 .patterns = &.{15844 .patterns = &.{
7222 .{ .src = .{ .to_mem, .to_mem } },15845 .{ .src = .{ .to_mem, .to_mem, .none } },
7223 },15846 },
7224 .extra_temps = .{15847 .extra_temps = .{
7225 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15848 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7249,9 +15872,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7249,9 +15872,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7249 .src_constraints = .{15872 .src_constraints = .{
7250 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },15873 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
7251 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },15874 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
15875 .any,
7252 },15876 },
7253 .patterns = &.{15877 .patterns = &.{
7254 .{ .src = .{ .to_mem, .to_mem } },15878 .{ .src = .{ .to_mem, .to_mem, .none } },
7255 },15879 },
7256 .extra_temps = .{15880 .extra_temps = .{
7257 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15881 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7281,9 +15905,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7281,9 +15905,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7281 .src_constraints = .{15905 .src_constraints = .{
7282 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },15906 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
7283 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },15907 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
15908 .any,
7284 },15909 },
7285 .patterns = &.{15910 .patterns = &.{
7286 .{ .src = .{ .to_mem, .to_mem } },15911 .{ .src = .{ .to_mem, .to_mem, .none } },
7287 },15912 },
7288 .extra_temps = .{15913 .extra_temps = .{
7289 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15914 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7312,9 +15937,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7312,9 +15937,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7312 .src_constraints = .{15937 .src_constraints = .{
7313 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },15938 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
7314 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },15939 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
15940 .any,
7315 },15941 },
7316 .patterns = &.{15942 .patterns = &.{
7317 .{ .src = .{ .to_mem, .to_mem } },15943 .{ .src = .{ .to_mem, .to_mem, .none } },
7318 },15944 },
7319 .extra_temps = .{15945 .extra_temps = .{
7320 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15946 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7344,11 +15970,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7344,11 +15970,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7344 .src_constraints = .{15970 .src_constraints = .{
7345 .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } },15971 .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } },
7346 .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } },15972 .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } },
15973 .any,
7347 },15974 },
7348 .patterns = &.{15975 .patterns = &.{
7349 .{ .src = .{ .to_mut_mmx, .mem } },15976 .{ .src = .{ .to_mut_mmx, .mem, .none } },
7350 .{ .src = .{ .mem, .to_mut_mmx }, .commute = .{ 0, 1 } },15977 .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } },
7351 .{ .src = .{ .to_mut_mmx, .to_mmx } },15978 .{ .src = .{ .to_mut_mmx, .to_mmx, .none } },
7352 },15979 },
7353 .dst_temps = .{.{ .ref = .src0 }},15980 .dst_temps = .{.{ .ref = .src0 }},
7354 .each = .{ .once = &.{15981 .each = .{ .once = &.{
...@@ -7359,11 +15986,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7359,11 +15986,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7359 .src_constraints = .{15986 .src_constraints = .{
7360 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },15987 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
7361 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },15988 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
15989 .any,
7362 },15990 },
7363 .patterns = &.{15991 .patterns = &.{
7364 .{ .src = .{ .to_sse, .mem } },15992 .{ .src = .{ .to_sse, .mem, .none } },
7365 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },15993 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
7366 .{ .src = .{ .to_sse, .to_sse } },15994 .{ .src = .{ .to_sse, .to_sse, .none } },
7367 },15995 },
7368 .dst_temps = .{.{ .rc = .sse }},15996 .dst_temps = .{.{ .rc = .sse }},
7369 .each = .{ .once = &.{15997 .each = .{ .once = &.{
...@@ -7374,11 +16002,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7374,11 +16002,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7374 .src_constraints = .{16002 .src_constraints = .{
7375 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },16003 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
7376 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },16004 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
16005 .any,
7377 },16006 },
7378 .patterns = &.{16007 .patterns = &.{
7379 .{ .src = .{ .to_mut_sse, .mem } },16008 .{ .src = .{ .to_mut_sse, .mem, .none } },
7380 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },16009 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
7381 .{ .src = .{ .to_mut_sse, .to_sse } },16010 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
7382 },16011 },
7383 .dst_temps = .{.{ .ref = .src0 }},16012 .dst_temps = .{.{ .ref = .src0 }},
7384 .each = .{ .once = &.{16013 .each = .{ .once = &.{
...@@ -7389,11 +16018,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7389,11 +16018,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7389 .src_constraints = .{16018 .src_constraints = .{
7390 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } },16019 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
7391 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } },16020 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
16021 .any,
7392 },16022 },
7393 .patterns = &.{16023 .patterns = &.{
7394 .{ .src = .{ .to_sse, .mem } },16024 .{ .src = .{ .to_sse, .mem, .none } },
7395 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },16025 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
7396 .{ .src = .{ .to_sse, .to_sse } },16026 .{ .src = .{ .to_sse, .to_sse, .none } },
7397 },16027 },
7398 .dst_temps = .{.{ .rc = .sse }},16028 .dst_temps = .{.{ .rc = .sse }},
7399 .each = .{ .once = &.{16029 .each = .{ .once = &.{
...@@ -7404,9 +16034,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7404,9 +16034,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7404 .src_constraints = .{16034 .src_constraints = .{
7405 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } },16035 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
7406 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } },16036 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
16037 .any,
7407 },16038 },
7408 .patterns = &.{16039 .patterns = &.{
7409 .{ .src = .{ .to_mem, .to_mem } },16040 .{ .src = .{ .to_mem, .to_mem, .none } },
7410 },16041 },
7411 .extra_temps = .{16042 .extra_temps = .{
7412 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16043 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7434,9 +16065,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7434,9 +16065,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7434 .src_constraints = .{16065 .src_constraints = .{
7435 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },16066 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
7436 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },16067 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
16068 .any,
7437 },16069 },
7438 .patterns = &.{16070 .patterns = &.{
7439 .{ .src = .{ .to_mem, .to_mem } },16071 .{ .src = .{ .to_mem, .to_mem, .none } },
7440 },16072 },
7441 .extra_temps = .{16073 .extra_temps = .{
7442 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16074 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7464,9 +16096,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7464,9 +16096,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7464 .src_constraints = .{16096 .src_constraints = .{
7465 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },16097 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
7466 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },16098 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
16099 .any,
7467 },16100 },
7468 .patterns = &.{16101 .patterns = &.{
7469 .{ .src = .{ .to_mem, .to_mem } },16102 .{ .src = .{ .to_mem, .to_mem, .none } },
7470 },16103 },
7471 .extra_temps = .{16104 .extra_temps = .{
7472 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16105 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7494,9 +16127,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7494,9 +16127,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7494 .src_constraints = .{16127 .src_constraints = .{
7495 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },16128 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
7496 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },16129 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
16130 .any,
7497 },16131 },
7498 .patterns = &.{16132 .patterns = &.{
7499 .{ .src = .{ .to_mem, .to_mem } },16133 .{ .src = .{ .to_mem, .to_mem, .none } },
7500 },16134 },
7501 .extra_temps = .{16135 .extra_temps = .{
7502 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16136 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7526,9 +16160,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7526,9 +16160,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7526 .src_constraints = .{16160 .src_constraints = .{
7527 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },16161 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
7528 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },16162 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
16163 .any,
7529 },16164 },
7530 .patterns = &.{16165 .patterns = &.{
7531 .{ .src = .{ .to_mem, .to_mem } },16166 .{ .src = .{ .to_mem, .to_mem, .none } },
7532 },16167 },
7533 .extra_temps = .{16168 .extra_temps = .{
7534 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16169 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7558,9 +16193,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7558,9 +16193,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7558 .src_constraints = .{16193 .src_constraints = .{
7559 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },16194 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
7560 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },16195 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
16196 .any,
7561 },16197 },
7562 .patterns = &.{16198 .patterns = &.{
7563 .{ .src = .{ .to_mem, .to_mem } },16199 .{ .src = .{ .to_mem, .to_mem, .none } },
7564 },16200 },
7565 .extra_temps = .{16201 .extra_temps = .{
7566 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16202 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7589,9 +16225,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7589,9 +16225,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7589 .src_constraints = .{16225 .src_constraints = .{
7590 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },16226 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
7591 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },16227 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
16228 .any,
7592 },16229 },
7593 .patterns = &.{16230 .patterns = &.{
7594 .{ .src = .{ .to_mem, .to_mem } },16231 .{ .src = .{ .to_mem, .to_mem, .none } },
7595 },16232 },
7596 .extra_temps = .{16233 .extra_temps = .{
7597 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16234 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7621,11 +16258,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7621,11 +16258,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7621 .src_constraints = .{16258 .src_constraints = .{
7622 .{ .scalar_signed_int = .{ .of = .qword, .is = .word } },16259 .{ .scalar_signed_int = .{ .of = .qword, .is = .word } },
7623 .{ .scalar_signed_int = .{ .of = .qword, .is = .word } },16260 .{ .scalar_signed_int = .{ .of = .qword, .is = .word } },
16261 .any,
7624 },16262 },
7625 .patterns = &.{16263 .patterns = &.{
7626 .{ .src = .{ .to_mut_mmx, .mem } },16264 .{ .src = .{ .to_mut_mmx, .mem, .none } },
7627 .{ .src = .{ .mem, .to_mut_mmx }, .commute = .{ 0, 1 } },16265 .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } },
7628 .{ .src = .{ .to_mut_mmx, .to_mmx } },16266 .{ .src = .{ .to_mut_mmx, .to_mmx, .none } },
7629 },16267 },
7630 .dst_temps = .{.{ .ref = .src0 }},16268 .dst_temps = .{.{ .ref = .src0 }},
7631 .each = .{ .once = &.{16269 .each = .{ .once = &.{
...@@ -7636,11 +16274,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7636,11 +16274,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7636 .src_constraints = .{16274 .src_constraints = .{
7637 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },16275 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
7638 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },16276 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
16277 .any,
7639 },16278 },
7640 .patterns = &.{16279 .patterns = &.{
7641 .{ .src = .{ .to_sse, .mem } },16280 .{ .src = .{ .to_sse, .mem, .none } },
7642 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },16281 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
7643 .{ .src = .{ .to_sse, .to_sse } },16282 .{ .src = .{ .to_sse, .to_sse, .none } },
7644 },16283 },
7645 .dst_temps = .{.{ .rc = .sse }},16284 .dst_temps = .{.{ .rc = .sse }},
7646 .each = .{ .once = &.{16285 .each = .{ .once = &.{
...@@ -7651,11 +16290,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7651,11 +16290,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7651 .src_constraints = .{16290 .src_constraints = .{
7652 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },16291 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
7653 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },16292 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
16293 .any,
7654 },16294 },
7655 .patterns = &.{16295 .patterns = &.{
7656 .{ .src = .{ .to_mut_sse, .mem } },16296 .{ .src = .{ .to_mut_sse, .mem, .none } },
7657 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },16297 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
7658 .{ .src = .{ .to_mut_sse, .to_sse } },16298 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
7659 },16299 },
7660 .dst_temps = .{.{ .ref = .src0 }},16300 .dst_temps = .{.{ .ref = .src0 }},
7661 .each = .{ .once = &.{16301 .each = .{ .once = &.{
...@@ -7666,11 +16306,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7666,11 +16306,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7666 .src_constraints = .{16306 .src_constraints = .{
7667 .{ .scalar_signed_int = .{ .of = .yword, .is = .word } },16307 .{ .scalar_signed_int = .{ .of = .yword, .is = .word } },
7668 .{ .scalar_signed_int = .{ .of = .yword, .is = .word } },16308 .{ .scalar_signed_int = .{ .of = .yword, .is = .word } },
16309 .any,
7669 },16310 },
7670 .patterns = &.{16311 .patterns = &.{
7671 .{ .src = .{ .to_sse, .mem } },16312 .{ .src = .{ .to_sse, .mem, .none } },
7672 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },16313 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
7673 .{ .src = .{ .to_sse, .to_sse } },16314 .{ .src = .{ .to_sse, .to_sse, .none } },
7674 },16315 },
7675 .dst_temps = .{.{ .rc = .sse }},16316 .dst_temps = .{.{ .rc = .sse }},
7676 .each = .{ .once = &.{16317 .each = .{ .once = &.{
...@@ -7681,9 +16322,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7681,9 +16322,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7681 .src_constraints = .{16322 .src_constraints = .{
7682 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } },16323 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } },
7683 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } },16324 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } },
16325 .any,
7684 },16326 },
7685 .patterns = &.{16327 .patterns = &.{
7686 .{ .src = .{ .to_mem, .to_mem } },16328 .{ .src = .{ .to_mem, .to_mem, .none } },
7687 },16329 },
7688 .extra_temps = .{16330 .extra_temps = .{
7689 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16331 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7711,9 +16353,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7711,9 +16353,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7711 .src_constraints = .{16353 .src_constraints = .{
7712 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },16354 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
7713 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },16355 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
16356 .any,
7714 },16357 },
7715 .patterns = &.{16358 .patterns = &.{
7716 .{ .src = .{ .to_mem, .to_mem } },16359 .{ .src = .{ .to_mem, .to_mem, .none } },
7717 },16360 },
7718 .extra_temps = .{16361 .extra_temps = .{
7719 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16362 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7741,9 +16384,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7741,9 +16384,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7741 .src_constraints = .{16384 .src_constraints = .{
7742 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },16385 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
7743 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },16386 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
16387 .any,
7744 },16388 },
7745 .patterns = &.{16389 .patterns = &.{
7746 .{ .src = .{ .to_mem, .to_mem } },16390 .{ .src = .{ .to_mem, .to_mem, .none } },
7747 },16391 },
7748 .extra_temps = .{16392 .extra_temps = .{
7749 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16393 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7771,9 +16415,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7771,9 +16415,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7771 .src_constraints = .{16415 .src_constraints = .{
7772 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },16416 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
7773 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },16417 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
16418 .any,
7774 },16419 },
7775 .patterns = &.{16420 .patterns = &.{
7776 .{ .src = .{ .to_mem, .to_mem } },16421 .{ .src = .{ .to_mem, .to_mem, .none } },
7777 },16422 },
7778 .extra_temps = .{16423 .extra_temps = .{
7779 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16424 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7801,9 +16446,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7801,9 +16446,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7801 .src_constraints = .{16446 .src_constraints = .{
7802 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },16447 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
7803 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },16448 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
16449 .any,
7804 },16450 },
7805 .patterns = &.{16451 .patterns = &.{
7806 .{ .src = .{ .to_mem, .to_mem } },16452 .{ .src = .{ .to_mem, .to_mem, .none } },
7807 },16453 },
7808 .extra_temps = .{16454 .extra_temps = .{
7809 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16455 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7833,11 +16479,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7833,11 +16479,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7833 .src_constraints = .{16479 .src_constraints = .{
7834 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },16480 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
7835 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },16481 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
16482 .any,
7836 },16483 },
7837 .patterns = &.{16484 .patterns = &.{
7838 .{ .src = .{ .to_sse, .mem } },16485 .{ .src = .{ .to_sse, .mem, .none } },
7839 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },16486 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
7840 .{ .src = .{ .to_sse, .to_sse } },16487 .{ .src = .{ .to_sse, .to_sse, .none } },
7841 },16488 },
7842 .dst_temps = .{.{ .rc = .sse }},16489 .dst_temps = .{.{ .rc = .sse }},
7843 .each = .{ .once = &.{16490 .each = .{ .once = &.{
...@@ -7848,11 +16495,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7848,11 +16495,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7848 .src_constraints = .{16495 .src_constraints = .{
7849 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },16496 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
7850 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },16497 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
16498 .any,
7851 },16499 },
7852 .patterns = &.{16500 .patterns = &.{
7853 .{ .src = .{ .to_mut_sse, .mem } },16501 .{ .src = .{ .to_mut_sse, .mem, .none } },
7854 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },16502 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
7855 .{ .src = .{ .to_mut_sse, .to_sse } },16503 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
7856 },16504 },
7857 .dst_temps = .{.{ .ref = .src0 }},16505 .dst_temps = .{.{ .ref = .src0 }},
7858 .each = .{ .once = &.{16506 .each = .{ .once = &.{
...@@ -7863,11 +16511,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7863,11 +16511,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7863 .src_constraints = .{16511 .src_constraints = .{
7864 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },16512 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
7865 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },16513 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
16514 .any,
7866 },16515 },
7867 .patterns = &.{16516 .patterns = &.{
7868 .{ .src = .{ .to_mut_sse, .mem } },16517 .{ .src = .{ .to_mut_sse, .mem, .none } },
7869 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },16518 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
7870 .{ .src = .{ .to_mut_sse, .to_sse } },16519 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
7871 },16520 },
7872 .dst_temps = .{.{ .rc = .sse }},16521 .dst_temps = .{.{ .rc = .sse }},
7873 .each = .{ .once = &.{16522 .each = .{ .once = &.{
...@@ -7880,11 +16529,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7880,11 +16529,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7880 .src_constraints = .{16529 .src_constraints = .{
7881 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } },16530 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } },
7882 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } },16531 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } },
16532 .any,
7883 },16533 },
7884 .patterns = &.{16534 .patterns = &.{
7885 .{ .src = .{ .to_sse, .mem } },16535 .{ .src = .{ .to_sse, .mem, .none } },
7886 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },16536 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
7887 .{ .src = .{ .to_sse, .to_sse } },16537 .{ .src = .{ .to_sse, .to_sse, .none } },
7888 },16538 },
7889 .dst_temps = .{.{ .rc = .sse }},16539 .dst_temps = .{.{ .rc = .sse }},
7890 .each = .{ .once = &.{16540 .each = .{ .once = &.{
...@@ -7895,9 +16545,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7895,9 +16545,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7895 .src_constraints = .{16545 .src_constraints = .{
7896 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } },16546 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } },
7897 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } },16547 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } },
16548 .any,
7898 },16549 },
7899 .patterns = &.{16550 .patterns = &.{
7900 .{ .src = .{ .to_mem, .to_mem } },16551 .{ .src = .{ .to_mem, .to_mem, .none } },
7901 },16552 },
7902 .extra_temps = .{16553 .extra_temps = .{
7903 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16554 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7925,9 +16576,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7925,9 +16576,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7925 .src_constraints = .{16576 .src_constraints = .{
7926 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },16577 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
7927 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },16578 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
16579 .any,
7928 },16580 },
7929 .patterns = &.{16581 .patterns = &.{
7930 .{ .src = .{ .to_mem, .to_mem } },16582 .{ .src = .{ .to_mem, .to_mem, .none } },
7931 },16583 },
7932 .extra_temps = .{16584 .extra_temps = .{
7933 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16585 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7955,9 +16607,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7955,9 +16607,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7955 .src_constraints = .{16607 .src_constraints = .{
7956 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },16608 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
7957 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },16609 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
16610 .any,
7958 },16611 },
7959 .patterns = &.{16612 .patterns = &.{
7960 .{ .src = .{ .to_mem, .to_mem } },16613 .{ .src = .{ .to_mem, .to_mem, .none } },
7961 },16614 },
7962 .extra_temps = .{16615 .extra_temps = .{
7963 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16616 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7985,9 +16638,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7985,9 +16638,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7985 .src_constraints = .{16638 .src_constraints = .{
7986 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },16639 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
7987 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },16640 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
16641 .any,
7988 },16642 },
7989 .patterns = &.{16643 .patterns = &.{
7990 .{ .src = .{ .to_mem, .to_mem } },16644 .{ .src = .{ .to_mem, .to_mem, .none } },
7991 },16645 },
7992 .extra_temps = .{16646 .extra_temps = .{
7993 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16647 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8017,9 +16671,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8017,9 +16671,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8017 .src_constraints = .{16671 .src_constraints = .{
8018 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },16672 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
8019 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },16673 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
16674 .any,
8020 },16675 },
8021 .patterns = &.{16676 .patterns = &.{
8022 .{ .src = .{ .to_mem, .to_mem } },16677 .{ .src = .{ .to_mem, .to_mem, .none } },
8023 },16678 },
8024 .extra_temps = .{16679 .extra_temps = .{
8025 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16680 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8047,9 +16702,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8047,9 +16702,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8047 .src_constraints = .{16702 .src_constraints = .{
8048 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },16703 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
8049 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },16704 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
16705 .any,
8050 },16706 },
8051 .patterns = &.{16707 .patterns = &.{
8052 .{ .src = .{ .to_mem, .to_mem } },16708 .{ .src = .{ .to_mem, .to_mem, .none } },
8053 },16709 },
8054 .extra_temps = .{16710 .extra_temps = .{
8055 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16711 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8079,11 +16735,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8079,11 +16735,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8079 .src_constraints = .{16735 .src_constraints = .{
8080 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },16736 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
8081 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },16737 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
16738 .any,
8082 },16739 },
8083 .patterns = &.{16740 .patterns = &.{
8084 .{ .src = .{ .to_sse, .mem } },16741 .{ .src = .{ .to_sse, .mem, .none } },
8085 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },16742 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
8086 .{ .src = .{ .to_sse, .to_sse } },16743 .{ .src = .{ .to_sse, .to_sse, .none } },
8087 },16744 },
8088 .dst_temps = .{.{ .rc = .sse }},16745 .dst_temps = .{.{ .rc = .sse }},
8089 .each = .{ .once = &.{16746 .each = .{ .once = &.{
...@@ -8094,11 +16751,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8094,11 +16751,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8094 .src_constraints = .{16751 .src_constraints = .{
8095 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },16752 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
8096 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },16753 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
16754 .any,
8097 },16755 },
8098 .patterns = &.{16756 .patterns = &.{
8099 .{ .src = .{ .to_mut_sse, .mem } },16757 .{ .src = .{ .to_mut_sse, .mem, .none } },
8100 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },16758 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
8101 .{ .src = .{ .to_mut_sse, .to_sse } },16759 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
8102 },16760 },
8103 .dst_temps = .{.{ .ref = .src0 }},16761 .dst_temps = .{.{ .ref = .src0 }},
8104 .each = .{ .once = &.{16762 .each = .{ .once = &.{
...@@ -8109,11 +16767,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8109,11 +16767,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8109 .src_constraints = .{16767 .src_constraints = .{
8110 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },16768 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
8111 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },16769 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
16770 .any,
8112 },16771 },
8113 .patterns = &.{16772 .patterns = &.{
8114 .{ .src = .{ .to_mut_sse, .mem } },16773 .{ .src = .{ .to_mut_sse, .mem, .none } },
8115 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },16774 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
8116 .{ .src = .{ .to_mut_sse, .to_sse } },16775 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
8117 },16776 },
8118 .dst_temps = .{.{ .rc = .sse }},16777 .dst_temps = .{.{ .rc = .sse }},
8119 .each = .{ .once = &.{16778 .each = .{ .once = &.{
...@@ -8128,11 +16787,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8128,11 +16787,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8128 .src_constraints = .{16787 .src_constraints = .{
8129 .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } },16788 .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } },
8130 .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } },16789 .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } },
16790 .any,
8131 },16791 },
8132 .patterns = &.{16792 .patterns = &.{
8133 .{ .src = .{ .to_sse, .mem } },16793 .{ .src = .{ .to_sse, .mem, .none } },
8134 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },16794 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
8135 .{ .src = .{ .to_sse, .to_sse } },16795 .{ .src = .{ .to_sse, .to_sse, .none } },
8136 },16796 },
8137 .dst_temps = .{.{ .rc = .sse }},16797 .dst_temps = .{.{ .rc = .sse }},
8138 .each = .{ .once = &.{16798 .each = .{ .once = &.{
...@@ -8143,9 +16803,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8143,9 +16803,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8143 .src_constraints = .{16803 .src_constraints = .{
8144 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } },16804 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } },
8145 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } },16805 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } },
16806 .any,
8146 },16807 },
8147 .patterns = &.{16808 .patterns = &.{
8148 .{ .src = .{ .to_mem, .to_mem } },16809 .{ .src = .{ .to_mem, .to_mem, .none } },
8149 },16810 },
8150 .extra_temps = .{16811 .extra_temps = .{
8151 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16812 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8173,9 +16834,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8173,9 +16834,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8173 .src_constraints = .{16834 .src_constraints = .{
8174 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },16835 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
8175 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },16836 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
16837 .any,
8176 },16838 },
8177 .patterns = &.{16839 .patterns = &.{
8178 .{ .src = .{ .to_mem, .to_mem } },16840 .{ .src = .{ .to_mem, .to_mem, .none } },
8179 },16841 },
8180 .extra_temps = .{16842 .extra_temps = .{
8181 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16843 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8203,9 +16865,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8203,9 +16865,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8203 .src_constraints = .{16865 .src_constraints = .{
8204 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },16866 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
8205 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },16867 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
16868 .any,
8206 },16869 },
8207 .patterns = &.{16870 .patterns = &.{
8208 .{ .src = .{ .to_mem, .to_mem } },16871 .{ .src = .{ .to_mem, .to_mem, .none } },
8209 },16872 },
8210 .extra_temps = .{16873 .extra_temps = .{
8211 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16874 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8233,9 +16896,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8233,9 +16896,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8233 .src_constraints = .{16896 .src_constraints = .{
8234 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },16897 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
8235 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },16898 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
16899 .any,
8236 },16900 },
8237 .patterns = &.{16901 .patterns = &.{
8238 .{ .src = .{ .to_mem, .to_mem } },16902 .{ .src = .{ .to_mem, .to_mem, .none } },
8239 },16903 },
8240 .extra_temps = .{16904 .extra_temps = .{
8241 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16905 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8267,9 +16931,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8267,9 +16931,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8267 .src_constraints = .{16931 .src_constraints = .{
8268 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },16932 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
8269 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },16933 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
16934 .any,
8270 },16935 },
8271 .patterns = &.{16936 .patterns = &.{
8272 .{ .src = .{ .to_mem, .to_mem } },16937 .{ .src = .{ .to_mem, .to_mem, .none } },
8273 },16938 },
8274 .extra_temps = .{16939 .extra_temps = .{
8275 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16940 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8297,9 +16962,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8297,9 +16962,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8297 .src_constraints = .{16962 .src_constraints = .{
8298 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },16963 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
8299 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },16964 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
16965 .any,
8300 },16966 },
8301 .patterns = &.{16967 .patterns = &.{
8302 .{ .src = .{ .to_mem, .to_mem } },16968 .{ .src = .{ .to_mem, .to_mem, .none } },
8303 },16969 },
8304 .extra_temps = .{16970 .extra_temps = .{
8305 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16971 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8329,11 +16995,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8329,11 +16995,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8329 .src_constraints = .{16995 .src_constraints = .{
8330 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },16996 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
8331 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },16997 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
16998 .any,
8332 },16999 },
8333 .patterns = &.{17000 .patterns = &.{
8334 .{ .src = .{ .to_sse, .mem } },17001 .{ .src = .{ .to_sse, .mem, .none } },
8335 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },17002 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
8336 .{ .src = .{ .to_sse, .to_sse } },17003 .{ .src = .{ .to_sse, .to_sse, .none } },
8337 },17004 },
8338 .dst_temps = .{.{ .rc = .sse }},17005 .dst_temps = .{.{ .rc = .sse }},
8339 .each = .{ .once = &.{17006 .each = .{ .once = &.{
...@@ -8344,11 +17011,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8344,11 +17011,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8344 .src_constraints = .{17011 .src_constraints = .{
8345 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },17012 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
8346 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },17013 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
17014 .any,
8347 },17015 },
8348 .patterns = &.{17016 .patterns = &.{
8349 .{ .src = .{ .to_mut_sse, .mem } },17017 .{ .src = .{ .to_mut_sse, .mem, .none } },
8350 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },17018 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
8351 .{ .src = .{ .to_mut_sse, .to_sse } },17019 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
8352 },17020 },
8353 .dst_temps = .{.{ .ref = .src0 }},17021 .dst_temps = .{.{ .ref = .src0 }},
8354 .each = .{ .once = &.{17022 .each = .{ .once = &.{
...@@ -8359,11 +17027,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8359,11 +17027,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8359 .src_constraints = .{17027 .src_constraints = .{
8360 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },17028 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
8361 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },17029 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
17030 .any,
8362 },17031 },
8363 .patterns = &.{17032 .patterns = &.{
8364 .{ .src = .{ .to_mut_sse, .mem } },17033 .{ .src = .{ .to_mut_sse, .mem, .none } },
8365 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },17034 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
8366 .{ .src = .{ .to_mut_sse, .to_sse } },17035 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
8367 },17036 },
8368 .extra_temps = .{17037 .extra_temps = .{
8369 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },17038 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -8393,11 +17062,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8393,11 +17062,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8393 .src_constraints = .{17062 .src_constraints = .{
8394 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } },17063 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
8395 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } },17064 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
17065 .any,
8396 },17066 },
8397 .patterns = &.{17067 .patterns = &.{
8398 .{ .src = .{ .to_sse, .mem } },17068 .{ .src = .{ .to_sse, .mem, .none } },
8399 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },17069 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
8400 .{ .src = .{ .to_sse, .to_sse } },17070 .{ .src = .{ .to_sse, .to_sse, .none } },
8401 },17071 },
8402 .dst_temps = .{.{ .rc = .sse }},17072 .dst_temps = .{.{ .rc = .sse }},
8403 .each = .{ .once = &.{17073 .each = .{ .once = &.{
...@@ -8408,9 +17078,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8408,9 +17078,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8408 .src_constraints = .{17078 .src_constraints = .{
8409 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } },17079 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
8410 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } },17080 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
17081 .any,
8411 },17082 },
8412 .patterns = &.{17083 .patterns = &.{
8413 .{ .src = .{ .to_mem, .to_mem } },17084 .{ .src = .{ .to_mem, .to_mem, .none } },
8414 },17085 },
8415 .extra_temps = .{17086 .extra_temps = .{
8416 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17087 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8438,9 +17109,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8438,9 +17109,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8438 .src_constraints = .{17109 .src_constraints = .{
8439 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },17110 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
8440 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },17111 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
17112 .any,
8441 },17113 },
8442 .patterns = &.{17114 .patterns = &.{
8443 .{ .src = .{ .to_mem, .to_mem } },17115 .{ .src = .{ .to_mem, .to_mem, .none } },
8444 },17116 },
8445 .extra_temps = .{17117 .extra_temps = .{
8446 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17118 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8468,9 +17140,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8468,9 +17140,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8468 .src_constraints = .{17140 .src_constraints = .{
8469 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },17141 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
8470 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },17142 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
17143 .any,
8471 },17144 },
8472 .patterns = &.{17145 .patterns = &.{
8473 .{ .src = .{ .to_mem, .to_mem } },17146 .{ .src = .{ .to_mem, .to_mem, .none } },
8474 },17147 },
8475 .extra_temps = .{17148 .extra_temps = .{
8476 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17149 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8498,9 +17171,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8498,9 +17171,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8498 .src_constraints = .{17171 .src_constraints = .{
8499 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },17172 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
8500 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },17173 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
17174 .any,
8501 },17175 },
8502 .patterns = &.{17176 .patterns = &.{
8503 .{ .src = .{ .to_mem, .to_mem } },17177 .{ .src = .{ .to_mem, .to_mem, .none } },
8504 },17178 },
8505 .extra_temps = .{17179 .extra_temps = .{
8506 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17180 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8538,9 +17212,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8538,9 +17212,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8538 .src_constraints = .{17212 .src_constraints = .{
8539 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },17213 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
8540 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },17214 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
17215 .any,
8541 },17216 },
8542 .patterns = &.{17217 .patterns = &.{
8543 .{ .src = .{ .to_mem, .to_mem } },17218 .{ .src = .{ .to_mem, .to_mem, .none } },
8544 },17219 },
8545 .extra_temps = .{17220 .extra_temps = .{
8546 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17221 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8568,9 +17243,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8568,9 +17243,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8568 .src_constraints = .{17243 .src_constraints = .{
8569 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },17244 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
8570 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },17245 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
17246 .any,
8571 },17247 },
8572 .patterns = &.{17248 .patterns = &.{
8573 .{ .src = .{ .to_mem, .to_mem } },17249 .{ .src = .{ .to_mem, .to_mem, .none } },
8574 },17250 },
8575 .extra_temps = .{17251 .extra_temps = .{
8576 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17252 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8600,11 +17276,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8600,11 +17276,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8600 .src_constraints = .{17276 .src_constraints = .{
8601 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },17277 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
8602 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },17278 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
17279 .any,
8603 },17280 },
8604 .patterns = &.{17281 .patterns = &.{
8605 .{ .src = .{ .to_sse, .mem } },17282 .{ .src = .{ .to_sse, .mem, .none } },
8606 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },17283 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
8607 .{ .src = .{ .to_sse, .to_sse } },17284 .{ .src = .{ .to_sse, .to_sse, .none } },
8608 },17285 },
8609 .dst_temps = .{.{ .rc = .sse }},17286 .dst_temps = .{.{ .rc = .sse }},
8610 .each = .{ .once = &.{17287 .each = .{ .once = &.{
...@@ -8616,11 +17293,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8616,11 +17293,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8616 .src_constraints = .{17293 .src_constraints = .{
8617 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },17294 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
8618 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },17295 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
17296 .any,
8619 },17297 },
8620 .patterns = &.{17298 .patterns = &.{
8621 .{ .src = .{ .to_mut_sse, .mem } },17299 .{ .src = .{ .to_mut_sse, .mem, .none } },
8622 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },17300 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
8623 .{ .src = .{ .to_mut_sse, .to_sse } },17301 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
8624 },17302 },
8625 .extra_temps = .{17303 .extra_temps = .{
8626 .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } },17304 .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } },
...@@ -8644,11 +17322,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8644,11 +17322,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8644 .src_constraints = .{17322 .src_constraints = .{
8645 .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } },17323 .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } },
8646 .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } },17324 .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } },
17325 .any,
8647 },17326 },
8648 .patterns = &.{17327 .patterns = &.{
8649 .{ .src = .{ .to_sse, .mem } },17328 .{ .src = .{ .to_sse, .mem, .none } },
8650 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },17329 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
8651 .{ .src = .{ .to_sse, .to_sse } },17330 .{ .src = .{ .to_sse, .to_sse, .none } },
8652 },17331 },
8653 .dst_temps = .{.{ .rc = .sse }},17332 .dst_temps = .{.{ .rc = .sse }},
8654 .each = .{ .once = &.{17333 .each = .{ .once = &.{
...@@ -8660,9 +17339,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8660,9 +17339,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8660 .src_constraints = .{17339 .src_constraints = .{
8661 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } },17340 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } },
8662 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } },17341 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } },
17342 .any,
8663 },17343 },
8664 .patterns = &.{17344 .patterns = &.{
8665 .{ .src = .{ .to_mem, .to_mem } },17345 .{ .src = .{ .to_mem, .to_mem, .none } },
8666 },17346 },
8667 .extra_temps = .{17347 .extra_temps = .{
8668 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17348 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8692,9 +17372,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8692,9 +17372,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8692 .src_constraints = .{17372 .src_constraints = .{
8693 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },17373 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
8694 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },17374 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
17375 .any,
8695 },17376 },
8696 .patterns = &.{17377 .patterns = &.{
8697 .{ .src = .{ .to_mem, .to_mem } },17378 .{ .src = .{ .to_mem, .to_mem, .none } },
8698 },17379 },
8699 .extra_temps = .{17380 .extra_temps = .{
8700 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17381 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8724,9 +17405,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8724,9 +17405,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8724 .src_constraints = .{17405 .src_constraints = .{
8725 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },17406 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
8726 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },17407 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
17408 .any,
8727 },17409 },
8728 .patterns = &.{17410 .patterns = &.{
8729 .{ .src = .{ .to_mem, .to_mem } },17411 .{ .src = .{ .to_mem, .to_mem, .none } },
8730 },17412 },
8731 .extra_temps = .{17413 .extra_temps = .{
8732 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17414 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8757,9 +17439,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8757,9 +17439,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8757 .src_constraints = .{17439 .src_constraints = .{
8758 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },17440 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
8759 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },17441 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
17442 .any,
8760 },17443 },
8761 .patterns = &.{17444 .patterns = &.{
8762 .{ .src = .{ .to_mem, .to_mem } },17445 .{ .src = .{ .to_mem, .to_mem, .none } },
8763 },17446 },
8764 .extra_temps = .{17447 .extra_temps = .{
8765 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17448 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8788,9 +17471,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8788,9 +17471,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8788 .src_constraints = .{17471 .src_constraints = .{
8789 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },17472 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
8790 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },17473 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
17474 .any,
8791 },17475 },
8792 .patterns = &.{17476 .patterns = &.{
8793 .{ .src = .{ .to_mem, .to_mem } },17477 .{ .src = .{ .to_mem, .to_mem, .none } },
8794 },17478 },
8795 .extra_temps = .{17479 .extra_temps = .{
8796 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17480 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8820,11 +17504,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8820,11 +17504,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8820 .src_constraints = .{17504 .src_constraints = .{
8821 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },17505 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
8822 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },17506 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
17507 .any,
8823 },17508 },
8824 .patterns = &.{17509 .patterns = &.{
8825 .{ .src = .{ .to_sse, .mem } },17510 .{ .src = .{ .to_sse, .mem, .none } },
8826 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },17511 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
8827 .{ .src = .{ .to_sse, .to_sse } },17512 .{ .src = .{ .to_sse, .to_sse, .none } },
8828 },17513 },
8829 .extra_temps = .{17514 .extra_temps = .{
8830 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },17515 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -8851,11 +17536,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8851,11 +17536,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8851 .src_constraints = .{17536 .src_constraints = .{
8852 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },17537 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
8853 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },17538 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
17539 .any,
8854 },17540 },
8855 .patterns = &.{17541 .patterns = &.{
8856 .{ .src = .{ .to_mut_sse, .mem } },17542 .{ .src = .{ .to_mut_sse, .mem, .none } },
8857 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },17543 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
8858 .{ .src = .{ .to_mut_sse, .to_sse } },17544 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
8859 },17545 },
8860 .extra_temps = .{17546 .extra_temps = .{
8861 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },17547 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -8883,11 +17569,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8883,11 +17569,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8883 .src_constraints = .{17569 .src_constraints = .{
8884 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } },17570 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
8885 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } },17571 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
17572 .any,
8886 },17573 },
8887 .patterns = &.{17574 .patterns = &.{
8888 .{ .src = .{ .to_sse, .mem } },17575 .{ .src = .{ .to_sse, .mem, .none } },
8889 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },17576 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
8890 .{ .src = .{ .to_sse, .to_sse } },17577 .{ .src = .{ .to_sse, .to_sse, .none } },
8891 },17578 },
8892 .extra_temps = .{17579 .extra_temps = .{
8893 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },17580 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -8914,9 +17601,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8914,9 +17601,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8914 .src_constraints = .{17601 .src_constraints = .{
8915 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } },17602 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
8916 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } },17603 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
17604 .any,
8917 },17605 },
8918 .patterns = &.{17606 .patterns = &.{
8919 .{ .src = .{ .to_mem, .to_mem } },17607 .{ .src = .{ .to_mem, .to_mem, .none } },
8920 },17608 },
8921 .extra_temps = .{17609 .extra_temps = .{
8922 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17610 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8950,9 +17638,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8950,9 +17638,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8950 .src_constraints = .{17638 .src_constraints = .{
8951 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },17639 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
8952 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },17640 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
17641 .any,
8953 },17642 },
8954 .patterns = &.{17643 .patterns = &.{
8955 .{ .src = .{ .to_mem, .to_mem } },17644 .{ .src = .{ .to_mem, .to_mem, .none } },
8956 },17645 },
8957 .extra_temps = .{17646 .extra_temps = .{
8958 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17647 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8986,9 +17675,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8986,9 +17675,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8986 .src_constraints = .{17675 .src_constraints = .{
8987 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },17676 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
8988 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },17677 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
17678 .any,
8989 },17679 },
8990 .patterns = &.{17680 .patterns = &.{
8991 .{ .src = .{ .to_mem, .to_mem } },17681 .{ .src = .{ .to_mem, .to_mem, .none } },
8992 },17682 },
8993 .extra_temps = .{17683 .extra_temps = .{
8994 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17684 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -9024,9 +17714,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9024,9 +17714,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9024 .src_constraints = .{17714 .src_constraints = .{
9025 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },17715 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
9026 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },17716 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
17717 .any,
9027 },17718 },
9028 .patterns = &.{17719 .patterns = &.{
9029 .{ .src = .{ .to_mem, .to_mem } },17720 .{ .src = .{ .to_mem, .to_mem, .none } },
9030 },17721 },
9031 .extra_temps = .{17722 .extra_temps = .{
9032 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17723 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -9055,9 +17746,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9055,9 +17746,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9055 .src_constraints = .{17746 .src_constraints = .{
9056 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },17747 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
9057 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },17748 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
17749 .any,
9058 },17750 },
9059 .patterns = &.{17751 .patterns = &.{
9060 .{ .src = .{ .to_mem, .to_mem } },17752 .{ .src = .{ .to_mem, .to_mem, .none } },
9061 },17753 },
9062 .extra_temps = .{17754 .extra_temps = .{
9063 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17755 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -9084,9 +17776,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9084,9 +17776,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9084 } },17776 } },
9085 }, .{17777 }, .{
9086 .required_features = .{ .@"64bit", .cmov, null, null },17778 .required_features = .{ .@"64bit", .cmov, null, null },
9087 .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int },17779 .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int, .any },
9088 .patterns = &.{17780 .patterns = &.{
9089 .{ .src = .{ .to_mem, .to_mem } },17781 .{ .src = .{ .to_mem, .to_mem, .none } },
9090 },17782 },
9091 .extra_temps = .{17783 .extra_temps = .{
9092 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17784 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -9123,9 +17815,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9123,9 +17815,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9123 } },17815 } },
9124 }, .{17816 }, .{
9125 .required_features = .{ .@"64bit", null, null, null },17817 .required_features = .{ .@"64bit", null, null, null },
9126 .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int },17818 .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int, .any },
9127 .patterns = &.{17819 .patterns = &.{
9128 .{ .src = .{ .to_mem, .to_mem } },17820 .{ .src = .{ .to_mem, .to_mem, .none } },
9129 },17821 },
9130 .extra_temps = .{17822 .extra_temps = .{
9131 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17823 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -9162,9 +17854,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9162,9 +17854,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9162 } },17854 } },
9163 }, .{17855 }, .{
9164 .required_features = .{ .@"64bit", .cmov, null, null },17856 .required_features = .{ .@"64bit", .cmov, null, null },
9165 .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int },17857 .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int, .any },
9166 .patterns = &.{17858 .patterns = &.{
9167 .{ .src = .{ .to_mem, .to_mem } },17859 .{ .src = .{ .to_mem, .to_mem, .none } },
9168 },17860 },
9169 .extra_temps = .{17861 .extra_temps = .{
9170 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17862 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -9199,9 +17891,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9199,9 +17891,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9199 } },17891 } },
9200 }, .{17892 }, .{
9201 .required_features = .{ .@"64bit", null, null, null },17893 .required_features = .{ .@"64bit", null, null, null },
9202 .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int },17894 .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int, .any },
9203 .patterns = &.{17895 .patterns = &.{
9204 .{ .src = .{ .to_mem, .to_mem } },17896 .{ .src = .{ .to_mem, .to_mem, .none } },
9205 },17897 },
9206 .extra_temps = .{17898 .extra_temps = .{
9207 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17899 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -9239,9 +17931,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9239,9 +17931,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9239 .src_constraints = .{17931 .src_constraints = .{
9240 .{ .scalar_float = .{ .of = .word, .is = .word } },17932 .{ .scalar_float = .{ .of = .word, .is = .word } },
9241 .{ .scalar_float = .{ .of = .word, .is = .word } },17933 .{ .scalar_float = .{ .of = .word, .is = .word } },
17934 .any,
9242 },17935 },
9243 .patterns = &.{17936 .patterns = &.{
9244 .{ .src = .{ .to_sse, .to_sse } },17937 .{ .src = .{ .to_sse, .to_sse, .none } },
9245 },17938 },
9246 .extra_temps = .{17939 .extra_temps = .{
9247 .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },17940 .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
...@@ -9258,8 +17951,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9258,8 +17951,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9258 .each = .{ .once = &.{17951 .each = .{ .once = &.{
9259 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },17952 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
9260 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },17953 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
9261 .{ ._, .v_ss, .cmp, .tmp1x, .dst0x, .dst0x, .vp(.unord) },17954 .{ ._, .v_ss, .cmp, .tmp1x, .dst0x, .dst0d, .vp(.unord) },
9262 .{ ._, .v_ss, .min, .dst0x, .tmp0x, .dst0x, ._ },17955 .{ ._, .v_ss, .min, .dst0x, .tmp0x, .dst0d, ._ },
9263 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x },17956 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x },
9264 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },17957 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
9265 } },17958 } },
...@@ -9268,9 +17961,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9268,9 +17961,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9268 .src_constraints = .{17961 .src_constraints = .{
9269 .{ .scalar_float = .{ .of = .word, .is = .word } },17962 .{ .scalar_float = .{ .of = .word, .is = .word } },
9270 .{ .scalar_float = .{ .of = .word, .is = .word } },17963 .{ .scalar_float = .{ .of = .word, .is = .word } },
17964 .any,
9271 },17965 },
9272 .patterns = &.{17966 .patterns = &.{
9273 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },17967 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
9274 },17968 },
9275 .call_frame = .{ .alignment = .@"16" },17969 .call_frame = .{ .alignment = .@"16" },
9276 .extra_temps = .{17970 .extra_temps = .{
...@@ -9294,16 +17988,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9294,16 +17988,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9294 .src_constraints = .{17988 .src_constraints = .{
9295 .{ .scalar_float = .{ .of = .qword, .is = .word } },17989 .{ .scalar_float = .{ .of = .qword, .is = .word } },
9296 .{ .scalar_float = .{ .of = .qword, .is = .word } },17990 .{ .scalar_float = .{ .of = .qword, .is = .word } },
17991 .any,
9297 },17992 },
9298 .patterns = &.{17993 .patterns = &.{
9299 .{ .src = .{ .mem, .mem } },17994 .{ .src = .{ .mem, .mem, .none } },
9300 .{ .src = .{ .to_sse, .mem } },17995 .{ .src = .{ .to_sse, .mem, .none } },
9301 .{ .src = .{ .mem, .to_sse } },17996 .{ .src = .{ .mem, .to_sse, .none } },
9302 .{ .src = .{ .to_sse, .to_sse } },17997 .{ .src = .{ .to_sse, .to_sse, .none } },
9303 },17998 },
9304 .extra_temps = .{17999 .extra_temps = .{
9305 .{ .type = .vector_4_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },18000 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
9306 .{ .type = .vector_4_f16, .kind = .{ .rc = .sse } },18001 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
9307 .unused,18002 .unused,
9308 .unused,18003 .unused,
9309 .unused,18004 .unused,
...@@ -9326,16 +18021,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9326,16 +18021,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9326 .src_constraints = .{18021 .src_constraints = .{
9327 .{ .scalar_float = .{ .of = .xword, .is = .word } },18022 .{ .scalar_float = .{ .of = .xword, .is = .word } },
9328 .{ .scalar_float = .{ .of = .xword, .is = .word } },18023 .{ .scalar_float = .{ .of = .xword, .is = .word } },
18024 .any,
9329 },18025 },
9330 .patterns = &.{18026 .patterns = &.{
9331 .{ .src = .{ .mem, .mem } },18027 .{ .src = .{ .mem, .mem, .none } },
9332 .{ .src = .{ .to_sse, .mem } },18028 .{ .src = .{ .to_sse, .mem, .none } },
9333 .{ .src = .{ .mem, .to_sse } },18029 .{ .src = .{ .mem, .to_sse, .none } },
9334 .{ .src = .{ .to_sse, .to_sse } },18030 .{ .src = .{ .to_sse, .to_sse, .none } },
9335 },18031 },
9336 .extra_temps = .{18032 .extra_temps = .{
9337 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },18033 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
9338 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },18034 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
9339 .unused,18035 .unused,
9340 .unused,18036 .unused,
9341 .unused,18037 .unused,
...@@ -9351,22 +18047,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9351,22 +18047,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9351 .{ ._, .v_ps, .cmp, .tmp1y, .dst0y, .dst0y, .vp(.unord) },18047 .{ ._, .v_ps, .cmp, .tmp1y, .dst0y, .dst0y, .vp(.unord) },
9352 .{ ._, .v_ps, .min, .dst0y, .tmp0y, .dst0y, ._ },18048 .{ ._, .v_ps, .min, .dst0y, .tmp0y, .dst0y, ._ },
9353 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp0y, .tmp1y },18049 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp0y, .tmp1y },
9354 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0y, .rm(.{}), ._ },18050 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
9355 } },18051 } },
9356 }, .{18052 }, .{
9357 .required_features = .{ .f16c, null, null, null },18053 .required_features = .{ .f16c, null, null, null },
9358 .src_constraints = .{18054 .src_constraints = .{
9359 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },18055 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
9360 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },18056 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
18057 .any,
9361 },18058 },
9362 .patterns = &.{18059 .patterns = &.{
9363 .{ .src = .{ .to_mem, .to_mem } },18060 .{ .src = .{ .to_mem, .to_mem, .none } },
9364 },18061 },
9365 .extra_temps = .{18062 .extra_temps = .{
9366 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18063 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9367 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },18064 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
9368 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },18065 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
9369 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },18066 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
9370 .unused,18067 .unused,
9371 .unused,18068 .unused,
9372 .unused,18069 .unused,
...@@ -9391,9 +18088,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9391,9 +18088,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9391 .src_constraints = .{18088 .src_constraints = .{
9392 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },18089 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9393 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },18090 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
18091 .any,
9394 },18092 },
9395 .patterns = &.{18093 .patterns = &.{
9396 .{ .src = .{ .to_mem, .to_mem } },18094 .{ .src = .{ .to_mem, .to_mem, .none } },
9397 },18095 },
9398 .call_frame = .{ .alignment = .@"16" },18096 .call_frame = .{ .alignment = .@"16" },
9399 .extra_temps = .{18097 .extra_temps = .{
...@@ -9424,9 +18122,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9424,9 +18122,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9424 .src_constraints = .{18122 .src_constraints = .{
9425 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },18123 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9426 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },18124 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
18125 .any,
9427 },18126 },
9428 .patterns = &.{18127 .patterns = &.{
9429 .{ .src = .{ .to_mem, .to_mem } },18128 .{ .src = .{ .to_mem, .to_mem, .none } },
9430 },18129 },
9431 .call_frame = .{ .alignment = .@"16" },18130 .call_frame = .{ .alignment = .@"16" },
9432 .extra_temps = .{18131 .extra_temps = .{
...@@ -9458,9 +18157,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9458,9 +18157,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9458 .src_constraints = .{18157 .src_constraints = .{
9459 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },18158 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9460 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },18159 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
18160 .any,
9461 },18161 },
9462 .patterns = &.{18162 .patterns = &.{
9463 .{ .src = .{ .to_mem, .to_mem } },18163 .{ .src = .{ .to_mem, .to_mem, .none } },
9464 },18164 },
9465 .call_frame = .{ .alignment = .@"16" },18165 .call_frame = .{ .alignment = .@"16" },
9466 .extra_temps = .{18166 .extra_temps = .{
...@@ -9493,9 +18193,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9493,9 +18193,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9493 .src_constraints = .{18193 .src_constraints = .{
9494 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },18194 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9495 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },18195 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
18196 .any,
9496 },18197 },
9497 .patterns = &.{18198 .patterns = &.{
9498 .{ .src = .{ .to_mem, .to_mem } },18199 .{ .src = .{ .to_mem, .to_mem, .none } },
9499 },18200 },
9500 .call_frame = .{ .alignment = .@"16" },18201 .call_frame = .{ .alignment = .@"16" },
9501 .extra_temps = .{18202 .extra_temps = .{
...@@ -9531,9 +18232,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9531,9 +18232,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9531 .src_constraints = .{18232 .src_constraints = .{
9532 .{ .scalar_float = .{ .of = .dword, .is = .dword } },18233 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
9533 .{ .scalar_float = .{ .of = .dword, .is = .dword } },18234 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
18235 .any,
9534 },18236 },
9535 .patterns = &.{18237 .patterns = &.{
9536 .{ .src = .{ .to_sse, .to_sse } },18238 .{ .src = .{ .to_sse, .to_sse, .none } },
9537 },18239 },
9538 .extra_temps = .{18240 .extra_temps = .{
9539 .{ .type = .f32, .kind = .{ .rc = .sse } },18241 .{ .type = .f32, .kind = .{ .rc = .sse } },
...@@ -9548,8 +18250,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9548,8 +18250,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9548 },18250 },
9549 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},18251 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
9550 .each = .{ .once = &.{18252 .each = .{ .once = &.{
9551 .{ ._, .v_ss, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) },18253 .{ ._, .v_ss, .cmp, .tmp0x, .src0x, .src0d, .vp(.unord) },
9552 .{ ._, .v_ss, .min, .dst0x, .src1x, .src0x, ._ },18254 .{ ._, .v_ss, .min, .dst0x, .src1x, .src0d, ._ },
9553 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },18255 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },
9554 } },18256 } },
9555 }, .{18257 }, .{
...@@ -9557,15 +18259,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9557,15 +18259,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9557 .src_constraints = .{18259 .src_constraints = .{
9558 .{ .scalar_float = .{ .of = .dword, .is = .dword } },18260 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
9559 .{ .scalar_float = .{ .of = .dword, .is = .dword } },18261 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
18262 .any,
9560 },18263 },
9561 .patterns = &.{18264 .patterns = &.{
9562 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } },18265 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } },
9563 },18266 },
9564 .dst_temps = .{.{ .rc = .sse }},18267 .dst_temps = .{.{ .rc = .sse }},
9565 .each = .{ .once = &.{18268 .each = .{ .once = &.{
9566 .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ },18269 .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ },
9567 .{ ._, ._ss, .min, .dst0x, .src0x, ._, ._ },18270 .{ ._, ._ss, .min, .dst0x, .src0d, ._, ._ },
9568 .{ ._, ._ss, .cmp, .src0x, .src0x, .vp(.unord), ._ },18271 .{ ._, ._ss, .cmp, .src0x, .src0d, .sp(.unord), ._ },
9569 .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ },18272 .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ },
9570 } },18273 } },
9571 }, .{18274 }, .{
...@@ -9573,9 +18276,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9573,9 +18276,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9573 .src_constraints = .{18276 .src_constraints = .{
9574 .{ .scalar_float = .{ .of = .dword, .is = .dword } },18277 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
9575 .{ .scalar_float = .{ .of = .dword, .is = .dword } },18278 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
18279 .any,
9576 },18280 },
9577 .patterns = &.{18281 .patterns = &.{
9578 .{ .src = .{ .to_mut_sse, .to_sse } },18282 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
9579 },18283 },
9580 .extra_temps = .{18284 .extra_temps = .{
9581 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },18285 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
...@@ -9591,8 +18295,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9591,8 +18295,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9591 .dst_temps = .{.{ .ref = .src0 }},18295 .dst_temps = .{.{ .ref = .src0 }},
9592 .each = .{ .once = &.{18296 .each = .{ .once = &.{
9593 .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ },18297 .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ },
9594 .{ ._, ._ss, .min, .tmp0x, .src0x, ._, ._ },18298 .{ ._, ._ss, .min, .tmp0x, .src0d, ._, ._ },
9595 .{ ._, ._ss, .cmp, .dst0x, .src0x, .vp(.ord), ._ },18299 .{ ._, ._ss, .cmp, .dst0x, .src0d, .sp(.ord), ._ },
9596 .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ },18300 .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ },
9597 .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ },18301 .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ },
9598 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },18302 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },
...@@ -9602,9 +18306,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9602,9 +18306,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9602 .src_constraints = .{18306 .src_constraints = .{
9603 .{ .scalar_float = .{ .of = .xword, .is = .dword } },18307 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
9604 .{ .scalar_float = .{ .of = .xword, .is = .dword } },18308 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
18309 .any,
9605 },18310 },
9606 .patterns = &.{18311 .patterns = &.{
9607 .{ .src = .{ .to_sse, .to_sse } },18312 .{ .src = .{ .to_sse, .to_sse, .none } },
9608 },18313 },
9609 .extra_temps = .{18314 .extra_temps = .{
9610 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },18315 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
...@@ -9628,17 +18333,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9628,17 +18333,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9628 .src_constraints = .{18333 .src_constraints = .{
9629 .{ .scalar_float = .{ .of = .xword, .is = .dword } },18334 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
9630 .{ .scalar_float = .{ .of = .xword, .is = .dword } },18335 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
18336 .any,
9631 },18337 },
9632 .patterns = &.{18338 .patterns = &.{
9633 .{ .src = .{ .{ .to_reg = .xmm0 }, .mem } },18339 .{ .src = .{ .{ .to_reg = .xmm0 }, .mem, .none } },
9634 .{ .src = .{ .mem, .{ .to_reg = .xmm0 } }, .commute = .{ 0, 1 } },18340 .{ .src = .{ .mem, .{ .to_reg = .xmm0 }, .none }, .commute = .{ 0, 1 } },
9635 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } },18341 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } },
9636 },18342 },
9637 .dst_temps = .{.{ .rc = .sse }},18343 .dst_temps = .{.{ .rc = .sse }},
9638 .each = .{ .once = &.{18344 .each = .{ .once = &.{
9639 .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ },18345 .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ },
9640 .{ ._, ._ps, .min, .dst0x, .src0x, ._, ._ },18346 .{ ._, ._ps, .min, .dst0x, .src0x, ._, ._ },
9641 .{ ._, ._ps, .cmp, .src0x, .src0x, .vp(.unord), ._ },18347 .{ ._, ._ps, .cmp, .src0x, .src0x, .sp(.unord), ._ },
9642 .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ },18348 .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ },
9643 } },18349 } },
9644 }, .{18350 }, .{
...@@ -9646,11 +18352,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9646,11 +18352,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9646 .src_constraints = .{18352 .src_constraints = .{
9647 .{ .scalar_float = .{ .of = .xword, .is = .dword } },18353 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
9648 .{ .scalar_float = .{ .of = .xword, .is = .dword } },18354 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
18355 .any,
9649 },18356 },
9650 .patterns = &.{18357 .patterns = &.{
9651 .{ .src = .{ .to_mut_sse, .mem } },18358 .{ .src = .{ .to_mut_sse, .mem, .none } },
9652 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },18359 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
9653 .{ .src = .{ .to_mut_sse, .to_sse } },18360 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
9654 },18361 },
9655 .extra_temps = .{18362 .extra_temps = .{
9656 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },18363 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
...@@ -9667,7 +18374,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9667,7 +18374,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9667 .each = .{ .once = &.{18374 .each = .{ .once = &.{
9668 .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ },18375 .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ },
9669 .{ ._, ._ps, .min, .tmp0x, .src0x, ._, ._ },18376 .{ ._, ._ps, .min, .tmp0x, .src0x, ._, ._ },
9670 .{ ._, ._ps, .cmp, .dst0x, .src0x, .vp(.ord), ._ },18377 .{ ._, ._ps, .cmp, .dst0x, .src0x, .sp(.ord), ._ },
9671 .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ },18378 .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ },
9672 .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ },18379 .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ },
9673 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },18380 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },
...@@ -9677,9 +18384,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9677,9 +18384,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9677 .src_constraints = .{18384 .src_constraints = .{
9678 .{ .scalar_float = .{ .of = .yword, .is = .dword } },18385 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
9679 .{ .scalar_float = .{ .of = .yword, .is = .dword } },18386 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
18387 .any,
9680 },18388 },
9681 .patterns = &.{18389 .patterns = &.{
9682 .{ .src = .{ .to_sse, .to_sse } },18390 .{ .src = .{ .to_sse, .to_sse, .none } },
9683 },18391 },
9684 .extra_temps = .{18392 .extra_temps = .{
9685 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },18393 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
...@@ -9703,9 +18411,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9703,9 +18411,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9703 .src_constraints = .{18411 .src_constraints = .{
9704 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },18412 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
9705 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },18413 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
18414 .any,
9706 },18415 },
9707 .patterns = &.{18416 .patterns = &.{
9708 .{ .src = .{ .to_mem, .to_mem } },18417 .{ .src = .{ .to_mem, .to_mem, .none } },
9709 },18418 },
9710 .extra_temps = .{18419 .extra_temps = .{
9711 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18420 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -9736,9 +18445,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9736,9 +18445,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9736 .src_constraints = .{18445 .src_constraints = .{
9737 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },18446 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
9738 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },18447 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
18448 .any,
9739 },18449 },
9740 .patterns = &.{18450 .patterns = &.{
9741 .{ .src = .{ .to_mem, .to_mem } },18451 .{ .src = .{ .to_mem, .to_mem, .none } },
9742 },18452 },
9743 .extra_temps = .{18453 .extra_temps = .{
9744 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18454 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -9759,7 +18469,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9759,7 +18469,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9759 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },18469 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
9760 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },18470 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
9761 .{ ._, ._ps, .min, .tmp3x, .tmp1x, ._, ._ },18471 .{ ._, ._ps, .min, .tmp3x, .tmp1x, ._, ._ },
9762 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },18472 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ },
9763 .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },18473 .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
9764 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },18474 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
9765 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },18475 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
...@@ -9770,9 +18480,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9770,9 +18480,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9770 .src_constraints = .{18480 .src_constraints = .{
9771 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },18481 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
9772 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },18482 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
18483 .any,
9773 },18484 },
9774 .patterns = &.{18485 .patterns = &.{
9775 .{ .src = .{ .to_mem, .to_mem } },18486 .{ .src = .{ .to_mem, .to_mem, .none } },
9776 },18487 },
9777 .extra_temps = .{18488 .extra_temps = .{
9778 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18489 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -9793,7 +18504,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9793,7 +18504,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9793 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },18504 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
9794 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },18505 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
9795 .{ ._, ._ps, .min, .tmp3x, .tmp1x, ._, ._ },18506 .{ ._, ._ps, .min, .tmp3x, .tmp1x, ._, ._ },
9796 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.ord), ._ },18507 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ },
9797 .{ ._, ._ps, .@"and", .tmp3x, .tmp1x, ._, ._ },18508 .{ ._, ._ps, .@"and", .tmp3x, .tmp1x, ._, ._ },
9798 .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ },18509 .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ },
9799 .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ },18510 .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ },
...@@ -9806,9 +18517,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9806,9 +18517,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9806 .src_constraints = .{18517 .src_constraints = .{
9807 .{ .scalar_float = .{ .of = .qword, .is = .qword } },18518 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
9808 .{ .scalar_float = .{ .of = .qword, .is = .qword } },18519 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
18520 .any,
9809 },18521 },
9810 .patterns = &.{18522 .patterns = &.{
9811 .{ .src = .{ .to_sse, .to_sse } },18523 .{ .src = .{ .to_sse, .to_sse, .none } },
9812 },18524 },
9813 .extra_temps = .{18525 .extra_temps = .{
9814 .{ .type = .f64, .kind = .{ .rc = .sse } },18526 .{ .type = .f64, .kind = .{ .rc = .sse } },
...@@ -9823,8 +18535,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9823,8 +18535,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9823 },18535 },
9824 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},18536 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
9825 .each = .{ .once = &.{18537 .each = .{ .once = &.{
9826 .{ ._, .v_sd, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) },18538 .{ ._, .v_sd, .cmp, .tmp0x, .src0x, .src0q, .vp(.unord) },
9827 .{ ._, .v_sd, .min, .dst0x, .src1x, .src0x, ._ },18539 .{ ._, .v_sd, .min, .dst0x, .src1x, .src0q, ._ },
9828 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },18540 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },
9829 } },18541 } },
9830 }, .{18542 }, .{
...@@ -9832,15 +18544,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9832,15 +18544,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9832 .src_constraints = .{18544 .src_constraints = .{
9833 .{ .scalar_float = .{ .of = .qword, .is = .qword } },18545 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
9834 .{ .scalar_float = .{ .of = .qword, .is = .qword } },18546 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
18547 .any,
9835 },18548 },
9836 .patterns = &.{18549 .patterns = &.{
9837 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } },18550 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } },
9838 },18551 },
9839 .dst_temps = .{.{ .rc = .sse }},18552 .dst_temps = .{.{ .rc = .sse }},
9840 .each = .{ .once = &.{18553 .each = .{ .once = &.{
9841 .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ },18554 .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ },
9842 .{ ._, ._sd, .min, .dst0x, .src0x, ._, ._ },18555 .{ ._, ._sd, .min, .dst0x, .src0q, ._, ._ },
9843 .{ ._, ._sd, .cmp, .src0x, .src0x, .vp(.unord), ._ },18556 .{ ._, ._sd, .cmp, .src0x, .src0q, .sp(.unord), ._ },
9844 .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ },18557 .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ },
9845 } },18558 } },
9846 }, .{18559 }, .{
...@@ -9848,9 +18561,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9848,9 +18561,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9848 .src_constraints = .{18561 .src_constraints = .{
9849 .{ .scalar_float = .{ .of = .qword, .is = .qword } },18562 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
9850 .{ .scalar_float = .{ .of = .qword, .is = .qword } },18563 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
18564 .any,
9851 },18565 },
9852 .patterns = &.{18566 .patterns = &.{
9853 .{ .src = .{ .to_mut_sse, .to_sse } },18567 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
9854 },18568 },
9855 .extra_temps = .{18569 .extra_temps = .{
9856 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },18570 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
...@@ -9866,8 +18580,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9866,8 +18580,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9866 .dst_temps = .{.{ .ref = .src0 }},18580 .dst_temps = .{.{ .ref = .src0 }},
9867 .each = .{ .once = &.{18581 .each = .{ .once = &.{
9868 .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ },18582 .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ },
9869 .{ ._, ._sd, .min, .tmp0x, .src0x, ._, ._ },18583 .{ ._, ._sd, .min, .tmp0x, .src0q, ._, ._ },
9870 .{ ._, ._sd, .cmp, .dst0x, .src0x, .vp(.ord), ._ },18584 .{ ._, ._sd, .cmp, .dst0x, .src0q, .sp(.ord), ._ },
9871 .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ },18585 .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ },
9872 .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ },18586 .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ },
9873 .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ },18587 .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ },
...@@ -9877,9 +18591,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9877,9 +18591,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9877 .src_constraints = .{18591 .src_constraints = .{
9878 .{ .scalar_float = .{ .of = .qword, .is = .qword } },18592 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
9879 .{ .scalar_float = .{ .of = .qword, .is = .qword } },18593 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
18594 .any,
9880 },18595 },
9881 .patterns = &.{18596 .patterns = &.{
9882 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },18597 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
9883 },18598 },
9884 .call_frame = .{ .alignment = .@"16" },18599 .call_frame = .{ .alignment = .@"16" },
9885 .extra_temps = .{18600 .extra_temps = .{
...@@ -9903,9 +18618,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9903,9 +18618,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9903 .src_constraints = .{18618 .src_constraints = .{
9904 .{ .scalar_float = .{ .of = .xword, .is = .qword } },18619 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
9905 .{ .scalar_float = .{ .of = .xword, .is = .qword } },18620 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
18621 .any,
9906 },18622 },
9907 .patterns = &.{18623 .patterns = &.{
9908 .{ .src = .{ .to_sse, .to_sse } },18624 .{ .src = .{ .to_sse, .to_sse, .none } },
9909 },18625 },
9910 .extra_temps = .{18626 .extra_temps = .{
9911 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },18627 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
...@@ -9929,17 +18645,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9929,17 +18645,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9929 .src_constraints = .{18645 .src_constraints = .{
9930 .{ .scalar_float = .{ .of = .xword, .is = .qword } },18646 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
9931 .{ .scalar_float = .{ .of = .xword, .is = .qword } },18647 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
18648 .any,
9932 },18649 },
9933 .patterns = &.{18650 .patterns = &.{
9934 .{ .src = .{ .{ .to_reg = .xmm0 }, .mem } },18651 .{ .src = .{ .{ .to_reg = .xmm0 }, .mem, .none } },
9935 .{ .src = .{ .mem, .{ .to_reg = .xmm0 } }, .commute = .{ 0, 1 } },18652 .{ .src = .{ .mem, .{ .to_reg = .xmm0 }, .none }, .commute = .{ 0, 1 } },
9936 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } },18653 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } },
9937 },18654 },
9938 .dst_temps = .{.{ .rc = .sse }},18655 .dst_temps = .{.{ .rc = .sse }},
9939 .each = .{ .once = &.{18656 .each = .{ .once = &.{
9940 .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ },18657 .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ },
9941 .{ ._, ._pd, .min, .dst0x, .src0x, ._, ._ },18658 .{ ._, ._pd, .min, .dst0x, .src0x, ._, ._ },
9942 .{ ._, ._pd, .cmp, .src0x, .src0x, .vp(.unord), ._ },18659 .{ ._, ._pd, .cmp, .src0x, .src0x, .sp(.unord), ._ },
9943 .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ },18660 .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ },
9944 } },18661 } },
9945 }, .{18662 }, .{
...@@ -9947,11 +18664,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9947,11 +18664,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9947 .src_constraints = .{18664 .src_constraints = .{
9948 .{ .scalar_float = .{ .of = .xword, .is = .qword } },18665 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
9949 .{ .scalar_float = .{ .of = .xword, .is = .qword } },18666 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
18667 .any,
9950 },18668 },
9951 .patterns = &.{18669 .patterns = &.{
9952 .{ .src = .{ .to_mut_sse, .mem } },18670 .{ .src = .{ .to_mut_sse, .mem, .none } },
9953 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },18671 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
9954 .{ .src = .{ .to_mut_sse, .to_sse } },18672 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
9955 },18673 },
9956 .extra_temps = .{18674 .extra_temps = .{
9957 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },18675 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
...@@ -9968,7 +18686,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9968,7 +18686,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9968 .each = .{ .once = &.{18686 .each = .{ .once = &.{
9969 .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ },18687 .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ },
9970 .{ ._, ._pd, .min, .tmp0x, .src0x, ._, ._ },18688 .{ ._, ._pd, .min, .tmp0x, .src0x, ._, ._ },
9971 .{ ._, ._pd, .cmp, .dst0x, .src0x, .vp(.ord), ._ },18689 .{ ._, ._pd, .cmp, .dst0x, .src0x, .sp(.ord), ._ },
9972 .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ },18690 .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ },
9973 .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ },18691 .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ },
9974 .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ },18692 .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ },
...@@ -9978,9 +18696,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9978,9 +18696,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9978 .src_constraints = .{18696 .src_constraints = .{
9979 .{ .scalar_float = .{ .of = .yword, .is = .qword } },18697 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
9980 .{ .scalar_float = .{ .of = .yword, .is = .qword } },18698 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
18699 .any,
9981 },18700 },
9982 .patterns = &.{18701 .patterns = &.{
9983 .{ .src = .{ .to_sse, .to_sse } },18702 .{ .src = .{ .to_sse, .to_sse, .none } },
9984 },18703 },
9985 .extra_temps = .{18704 .extra_temps = .{
9986 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },18705 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
...@@ -10004,9 +18723,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10004,9 +18723,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10004 .src_constraints = .{18723 .src_constraints = .{
10005 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },18724 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
10006 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },18725 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
18726 .any,
10007 },18727 },
10008 .patterns = &.{18728 .patterns = &.{
10009 .{ .src = .{ .to_mem, .to_mem } },18729 .{ .src = .{ .to_mem, .to_mem, .none } },
10010 },18730 },
10011 .extra_temps = .{18731 .extra_temps = .{
10012 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18732 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10037,9 +18757,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10037,9 +18757,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10037 .src_constraints = .{18757 .src_constraints = .{
10038 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },18758 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
10039 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },18759 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
18760 .any,
10040 },18761 },
10041 .patterns = &.{18762 .patterns = &.{
10042 .{ .src = .{ .to_mem, .to_mem } },18763 .{ .src = .{ .to_mem, .to_mem, .none } },
10043 },18764 },
10044 .extra_temps = .{18765 .extra_temps = .{
10045 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18766 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10060,7 +18781,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10060,7 +18781,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10060 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },18781 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
10061 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },18782 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
10062 .{ ._, ._pd, .min, .tmp3x, .tmp1x, ._, ._ },18783 .{ ._, ._pd, .min, .tmp3x, .tmp1x, ._, ._ },
10063 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },18784 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ },
10064 .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },18785 .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
10065 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },18786 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
10066 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },18787 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
...@@ -10071,9 +18792,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10071,9 +18792,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10071 .src_constraints = .{18792 .src_constraints = .{
10072 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },18793 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
10073 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },18794 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
18795 .any,
10074 },18796 },
10075 .patterns = &.{18797 .patterns = &.{
10076 .{ .src = .{ .to_mem, .to_mem } },18798 .{ .src = .{ .to_mem, .to_mem, .none } },
10077 },18799 },
10078 .extra_temps = .{18800 .extra_temps = .{
10079 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18801 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10094,7 +18816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10094,7 +18816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10094 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },18816 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
10095 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },18817 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
10096 .{ ._, ._pd, .min, .tmp3x, .tmp1x, ._, ._ },18818 .{ ._, ._pd, .min, .tmp3x, .tmp1x, ._, ._ },
10097 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.ord), ._ },18819 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ },
10098 .{ ._, ._pd, .@"and", .tmp3x, .tmp1x, ._, ._ },18820 .{ ._, ._pd, .@"and", .tmp3x, .tmp1x, ._, ._ },
10099 .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ },18821 .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ },
10100 .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ },18822 .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ },
...@@ -10107,9 +18829,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10107,9 +18829,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10107 .src_constraints = .{18829 .src_constraints = .{
10108 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },18830 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
10109 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },18831 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
18832 .any,
10110 },18833 },
10111 .patterns = &.{18834 .patterns = &.{
10112 .{ .src = .{ .to_mem, .to_mem } },18835 .{ .src = .{ .to_mem, .to_mem, .none } },
10113 },18836 },
10114 .call_frame = .{ .alignment = .@"16" },18837 .call_frame = .{ .alignment = .@"16" },
10115 .extra_temps = .{18838 .extra_temps = .{
...@@ -10141,11 +18864,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10141,11 +18864,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10141 .src_constraints = .{18864 .src_constraints = .{
10142 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },18865 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
10143 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },18866 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
18867 .any,
10144 },18868 },
10145 .patterns = &.{18869 .patterns = &.{
10146 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },18870 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
10147 .{ .src = .{ .mem, .to_x87 } },18871 .{ .src = .{ .mem, .to_x87, .none } },
10148 .{ .src = .{ .to_x87, .to_x87 } },18872 .{ .src = .{ .to_x87, .to_x87, .none } },
10149 },18873 },
10150 .extra_temps = .{18874 .extra_temps = .{
10151 .{ .type = .f80, .kind = .{ .reg = .st7 } },18875 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -10173,11 +18897,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10173,11 +18897,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10173 .src_constraints = .{18897 .src_constraints = .{
10174 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },18898 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
10175 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },18899 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
18900 .any,
10176 },18901 },
10177 .patterns = &.{18902 .patterns = &.{
10178 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },18903 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
10179 .{ .src = .{ .mem, .to_x87 } },18904 .{ .src = .{ .mem, .to_x87, .none } },
10180 .{ .src = .{ .to_x87, .to_x87 } },18905 .{ .src = .{ .to_x87, .to_x87, .none } },
10181 },18906 },
10182 .extra_temps = .{18907 .extra_temps = .{
10183 .{ .type = .f80, .kind = .{ .reg = .st7 } },18908 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -10211,11 +18936,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10211,11 +18936,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10211 .src_constraints = .{18936 .src_constraints = .{
10212 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },18937 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
10213 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },18938 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
18939 .any,
10214 },18940 },
10215 .patterns = &.{18941 .patterns = &.{
10216 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },18942 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
10217 .{ .src = .{ .mem, .to_x87 } },18943 .{ .src = .{ .mem, .to_x87, .none } },
10218 .{ .src = .{ .to_x87, .to_x87 } },18944 .{ .src = .{ .to_x87, .to_x87, .none } },
10219 },18945 },
10220 .extra_temps = .{18946 .extra_temps = .{
10221 .{ .type = .f80, .kind = .{ .reg = .st7 } },18947 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -10249,9 +18975,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10249,9 +18975,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10249 .src_constraints = .{18975 .src_constraints = .{
10250 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },18976 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
10251 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },18977 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
18978 .any,
10252 },18979 },
10253 .patterns = &.{18980 .patterns = &.{
10254 .{ .src = .{ .to_mem, .to_mem } },18981 .{ .src = .{ .to_mem, .to_mem, .none } },
10255 },18982 },
10256 .extra_temps = .{18983 .extra_temps = .{
10257 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18984 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10284,9 +19011,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10284,9 +19011,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10284 .src_constraints = .{19011 .src_constraints = .{
10285 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },19012 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
10286 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },19013 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
19014 .any,
10287 },19015 },
10288 .patterns = &.{19016 .patterns = &.{
10289 .{ .src = .{ .to_mem, .to_mem } },19017 .{ .src = .{ .to_mem, .to_mem, .none } },
10290 },19018 },
10291 .extra_temps = .{19019 .extra_temps = .{
10292 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },19020 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10325,9 +19053,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10325,9 +19053,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10325 .src_constraints = .{19053 .src_constraints = .{
10326 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },19054 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
10327 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },19055 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
19056 .any,
10328 },19057 },
10329 .patterns = &.{19058 .patterns = &.{
10330 .{ .src = .{ .to_mem, .to_mem } },19059 .{ .src = .{ .to_mem, .to_mem, .none } },
10331 },19060 },
10332 .extra_temps = .{19061 .extra_temps = .{
10333 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },19062 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10366,9 +19095,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10366,9 +19095,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10366 .src_constraints = .{19095 .src_constraints = .{
10367 .{ .scalar_float = .{ .of = .xword, .is = .xword } },19096 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
10368 .{ .scalar_float = .{ .of = .xword, .is = .xword } },19097 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
19098 .any,
10369 },19099 },
10370 .patterns = &.{19100 .patterns = &.{
10371 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },19101 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
10372 },19102 },
10373 .call_frame = .{ .alignment = .@"16" },19103 .call_frame = .{ .alignment = .@"16" },
10374 .extra_temps = .{19104 .extra_temps = .{
...@@ -10392,9 +19122,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10392,9 +19122,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10392 .src_constraints = .{19122 .src_constraints = .{
10393 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },19123 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
10394 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },19124 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
19125 .any,
10395 },19126 },
10396 .patterns = &.{19127 .patterns = &.{
10397 .{ .src = .{ .to_mem, .to_mem } },19128 .{ .src = .{ .to_mem, .to_mem, .none } },
10398 },19129 },
10399 .call_frame = .{ .alignment = .@"16" },19130 .call_frame = .{ .alignment = .@"16" },
10400 .extra_temps = .{19131 .extra_temps = .{
...@@ -10424,9 +19155,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10424,9 +19155,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10424 .src_constraints = .{19155 .src_constraints = .{
10425 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },19156 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
10426 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },19157 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
19158 .any,
10427 },19159 },
10428 .patterns = &.{19160 .patterns = &.{
10429 .{ .src = .{ .to_mem, .to_mem } },19161 .{ .src = .{ .to_mem, .to_mem, .none } },
10430 },19162 },
10431 .call_frame = .{ .alignment = .@"16" },19163 .call_frame = .{ .alignment = .@"16" },
10432 .extra_temps = .{19164 .extra_temps = .{
...@@ -10456,9 +19188,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10456,9 +19188,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10456 .src_constraints = .{19188 .src_constraints = .{
10457 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },19189 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
10458 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },19190 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
19191 .any,
10459 },19192 },
10460 .patterns = &.{19193 .patterns = &.{
10461 .{ .src = .{ .to_mem, .to_mem } },19194 .{ .src = .{ .to_mem, .to_mem, .none } },
10462 },19195 },
10463 .call_frame = .{ .alignment = .@"16" },19196 .call_frame = .{ .alignment = .@"16" },
10464 .extra_temps = .{19197 .extra_temps = .{
...@@ -10530,17 +19263,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10530,17 +19263,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10530 })) {19263 })) {
10531 else => unreachable,19264 else => unreachable,
10532 inline .@"and", .@"or", .xor => |mir_tag| comptime &.{ .{19265 inline .@"and", .@"or", .xor => |mir_tag| comptime &.{ .{
10533 .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte } },19266 .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte }, .any },
10534 .patterns = &.{19267 .patterns = &.{
10535 .{ .src = .{ .mut_mem, .imm8 } },19268 .{ .src = .{ .mut_mem, .imm8, .none } },
10536 .{ .src = .{ .imm8, .mut_mem }, .commute = .{ 0, 1 } },19269 .{ .src = .{ .imm8, .mut_mem, .none }, .commute = .{ 0, 1 } },
10537 .{ .src = .{ .to_mut_gpr, .imm8 } },19270 .{ .src = .{ .to_mut_gpr, .imm8, .none } },
10538 .{ .src = .{ .imm8, .to_mut_gpr }, .commute = .{ 0, 1 } },19271 .{ .src = .{ .imm8, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
10539 .{ .src = .{ .mut_mem, .to_gpr } },19272 .{ .src = .{ .mut_mem, .to_gpr, .none } },
10540 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },19273 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
10541 .{ .src = .{ .to_mut_gpr, .mem } },19274 .{ .src = .{ .to_mut_gpr, .mem, .none } },
10542 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },19275 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
10543 .{ .src = .{ .to_mut_gpr, .to_gpr } },19276 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
10544 },19277 },
10545 .dst_temps = .{.{ .ref = .src0 }},19278 .dst_temps = .{.{ .ref = .src0 }},
10546 .clobbers = .{ .eflags = true },19279 .clobbers = .{ .eflags = true },
...@@ -10548,17 +19281,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10548,17 +19281,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10548 .{ ._, ._, mir_tag, .dst0b, .src1b, ._, ._ },19281 .{ ._, ._, mir_tag, .dst0b, .src1b, ._, ._ },
10549 } },19282 } },
10550 }, .{19283 }, .{
10551 .src_constraints = .{ .{ .size = .word }, .{ .size = .word } },19284 .src_constraints = .{ .{ .size = .word }, .{ .size = .word }, .any },
10552 .patterns = &.{19285 .patterns = &.{
10553 .{ .src = .{ .mut_mem, .imm16 } },19286 .{ .src = .{ .mut_mem, .imm16, .none } },
10554 .{ .src = .{ .imm16, .mut_mem }, .commute = .{ 0, 1 } },19287 .{ .src = .{ .imm16, .mut_mem, .none }, .commute = .{ 0, 1 } },
10555 .{ .src = .{ .to_mut_gpr, .imm16 } },19288 .{ .src = .{ .to_mut_gpr, .imm16, .none } },
10556 .{ .src = .{ .imm16, .to_mut_gpr }, .commute = .{ 0, 1 } },19289 .{ .src = .{ .imm16, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
10557 .{ .src = .{ .mut_mem, .to_gpr } },19290 .{ .src = .{ .mut_mem, .to_gpr, .none } },
10558 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },19291 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
10559 .{ .src = .{ .to_mut_gpr, .mem } },19292 .{ .src = .{ .to_mut_gpr, .mem, .none } },
10560 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },19293 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
10561 .{ .src = .{ .to_mut_gpr, .to_gpr } },19294 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
10562 },19295 },
10563 .dst_temps = .{.{ .ref = .src0 }},19296 .dst_temps = .{.{ .ref = .src0 }},
10564 .clobbers = .{ .eflags = true },19297 .clobbers = .{ .eflags = true },
...@@ -10566,17 +19299,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10566,17 +19299,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10566 .{ ._, ._, mir_tag, .dst0w, .src1w, ._, ._ },19299 .{ ._, ._, mir_tag, .dst0w, .src1w, ._, ._ },
10567 } },19300 } },
10568 }, .{19301 }, .{
10569 .src_constraints = .{ .{ .size = .dword }, .{ .size = .dword } },19302 .src_constraints = .{ .{ .size = .dword }, .{ .size = .dword }, .any },
10570 .patterns = &.{19303 .patterns = &.{
10571 .{ .src = .{ .mut_mem, .imm32 } },19304 .{ .src = .{ .mut_mem, .imm32, .none } },
10572 .{ .src = .{ .imm32, .mut_mem }, .commute = .{ 0, 1 } },19305 .{ .src = .{ .imm32, .mut_mem, .none }, .commute = .{ 0, 1 } },
10573 .{ .src = .{ .to_mut_gpr, .imm32 } },19306 .{ .src = .{ .to_mut_gpr, .imm32, .none } },
10574 .{ .src = .{ .imm32, .to_mut_gpr }, .commute = .{ 0, 1 } },19307 .{ .src = .{ .imm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
10575 .{ .src = .{ .mut_mem, .to_gpr } },19308 .{ .src = .{ .mut_mem, .to_gpr, .none } },
10576 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },19309 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
10577 .{ .src = .{ .to_mut_gpr, .mem } },19310 .{ .src = .{ .to_mut_gpr, .mem, .none } },
10578 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },19311 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
10579 .{ .src = .{ .to_mut_gpr, .to_gpr } },19312 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
10580 },19313 },
10581 .dst_temps = .{.{ .ref = .src0 }},19314 .dst_temps = .{.{ .ref = .src0 }},
10582 .clobbers = .{ .eflags = true },19315 .clobbers = .{ .eflags = true },
...@@ -10585,17 +19318,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10585,17 +19318,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10585 } },19318 } },
10586 }, .{19319 }, .{
10587 .required_features = .{ .@"64bit", null, null, null },19320 .required_features = .{ .@"64bit", null, null, null },
10588 .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword } },19321 .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword }, .any },
10589 .patterns = &.{19322 .patterns = &.{
10590 .{ .src = .{ .mut_mem, .simm32 } },19323 .{ .src = .{ .mut_mem, .simm32, .none } },
10591 .{ .src = .{ .simm32, .mut_mem }, .commute = .{ 0, 1 } },19324 .{ .src = .{ .simm32, .mut_mem, .none }, .commute = .{ 0, 1 } },
10592 .{ .src = .{ .to_mut_gpr, .simm32 } },19325 .{ .src = .{ .to_mut_gpr, .simm32, .none } },
10593 .{ .src = .{ .simm32, .to_mut_gpr }, .commute = .{ 0, 1 } },19326 .{ .src = .{ .simm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
10594 .{ .src = .{ .mut_mem, .to_gpr } },19327 .{ .src = .{ .mut_mem, .to_gpr, .none } },
10595 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },19328 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
10596 .{ .src = .{ .to_mut_gpr, .mem } },19329 .{ .src = .{ .to_mut_gpr, .mem, .none } },
10597 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },19330 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
10598 .{ .src = .{ .to_mut_gpr, .to_gpr } },19331 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
10599 },19332 },
10600 .dst_temps = .{.{ .ref = .src0 }},19333 .dst_temps = .{.{ .ref = .src0 }},
10601 .clobbers = .{ .eflags = true },19334 .clobbers = .{ .eflags = true },
...@@ -10604,11 +19337,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10604,11 +19337,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10604 } },19337 } },
10605 }, .{19338 }, .{
10606 .required_features = .{ .mmx, null, null, null },19339 .required_features = .{ .mmx, null, null, null },
10607 .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword } },19340 .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword }, .any },
10608 .patterns = &.{19341 .patterns = &.{
10609 .{ .src = .{ .to_mut_mm, .mem } },19342 .{ .src = .{ .to_mut_mm, .mem, .none } },
10610 .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } },19343 .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } },
10611 .{ .src = .{ .to_mut_mm, .to_mm } },19344 .{ .src = .{ .to_mut_mm, .to_mm, .none } },
10612 },19345 },
10613 .dst_temps = .{.{ .ref = .src0 }},19346 .dst_temps = .{.{ .ref = .src0 }},
10614 .each = .{ .once = &.{19347 .each = .{ .once = &.{
...@@ -10616,11 +19349,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10616,11 +19349,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10616 } },19349 } },
10617 }, .{19350 }, .{
10618 .required_features = .{ .avx, null, null, null },19351 .required_features = .{ .avx, null, null, null },
10619 .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword } },19352 .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword }, .any },
10620 .patterns = &.{19353 .patterns = &.{
10621 .{ .src = .{ .to_xmm, .mem } },19354 .{ .src = .{ .to_xmm, .mem, .none } },
10622 .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } },19355 .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } },
10623 .{ .src = .{ .to_xmm, .to_xmm } },19356 .{ .src = .{ .to_xmm, .to_xmm, .none } },
10624 },19357 },
10625 .dst_temps = .{.{ .rc = .sse }},19358 .dst_temps = .{.{ .rc = .sse }},
10626 .each = .{ .once = &.{19359 .each = .{ .once = &.{
...@@ -10628,11 +19361,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10628,11 +19361,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10628 } },19361 } },
10629 }, .{19362 }, .{
10630 .required_features = .{ .sse2, null, null, null },19363 .required_features = .{ .sse2, null, null, null },
10631 .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword } },19364 .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword }, .any },
10632 .patterns = &.{19365 .patterns = &.{
10633 .{ .src = .{ .to_mut_xmm, .mem } },19366 .{ .src = .{ .to_mut_xmm, .mem, .none } },
10634 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },19367 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
10635 .{ .src = .{ .to_mut_xmm, .to_xmm } },19368 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
10636 },19369 },
10637 .dst_temps = .{.{ .ref = .src0 }},19370 .dst_temps = .{.{ .ref = .src0 }},
10638 .each = .{ .once = &.{19371 .each = .{ .once = &.{
...@@ -10640,11 +19373,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10640,11 +19373,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10640 } },19373 } },
10641 }, .{19374 }, .{
10642 .required_features = .{ .sse, null, null, null },19375 .required_features = .{ .sse, null, null, null },
10643 .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword } },19376 .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword }, .any },
10644 .patterns = &.{19377 .patterns = &.{
10645 .{ .src = .{ .to_mut_xmm, .mem } },19378 .{ .src = .{ .to_mut_xmm, .mem, .none } },
10646 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },19379 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
10647 .{ .src = .{ .to_mut_xmm, .to_xmm } },19380 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
10648 },19381 },
10649 .dst_temps = .{.{ .ref = .src0 }},19382 .dst_temps = .{.{ .ref = .src0 }},
10650 .each = .{ .once = &.{19383 .each = .{ .once = &.{
...@@ -10652,11 +19385,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10652,11 +19385,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10652 } },19385 } },
10653 }, .{19386 }, .{
10654 .required_features = .{ .avx2, null, null, null },19387 .required_features = .{ .avx2, null, null, null },
10655 .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword } },19388 .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword }, .any },
10656 .patterns = &.{19389 .patterns = &.{
10657 .{ .src = .{ .to_ymm, .mem } },19390 .{ .src = .{ .to_ymm, .mem, .none } },
10658 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },19391 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
10659 .{ .src = .{ .to_ymm, .to_ymm } },19392 .{ .src = .{ .to_ymm, .to_ymm, .none } },
10660 },19393 },
10661 .dst_temps = .{.{ .rc = .sse }},19394 .dst_temps = .{.{ .rc = .sse }},
10662 .each = .{ .once = &.{19395 .each = .{ .once = &.{
...@@ -10664,11 +19397,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10664,11 +19397,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10664 } },19397 } },
10665 }, .{19398 }, .{
10666 .required_features = .{ .avx, null, null, null },19399 .required_features = .{ .avx, null, null, null },
10667 .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword } },19400 .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword }, .any },
10668 .patterns = &.{19401 .patterns = &.{
10669 .{ .src = .{ .to_ymm, .mem } },19402 .{ .src = .{ .to_ymm, .mem, .none } },
10670 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },19403 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
10671 .{ .src = .{ .to_ymm, .to_ymm } },19404 .{ .src = .{ .to_ymm, .to_ymm, .none } },
10672 },19405 },
10673 .dst_temps = .{.{ .rc = .sse }},19406 .dst_temps = .{.{ .rc = .sse }},
10674 .each = .{ .once = &.{19407 .each = .{ .once = &.{
...@@ -10676,9 +19409,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10676,9 +19409,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10676 } },19409 } },
10677 }, .{19410 }, .{
10678 .required_features = .{ .avx2, null, null, null },19411 .required_features = .{ .avx2, null, null, null },
10679 .src_constraints = .{ .{ .multiple_size = .yword }, .{ .multiple_size = .yword } },19412 .src_constraints = .{ .{ .multiple_size = .yword }, .{ .multiple_size = .yword }, .any },
10680 .patterns = &.{19413 .patterns = &.{
10681 .{ .src = .{ .to_mem, .to_mem } },19414 .{ .src = .{ .to_mem, .to_mem, .none } },
10682 },19415 },
10683 .extra_temps = .{19416 .extra_temps = .{
10684 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },19417 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10703,9 +19436,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10703,9 +19436,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10703 } },19436 } },
10704 }, .{19437 }, .{
10705 .required_features = .{ .avx, null, null, null },19438 .required_features = .{ .avx, null, null, null },
10706 .src_constraints = .{ .{ .multiple_size = .yword }, .{ .multiple_size = .yword } },19439 .src_constraints = .{ .{ .multiple_size = .yword }, .{ .multiple_size = .yword }, .any },
10707 .patterns = &.{19440 .patterns = &.{
10708 .{ .src = .{ .to_mem, .to_mem } },19441 .{ .src = .{ .to_mem, .to_mem, .none } },
10709 },19442 },
10710 .extra_temps = .{19443 .extra_temps = .{
10711 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },19444 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10730,9 +19463,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10730,9 +19463,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10730 } },19463 } },
10731 }, .{19464 }, .{
10732 .required_features = .{ .avx, null, null, null },19465 .required_features = .{ .avx, null, null, null },
10733 .src_constraints = .{ .{ .multiple_size = .xword }, .{ .multiple_size = .xword } },19466 .src_constraints = .{ .{ .multiple_size = .xword }, .{ .multiple_size = .xword }, .any },
10734 .patterns = &.{19467 .patterns = &.{
10735 .{ .src = .{ .to_mem, .to_mem } },19468 .{ .src = .{ .to_mem, .to_mem, .none } },
10736 },19469 },
10737 .extra_temps = .{19470 .extra_temps = .{
10738 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },19471 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10757,9 +19490,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10757,9 +19490,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10757 } },19490 } },
10758 }, .{19491 }, .{
10759 .required_features = .{ .sse2, null, null, null },19492 .required_features = .{ .sse2, null, null, null },
10760 .src_constraints = .{ .{ .multiple_size = .xword }, .{ .multiple_size = .xword } },19493 .src_constraints = .{ .{ .multiple_size = .xword }, .{ .multiple_size = .xword }, .any },
10761 .patterns = &.{19494 .patterns = &.{
10762 .{ .src = .{ .to_mem, .to_mem } },19495 .{ .src = .{ .to_mem, .to_mem, .none } },
10763 },19496 },
10764 .extra_temps = .{19497 .extra_temps = .{
10765 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },19498 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10784,9 +19517,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10784,9 +19517,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10784 } },19517 } },
10785 }, .{19518 }, .{
10786 .required_features = .{ .sse, null, null, null },19519 .required_features = .{ .sse, null, null, null },
10787 .src_constraints = .{ .{ .multiple_size = .xword }, .{ .multiple_size = .xword } },19520 .src_constraints = .{ .{ .multiple_size = .xword }, .{ .multiple_size = .xword }, .any },
10788 .patterns = &.{19521 .patterns = &.{
10789 .{ .src = .{ .to_mem, .to_mem } },19522 .{ .src = .{ .to_mem, .to_mem, .none } },
10790 },19523 },
10791 .extra_temps = .{19524 .extra_temps = .{
10792 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },19525 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10811,9 +19544,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10811,9 +19544,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10811 } },19544 } },
10812 }, .{19545 }, .{
10813 .required_features = .{ .mmx, null, null, null },19546 .required_features = .{ .mmx, null, null, null },
10814 .src_constraints = .{ .{ .multiple_size = .qword }, .{ .multiple_size = .qword } },19547 .src_constraints = .{ .{ .multiple_size = .qword }, .{ .multiple_size = .qword }, .any },
10815 .patterns = &.{19548 .patterns = &.{
10816 .{ .src = .{ .to_mem, .to_mem } },19549 .{ .src = .{ .to_mem, .to_mem, .none } },
10817 },19550 },
10818 .extra_temps = .{19551 .extra_temps = .{
10819 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },19552 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10837,9 +19570,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10837,9 +19570,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10837 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },19570 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10838 } },19571 } },
10839 }, .{19572 }, .{
10840 .src_constraints = .{ .{ .multiple_size = .qword }, .{ .multiple_size = .qword } },19573 .src_constraints = .{ .{ .multiple_size = .qword }, .{ .multiple_size = .qword }, .any },
10841 .patterns = &.{19574 .patterns = &.{
10842 .{ .src = .{ .to_mem, .to_mem } },19575 .{ .src = .{ .to_mem, .to_mem, .none } },
10843 },19576 },
10844 .extra_temps = .{19577 .extra_temps = .{
10845 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },19578 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10879,20 +19612,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10879,20 +19612,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10879 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});19612 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
10880 var res: [1]Temp = undefined;19613 var res: [1]Temp = undefined;
10881 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{19614 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
10882 .src_constraints = .{ .{ .signed_or_exact_int = .byte }, .any },19615 .src_constraints = .{ .{ .signed_or_exact_int = .byte }, .any, .any },
10883 .patterns = &.{19616 .patterns = &.{
10884 .{ .src = .{ .mut_mem, .none } },19617 .{ .src = .{ .mut_mem, .none, .none } },
10885 .{ .src = .{ .to_mut_gpr, .none } },19618 .{ .src = .{ .to_mut_gpr, .none, .none } },
10886 },19619 },
10887 .dst_temps = .{.{ .ref = .src0 }},19620 .dst_temps = .{.{ .ref = .src0 }},
10888 .each = .{ .once = &.{19621 .each = .{ .once = &.{
10889 .{ ._, ._, .not, .dst0b, ._, ._, ._ },19622 .{ ._, ._, .not, .dst0b, ._, ._, ._ },
10890 } },19623 } },
10891 }, .{19624 }, .{
10892 .src_constraints = .{ .{ .unsigned_int = .byte }, .any },19625 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
10893 .patterns = &.{19626 .patterns = &.{
10894 .{ .src = .{ .mut_mem, .none } },19627 .{ .src = .{ .mut_mem, .none, .none } },
10895 .{ .src = .{ .to_mut_gpr, .none } },19628 .{ .src = .{ .to_mut_gpr, .none, .none } },
10896 },19629 },
10897 .dst_temps = .{.{ .ref = .src0 }},19630 .dst_temps = .{.{ .ref = .src0 }},
10898 .clobbers = .{ .eflags = true },19631 .clobbers = .{ .eflags = true },
...@@ -10900,20 +19633,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10900,20 +19633,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10900 .{ ._, ._, .xor, .dst0b, .sa(.src0, .add_umax), ._, ._ },19633 .{ ._, ._, .xor, .dst0b, .sa(.src0, .add_umax), ._, ._ },
10901 } },19634 } },
10902 }, .{19635 }, .{
10903 .src_constraints = .{ .{ .signed_or_exact_int = .word }, .any },19636 .src_constraints = .{ .{ .signed_or_exact_int = .word }, .any, .any },
10904 .patterns = &.{19637 .patterns = &.{
10905 .{ .src = .{ .mut_mem, .none } },19638 .{ .src = .{ .mut_mem, .none, .none } },
10906 .{ .src = .{ .to_mut_gpr, .none } },19639 .{ .src = .{ .to_mut_gpr, .none, .none } },
10907 },19640 },
10908 .dst_temps = .{.{ .ref = .src0 }},19641 .dst_temps = .{.{ .ref = .src0 }},
10909 .each = .{ .once = &.{19642 .each = .{ .once = &.{
10910 .{ ._, ._, .not, .dst0w, ._, ._, ._ },19643 .{ ._, ._, .not, .dst0w, ._, ._, ._ },
10911 } },19644 } },
10912 }, .{19645 }, .{
10913 .src_constraints = .{ .{ .unsigned_int = .word }, .any },19646 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
10914 .patterns = &.{19647 .patterns = &.{
10915 .{ .src = .{ .mut_mem, .none } },19648 .{ .src = .{ .mut_mem, .none, .none } },
10916 .{ .src = .{ .to_mut_gpr, .none } },19649 .{ .src = .{ .to_mut_gpr, .none, .none } },
10917 },19650 },
10918 .dst_temps = .{.{ .ref = .src0 }},19651 .dst_temps = .{.{ .ref = .src0 }},
10919 .clobbers = .{ .eflags = true },19652 .clobbers = .{ .eflags = true },
...@@ -10921,20 +19654,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10921,20 +19654,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10921 .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_umax), ._, ._ },19654 .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_umax), ._, ._ },
10922 } },19655 } },
10923 }, .{19656 }, .{
10924 .src_constraints = .{ .{ .signed_or_exact_int = .dword }, .any },19657 .src_constraints = .{ .{ .signed_or_exact_int = .dword }, .any, .any },
10925 .patterns = &.{19658 .patterns = &.{
10926 .{ .src = .{ .mut_mem, .none } },19659 .{ .src = .{ .mut_mem, .none, .none } },
10927 .{ .src = .{ .to_mut_gpr, .none } },19660 .{ .src = .{ .to_mut_gpr, .none, .none } },
10928 },19661 },
10929 .dst_temps = .{.{ .ref = .src0 }},19662 .dst_temps = .{.{ .ref = .src0 }},
10930 .each = .{ .once = &.{19663 .each = .{ .once = &.{
10931 .{ ._, ._, .not, .dst0d, ._, ._, ._ },19664 .{ ._, ._, .not, .dst0d, ._, ._, ._ },
10932 } },19665 } },
10933 }, .{19666 }, .{
10934 .src_constraints = .{ .{ .unsigned_int = .dword }, .any },19667 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
10935 .patterns = &.{19668 .patterns = &.{
10936 .{ .src = .{ .mut_mem, .none } },19669 .{ .src = .{ .mut_mem, .none, .none } },
10937 .{ .src = .{ .to_mut_gpr, .none } },19670 .{ .src = .{ .to_mut_gpr, .none, .none } },
10938 },19671 },
10939 .dst_temps = .{.{ .ref = .src0 }},19672 .dst_temps = .{.{ .ref = .src0 }},
10940 .clobbers = .{ .eflags = true },19673 .clobbers = .{ .eflags = true },
...@@ -10943,10 +19676,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10943,10 +19676,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10943 } },19676 } },
10944 }, .{19677 }, .{
10945 .required_features = .{ .@"64bit", null, null, null },19678 .required_features = .{ .@"64bit", null, null, null },
10946 .src_constraints = .{ .{ .signed_or_exact_int = .qword }, .any },19679 .src_constraints = .{ .{ .signed_or_exact_int = .qword }, .any, .any },
10947 .patterns = &.{19680 .patterns = &.{
10948 .{ .src = .{ .mut_mem, .none } },19681 .{ .src = .{ .mut_mem, .none, .none } },
10949 .{ .src = .{ .to_mut_gpr, .none } },19682 .{ .src = .{ .to_mut_gpr, .none, .none } },
10950 },19683 },
10951 .dst_temps = .{.{ .ref = .src0 }},19684 .dst_temps = .{.{ .ref = .src0 }},
10952 .each = .{ .once = &.{19685 .each = .{ .once = &.{
...@@ -10954,10 +19687,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10954,10 +19687,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10954 } },19687 } },
10955 }, .{19688 }, .{
10956 .required_features = .{ .@"64bit", null, null, null },19689 .required_features = .{ .@"64bit", null, null, null },
10957 .src_constraints = .{ .{ .unsigned_int = .qword }, .any },19690 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
10958 .patterns = &.{19691 .patterns = &.{
10959 .{ .src = .{ .mem, .none } },19692 .{ .src = .{ .mem, .none, .none } },
10960 .{ .src = .{ .to_gpr, .none } },19693 .{ .src = .{ .to_gpr, .none, .none } },
10961 },19694 },
10962 .dst_temps = .{.{ .rc = .general_purpose }},19695 .dst_temps = .{.{ .rc = .general_purpose }},
10963 .each = .{ .once = &.{19696 .each = .{ .once = &.{
...@@ -10966,10 +19699,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10966,10 +19699,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10966 } },19699 } },
10967 }, .{19700 }, .{
10968 .required_features = .{ .mmx, null, null, null },19701 .required_features = .{ .mmx, null, null, null },
10969 .src_constraints = .{ .{ .signed_or_exact_int = .qword }, .any },19702 .src_constraints = .{ .{ .signed_or_exact_int = .qword }, .any, .any },
10970 .patterns = &.{19703 .patterns = &.{
10971 .{ .src = .{ .mem, .none } },19704 .{ .src = .{ .mem, .none, .none } },
10972 .{ .src = .{ .to_mm, .none } },19705 .{ .src = .{ .to_mm, .none, .none } },
10973 },19706 },
10974 .dst_temps = .{.{ .rc = .mmx }},19707 .dst_temps = .{.{ .rc = .mmx }},
10975 .each = .{ .once = &.{19708 .each = .{ .once = &.{
...@@ -10978,9 +19711,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10978,9 +19711,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10978 } },19711 } },
10979 }, .{19712 }, .{
10980 .required_features = .{ .mmx, null, null, null },19713 .required_features = .{ .mmx, null, null, null },
10981 .src_constraints = .{ .{ .unsigned_int = .qword }, .any },19714 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
10982 .patterns = &.{19715 .patterns = &.{
10983 .{ .src = .{ .to_mut_mm, .none } },19716 .{ .src = .{ .to_mut_mm, .none, .none } },
10984 },19717 },
10985 .extra_temps = .{19718 .extra_temps = .{
10986 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },19719 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -11000,10 +19733,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11000,10 +19733,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11000 } },19733 } },
11001 }, .{19734 }, .{
11002 .required_features = .{ .avx, null, null, null },19735 .required_features = .{ .avx, null, null, null },
11003 .src_constraints = .{ .{ .signed_or_exact_int = .xword }, .any },19736 .src_constraints = .{ .{ .signed_or_exact_int = .xword }, .any, .any },
11004 .patterns = &.{19737 .patterns = &.{
11005 .{ .src = .{ .mem, .none } },19738 .{ .src = .{ .mem, .none, .none } },
11006 .{ .src = .{ .to_xmm, .none } },19739 .{ .src = .{ .to_xmm, .none, .none } },
11007 },19740 },
11008 .dst_temps = .{.{ .rc = .sse }},19741 .dst_temps = .{.{ .rc = .sse }},
11009 .each = .{ .once = &.{19742 .each = .{ .once = &.{
...@@ -11012,9 +19745,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11012,9 +19745,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11012 } },19745 } },
11013 }, .{19746 }, .{
11014 .required_features = .{ .avx, null, null, null },19747 .required_features = .{ .avx, null, null, null },
11015 .src_constraints = .{ .{ .unsigned_int = .xword }, .any },19748 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
11016 .patterns = &.{19749 .patterns = &.{
11017 .{ .src = .{ .to_xmm, .none } },19750 .{ .src = .{ .to_xmm, .none, .none } },
11018 },19751 },
11019 .extra_temps = .{19752 .extra_temps = .{
11020 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },19753 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -11034,10 +19767,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11034,10 +19767,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11034 } },19767 } },
11035 }, .{19768 }, .{
11036 .required_features = .{ .sse2, null, null, null },19769 .required_features = .{ .sse2, null, null, null },
11037 .src_constraints = .{ .{ .signed_or_exact_int = .xword }, .any },19770 .src_constraints = .{ .{ .signed_or_exact_int = .xword }, .any, .any },
11038 .patterns = &.{19771 .patterns = &.{
11039 .{ .src = .{ .mem, .none } },19772 .{ .src = .{ .mem, .none, .none } },
11040 .{ .src = .{ .to_xmm, .none } },19773 .{ .src = .{ .to_xmm, .none, .none } },
11041 },19774 },
11042 .dst_temps = .{.{ .rc = .sse }},19775 .dst_temps = .{.{ .rc = .sse }},
11043 .each = .{ .once = &.{19776 .each = .{ .once = &.{
...@@ -11046,9 +19779,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11046,9 +19779,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11046 } },19779 } },
11047 }, .{19780 }, .{
11048 .required_features = .{ .sse2, null, null, null },19781 .required_features = .{ .sse2, null, null, null },
11049 .src_constraints = .{ .{ .unsigned_int = .xword }, .any },19782 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
11050 .patterns = &.{19783 .patterns = &.{
11051 .{ .src = .{ .to_mut_xmm, .none } },19784 .{ .src = .{ .to_mut_xmm, .none, .none } },
11052 },19785 },
11053 .extra_temps = .{19786 .extra_temps = .{
11054 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },19787 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -11068,9 +19801,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11068,9 +19801,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11068 } },19801 } },
11069 }, .{19802 }, .{
11070 .required_features = .{ .sse, null, null, null },19803 .required_features = .{ .sse, null, null, null },
11071 .src_constraints = .{ .{ .int = .xword }, .any },19804 .src_constraints = .{ .{ .int = .xword }, .any, .any },
11072 .patterns = &.{19805 .patterns = &.{
11073 .{ .src = .{ .to_mut_xmm, .none } },19806 .{ .src = .{ .to_mut_xmm, .none, .none } },
11074 },19807 },
11075 .extra_temps = .{19808 .extra_temps = .{
11076 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },19809 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -11090,10 +19823,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11090,10 +19823,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11090 } },19823 } },
11091 }, .{19824 }, .{
11092 .required_features = .{ .avx2, null, null, null },19825 .required_features = .{ .avx2, null, null, null },
11093 .src_constraints = .{ .{ .signed_or_exact_int = .yword }, .any },19826 .src_constraints = .{ .{ .signed_or_exact_int = .yword }, .any, .any },
11094 .patterns = &.{19827 .patterns = &.{
11095 .{ .src = .{ .mem, .none } },19828 .{ .src = .{ .mem, .none, .none } },
11096 .{ .src = .{ .to_ymm, .none } },19829 .{ .src = .{ .to_ymm, .none, .none } },
11097 },19830 },
11098 .dst_temps = .{.{ .rc = .sse }},19831 .dst_temps = .{.{ .rc = .sse }},
11099 .each = .{ .once = &.{19832 .each = .{ .once = &.{
...@@ -11102,9 +19835,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11102,9 +19835,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11102 } },19835 } },
11103 }, .{19836 }, .{
11104 .required_features = .{ .avx2, null, null, null },19837 .required_features = .{ .avx2, null, null, null },
11105 .src_constraints = .{ .{ .unsigned_int = .yword }, .any },19838 .src_constraints = .{ .{ .unsigned_int = .yword }, .any, .any },
11106 .patterns = &.{19839 .patterns = &.{
11107 .{ .src = .{ .to_ymm, .none } },19840 .{ .src = .{ .to_ymm, .none, .none } },
11108 },19841 },
11109 .extra_temps = .{19842 .extra_temps = .{
11110 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },19843 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -11124,10 +19857,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11124,10 +19857,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11124 } },19857 } },
11125 }, .{19858 }, .{
11126 .required_features = .{ .avx, null, null, null },19859 .required_features = .{ .avx, null, null, null },
11127 .src_constraints = .{ .{ .signed_or_exact_int = .yword }, .any },19860 .src_constraints = .{ .{ .signed_or_exact_int = .yword }, .any, .any },
11128 .patterns = &.{19861 .patterns = &.{
11129 .{ .src = .{ .mem, .none } },19862 .{ .src = .{ .mem, .none, .none } },
11130 .{ .src = .{ .to_ymm, .none } },19863 .{ .src = .{ .to_ymm, .none, .none } },
11131 },19864 },
11132 .dst_temps = .{.{ .rc = .sse }},19865 .dst_temps = .{.{ .rc = .sse }},
11133 .each = .{ .once = &.{19866 .each = .{ .once = &.{
...@@ -11136,9 +19869,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11136,9 +19869,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11136 } },19869 } },
11137 }, .{19870 }, .{
11138 .required_features = .{ .avx, null, null, null },19871 .required_features = .{ .avx, null, null, null },
11139 .src_constraints = .{ .{ .unsigned_int = .yword }, .any },19872 .src_constraints = .{ .{ .unsigned_int = .yword }, .any, .any },
11140 .patterns = &.{19873 .patterns = &.{
11141 .{ .src = .{ .to_ymm, .none } },19874 .{ .src = .{ .to_ymm, .none, .none } },
11142 },19875 },
11143 .extra_temps = .{19876 .extra_temps = .{
11144 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },19877 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -11158,9 +19891,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11158,9 +19891,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11158 } },19891 } },
11159 }, .{19892 }, .{
11160 .required_features = .{ .avx2, null, null, null },19893 .required_features = .{ .avx2, null, null, null },
11161 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .xword } }, .any },19894 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .xword } }, .any, .any },
11162 .patterns = &.{19895 .patterns = &.{
11163 .{ .src = .{ .to_mem, .none } },19896 .{ .src = .{ .to_mem, .none, .none } },
11164 },19897 },
11165 .extra_temps = .{19898 .extra_temps = .{
11166 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },19899 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11187,9 +19920,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11187,9 +19920,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11187 } },19920 } },
11188 }, .{19921 }, .{
11189 .required_features = .{ .avx2, null, null, null },19922 .required_features = .{ .avx2, null, null, null },
11190 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .yword } }, .any },19923 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .yword } }, .any, .any },
11191 .patterns = &.{19924 .patterns = &.{
11192 .{ .src = .{ .to_mem, .none } },19925 .{ .src = .{ .to_mem, .none, .none } },
11193 },19926 },
11194 .extra_temps = .{19927 .extra_temps = .{
11195 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },19928 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11214,9 +19947,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11214,9 +19947,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11214 } },19947 } },
11215 }, .{19948 }, .{
11216 .required_features = .{ .avx, null, null, null },19949 .required_features = .{ .avx, null, null, null },
11217 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .xword } }, .any },19950 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .xword } }, .any, .any },
11218 .patterns = &.{19951 .patterns = &.{
11219 .{ .src = .{ .to_mem, .none } },19952 .{ .src = .{ .to_mem, .none, .none } },
11220 },19953 },
11221 .extra_temps = .{19954 .extra_temps = .{
11222 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },19955 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11243,9 +19976,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11243,9 +19976,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11243 } },19976 } },
11244 }, .{19977 }, .{
11245 .required_features = .{ .avx, null, null, null },19978 .required_features = .{ .avx, null, null, null },
11246 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .yword } }, .any },19979 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .yword } }, .any, .any },
11247 .patterns = &.{19980 .patterns = &.{
11248 .{ .src = .{ .to_mem, .none } },19981 .{ .src = .{ .to_mem, .none, .none } },
11249 },19982 },
11250 .extra_temps = .{19983 .extra_temps = .{
11251 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },19984 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11270,9 +20003,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11270,9 +20003,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11270 } },20003 } },
11271 }, .{20004 }, .{
11272 .required_features = .{ .avx, null, null, null },20005 .required_features = .{ .avx, null, null, null },
11273 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },20006 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
11274 .patterns = &.{20007 .patterns = &.{
11275 .{ .src = .{ .to_mem, .none } },20008 .{ .src = .{ .to_mem, .none, .none } },
11276 },20009 },
11277 .extra_temps = .{20010 .extra_temps = .{
11278 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20011 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11297,9 +20030,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11297,9 +20030,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11297 } },20030 } },
11298 }, .{20031 }, .{
11299 .required_features = .{ .sse2, null, null, null },20032 .required_features = .{ .sse2, null, null, null },
11300 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },20033 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
11301 .patterns = &.{20034 .patterns = &.{
11302 .{ .src = .{ .to_mem, .none } },20035 .{ .src = .{ .to_mem, .none, .none } },
11303 },20036 },
11304 .extra_temps = .{20037 .extra_temps = .{
11305 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20038 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11325,9 +20058,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11325,9 +20058,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11325 } },20058 } },
11326 }, .{20059 }, .{
11327 .required_features = .{ .@"64bit", null, null, null },20060 .required_features = .{ .@"64bit", null, null, null },
11328 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },20061 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
11329 .patterns = &.{20062 .patterns = &.{
11330 .{ .src = .{ .mut_mem, .none } },20063 .{ .src = .{ .mut_mem, .none, .none } },
11331 },20064 },
11332 .extra_temps = .{20065 .extra_temps = .{
11333 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20066 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11351,9 +20084,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11351,9 +20084,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11351 } },20084 } },
11352 }, .{20085 }, .{
11353 .required_features = .{ .@"64bit", null, null, null },20086 .required_features = .{ .@"64bit", null, null, null },
11354 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },20087 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
11355 .patterns = &.{20088 .patterns = &.{
11356 .{ .src = .{ .to_mem, .none } },20089 .{ .src = .{ .to_mem, .none, .none } },
11357 },20090 },
11358 .extra_temps = .{20091 .extra_temps = .{
11359 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20092 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11378,9 +20111,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11378,9 +20111,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11378 } },20111 } },
11379 }, .{20112 }, .{
11380 .required_features = .{ .@"64bit", null, null, null },20113 .required_features = .{ .@"64bit", null, null, null },
11381 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .dword } }, .any },20114 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .dword } }, .any, .any },
11382 .patterns = &.{20115 .patterns = &.{
11383 .{ .src = .{ .mut_mem, .none } },20116 .{ .src = .{ .mut_mem, .none, .none } },
11384 },20117 },
11385 .extra_temps = .{20118 .extra_temps = .{
11386 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20119 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11405,9 +20138,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11405,9 +20138,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11405 } },20138 } },
11406 }, .{20139 }, .{
11407 .required_features = .{ .@"64bit", null, null, null },20140 .required_features = .{ .@"64bit", null, null, null },
11408 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .dword } }, .any },20141 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .dword } }, .any, .any },
11409 .patterns = &.{20142 .patterns = &.{
11410 .{ .src = .{ .to_mem, .none } },20143 .{ .src = .{ .to_mem, .none, .none } },
11411 },20144 },
11412 .extra_temps = .{20145 .extra_temps = .{
11413 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20146 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11437,9 +20170,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11437,9 +20170,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11437 } },20170 } },
11438 }, .{20171 }, .{
11439 .required_features = .{ .@"64bit", null, null, null },20172 .required_features = .{ .@"64bit", null, null, null },
11440 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .qword, .is = .qword } }, .any },20173 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .qword, .is = .qword } }, .any, .any },
11441 .patterns = &.{20174 .patterns = &.{
11442 .{ .src = .{ .mut_mem, .none } },20175 .{ .src = .{ .mut_mem, .none, .none } },
11443 },20176 },
11444 .extra_temps = .{20177 .extra_temps = .{
11445 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20178 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11464,9 +20197,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11464,9 +20197,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11464 } },20197 } },
11465 }, .{20198 }, .{
11466 .required_features = .{ .@"64bit", null, null, null },20199 .required_features = .{ .@"64bit", null, null, null },
11467 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .qword, .is = .qword } }, .any },20200 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .qword, .is = .qword } }, .any, .any },
11468 .patterns = &.{20201 .patterns = &.{
11469 .{ .src = .{ .to_mem, .none } },20202 .{ .src = .{ .to_mem, .none, .none } },
11470 },20203 },
11471 .extra_temps = .{20204 .extra_temps = .{
11472 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20205 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11492,9 +20225,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11492,9 +20225,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11492 } },20225 } },
11493 }, .{20226 }, .{
11494 .required_features = .{ .@"64bit", null, null, null },20227 .required_features = .{ .@"64bit", null, null, null },
11495 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .dword, .is = .dword } }, .any },20228 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .dword, .is = .dword } }, .any, .any },
11496 .patterns = &.{20229 .patterns = &.{
11497 .{ .src = .{ .mut_mem, .none } },20230 .{ .src = .{ .mut_mem, .none, .none } },
11498 },20231 },
11499 .extra_temps = .{20232 .extra_temps = .{
11500 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20233 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11518,9 +20251,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11518,9 +20251,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11518 } },20251 } },
11519 }, .{20252 }, .{
11520 .required_features = .{ .@"64bit", null, null, null },20253 .required_features = .{ .@"64bit", null, null, null },
11521 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .dword, .is = .dword } }, .any },20254 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .dword, .is = .dword } }, .any, .any },
11522 .patterns = &.{20255 .patterns = &.{
11523 .{ .src = .{ .to_mem, .none } },20256 .{ .src = .{ .to_mem, .none, .none } },
11524 },20257 },
11525 .extra_temps = .{20258 .extra_temps = .{
11526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20259 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11549,9 +20282,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11549,9 +20282,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11549 } },20282 } },
11550 }, .{20283 }, .{
11551 .required_features = .{ .@"64bit", null, null, null },20284 .required_features = .{ .@"64bit", null, null, null },
11552 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .dword } }, .any },20285 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .dword } }, .any, .any },
11553 .patterns = &.{20286 .patterns = &.{
11554 .{ .src = .{ .mut_mem, .none } },20287 .{ .src = .{ .mut_mem, .none, .none } },
11555 },20288 },
11556 .extra_temps = .{20289 .extra_temps = .{
11557 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20290 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11576,9 +20309,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11576,9 +20309,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11576 } },20309 } },
11577 }, .{20310 }, .{
11578 .required_features = .{ .@"64bit", null, null, null },20311 .required_features = .{ .@"64bit", null, null, null },
11579 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .dword } }, .any },20312 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .dword } }, .any, .any },
11580 .patterns = &.{20313 .patterns = &.{
11581 .{ .src = .{ .to_mem, .none } },20314 .{ .src = .{ .to_mem, .none, .none } },
11582 },20315 },
11583 .extra_temps = .{20316 .extra_temps = .{
11584 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20317 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11608,9 +20341,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11608,9 +20341,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11608 } },20341 } },
11609 }, .{20342 }, .{
11610 .required_features = .{ .@"64bit", null, null, null },20343 .required_features = .{ .@"64bit", null, null, null },
11611 .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .dword } }, .any },20344 .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .dword } }, .any, .any },
11612 .patterns = &.{20345 .patterns = &.{
11613 .{ .src = .{ .mut_mem, .none } },20346 .{ .src = .{ .mut_mem, .none, .none } },
11614 },20347 },
11615 .extra_temps = .{20348 .extra_temps = .{
11616 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20349 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11634,9 +20367,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11634,9 +20367,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11634 } },20367 } },
11635 }, .{20368 }, .{
11636 .required_features = .{ .@"64bit", null, null, null },20369 .required_features = .{ .@"64bit", null, null, null },
11637 .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .dword } }, .any },20370 .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .dword } }, .any, .any },
11638 .patterns = &.{20371 .patterns = &.{
11639 .{ .src = .{ .to_mem, .none } },20372 .{ .src = .{ .to_mem, .none, .none } },
11640 },20373 },
11641 .extra_temps = .{20374 .extra_temps = .{
11642 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20375 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11665,9 +20398,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11665,9 +20398,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11665 } },20398 } },
11666 }, .{20399 }, .{
11667 .required_features = .{ .@"64bit", null, null, null },20400 .required_features = .{ .@"64bit", null, null, null },
11668 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any },20401 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
11669 .patterns = &.{20402 .patterns = &.{
11670 .{ .src = .{ .mut_mem, .none } },20403 .{ .src = .{ .mut_mem, .none, .none } },
11671 },20404 },
11672 .extra_temps = .{20405 .extra_temps = .{
11673 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20406 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11693,9 +20426,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11693,9 +20426,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11693 } },20426 } },
11694 }, .{20427 }, .{
11695 .required_features = .{ .@"64bit", null, null, null },20428 .required_features = .{ .@"64bit", null, null, null },
11696 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any },20429 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
11697 .patterns = &.{20430 .patterns = &.{
11698 .{ .src = .{ .to_mem, .none } },20431 .{ .src = .{ .to_mem, .none, .none } },
11699 },20432 },
11700 .extra_temps = .{20433 .extra_temps = .{
11701 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20434 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11724,9 +20457,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11724,9 +20457,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11724 } },20457 } },
11725 }, .{20458 }, .{
11726 .required_features = .{ .@"64bit", null, null, null },20459 .required_features = .{ .@"64bit", null, null, null },
11727 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any },20460 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
11728 .patterns = &.{20461 .patterns = &.{
11729 .{ .src = .{ .mut_mem, .none } },20462 .{ .src = .{ .mut_mem, .none, .none } },
11730 },20463 },
11731 .extra_temps = .{20464 .extra_temps = .{
11732 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20465 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11751,9 +20484,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11751,9 +20484,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11751 } },20484 } },
11752 }, .{20485 }, .{
11753 .required_features = .{ .@"64bit", null, null, null },20486 .required_features = .{ .@"64bit", null, null, null },
11754 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any },20487 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
11755 .patterns = &.{20488 .patterns = &.{
11756 .{ .src = .{ .to_mem, .none } },20489 .{ .src = .{ .to_mem, .none, .none } },
11757 },20490 },
11758 .extra_temps = .{20491 .extra_temps = .{
11759 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20492 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11781,10 +20514,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11781,10 +20514,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11781 } },20514 } },
11782 }, .{20515 }, .{
11783 .required_features = .{ .mmx, null, null, null },20516 .required_features = .{ .mmx, null, null, null },
11784 .src_constraints = .{ .{ .signed_int_or_full_vec = .qword }, .any },20517 .src_constraints = .{ .{ .signed_int_or_full_vec = .qword }, .any, .any },
11785 .patterns = &.{20518 .patterns = &.{
11786 .{ .src = .{ .mem, .none } },20519 .{ .src = .{ .mem, .none, .none } },
11787 .{ .src = .{ .to_mm, .none } },20520 .{ .src = .{ .to_mm, .none, .none } },
11788 },20521 },
11789 .dst_temps = .{.{ .rc = .mmx }},20522 .dst_temps = .{.{ .rc = .mmx }},
11790 .each = .{ .once = &.{20523 .each = .{ .once = &.{
...@@ -11793,9 +20526,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11793,9 +20526,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11793 } },20526 } },
11794 }, .{20527 }, .{
11795 .required_features = .{ .mmx, null, null, null },20528 .required_features = .{ .mmx, null, null, null },
11796 .src_constraints = .{ .{ .unsigned_int_vec = .qword }, .any },20529 .src_constraints = .{ .{ .unsigned_int_vec = .qword }, .any, .any },
11797 .patterns = &.{20530 .patterns = &.{
11798 .{ .src = .{ .to_mut_mm, .none } },20531 .{ .src = .{ .to_mut_mm, .none, .none } },
11799 },20532 },
11800 .extra_temps = .{20533 .extra_temps = .{
11801 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },20534 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -11815,10 +20548,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11815,10 +20548,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11815 } },20548 } },
11816 }, .{20549 }, .{
11817 .required_features = .{ .avx, null, null, null },20550 .required_features = .{ .avx, null, null, null },
11818 .src_constraints = .{ .{ .signed_int_or_full_vec = .xword }, .any },20551 .src_constraints = .{ .{ .signed_int_or_full_vec = .xword }, .any, .any },
11819 .patterns = &.{20552 .patterns = &.{
11820 .{ .src = .{ .mem, .none } },20553 .{ .src = .{ .mem, .none, .none } },
11821 .{ .src = .{ .to_xmm, .none } },20554 .{ .src = .{ .to_xmm, .none, .none } },
11822 },20555 },
11823 .dst_temps = .{.{ .rc = .sse }},20556 .dst_temps = .{.{ .rc = .sse }},
11824 .each = .{ .once = &.{20557 .each = .{ .once = &.{
...@@ -11827,9 +20560,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11827,9 +20560,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11827 } },20560 } },
11828 }, .{20561 }, .{
11829 .required_features = .{ .avx, null, null, null },20562 .required_features = .{ .avx, null, null, null },
11830 .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any },20563 .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any, .any },
11831 .patterns = &.{20564 .patterns = &.{
11832 .{ .src = .{ .to_xmm, .none } },20565 .{ .src = .{ .to_xmm, .none, .none } },
11833 },20566 },
11834 .extra_temps = .{20567 .extra_temps = .{
11835 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },20568 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -11849,10 +20582,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11849,10 +20582,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11849 } },20582 } },
11850 }, .{20583 }, .{
11851 .required_features = .{ .sse2, null, null, null },20584 .required_features = .{ .sse2, null, null, null },
11852 .src_constraints = .{ .{ .signed_int_or_full_vec = .xword }, .any },20585 .src_constraints = .{ .{ .signed_int_or_full_vec = .xword }, .any, .any },
11853 .patterns = &.{20586 .patterns = &.{
11854 .{ .src = .{ .mem, .none } },20587 .{ .src = .{ .mem, .none, .none } },
11855 .{ .src = .{ .to_xmm, .none } },20588 .{ .src = .{ .to_xmm, .none, .none } },
11856 },20589 },
11857 .dst_temps = .{.{ .rc = .sse }},20590 .dst_temps = .{.{ .rc = .sse }},
11858 .each = .{ .once = &.{20591 .each = .{ .once = &.{
...@@ -11861,9 +20594,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11861,9 +20594,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11861 } },20594 } },
11862 }, .{20595 }, .{
11863 .required_features = .{ .sse2, null, null, null },20596 .required_features = .{ .sse2, null, null, null },
11864 .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any },20597 .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any, .any },
11865 .patterns = &.{20598 .patterns = &.{
11866 .{ .src = .{ .to_mut_xmm, .none } },20599 .{ .src = .{ .to_mut_xmm, .none, .none } },
11867 },20600 },
11868 .extra_temps = .{20601 .extra_temps = .{
11869 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },20602 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -11883,9 +20616,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11883,9 +20616,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11883 } },20616 } },
11884 }, .{20617 }, .{
11885 .required_features = .{ .sse, null, null, null },20618 .required_features = .{ .sse, null, null, null },
11886 .src_constraints = .{ .{ .vec = .xword }, .any },20619 .src_constraints = .{ .{ .vec = .xword }, .any, .any },
11887 .patterns = &.{20620 .patterns = &.{
11888 .{ .src = .{ .to_mut_xmm, .none } },20621 .{ .src = .{ .to_mut_xmm, .none, .none } },
11889 },20622 },
11890 .extra_temps = .{20623 .extra_temps = .{
11891 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },20624 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -11905,10 +20638,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11905,10 +20638,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11905 } },20638 } },
11906 }, .{20639 }, .{
11907 .required_features = .{ .avx2, null, null, null },20640 .required_features = .{ .avx2, null, null, null },
11908 .src_constraints = .{ .{ .signed_int_or_full_vec = .yword }, .any },20641 .src_constraints = .{ .{ .signed_int_or_full_vec = .yword }, .any, .any },
11909 .patterns = &.{20642 .patterns = &.{
11910 .{ .src = .{ .mem, .none } },20643 .{ .src = .{ .mem, .none, .none } },
11911 .{ .src = .{ .to_ymm, .none } },20644 .{ .src = .{ .to_ymm, .none, .none } },
11912 },20645 },
11913 .dst_temps = .{.{ .rc = .sse }},20646 .dst_temps = .{.{ .rc = .sse }},
11914 .each = .{ .once = &.{20647 .each = .{ .once = &.{
...@@ -11917,9 +20650,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11917,9 +20650,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11917 } },20650 } },
11918 }, .{20651 }, .{
11919 .required_features = .{ .avx2, null, null, null },20652 .required_features = .{ .avx2, null, null, null },
11920 .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any },20653 .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any, .any },
11921 .patterns = &.{20654 .patterns = &.{
11922 .{ .src = .{ .to_ymm, .none } },20655 .{ .src = .{ .to_ymm, .none, .none } },
11923 },20656 },
11924 .extra_temps = .{20657 .extra_temps = .{
11925 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },20658 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -11939,10 +20672,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11939,10 +20672,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11939 } },20672 } },
11940 }, .{20673 }, .{
11941 .required_features = .{ .avx, null, null, null },20674 .required_features = .{ .avx, null, null, null },
11942 .src_constraints = .{ .{ .signed_int_or_full_vec = .yword }, .any },20675 .src_constraints = .{ .{ .signed_int_or_full_vec = .yword }, .any, .any },
11943 .patterns = &.{20676 .patterns = &.{
11944 .{ .src = .{ .mem, .none } },20677 .{ .src = .{ .mem, .none, .none } },
11945 .{ .src = .{ .to_ymm, .none } },20678 .{ .src = .{ .to_ymm, .none, .none } },
11946 },20679 },
11947 .dst_temps = .{.{ .rc = .sse }},20680 .dst_temps = .{.{ .rc = .sse }},
11948 .each = .{ .once = &.{20681 .each = .{ .once = &.{
...@@ -11951,9 +20684,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11951,9 +20684,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11951 } },20684 } },
11952 }, .{20685 }, .{
11953 .required_features = .{ .avx, null, null, null },20686 .required_features = .{ .avx, null, null, null },
11954 .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any },20687 .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any, .any },
11955 .patterns = &.{20688 .patterns = &.{
11956 .{ .src = .{ .to_ymm, .none } },20689 .{ .src = .{ .to_ymm, .none, .none } },
11957 },20690 },
11958 .extra_temps = .{20691 .extra_temps = .{
11959 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },20692 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -11974,7 +20707,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11974,7 +20707,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11974 }, .{20707 }, .{
11975 .required_features = .{ .@"64bit", null, null, null },20708 .required_features = .{ .@"64bit", null, null, null },
11976 .patterns = &.{20709 .patterns = &.{
11977 .{ .src = .{ .to_mem, .none } },20710 .{ .src = .{ .to_mem, .none, .none } },
11978 },20711 },
11979 .extra_temps = .{20712 .extra_temps = .{
11980 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -12000,7 +20733,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12000,7 +20733,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12000 } },20733 } },
12001 }, .{20734 }, .{
12002 .patterns = &.{20735 .patterns = &.{
12003 .{ .src = .{ .to_mem, .none } },20736 .{ .src = .{ .to_mem, .none, .none } },
12004 },20737 },
12005 .extra_temps = .{20738 .extra_temps = .{
12006 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20739 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -12090,10 +20823,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12090,10 +20823,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12090 var res: [1]Temp = undefined;20823 var res: [1]Temp = undefined;
12091 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{20824 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
12092 .required_features = .{ .slow_incdec, null, null, null },20825 .required_features = .{ .slow_incdec, null, null, null },
12093 .src_constraints = .{ .{ .exact_signed_int = 1 }, .any },20826 .src_constraints = .{ .{ .exact_signed_int = 1 }, .any, .any },
12094 .patterns = &.{20827 .patterns = &.{
12095 .{ .src = .{ .mut_mem, .none } },20828 .{ .src = .{ .mut_mem, .none, .none } },
12096 .{ .src = .{ .to_mut_gpr, .none } },20829 .{ .src = .{ .to_mut_gpr, .none, .none } },
12097 },20830 },
12098 .dst_temps = .{.{ .ref = .src0 }},20831 .dst_temps = .{.{ .ref = .src0 }},
12099 .clobbers = .{ .eflags = true },20832 .clobbers = .{ .eflags = true },
...@@ -12101,10 +20834,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12101,10 +20834,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12101 .{ ._, ._, .add, .dst0b, .si(1), ._, ._ },20834 .{ ._, ._, .add, .dst0b, .si(1), ._, ._ },
12102 } },20835 } },
12103 }, .{20836 }, .{
12104 .src_constraints = .{ .{ .exact_signed_int = 1 }, .any },20837 .src_constraints = .{ .{ .exact_signed_int = 1 }, .any, .any },
12105 .patterns = &.{20838 .patterns = &.{
12106 .{ .src = .{ .mut_mem, .none } },20839 .{ .src = .{ .mut_mem, .none, .none } },
12107 .{ .src = .{ .to_mut_gpr, .none } },20840 .{ .src = .{ .to_mut_gpr, .none, .none } },
12108 },20841 },
12109 .dst_temps = .{.{ .ref = .src0 }},20842 .dst_temps = .{.{ .ref = .src0 }},
12110 .clobbers = .{ .eflags = true },20843 .clobbers = .{ .eflags = true },
...@@ -12112,10 +20845,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12112,10 +20845,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12112 .{ ._, ._c, .in, .dst0b, ._, ._, ._ },20845 .{ ._, ._c, .in, .dst0b, ._, ._, ._ },
12113 } },20846 } },
12114 }, .{20847 }, .{
12115 .src_constraints = .{ .{ .exact_unsigned_int = 1 }, .any },20848 .src_constraints = .{ .{ .exact_unsigned_int = 1 }, .any, .any },
12116 .patterns = &.{20849 .patterns = &.{
12117 .{ .src = .{ .mut_mem, .none } },20850 .{ .src = .{ .mut_mem, .none, .none } },
12118 .{ .src = .{ .to_mut_gpr, .none } },20851 .{ .src = .{ .to_mut_gpr, .none, .none } },
12119 },20852 },
12120 .dst_temps = .{.{ .ref = .src0 }},20853 .dst_temps = .{.{ .ref = .src0 }},
12121 .clobbers = .{ .eflags = true },20854 .clobbers = .{ .eflags = true },
...@@ -12124,10 +20857,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12124,10 +20857,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12124 } },20857 } },
12125 }, .{20858 }, .{
12126 .required_features = .{ .lzcnt, null, null, null },20859 .required_features = .{ .lzcnt, null, null, null },
12127 .src_constraints = .{ .{ .unsigned_or_exact_int = .byte }, .any },20860 .src_constraints = .{ .{ .unsigned_or_exact_int = .byte }, .any, .any },
12128 .patterns = &.{20861 .patterns = &.{
12129 .{ .src = .{ .mem, .none } },20862 .{ .src = .{ .mem, .none, .none } },
12130 .{ .src = .{ .to_gpr, .none } },20863 .{ .src = .{ .to_gpr, .none, .none } },
12131 },20864 },
12132 .dst_temps = .{.{ .rc = .general_purpose }},20865 .dst_temps = .{.{ .rc = .general_purpose }},
12133 .clobbers = .{ .eflags = true },20866 .clobbers = .{ .eflags = true },
...@@ -12138,10 +20871,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12138,10 +20871,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12138 } },20871 } },
12139 }, .{20872 }, .{
12140 .required_features = .{ .lzcnt, null, null, null },20873 .required_features = .{ .lzcnt, null, null, null },
12141 .src_constraints = .{ .{ .signed_int = .byte }, .any },20874 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
12142 .patterns = &.{20875 .patterns = &.{
12143 .{ .src = .{ .mem, .none } },20876 .{ .src = .{ .mem, .none, .none } },
12144 .{ .src = .{ .to_gpr, .none } },20877 .{ .src = .{ .to_gpr, .none, .none } },
12145 },20878 },
12146 .dst_temps = .{.{ .rc = .general_purpose }},20879 .dst_temps = .{.{ .rc = .general_purpose }},
12147 .clobbers = .{ .eflags = true },20880 .clobbers = .{ .eflags = true },
...@@ -12153,9 +20886,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12153,9 +20886,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12153 } },20886 } },
12154 }, .{20887 }, .{
12155 .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null },20888 .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null },
12156 .src_constraints = .{ .{ .exact_int = 16 }, .any },20889 .src_constraints = .{ .{ .exact_int = 16 }, .any, .any },
12157 .patterns = &.{20890 .patterns = &.{
12158 .{ .src = .{ .to_mut_gpr, .none } },20891 .{ .src = .{ .to_mut_gpr, .none, .none } },
12159 },20892 },
12160 .dst_temps = .{.{ .ref = .src0 }},20893 .dst_temps = .{.{ .ref = .src0 }},
12161 .clobbers = .{ .eflags = true },20894 .clobbers = .{ .eflags = true },
...@@ -12164,10 +20897,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12164,10 +20897,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12164 } },20897 } },
12165 }, .{20898 }, .{
12166 .required_features = .{ .lzcnt, null, null, null },20899 .required_features = .{ .lzcnt, null, null, null },
12167 .src_constraints = .{ .{ .exact_int = 16 }, .any },20900 .src_constraints = .{ .{ .exact_int = 16 }, .any, .any },
12168 .patterns = &.{20901 .patterns = &.{
12169 .{ .src = .{ .mem, .none } },20902 .{ .src = .{ .mem, .none, .none } },
12170 .{ .src = .{ .to_gpr, .none } },20903 .{ .src = .{ .to_gpr, .none, .none } },
12171 },20904 },
12172 .dst_temps = .{.{ .rc = .general_purpose }},20905 .dst_temps = .{.{ .rc = .general_purpose }},
12173 .clobbers = .{ .eflags = true },20906 .clobbers = .{ .eflags = true },
...@@ -12176,9 +20909,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12176,9 +20909,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12176 } },20909 } },
12177 }, .{20910 }, .{
12178 .required_features = .{ .lzcnt, null, null, null },20911 .required_features = .{ .lzcnt, null, null, null },
12179 .src_constraints = .{ .{ .signed_int = .word }, .any },20912 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
12180 .patterns = &.{20913 .patterns = &.{
12181 .{ .src = .{ .to_mut_gpr, .none } },20914 .{ .src = .{ .to_mut_gpr, .none, .none } },
12182 },20915 },
12183 .dst_temps = .{.{ .ref = .src0 }},20916 .dst_temps = .{.{ .ref = .src0 }},
12184 .clobbers = .{ .eflags = true },20917 .clobbers = .{ .eflags = true },
...@@ -12189,9 +20922,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12189,9 +20922,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12189 } },20922 } },
12190 }, .{20923 }, .{
12191 .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null },20924 .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null },
12192 .src_constraints = .{ .{ .unsigned_int = .word }, .any },20925 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
12193 .patterns = &.{20926 .patterns = &.{
12194 .{ .src = .{ .to_mut_gpr, .none } },20927 .{ .src = .{ .to_mut_gpr, .none, .none } },
12195 },20928 },
12196 .dst_temps = .{.{ .ref = .src0 }},20929 .dst_temps = .{.{ .ref = .src0 }},
12197 .clobbers = .{ .eflags = true },20930 .clobbers = .{ .eflags = true },
...@@ -12201,10 +20934,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12201,10 +20934,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12201 } },20934 } },
12202 }, .{20935 }, .{
12203 .required_features = .{ .lzcnt, null, null, null },20936 .required_features = .{ .lzcnt, null, null, null },
12204 .src_constraints = .{ .{ .unsigned_int = .word }, .any },20937 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
12205 .patterns = &.{20938 .patterns = &.{
12206 .{ .src = .{ .mem, .none } },20939 .{ .src = .{ .mem, .none, .none } },
12207 .{ .src = .{ .to_gpr, .none } },20940 .{ .src = .{ .to_gpr, .none, .none } },
12208 },20941 },
12209 .dst_temps = .{.{ .rc = .general_purpose }},20942 .dst_temps = .{.{ .rc = .general_purpose }},
12210 .clobbers = .{ .eflags = true },20943 .clobbers = .{ .eflags = true },
...@@ -12214,9 +20947,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12214,9 +20947,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12214 } },20947 } },
12215 }, .{20948 }, .{
12216 .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null },20949 .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null },
12217 .src_constraints = .{ .{ .exact_int = 32 }, .any },20950 .src_constraints = .{ .{ .exact_int = 32 }, .any, .any },
12218 .patterns = &.{20951 .patterns = &.{
12219 .{ .src = .{ .to_mut_gpr, .none } },20952 .{ .src = .{ .to_mut_gpr, .none, .none } },
12220 },20953 },
12221 .dst_temps = .{.{ .ref = .src0 }},20954 .dst_temps = .{.{ .ref = .src0 }},
12222 .clobbers = .{ .eflags = true },20955 .clobbers = .{ .eflags = true },
...@@ -12225,10 +20958,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12225,10 +20958,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12225 } },20958 } },
12226 }, .{20959 }, .{
12227 .required_features = .{ .lzcnt, null, null, null },20960 .required_features = .{ .lzcnt, null, null, null },
12228 .src_constraints = .{ .{ .exact_int = 32 }, .any },20961 .src_constraints = .{ .{ .exact_int = 32 }, .any, .any },
12229 .patterns = &.{20962 .patterns = &.{
12230 .{ .src = .{ .mem, .none } },20963 .{ .src = .{ .mem, .none, .none } },
12231 .{ .src = .{ .to_gpr, .none } },20964 .{ .src = .{ .to_gpr, .none, .none } },
12232 },20965 },
12233 .dst_temps = .{.{ .rc = .general_purpose }},20966 .dst_temps = .{.{ .rc = .general_purpose }},
12234 .clobbers = .{ .eflags = true },20967 .clobbers = .{ .eflags = true },
...@@ -12237,9 +20970,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12237,9 +20970,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12237 } },20970 } },
12238 }, .{20971 }, .{
12239 .required_features = .{ .lzcnt, null, null, null },20972 .required_features = .{ .lzcnt, null, null, null },
12240 .src_constraints = .{ .{ .signed_int = .dword }, .any },20973 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
12241 .patterns = &.{20974 .patterns = &.{
12242 .{ .src = .{ .to_mut_gpr, .none } },20975 .{ .src = .{ .to_mut_gpr, .none, .none } },
12243 },20976 },
12244 .dst_temps = .{.{ .ref = .src0 }},20977 .dst_temps = .{.{ .ref = .src0 }},
12245 .clobbers = .{ .eflags = true },20978 .clobbers = .{ .eflags = true },
...@@ -12250,9 +20983,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12250,9 +20983,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12250 } },20983 } },
12251 }, .{20984 }, .{
12252 .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null },20985 .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null },
12253 .src_constraints = .{ .{ .unsigned_int = .dword }, .any },20986 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
12254 .patterns = &.{20987 .patterns = &.{
12255 .{ .src = .{ .to_mut_gpr, .none } },20988 .{ .src = .{ .to_mut_gpr, .none, .none } },
12256 },20989 },
12257 .dst_temps = .{.{ .ref = .src0 }},20990 .dst_temps = .{.{ .ref = .src0 }},
12258 .clobbers = .{ .eflags = true },20991 .clobbers = .{ .eflags = true },
...@@ -12262,10 +20995,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12262,10 +20995,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12262 } },20995 } },
12263 }, .{20996 }, .{
12264 .required_features = .{ .lzcnt, null, null, null },20997 .required_features = .{ .lzcnt, null, null, null },
12265 .src_constraints = .{ .{ .unsigned_int = .dword }, .any },20998 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
12266 .patterns = &.{20999 .patterns = &.{
12267 .{ .src = .{ .mem, .none } },21000 .{ .src = .{ .mem, .none, .none } },
12268 .{ .src = .{ .to_gpr, .none } },21001 .{ .src = .{ .to_gpr, .none, .none } },
12269 },21002 },
12270 .dst_temps = .{.{ .rc = .general_purpose }},21003 .dst_temps = .{.{ .rc = .general_purpose }},
12271 .clobbers = .{ .eflags = true },21004 .clobbers = .{ .eflags = true },
...@@ -12275,9 +21008,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12275,9 +21008,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12275 } },21008 } },
12276 }, .{21009 }, .{
12277 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },21010 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
12278 .src_constraints = .{ .{ .exact_int = 64 }, .any },21011 .src_constraints = .{ .{ .exact_int = 64 }, .any, .any },
12279 .patterns = &.{21012 .patterns = &.{
12280 .{ .src = .{ .to_mut_gpr, .none } },21013 .{ .src = .{ .to_mut_gpr, .none, .none } },
12281 },21014 },
12282 .dst_temps = .{.{ .ref = .src0 }},21015 .dst_temps = .{.{ .ref = .src0 }},
12283 .clobbers = .{ .eflags = true },21016 .clobbers = .{ .eflags = true },
...@@ -12286,10 +21019,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12286,10 +21019,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12286 } },21019 } },
12287 }, .{21020 }, .{
12288 .required_features = .{ .@"64bit", .lzcnt, null, null },21021 .required_features = .{ .@"64bit", .lzcnt, null, null },
12289 .src_constraints = .{ .{ .exact_int = 64 }, .any },21022 .src_constraints = .{ .{ .exact_int = 64 }, .any, .any },
12290 .patterns = &.{21023 .patterns = &.{
12291 .{ .src = .{ .mem, .none } },21024 .{ .src = .{ .mem, .none, .none } },
12292 .{ .src = .{ .to_gpr, .none } },21025 .{ .src = .{ .to_gpr, .none, .none } },
12293 },21026 },
12294 .dst_temps = .{.{ .rc = .general_purpose }},21027 .dst_temps = .{.{ .rc = .general_purpose }},
12295 .clobbers = .{ .eflags = true },21028 .clobbers = .{ .eflags = true },
...@@ -12298,10 +21031,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12298,10 +21031,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12298 } },21031 } },
12299 }, .{21032 }, .{
12300 .required_features = .{ .@"64bit", .lzcnt, null, null },21033 .required_features = .{ .@"64bit", .lzcnt, null, null },
12301 .src_constraints = .{ .{ .signed_int = .qword }, .any },21034 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
12302 .patterns = &.{21035 .patterns = &.{
12303 .{ .src = .{ .mem, .none } },21036 .{ .src = .{ .mem, .none, .none } },
12304 .{ .src = .{ .to_gpr, .none } },21037 .{ .src = .{ .to_gpr, .none, .none } },
12305 },21038 },
12306 .dst_temps = .{.{ .rc = .general_purpose }},21039 .dst_temps = .{.{ .rc = .general_purpose }},
12307 .clobbers = .{ .eflags = true },21040 .clobbers = .{ .eflags = true },
...@@ -12313,9 +21046,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12313,9 +21046,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12313 } },21046 } },
12314 }, .{21047 }, .{
12315 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },21048 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
12316 .src_constraints = .{ .{ .unsigned_int = .qword }, .any },21049 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
12317 .patterns = &.{21050 .patterns = &.{
12318 .{ .src = .{ .to_mut_gpr, .none } },21051 .{ .src = .{ .to_mut_gpr, .none, .none } },
12319 },21052 },
12320 .dst_temps = .{.{ .ref = .src0 }},21053 .dst_temps = .{.{ .ref = .src0 }},
12321 .clobbers = .{ .eflags = true },21054 .clobbers = .{ .eflags = true },
...@@ -12325,10 +21058,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12325,10 +21058,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12325 } },21058 } },
12326 }, .{21059 }, .{
12327 .required_features = .{ .@"64bit", .lzcnt, null, null },21060 .required_features = .{ .@"64bit", .lzcnt, null, null },
12328 .src_constraints = .{ .{ .unsigned_int = .qword }, .any },21061 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
12329 .patterns = &.{21062 .patterns = &.{
12330 .{ .src = .{ .mem, .none } },21063 .{ .src = .{ .mem, .none, .none } },
12331 .{ .src = .{ .to_gpr, .none } },21064 .{ .src = .{ .to_gpr, .none, .none } },
12332 },21065 },
12333 .dst_temps = .{.{ .rc = .general_purpose }},21066 .dst_temps = .{.{ .rc = .general_purpose }},
12334 .clobbers = .{ .eflags = true },21067 .clobbers = .{ .eflags = true },
...@@ -12338,10 +21071,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12338,10 +21071,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12338 } },21071 } },
12339 }, .{21072 }, .{
12340 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },21073 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
12341 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any },21074 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any, .any },
12342 .patterns = &.{21075 .patterns = &.{
12343 .{ .src = .{ .mem, .none } },21076 .{ .src = .{ .mem, .none, .none } },
12344 .{ .src = .{ .to_gpr, .none } },21077 .{ .src = .{ .to_gpr, .none, .none } },
12345 },21078 },
12346 .extra_temps = .{21079 .extra_temps = .{
12347 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },21080 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -12365,10 +21098,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12365,10 +21098,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12365 } },21098 } },
12366 }, .{21099 }, .{
12367 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },21100 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
12368 .src_constraints = .{ .{ .signed_po2_int = .byte }, .any },21101 .src_constraints = .{ .{ .signed_po2_int = .byte }, .any, .any },
12369 .patterns = &.{21102 .patterns = &.{
12370 .{ .src = .{ .mem, .none } },21103 .{ .src = .{ .mem, .none, .none } },
12371 .{ .src = .{ .to_gpr, .none } },21104 .{ .src = .{ .to_gpr, .none, .none } },
12372 },21105 },
12373 .extra_temps = .{21106 .extra_temps = .{
12374 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },21107 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -12393,10 +21126,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12393,10 +21126,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12393 } },21126 } },
12394 }, .{21127 }, .{
12395 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },21128 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
12396 .src_constraints = .{ .{ .signed_int = .byte }, .any },21129 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
12397 .patterns = &.{21130 .patterns = &.{
12398 .{ .src = .{ .mem, .none } },21131 .{ .src = .{ .mem, .none, .none } },
12399 .{ .src = .{ .to_gpr, .none } },21132 .{ .src = .{ .to_gpr, .none, .none } },
12400 },21133 },
12401 .extra_temps = .{21134 .extra_temps = .{
12402 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },21135 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -12422,10 +21155,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12422,10 +21155,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12422 } },21155 } },
12423 }, .{21156 }, .{
12424 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },21157 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
12425 .src_constraints = .{ .{ .unsigned_int = .byte }, .any },21158 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
12426 .patterns = &.{21159 .patterns = &.{
12427 .{ .src = .{ .mem, .none } },21160 .{ .src = .{ .mem, .none, .none } },
12428 .{ .src = .{ .to_gpr, .none } },21161 .{ .src = .{ .to_gpr, .none, .none } },
12429 },21162 },
12430 .extra_temps = .{21163 .extra_temps = .{
12431 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },21164 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -12450,10 +21183,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12450,10 +21183,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12450 } },21183 } },
12451 }, .{21184 }, .{
12452 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },21185 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
12453 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any },21186 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any, .any },
12454 .patterns = &.{21187 .patterns = &.{
12455 .{ .src = .{ .mem, .none } },21188 .{ .src = .{ .mem, .none, .none } },
12456 .{ .src = .{ .to_gpr, .none } },21189 .{ .src = .{ .to_gpr, .none, .none } },
12457 },21190 },
12458 .dst_temps = .{.{ .rc = .general_purpose }},21191 .dst_temps = .{.{ .rc = .general_purpose }},
12459 .clobbers = .{ .eflags = true },21192 .clobbers = .{ .eflags = true },
...@@ -12466,10 +21199,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12466,10 +21199,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12466 } },21199 } },
12467 }, .{21200 }, .{
12468 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },21201 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
12469 .src_constraints = .{ .{ .signed_po2_int = .byte }, .any },21202 .src_constraints = .{ .{ .signed_po2_int = .byte }, .any, .any },
12470 .patterns = &.{21203 .patterns = &.{
12471 .{ .src = .{ .mem, .none } },21204 .{ .src = .{ .mem, .none, .none } },
12472 .{ .src = .{ .to_gpr, .none } },21205 .{ .src = .{ .to_gpr, .none, .none } },
12473 },21206 },
12474 .dst_temps = .{.{ .rc = .general_purpose }},21207 .dst_temps = .{.{ .rc = .general_purpose }},
12475 .clobbers = .{ .eflags = true },21208 .clobbers = .{ .eflags = true },
...@@ -12483,10 +21216,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12483,10 +21216,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12483 } },21216 } },
12484 }, .{21217 }, .{
12485 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },21218 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
12486 .src_constraints = .{ .{ .signed_int = .byte }, .any },21219 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
12487 .patterns = &.{21220 .patterns = &.{
12488 .{ .src = .{ .mem, .none } },21221 .{ .src = .{ .mem, .none, .none } },
12489 .{ .src = .{ .to_gpr, .none } },21222 .{ .src = .{ .to_gpr, .none, .none } },
12490 },21223 },
12491 .extra_temps = .{21224 .extra_temps = .{
12492 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },21225 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -12512,10 +21245,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12512,10 +21245,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12512 } },21245 } },
12513 }, .{21246 }, .{
12514 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },21247 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
12515 .src_constraints = .{ .{ .unsigned_int = .byte }, .any },21248 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
12516 .patterns = &.{21249 .patterns = &.{
12517 .{ .src = .{ .mem, .none } },21250 .{ .src = .{ .mem, .none, .none } },
12518 .{ .src = .{ .to_gpr, .none } },21251 .{ .src = .{ .to_gpr, .none, .none } },
12519 },21252 },
12520 .extra_temps = .{21253 .extra_temps = .{
12521 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },21254 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -12539,10 +21272,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12539,10 +21272,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12539 .{ ._, ._, .sbb, .dst0b, .tmp0b, ._, ._ },21272 .{ ._, ._, .sbb, .dst0b, .tmp0b, ._, ._ },
12540 } },21273 } },
12541 }, .{21274 }, .{
12542 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any },21275 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any, .any },
12543 .patterns = &.{21276 .patterns = &.{
12544 .{ .src = .{ .mem, .none } },21277 .{ .src = .{ .mem, .none, .none } },
12545 .{ .src = .{ .to_gpr, .none } },21278 .{ .src = .{ .to_gpr, .none, .none } },
12546 },21279 },
12547 .extra_temps = .{21280 .extra_temps = .{
12548 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },21281 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -12564,10 +21297,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12564,10 +21297,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12564 .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },21297 .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
12565 } },21298 } },
12566 }, .{21299 }, .{
12567 .src_constraints = .{ .{ .signed_po2_int = .byte }, .any },21300 .src_constraints = .{ .{ .signed_po2_int = .byte }, .any, .any },
12568 .patterns = &.{21301 .patterns = &.{
12569 .{ .src = .{ .mem, .none } },21302 .{ .src = .{ .mem, .none, .none } },
12570 .{ .src = .{ .to_gpr, .none } },21303 .{ .src = .{ .to_gpr, .none, .none } },
12571 },21304 },
12572 .extra_temps = .{21305 .extra_temps = .{
12573 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },21306 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -12590,10 +21323,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12590,10 +21323,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12590 .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },21323 .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
12591 } },21324 } },
12592 }, .{21325 }, .{
12593 .src_constraints = .{ .{ .signed_int = .byte }, .any },21326 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
12594 .patterns = &.{21327 .patterns = &.{
12595 .{ .src = .{ .mem, .none } },21328 .{ .src = .{ .mem, .none, .none } },
12596 .{ .src = .{ .to_gpr, .none } },21329 .{ .src = .{ .to_gpr, .none, .none } },
12597 },21330 },
12598 .extra_temps = .{21331 .extra_temps = .{
12599 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },21332 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -12617,10 +21350,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12617,10 +21350,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12617 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },21350 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },
12618 } },21351 } },
12619 }, .{21352 }, .{
12620 .src_constraints = .{ .{ .unsigned_int = .byte }, .any },21353 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
12621 .patterns = &.{21354 .patterns = &.{
12622 .{ .src = .{ .mem, .none } },21355 .{ .src = .{ .mem, .none, .none } },
12623 .{ .src = .{ .to_gpr, .none } },21356 .{ .src = .{ .to_gpr, .none, .none } },
12624 },21357 },
12625 .extra_temps = .{21358 .extra_temps = .{
12626 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },21359 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -12644,9 +21377,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12644,9 +21377,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12644 } },21377 } },
12645 }, .{21378 }, .{
12646 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },21379 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
12647 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any },21380 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any, .any },
12648 .patterns = &.{21381 .patterns = &.{
12649 .{ .src = .{ .to_mut_gpr, .none } },21382 .{ .src = .{ .to_mut_gpr, .none, .none } },
12650 },21383 },
12651 .dst_temps = .{.{ .rc = .general_purpose }},21384 .dst_temps = .{.{ .rc = .general_purpose }},
12652 .clobbers = .{ .eflags = true },21385 .clobbers = .{ .eflags = true },
...@@ -12658,9 +21391,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12658,9 +21391,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12658 } },21391 } },
12659 }, .{21392 }, .{
12660 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },21393 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
12661 .src_constraints = .{ .{ .signed_int = .word }, .any },21394 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
12662 .patterns = &.{21395 .patterns = &.{
12663 .{ .src = .{ .to_mut_gpr, .none } },21396 .{ .src = .{ .to_mut_gpr, .none, .none } },
12664 },21397 },
12665 .dst_temps = .{.{ .rc = .general_purpose }},21398 .dst_temps = .{.{ .rc = .general_purpose }},
12666 .clobbers = .{ .eflags = true },21399 .clobbers = .{ .eflags = true },
...@@ -12674,9 +21407,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12674,9 +21407,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12674 } },21407 } },
12675 }, .{21408 }, .{
12676 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },21409 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
12677 .src_constraints = .{ .{ .unsigned_int = .word }, .any },21410 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
12678 .patterns = &.{21411 .patterns = &.{
12679 .{ .src = .{ .to_mut_gpr, .none } },21412 .{ .src = .{ .to_mut_gpr, .none, .none } },
12680 },21413 },
12681 .dst_temps = .{.{ .rc = .general_purpose }},21414 .dst_temps = .{.{ .rc = .general_purpose }},
12682 .clobbers = .{ .eflags = true },21415 .clobbers = .{ .eflags = true },
...@@ -12689,9 +21422,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12689,9 +21422,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12689 } },21422 } },
12690 }, .{21423 }, .{
12691 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },21424 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
12692 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any },21425 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any, .any },
12693 .patterns = &.{21426 .patterns = &.{
12694 .{ .src = .{ .to_mut_gpr, .none } },21427 .{ .src = .{ .to_mut_gpr, .none, .none } },
12695 },21428 },
12696 .dst_temps = .{.{ .ref = .src0 }},21429 .dst_temps = .{.{ .ref = .src0 }},
12697 .clobbers = .{ .eflags = true },21430 .clobbers = .{ .eflags = true },
...@@ -12703,9 +21436,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12703,9 +21436,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12703 } },21436 } },
12704 }, .{21437 }, .{
12705 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },21438 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
12706 .src_constraints = .{ .{ .signed_int = .word }, .any },21439 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
12707 .patterns = &.{21440 .patterns = &.{
12708 .{ .src = .{ .to_mut_gpr, .none } },21441 .{ .src = .{ .to_mut_gpr, .none, .none } },
12709 },21442 },
12710 .dst_temps = .{.{ .rc = .general_purpose }},21443 .dst_temps = .{.{ .rc = .general_purpose }},
12711 .clobbers = .{ .eflags = true },21444 .clobbers = .{ .eflags = true },
...@@ -12719,9 +21452,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12719,9 +21452,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12719 } },21452 } },
12720 }, .{21453 }, .{
12721 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },21454 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
12722 .src_constraints = .{ .{ .unsigned_int = .word }, .any },21455 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
12723 .patterns = &.{21456 .patterns = &.{
12724 .{ .src = .{ .to_mut_gpr, .none } },21457 .{ .src = .{ .to_mut_gpr, .none, .none } },
12725 },21458 },
12726 .dst_temps = .{.{ .rc = .general_purpose }},21459 .dst_temps = .{.{ .rc = .general_purpose }},
12727 .clobbers = .{ .eflags = true },21460 .clobbers = .{ .eflags = true },
...@@ -12733,10 +21466,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12733,10 +21466,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12733 .{ ._, ._, .sbb, .dst0b, .src0b, ._, ._ },21466 .{ ._, ._, .sbb, .dst0b, .src0b, ._, ._ },
12734 } },21467 } },
12735 }, .{21468 }, .{
12736 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any },21469 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any, .any },
12737 .patterns = &.{21470 .patterns = &.{
12738 .{ .src = .{ .mem, .none } },21471 .{ .src = .{ .mem, .none, .none } },
12739 .{ .src = .{ .to_gpr, .none } },21472 .{ .src = .{ .to_gpr, .none, .none } },
12740 },21473 },
12741 .dst_temps = .{.{ .rc = .general_purpose }},21474 .dst_temps = .{.{ .rc = .general_purpose }},
12742 .clobbers = .{ .eflags = true },21475 .clobbers = .{ .eflags = true },
...@@ -12746,9 +21479,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12746,9 +21479,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12746 .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },21479 .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
12747 } },21480 } },
12748 }, .{21481 }, .{
12749 .src_constraints = .{ .{ .signed_int = .word }, .any },21482 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
12750 .patterns = &.{21483 .patterns = &.{
12751 .{ .src = .{ .to_mut_gpr, .none } },21484 .{ .src = .{ .to_mut_gpr, .none, .none } },
12752 },21485 },
12753 .extra_temps = .{21486 .extra_temps = .{
12754 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },21487 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
...@@ -12771,10 +21504,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12771,10 +21504,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12771 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },21504 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },
12772 } },21505 } },
12773 }, .{21506 }, .{
12774 .src_constraints = .{ .{ .unsigned_int = .word }, .any },21507 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
12775 .patterns = &.{21508 .patterns = &.{
12776 .{ .src = .{ .mem, .none } },21509 .{ .src = .{ .mem, .none, .none } },
12777 .{ .src = .{ .to_gpr, .none } },21510 .{ .src = .{ .to_gpr, .none, .none } },
12778 },21511 },
12779 .extra_temps = .{21512 .extra_temps = .{
12780 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },21513 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
...@@ -12797,9 +21530,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12797,9 +21530,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12797 } },21530 } },
12798 }, .{21531 }, .{
12799 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },21532 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
12800 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any },21533 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any, .any },
12801 .patterns = &.{21534 .patterns = &.{
12802 .{ .src = .{ .to_mut_gpr, .none } },21535 .{ .src = .{ .to_mut_gpr, .none, .none } },
12803 },21536 },
12804 .dst_temps = .{.{ .rc = .general_purpose }},21537 .dst_temps = .{.{ .rc = .general_purpose }},
12805 .clobbers = .{ .eflags = true },21538 .clobbers = .{ .eflags = true },
...@@ -12811,9 +21544,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12811,9 +21544,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12811 } },21544 } },
12812 }, .{21545 }, .{
12813 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },21546 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
12814 .src_constraints = .{ .{ .signed_int = .dword }, .any },21547 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
12815 .patterns = &.{21548 .patterns = &.{
12816 .{ .src = .{ .to_mut_gpr, .none } },21549 .{ .src = .{ .to_mut_gpr, .none, .none } },
12817 },21550 },
12818 .dst_temps = .{.{ .rc = .general_purpose }},21551 .dst_temps = .{.{ .rc = .general_purpose }},
12819 .clobbers = .{ .eflags = true },21552 .clobbers = .{ .eflags = true },
...@@ -12827,9 +21560,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12827,9 +21560,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12827 } },21560 } },
12828 }, .{21561 }, .{
12829 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },21562 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
12830 .src_constraints = .{ .{ .unsigned_int = .dword }, .any },21563 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
12831 .patterns = &.{21564 .patterns = &.{
12832 .{ .src = .{ .to_mut_gpr, .none } },21565 .{ .src = .{ .to_mut_gpr, .none, .none } },
12833 },21566 },
12834 .dst_temps = .{.{ .rc = .general_purpose }},21567 .dst_temps = .{.{ .rc = .general_purpose }},
12835 .clobbers = .{ .eflags = true },21568 .clobbers = .{ .eflags = true },
...@@ -12842,9 +21575,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12842,9 +21575,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12842 } },21575 } },
12843 }, .{21576 }, .{
12844 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },21577 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
12845 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any },21578 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any, .any },
12846 .patterns = &.{21579 .patterns = &.{
12847 .{ .src = .{ .to_mut_gpr, .none } },21580 .{ .src = .{ .to_mut_gpr, .none, .none } },
12848 },21581 },
12849 .dst_temps = .{.{ .ref = .src0 }},21582 .dst_temps = .{.{ .ref = .src0 }},
12850 .clobbers = .{ .eflags = true },21583 .clobbers = .{ .eflags = true },
...@@ -12856,9 +21589,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12856,9 +21589,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12856 } },21589 } },
12857 }, .{21590 }, .{
12858 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },21591 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
12859 .src_constraints = .{ .{ .signed_int = .dword }, .any },21592 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
12860 .patterns = &.{21593 .patterns = &.{
12861 .{ .src = .{ .to_mut_gpr, .none } },21594 .{ .src = .{ .to_mut_gpr, .none, .none } },
12862 },21595 },
12863 .dst_temps = .{.{ .rc = .general_purpose }},21596 .dst_temps = .{.{ .rc = .general_purpose }},
12864 .clobbers = .{ .eflags = true },21597 .clobbers = .{ .eflags = true },
...@@ -12872,9 +21605,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12872,9 +21605,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12872 } },21605 } },
12873 }, .{21606 }, .{
12874 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },21607 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
12875 .src_constraints = .{ .{ .unsigned_int = .dword }, .any },21608 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
12876 .patterns = &.{21609 .patterns = &.{
12877 .{ .src = .{ .to_mut_gpr, .none } },21610 .{ .src = .{ .to_mut_gpr, .none, .none } },
12878 },21611 },
12879 .dst_temps = .{.{ .rc = .general_purpose }},21612 .dst_temps = .{.{ .rc = .general_purpose }},
12880 .clobbers = .{ .eflags = true },21613 .clobbers = .{ .eflags = true },
...@@ -12886,10 +21619,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12886,10 +21619,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12886 .{ ._, ._, .sbb, .dst0b, .src0b, ._, ._ },21619 .{ ._, ._, .sbb, .dst0b, .src0b, ._, ._ },
12887 } },21620 } },
12888 }, .{21621 }, .{
12889 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any },21622 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any, .any },
12890 .patterns = &.{21623 .patterns = &.{
12891 .{ .src = .{ .mem, .none } },21624 .{ .src = .{ .mem, .none, .none } },
12892 .{ .src = .{ .to_gpr, .none } },21625 .{ .src = .{ .to_gpr, .none, .none } },
12893 },21626 },
12894 .dst_temps = .{.{ .rc = .general_purpose }},21627 .dst_temps = .{.{ .rc = .general_purpose }},
12895 .clobbers = .{ .eflags = true },21628 .clobbers = .{ .eflags = true },
...@@ -12899,9 +21632,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12899,9 +21632,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12899 .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },21632 .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
12900 } },21633 } },
12901 }, .{21634 }, .{
12902 .src_constraints = .{ .{ .signed_int = .dword }, .any },21635 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
12903 .patterns = &.{21636 .patterns = &.{
12904 .{ .src = .{ .to_mut_gpr, .none } },21637 .{ .src = .{ .to_mut_gpr, .none, .none } },
12905 },21638 },
12906 .extra_temps = .{21639 .extra_temps = .{
12907 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },21640 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -12924,10 +21657,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12924,10 +21657,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12924 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },21657 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },
12925 } },21658 } },
12926 }, .{21659 }, .{
12927 .src_constraints = .{ .{ .unsigned_int = .dword }, .any },21660 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
12928 .patterns = &.{21661 .patterns = &.{
12929 .{ .src = .{ .mem, .none } },21662 .{ .src = .{ .mem, .none, .none } },
12930 .{ .src = .{ .to_gpr, .none } },21663 .{ .src = .{ .to_gpr, .none, .none } },
12931 },21664 },
12932 .extra_temps = .{21665 .extra_temps = .{
12933 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },21666 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -12950,9 +21683,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12950,9 +21683,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12950 } },21683 } },
12951 }, .{21684 }, .{
12952 .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null },21685 .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null },
12953 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .qword }, .any },21686 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .qword }, .any, .any },
12954 .patterns = &.{21687 .patterns = &.{
12955 .{ .src = .{ .to_mut_gpr, .none } },21688 .{ .src = .{ .to_mut_gpr, .none, .none } },
12956 },21689 },
12957 .dst_temps = .{.{ .rc = .general_purpose }},21690 .dst_temps = .{.{ .rc = .general_purpose }},
12958 .clobbers = .{ .eflags = true },21691 .clobbers = .{ .eflags = true },
...@@ -12964,10 +21697,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12964,10 +21697,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12964 } },21697 } },
12965 }, .{21698 }, .{
12966 .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null },21699 .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null },
12967 .src_constraints = .{ .{ .signed_int = .qword }, .any },21700 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
12968 .patterns = &.{21701 .patterns = &.{
12969 .{ .src = .{ .mem, .none } },21702 .{ .src = .{ .mem, .none, .none } },
12970 .{ .src = .{ .to_gpr, .none } },21703 .{ .src = .{ .to_gpr, .none, .none } },
12971 },21704 },
12972 .extra_temps = .{21705 .extra_temps = .{
12973 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },21706 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
...@@ -12993,9 +21726,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12993,9 +21726,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12993 } },21726 } },
12994 }, .{21727 }, .{
12995 .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null },21728 .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null },
12996 .src_constraints = .{ .{ .unsigned_int = .qword }, .any },21729 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
12997 .patterns = &.{21730 .patterns = &.{
12998 .{ .src = .{ .to_mut_gpr, .none } },21731 .{ .src = .{ .to_mut_gpr, .none, .none } },
12999 },21732 },
13000 .dst_temps = .{.{ .rc = .general_purpose }},21733 .dst_temps = .{.{ .rc = .general_purpose }},
13001 .clobbers = .{ .eflags = true },21734 .clobbers = .{ .eflags = true },
...@@ -13008,9 +21741,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13008,9 +21741,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13008 } },21741 } },
13009 }, .{21742 }, .{
13010 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },21743 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },
13011 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .qword }, .any },21744 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .qword }, .any, .any },
13012 .patterns = &.{21745 .patterns = &.{
13013 .{ .src = .{ .to_mut_gpr, .none } },21746 .{ .src = .{ .to_mut_gpr, .none, .none } },
13014 },21747 },
13015 .dst_temps = .{.{ .ref = .src0 }},21748 .dst_temps = .{.{ .ref = .src0 }},
13016 .clobbers = .{ .eflags = true },21749 .clobbers = .{ .eflags = true },
...@@ -13022,10 +21755,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13022,10 +21755,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13022 } },21755 } },
13023 }, .{21756 }, .{
13024 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },21757 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },
13025 .src_constraints = .{ .{ .signed_int = .qword }, .any },21758 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
13026 .patterns = &.{21759 .patterns = &.{
13027 .{ .src = .{ .mem, .none } },21760 .{ .src = .{ .mem, .none, .none } },
13028 .{ .src = .{ .to_gpr, .none } },21761 .{ .src = .{ .to_gpr, .none, .none } },
13029 },21762 },
13030 .extra_temps = .{21763 .extra_temps = .{
13031 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },21764 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
...@@ -13051,9 +21784,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13051,9 +21784,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13051 } },21784 } },
13052 }, .{21785 }, .{
13053 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },21786 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },
13054 .src_constraints = .{ .{ .unsigned_int = .qword }, .any },21787 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
13055 .patterns = &.{21788 .patterns = &.{
13056 .{ .src = .{ .to_mut_gpr, .none } },21789 .{ .src = .{ .to_mut_gpr, .none, .none } },
13057 },21790 },
13058 .dst_temps = .{.{ .rc = .general_purpose }},21791 .dst_temps = .{.{ .rc = .general_purpose }},
13059 .clobbers = .{ .eflags = true },21792 .clobbers = .{ .eflags = true },
...@@ -13066,10 +21799,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13066,10 +21799,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13066 } },21799 } },
13067 }, .{21800 }, .{
13068 .required_features = .{ .@"64bit", null, null, null },21801 .required_features = .{ .@"64bit", null, null, null },
13069 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .qword }, .any },21802 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .qword }, .any, .any },
13070 .patterns = &.{21803 .patterns = &.{
13071 .{ .src = .{ .mem, .none } },21804 .{ .src = .{ .mem, .none, .none } },
13072 .{ .src = .{ .to_gpr, .none } },21805 .{ .src = .{ .to_gpr, .none, .none } },
13073 },21806 },
13074 .dst_temps = .{.{ .rc = .general_purpose }},21807 .dst_temps = .{.{ .rc = .general_purpose }},
13075 .clobbers = .{ .eflags = true },21808 .clobbers = .{ .eflags = true },
...@@ -13080,10 +21813,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13080,10 +21813,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13080 } },21813 } },
13081 }, .{21814 }, .{
13082 .required_features = .{ .@"64bit", null, null, null },21815 .required_features = .{ .@"64bit", null, null, null },
13083 .src_constraints = .{ .{ .signed_int = .qword }, .any },21816 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
13084 .patterns = &.{21817 .patterns = &.{
13085 .{ .src = .{ .mem, .none } },21818 .{ .src = .{ .mem, .none, .none } },
13086 .{ .src = .{ .to_gpr, .none } },21819 .{ .src = .{ .to_gpr, .none, .none } },
13087 },21820 },
13088 .extra_temps = .{21821 .extra_temps = .{
13089 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },21822 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
...@@ -13108,10 +21841,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13108,10 +21841,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13108 } },21841 } },
13109 }, .{21842 }, .{
13110 .required_features = .{ .@"64bit", null, null, null },21843 .required_features = .{ .@"64bit", null, null, null },
13111 .src_constraints = .{ .{ .unsigned_int = .qword }, .any },21844 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
13112 .patterns = &.{21845 .patterns = &.{
13113 .{ .src = .{ .mem, .none } },21846 .{ .src = .{ .mem, .none, .none } },
13114 .{ .src = .{ .to_gpr, .none } },21847 .{ .src = .{ .to_gpr, .none, .none } },
13115 },21848 },
13116 .extra_temps = .{21849 .extra_temps = .{
13117 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },21850 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
...@@ -13134,9 +21867,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13134,9 +21867,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13134 } },21867 } },
13135 }, .{21868 }, .{
13136 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },21869 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
13137 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any },21870 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
13138 .patterns = &.{21871 .patterns = &.{
13139 .{ .src = .{ .to_mem, .none } },21872 .{ .src = .{ .to_mem, .none, .none } },
13140 },21873 },
13141 .extra_temps = .{21874 .extra_temps = .{
13142 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },21875 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13164,9 +21897,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13164,9 +21897,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13164 } },21897 } },
13165 }, .{21898 }, .{
13166 .required_features = .{ .@"64bit", .lzcnt, null, null },21899 .required_features = .{ .@"64bit", .lzcnt, null, null },
13167 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any },21900 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
13168 .patterns = &.{21901 .patterns = &.{
13169 .{ .src = .{ .to_mem, .none } },21902 .{ .src = .{ .to_mem, .none, .none } },
13170 },21903 },
13171 .extra_temps = .{21904 .extra_temps = .{
13172 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },21905 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13193,9 +21926,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13193,9 +21926,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13193 } },21926 } },
13194 }, .{21927 }, .{
13195 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },21928 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },
13196 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any },21929 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
13197 .patterns = &.{21930 .patterns = &.{
13198 .{ .src = .{ .to_mem, .none } },21931 .{ .src = .{ .to_mem, .none, .none } },
13199 },21932 },
13200 .extra_temps = .{21933 .extra_temps = .{
13201 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },21934 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13224,9 +21957,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13224,9 +21957,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13224 } },21957 } },
13225 }, .{21958 }, .{
13226 .required_features = .{ .@"64bit", null, null, null },21959 .required_features = .{ .@"64bit", null, null, null },
13227 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any },21960 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
13228 .patterns = &.{21961 .patterns = &.{
13229 .{ .src = .{ .to_mem, .none } },21962 .{ .src = .{ .to_mem, .none, .none } },
13230 },21963 },
13231 .extra_temps = .{21964 .extra_temps = .{
13232 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },21965 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13254,9 +21987,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13254,9 +21987,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13254 } },21987 } },
13255 }, .{21988 }, .{
13256 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },21989 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
13257 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },21990 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
13258 .patterns = &.{21991 .patterns = &.{
13259 .{ .src = .{ .to_mem, .none } },21992 .{ .src = .{ .to_mem, .none, .none } },
13260 },21993 },
13261 .extra_temps = .{21994 .extra_temps = .{
13262 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },21995 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13284,9 +22017,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13284,9 +22017,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13284 } },22017 } },
13285 }, .{22018 }, .{
13286 .required_features = .{ .@"64bit", .lzcnt, null, null },22019 .required_features = .{ .@"64bit", .lzcnt, null, null },
13287 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },22020 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
13288 .patterns = &.{22021 .patterns = &.{
13289 .{ .src = .{ .to_mem, .none } },22022 .{ .src = .{ .to_mem, .none, .none } },
13290 },22023 },
13291 .extra_temps = .{22024 .extra_temps = .{
13292 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },22025 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13313,9 +22046,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13313,9 +22046,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13313 } },22046 } },
13314 }, .{22047 }, .{
13315 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },22048 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },
13316 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },22049 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
13317 .patterns = &.{22050 .patterns = &.{
13318 .{ .src = .{ .to_mem, .none } },22051 .{ .src = .{ .to_mem, .none, .none } },
13319 },22052 },
13320 .extra_temps = .{22053 .extra_temps = .{
13321 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },22054 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13344,9 +22077,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13344,9 +22077,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13344 } },22077 } },
13345 }, .{22078 }, .{
13346 .required_features = .{ .@"64bit", null, null, null },22079 .required_features = .{ .@"64bit", null, null, null },
13347 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },22080 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
13348 .patterns = &.{22081 .patterns = &.{
13349 .{ .src = .{ .to_mem, .none } },22082 .{ .src = .{ .to_mem, .none, .none } },
13350 },22083 },
13351 .extra_temps = .{22084 .extra_temps = .{
13352 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },22085 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13374,9 +22107,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13374,9 +22107,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13374 } },22107 } },
13375 }, .{22108 }, .{
13376 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },22109 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
13377 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any },22110 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
13378 .patterns = &.{22111 .patterns = &.{
13379 .{ .src = .{ .to_mem, .none } },22112 .{ .src = .{ .to_mem, .none, .none } },
13380 },22113 },
13381 .extra_temps = .{22114 .extra_temps = .{
13382 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },22115 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13407,9 +22140,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13407,9 +22140,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13407 } },22140 } },
13408 }, .{22141 }, .{
13409 .required_features = .{ .@"64bit", .lzcnt, null, null },22142 .required_features = .{ .@"64bit", .lzcnt, null, null },
13410 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any },22143 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
13411 .patterns = &.{22144 .patterns = &.{
13412 .{ .src = .{ .to_mem, .none } },22145 .{ .src = .{ .to_mem, .none, .none } },
13413 },22146 },
13414 .extra_temps = .{22147 .extra_temps = .{
13415 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },22148 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13439,9 +22172,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13439,9 +22172,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13439 } },22172 } },
13440 }, .{22173 }, .{
13441 .required_features = .{ .@"64bit", null, null, null },22174 .required_features = .{ .@"64bit", null, null, null },
13442 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any },22175 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
13443 .patterns = &.{22176 .patterns = &.{
13444 .{ .src = .{ .to_mem, .none } },22177 .{ .src = .{ .to_mem, .none, .none } },
13445 },22178 },
13446 .extra_temps = .{22179 .extra_temps = .{
13447 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },22180 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13471,9 +22204,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13471,9 +22204,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13471 } },22204 } },
13472 }, .{22205 }, .{
13473 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },22206 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
13474 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any },22207 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
13475 .patterns = &.{22208 .patterns = &.{
13476 .{ .src = .{ .to_mem, .none } },22209 .{ .src = .{ .to_mem, .none, .none } },
13477 },22210 },
13478 .extra_temps = .{22211 .extra_temps = .{
13479 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },22212 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13504,9 +22237,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13504,9 +22237,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13504 } },22237 } },
13505 }, .{22238 }, .{
13506 .required_features = .{ .@"64bit", .lzcnt, null, null },22239 .required_features = .{ .@"64bit", .lzcnt, null, null },
13507 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any },22240 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
13508 .patterns = &.{22241 .patterns = &.{
13509 .{ .src = .{ .to_mem, .none } },22242 .{ .src = .{ .to_mem, .none, .none } },
13510 },22243 },
13511 .extra_temps = .{22244 .extra_temps = .{
13512 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },22245 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13536,9 +22269,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13536,9 +22269,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13536 } },22269 } },
13537 }, .{22270 }, .{
13538 .required_features = .{ .@"64bit", null, null, null },22271 .required_features = .{ .@"64bit", null, null, null },
13539 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any },22272 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
13540 .patterns = &.{22273 .patterns = &.{
13541 .{ .src = .{ .to_mem, .none } },22274 .{ .src = .{ .to_mem, .none, .none } },
13542 },22275 },
13543 .extra_temps = .{22276 .extra_temps = .{
13544 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },22277 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13568,9 +22301,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13568,9 +22301,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13568 } },22301 } },
13569 }, .{22302 }, .{
13570 .required_features = .{ .lzcnt, .slow_incdec, null, null },22303 .required_features = .{ .lzcnt, .slow_incdec, null, null },
13571 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any },22304 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any },
13572 .patterns = &.{22305 .patterns = &.{
13573 .{ .src = .{ .to_mem, .none } },22306 .{ .src = .{ .to_mem, .none, .none } },
13574 },22307 },
13575 .extra_temps = .{22308 .extra_temps = .{
13576 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },22309 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13597,9 +22330,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13597,9 +22330,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13597 } },22330 } },
13598 }, .{22331 }, .{
13599 .required_features = .{ .lzcnt, null, null, null },22332 .required_features = .{ .lzcnt, null, null, null },
13600 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any },22333 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any },
13601 .patterns = &.{22334 .patterns = &.{
13602 .{ .src = .{ .to_mem, .none } },22335 .{ .src = .{ .to_mem, .none, .none } },
13603 },22336 },
13604 .extra_temps = .{22337 .extra_temps = .{
13605 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },22338 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13626,9 +22359,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13626,9 +22359,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13626 } },22359 } },
13627 }, .{22360 }, .{
13628 .required_features = .{ .lzcnt, .slow_incdec, null, null },22361 .required_features = .{ .lzcnt, .slow_incdec, null, null },
13629 .src_constraints = .{ .{ .scalar_int_is = .word }, .any },22362 .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any },
13630 .patterns = &.{22363 .patterns = &.{
13631 .{ .src = .{ .to_mem, .none } },22364 .{ .src = .{ .to_mem, .none, .none } },
13632 },22365 },
13633 .extra_temps = .{22366 .extra_temps = .{
13634 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },22367 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13655,9 +22388,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13655,9 +22388,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13655 } },22388 } },
13656 }, .{22389 }, .{
13657 .required_features = .{ .lzcnt, null, null, null },22390 .required_features = .{ .lzcnt, null, null, null },
13658 .src_constraints = .{ .{ .scalar_int_is = .word }, .any },22391 .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any },
13659 .patterns = &.{22392 .patterns = &.{
13660 .{ .src = .{ .to_mem, .none } },22393 .{ .src = .{ .to_mem, .none, .none } },
13661 },22394 },
13662 .extra_temps = .{22395 .extra_temps = .{
13663 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },22396 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13684,9 +22417,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13684,9 +22417,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13684 } },22417 } },
13685 }, .{22418 }, .{
13686 .required_features = .{ .lzcnt, .slow_incdec, null, null },22419 .required_features = .{ .lzcnt, .slow_incdec, null, null },
13687 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any },22420 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any },
13688 .patterns = &.{22421 .patterns = &.{
13689 .{ .src = .{ .to_mem, .none } },22422 .{ .src = .{ .to_mem, .none, .none } },
13690 },22423 },
13691 .extra_temps = .{22424 .extra_temps = .{
13692 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },22425 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13713,9 +22446,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13713,9 +22446,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13713 } },22446 } },
13714 }, .{22447 }, .{
13715 .required_features = .{ .lzcnt, null, null, null },22448 .required_features = .{ .lzcnt, null, null, null },
13716 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any },22449 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any },
13717 .patterns = &.{22450 .patterns = &.{
13718 .{ .src = .{ .to_mem, .none } },22451 .{ .src = .{ .to_mem, .none, .none } },
13719 },22452 },
13720 .extra_temps = .{22453 .extra_temps = .{
13721 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },22454 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13742,9 +22475,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13742,9 +22475,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13742 } },22475 } },
13743 }, .{22476 }, .{
13744 .required_features = .{ .@"64bit", .lzcnt, .slow_incdec, null },22477 .required_features = .{ .@"64bit", .lzcnt, .slow_incdec, null },
13745 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any },22478 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any },
13746 .patterns = &.{22479 .patterns = &.{
13747 .{ .src = .{ .to_mem, .none } },22480 .{ .src = .{ .to_mem, .none, .none } },
13748 },22481 },
13749 .extra_temps = .{22482 .extra_temps = .{
13750 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },22483 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13771,9 +22504,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13771,9 +22504,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13771 } },22504 } },
13772 }, .{22505 }, .{
13773 .required_features = .{ .@"64bit", .lzcnt, null, null },22506 .required_features = .{ .@"64bit", .lzcnt, null, null },
13774 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any },22507 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any },
13775 .patterns = &.{22508 .patterns = &.{
13776 .{ .src = .{ .to_mem, .none } },22509 .{ .src = .{ .to_mem, .none, .none } },
13777 },22510 },
13778 .extra_temps = .{22511 .extra_temps = .{
13779 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },22512 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13800,9 +22533,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13800,9 +22533,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13800 } },22533 } },
13801 }, .{22534 }, .{
13802 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec, null },22535 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec, null },
13803 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any },22536 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any },
13804 .patterns = &.{22537 .patterns = &.{
13805 .{ .src = .{ .to_mem, .none } },22538 .{ .src = .{ .to_mem, .none, .none } },
13806 },22539 },
13807 .extra_temps = .{22540 .extra_temps = .{
13808 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },22541 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13832,9 +22565,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13832,9 +22565,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13832 } },22565 } },
13833 }, .{22566 }, .{
13834 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },22567 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
13835 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any },22568 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any },
13836 .patterns = &.{22569 .patterns = &.{
13837 .{ .src = .{ .to_mem, .none } },22570 .{ .src = .{ .to_mem, .none, .none } },
13838 },22571 },
13839 .extra_temps = .{22572 .extra_temps = .{
13840 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },22573 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13864,9 +22597,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13864,9 +22597,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13864 } },22597 } },
13865 }, .{22598 }, .{
13866 .required_features = .{ .bsf_bsr_0_clobbers_result, .slow_incdec, null, null },22599 .required_features = .{ .bsf_bsr_0_clobbers_result, .slow_incdec, null, null },
13867 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any },22600 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any },
13868 .patterns = &.{22601 .patterns = &.{
13869 .{ .src = .{ .to_mem, .none } },22602 .{ .src = .{ .to_mem, .none, .none } },
13870 },22603 },
13871 .extra_temps = .{22604 .extra_temps = .{
13872 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },22605 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13896,9 +22629,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13896,9 +22629,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13896 } },22629 } },
13897 }, .{22630 }, .{
13898 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },22631 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
13899 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any },22632 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any },
13900 .patterns = &.{22633 .patterns = &.{
13901 .{ .src = .{ .to_mem, .none } },22634 .{ .src = .{ .to_mem, .none, .none } },
13902 },22635 },
13903 .extra_temps = .{22636 .extra_temps = .{
13904 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },22637 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13928,9 +22661,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13928,9 +22661,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13928 } },22661 } },
13929 }, .{22662 }, .{
13930 .required_features = .{ .slow_incdec, null, null, null },22663 .required_features = .{ .slow_incdec, null, null, null },
13931 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any },22664 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any },
13932 .patterns = &.{22665 .patterns = &.{
13933 .{ .src = .{ .to_mem, .none } },22666 .{ .src = .{ .to_mem, .none, .none } },
13934 },22667 },
13935 .extra_temps = .{22668 .extra_temps = .{
13936 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },22669 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13958,9 +22691,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13958,9 +22691,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13958 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },22691 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13959 } },22692 } },
13960 }, .{22693 }, .{
13961 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any },22694 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any },
13962 .patterns = &.{22695 .patterns = &.{
13963 .{ .src = .{ .to_mem, .none } },22696 .{ .src = .{ .to_mem, .none, .none } },
13964 },22697 },
13965 .extra_temps = .{22698 .extra_temps = .{
13966 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },22699 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13989,9 +22722,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13989,9 +22722,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13989 } },22722 } },
13990 }, .{22723 }, .{
13991 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec, null },22724 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec, null },
13992 .src_constraints = .{ .{ .scalar_int_is = .word }, .any },22725 .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any },
13993 .patterns = &.{22726 .patterns = &.{
13994 .{ .src = .{ .to_mem, .none } },22727 .{ .src = .{ .to_mem, .none, .none } },
13995 },22728 },
13996 .extra_temps = .{22729 .extra_temps = .{
13997 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },22730 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14021,9 +22754,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14021,9 +22754,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14021 } },22754 } },
14022 }, .{22755 }, .{
14023 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },22756 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
14024 .src_constraints = .{ .{ .scalar_int_is = .word }, .any },22757 .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any },
14025 .patterns = &.{22758 .patterns = &.{
14026 .{ .src = .{ .to_mem, .none } },22759 .{ .src = .{ .to_mem, .none, .none } },
14027 },22760 },
14028 .extra_temps = .{22761 .extra_temps = .{
14029 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },22762 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14053,9 +22786,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14053,9 +22786,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14053 } },22786 } },
14054 }, .{22787 }, .{
14055 .required_features = .{ .bsf_bsr_0_clobbers_result, .slow_incdec, null, null },22788 .required_features = .{ .bsf_bsr_0_clobbers_result, .slow_incdec, null, null },
14056 .src_constraints = .{ .{ .scalar_int_is = .word }, .any },22789 .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any },
14057 .patterns = &.{22790 .patterns = &.{
14058 .{ .src = .{ .to_mem, .none } },22791 .{ .src = .{ .to_mem, .none, .none } },
14059 },22792 },
14060 .extra_temps = .{22793 .extra_temps = .{
14061 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },22794 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14085,9 +22818,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14085,9 +22818,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14085 } },22818 } },
14086 }, .{22819 }, .{
14087 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },22820 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
14088 .src_constraints = .{ .{ .scalar_int_is = .word }, .any },22821 .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any },
14089 .patterns = &.{22822 .patterns = &.{
14090 .{ .src = .{ .to_mem, .none } },22823 .{ .src = .{ .to_mem, .none, .none } },
14091 },22824 },
14092 .extra_temps = .{22825 .extra_temps = .{
14093 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },22826 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14117,9 +22850,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14117,9 +22850,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14117 } },22850 } },
14118 }, .{22851 }, .{
14119 .required_features = .{ .slow_incdec, null, null, null },22852 .required_features = .{ .slow_incdec, null, null, null },
14120 .src_constraints = .{ .{ .scalar_int_is = .word }, .any },22853 .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any },
14121 .patterns = &.{22854 .patterns = &.{
14122 .{ .src = .{ .to_mem, .none } },22855 .{ .src = .{ .to_mem, .none, .none } },
14123 },22856 },
14124 .extra_temps = .{22857 .extra_temps = .{
14125 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },22858 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14147,9 +22880,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14147,9 +22880,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14147 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },22880 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14148 } },22881 } },
14149 }, .{22882 }, .{
14150 .src_constraints = .{ .{ .scalar_int_is = .word }, .any },22883 .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any },
14151 .patterns = &.{22884 .patterns = &.{
14152 .{ .src = .{ .to_mem, .none } },22885 .{ .src = .{ .to_mem, .none, .none } },
14153 },22886 },
14154 .extra_temps = .{22887 .extra_temps = .{
14155 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },22888 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14178,9 +22911,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14178,9 +22911,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14178 } },22911 } },
14179 }, .{22912 }, .{
14180 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec, null },22913 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec, null },
14181 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any },22914 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any },
14182 .patterns = &.{22915 .patterns = &.{
14183 .{ .src = .{ .to_mem, .none } },22916 .{ .src = .{ .to_mem, .none, .none } },
14184 },22917 },
14185 .extra_temps = .{22918 .extra_temps = .{
14186 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },22919 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14210,9 +22943,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14210,9 +22943,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14210 } },22943 } },
14211 }, .{22944 }, .{
14212 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },22945 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
14213 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any },22946 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any },
14214 .patterns = &.{22947 .patterns = &.{
14215 .{ .src = .{ .to_mem, .none } },22948 .{ .src = .{ .to_mem, .none, .none } },
14216 },22949 },
14217 .extra_temps = .{22950 .extra_temps = .{
14218 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },22951 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14242,9 +22975,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14242,9 +22975,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14242 } },22975 } },
14243 }, .{22976 }, .{
14244 .required_features = .{ .bsf_bsr_0_clobbers_result, .slow_incdec, null, null },22977 .required_features = .{ .bsf_bsr_0_clobbers_result, .slow_incdec, null, null },
14245 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any },22978 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any },
14246 .patterns = &.{22979 .patterns = &.{
14247 .{ .src = .{ .to_mem, .none } },22980 .{ .src = .{ .to_mem, .none, .none } },
14248 },22981 },
14249 .extra_temps = .{22982 .extra_temps = .{
14250 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },22983 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14274,9 +23007,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14274,9 +23007,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14274 } },23007 } },
14275 }, .{23008 }, .{
14276 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },23009 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
14277 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any },23010 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any },
14278 .patterns = &.{23011 .patterns = &.{
14279 .{ .src = .{ .to_mem, .none } },23012 .{ .src = .{ .to_mem, .none, .none } },
14280 },23013 },
14281 .extra_temps = .{23014 .extra_temps = .{
14282 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23015 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14306,9 +23039,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14306,9 +23039,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14306 } },23039 } },
14307 }, .{23040 }, .{
14308 .required_features = .{ .slow_incdec, null, null, null },23041 .required_features = .{ .slow_incdec, null, null, null },
14309 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any },23042 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any },
14310 .patterns = &.{23043 .patterns = &.{
14311 .{ .src = .{ .to_mem, .none } },23044 .{ .src = .{ .to_mem, .none, .none } },
14312 },23045 },
14313 .extra_temps = .{23046 .extra_temps = .{
14314 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23047 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14336,9 +23069,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14336,9 +23069,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14336 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },23069 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14337 } },23070 } },
14338 }, .{23071 }, .{
14339 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any },23072 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any },
14340 .patterns = &.{23073 .patterns = &.{
14341 .{ .src = .{ .to_mem, .none } },23074 .{ .src = .{ .to_mem, .none, .none } },
14342 },23075 },
14343 .extra_temps = .{23076 .extra_temps = .{
14344 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23077 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14367,9 +23100,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14367,9 +23100,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14367 } },23100 } },
14368 }, .{23101 }, .{
14369 .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec },23102 .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec },
14370 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any },23103 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any },
14371 .patterns = &.{23104 .patterns = &.{
14372 .{ .src = .{ .to_mem, .none } },23105 .{ .src = .{ .to_mem, .none, .none } },
14373 },23106 },
14374 .extra_temps = .{23107 .extra_temps = .{
14375 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23108 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14399,9 +23132,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14399,9 +23132,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14399 } },23132 } },
14400 }, .{23133 }, .{
14401 .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null },23134 .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null },
14402 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any },23135 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any },
14403 .patterns = &.{23136 .patterns = &.{
14404 .{ .src = .{ .to_mem, .none } },23137 .{ .src = .{ .to_mem, .none, .none } },
14405 },23138 },
14406 .extra_temps = .{23139 .extra_temps = .{
14407 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23140 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14431,9 +23164,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14431,9 +23164,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14431 } },23164 } },
14432 }, .{23165 }, .{
14433 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, .slow_incdec, null },23166 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, .slow_incdec, null },
14434 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any },23167 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any },
14435 .patterns = &.{23168 .patterns = &.{
14436 .{ .src = .{ .to_mem, .none } },23169 .{ .src = .{ .to_mem, .none, .none } },
14437 },23170 },
14438 .extra_temps = .{23171 .extra_temps = .{
14439 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23172 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14463,9 +23196,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14463,9 +23196,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14463 } },23196 } },
14464 }, .{23197 }, .{
14465 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },23198 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },
14466 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any },23199 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any },
14467 .patterns = &.{23200 .patterns = &.{
14468 .{ .src = .{ .to_mem, .none } },23201 .{ .src = .{ .to_mem, .none, .none } },
14469 },23202 },
14470 .extra_temps = .{23203 .extra_temps = .{
14471 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23204 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14495,9 +23228,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14495,9 +23228,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14495 } },23228 } },
14496 }, .{23229 }, .{
14497 .required_features = .{ .@"64bit", .slow_incdec, null, null },23230 .required_features = .{ .@"64bit", .slow_incdec, null, null },
14498 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any },23231 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any },
14499 .patterns = &.{23232 .patterns = &.{
14500 .{ .src = .{ .to_mem, .none } },23233 .{ .src = .{ .to_mem, .none, .none } },
14501 },23234 },
14502 .extra_temps = .{23235 .extra_temps = .{
14503 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23236 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14526,9 +23259,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14526,9 +23259,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14526 } },23259 } },
14527 }, .{23260 }, .{
14528 .required_features = .{ .@"64bit", null, null, null },23261 .required_features = .{ .@"64bit", null, null, null },
14529 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any },23262 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any },
14530 .patterns = &.{23263 .patterns = &.{
14531 .{ .src = .{ .to_mem, .none } },23264 .{ .src = .{ .to_mem, .none, .none } },
14532 },23265 },
14533 .extra_temps = .{23266 .extra_temps = .{
14534 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23267 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14557,10 +23290,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14557,10 +23290,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14557 } },23290 } },
14558 }, .{23291 }, .{
14559 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },23292 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
14560 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },23293 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
14561 .dst_constraints = .{.{ .scalar_int_is = .byte }},23294 .dst_constraints = .{.{ .scalar_int_is = .byte }},
14562 .patterns = &.{23295 .patterns = &.{
14563 .{ .src = .{ .to_mem, .none } },23296 .{ .src = .{ .to_mem, .none, .none } },
14564 },23297 },
14565 .extra_temps = .{23298 .extra_temps = .{
14566 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23299 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14597,10 +23330,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14597,10 +23330,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14597 } },23330 } },
14598 }, .{23331 }, .{
14599 .required_features = .{ .@"64bit", .lzcnt, null, null },23332 .required_features = .{ .@"64bit", .lzcnt, null, null },
14600 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },23333 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
14601 .dst_constraints = .{.{ .scalar_int_is = .byte }},23334 .dst_constraints = .{.{ .scalar_int_is = .byte }},
14602 .patterns = &.{23335 .patterns = &.{
14603 .{ .src = .{ .to_mem, .none } },23336 .{ .src = .{ .to_mem, .none, .none } },
14604 },23337 },
14605 .extra_temps = .{23338 .extra_temps = .{
14606 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23339 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14636,10 +23369,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14636,10 +23369,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14636 } },23369 } },
14637 }, .{23370 }, .{
14638 .required_features = .{ .@"64bit", null, null, null },23371 .required_features = .{ .@"64bit", null, null, null },
14639 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },23372 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
14640 .dst_constraints = .{.{ .scalar_int_is = .byte }},23373 .dst_constraints = .{.{ .scalar_int_is = .byte }},
14641 .patterns = &.{23374 .patterns = &.{
14642 .{ .src = .{ .to_mem, .none } },23375 .{ .src = .{ .to_mem, .none, .none } },
14643 },23376 },
14644 .extra_temps = .{23377 .extra_temps = .{
14645 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23378 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14675,10 +23408,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14675,10 +23408,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14675 } },23408 } },
14676 }, .{23409 }, .{
14677 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },23410 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
14678 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },23411 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
14679 .dst_constraints = .{.{ .scalar_int_is = .byte }},23412 .dst_constraints = .{.{ .scalar_int_is = .byte }},
14680 .patterns = &.{23413 .patterns = &.{
14681 .{ .src = .{ .to_mem, .none } },23414 .{ .src = .{ .to_mem, .none, .none } },
14682 },23415 },
14683 .extra_temps = .{23416 .extra_temps = .{
14684 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23417 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14715,10 +23448,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14715,10 +23448,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14715 } },23448 } },
14716 }, .{23449 }, .{
14717 .required_features = .{ .@"64bit", .lzcnt, null, null },23450 .required_features = .{ .@"64bit", .lzcnt, null, null },
14718 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },23451 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
14719 .dst_constraints = .{.{ .scalar_int_is = .byte }},23452 .dst_constraints = .{.{ .scalar_int_is = .byte }},
14720 .patterns = &.{23453 .patterns = &.{
14721 .{ .src = .{ .to_mem, .none } },23454 .{ .src = .{ .to_mem, .none, .none } },
14722 },23455 },
14723 .extra_temps = .{23456 .extra_temps = .{
14724 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23457 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14754,10 +23487,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14754,10 +23487,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14754 } },23487 } },
14755 }, .{23488 }, .{
14756 .required_features = .{ .@"64bit", null, null, null },23489 .required_features = .{ .@"64bit", null, null, null },
14757 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },23490 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
14758 .dst_constraints = .{.{ .scalar_int_is = .byte }},23491 .dst_constraints = .{.{ .scalar_int_is = .byte }},
14759 .patterns = &.{23492 .patterns = &.{
14760 .{ .src = .{ .to_mem, .none } },23493 .{ .src = .{ .to_mem, .none, .none } },
14761 },23494 },
14762 .extra_temps = .{23495 .extra_temps = .{
14763 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23496 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14793,10 +23526,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14793,10 +23526,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14793 } },23526 } },
14794 }, .{23527 }, .{
14795 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },23528 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
14796 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },23529 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
14797 .dst_constraints = .{.{ .scalar_int_is = .word }},23530 .dst_constraints = .{.{ .scalar_int_is = .word }},
14798 .patterns = &.{23531 .patterns = &.{
14799 .{ .src = .{ .to_mem, .none } },23532 .{ .src = .{ .to_mem, .none, .none } },
14800 },23533 },
14801 .extra_temps = .{23534 .extra_temps = .{
14802 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23535 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14833,10 +23566,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14833,10 +23566,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14833 } },23566 } },
14834 }, .{23567 }, .{
14835 .required_features = .{ .@"64bit", .lzcnt, null, null },23568 .required_features = .{ .@"64bit", .lzcnt, null, null },
14836 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },23569 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
14837 .dst_constraints = .{.{ .scalar_int_is = .word }},23570 .dst_constraints = .{.{ .scalar_int_is = .word }},
14838 .patterns = &.{23571 .patterns = &.{
14839 .{ .src = .{ .to_mem, .none } },23572 .{ .src = .{ .to_mem, .none, .none } },
14840 },23573 },
14841 .extra_temps = .{23574 .extra_temps = .{
14842 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23575 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14872,10 +23605,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14872,10 +23605,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14872 } },23605 } },
14873 }, .{23606 }, .{
14874 .required_features = .{ .@"64bit", null, null, null },23607 .required_features = .{ .@"64bit", null, null, null },
14875 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },23608 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
14876 .dst_constraints = .{.{ .scalar_int_is = .word }},23609 .dst_constraints = .{.{ .scalar_int_is = .word }},
14877 .patterns = &.{23610 .patterns = &.{
14878 .{ .src = .{ .to_mem, .none } },23611 .{ .src = .{ .to_mem, .none, .none } },
14879 },23612 },
14880 .extra_temps = .{23613 .extra_temps = .{
14881 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23614 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14911,10 +23644,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14911,10 +23644,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14911 } },23644 } },
14912 }, .{23645 }, .{
14913 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },23646 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
14914 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },23647 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
14915 .dst_constraints = .{.{ .scalar_int_is = .word }},23648 .dst_constraints = .{.{ .scalar_int_is = .word }},
14916 .patterns = &.{23649 .patterns = &.{
14917 .{ .src = .{ .to_mem, .none } },23650 .{ .src = .{ .to_mem, .none, .none } },
14918 },23651 },
14919 .extra_temps = .{23652 .extra_temps = .{
14920 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23653 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14951,10 +23684,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14951,10 +23684,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14951 } },23684 } },
14952 }, .{23685 }, .{
14953 .required_features = .{ .@"64bit", .lzcnt, null, null },23686 .required_features = .{ .@"64bit", .lzcnt, null, null },
14954 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },23687 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
14955 .dst_constraints = .{.{ .scalar_int_is = .word }},23688 .dst_constraints = .{.{ .scalar_int_is = .word }},
14956 .patterns = &.{23689 .patterns = &.{
14957 .{ .src = .{ .to_mem, .none } },23690 .{ .src = .{ .to_mem, .none, .none } },
14958 },23691 },
14959 .extra_temps = .{23692 .extra_temps = .{
14960 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23693 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14990,10 +23723,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14990,10 +23723,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14990 } },23723 } },
14991 }, .{23724 }, .{
14992 .required_features = .{ .@"64bit", null, null, null },23725 .required_features = .{ .@"64bit", null, null, null },
14993 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },23726 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
14994 .dst_constraints = .{.{ .scalar_int_is = .word }},23727 .dst_constraints = .{.{ .scalar_int_is = .word }},
14995 .patterns = &.{23728 .patterns = &.{
14996 .{ .src = .{ .to_mem, .none } },23729 .{ .src = .{ .to_mem, .none, .none } },
14997 },23730 },
14998 .extra_temps = .{23731 .extra_temps = .{
14999 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23732 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -15006,50 +23739,2361 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15006,50 +23739,2361 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15006 .unused,23739 .unused,
15007 .unused,23740 .unused,
15008 },23741 },
15009 .dst_temps = .{.mem},23742 .dst_temps = .{.mem},
15010 .clobbers = .{ .eflags = true },23743 .clobbers = .{ .eflags = true },
15011 .each = .{ .once = &.{23744 .each = .{ .once = &.{
15012 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ },23745 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ },
15013 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },23746 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
15014 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },23747 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },
15015 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },23748 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
15016 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },23749 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
15017 .{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ },23750 .{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ },
15018 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },23751 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
15019 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },23752 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
15020 .{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ },23753 .{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ },
15021 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },23754 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
15022 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },23755 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
15023 .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ },23756 .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ },
15024 .{ ._, ._, .neg, .tmp3d, ._, ._, ._ },23757 .{ ._, ._, .neg, .tmp3d, ._, ._, ._ },
15025 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },23758 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },
15026 .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },23759 .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
15027 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },23760 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
15028 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },23761 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
15029 } },23762 } },
15030 } }) catch |err| switch (err) {23763 } }) catch |err| switch (err) {
15031 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{23764 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
15032 @tagName(air_tag),23765 @tagName(air_tag),
15033 cg.typeOf(ty_op.operand).fmt(pt),23766 cg.typeOf(ty_op.operand).fmt(pt),
15034 ops[0].tracking(cg),23767 ops[0].tracking(cg),
15035 }),23768 }),
15036 else => |e| return e,23769 else => |e| return e,
15037 };23770 };
15038 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);23771 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
15039 },23772 },
1504023773
15041 .cmp_vector, .cmp_vector_optimized => |air_tag| if (use_old) try cg.airCmpVector(inst) else fallback: {23774 .cmp_vector, .cmp_vector_optimized => |air_tag| if (use_old) try cg.airCmpVector(inst) else fallback: {
15042 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;23775 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
15043 const extra = cg.air.extraData(Air.VectorCmp, ty_pl.payload).data;23776 const extra = cg.air.extraData(Air.VectorCmp, ty_pl.payload).data;
15044 switch (extra.compareOperator()) {23777 switch (extra.compareOperator()) {
15045 .eq, .neq => {},23778 .eq, .neq => {},
15046 else => break :fallback try cg.airCmpVector(inst),23779 .lt, .lte, .gte, .gt => if (cg.floatBits(cg.typeOf(extra.lhs).childType(zcu)) == null)
15047 }23780 break :fallback try cg.airCmpVector(inst),
15048 var ops = try cg.tempsFromOperands(inst, .{ extra.lhs, extra.rhs });23781 }
15049 var res: [1]Temp = undefined;23782 var ops = try cg.tempsFromOperands(inst, .{ extra.lhs, extra.rhs });
15050 switch (extra.compareOperator()) {23783 var res: [1]Temp = undefined;
15051 .lt => unreachable,23784 (err: switch (extra.compareOperator()) {
15052 .lte => unreachable,23785 .lt, .lte, .gte, .gt => |cmp_op| {
23786 switch (cmp_op) {
23787 else => unreachable,
23788 .lt, .lte => {},
23789 .gt, .gte => std.mem.swap(Temp, &ops[0], &ops[1]),
23790 }
23791 break :err cg.select(&res, &.{ty_pl.ty.toType()}, &ops, switch (@as(Condition, switch (cmp_op) {
23792 else => unreachable,
23793 .lt, .gt => .l,
23794 .lte, .gte => .le,
23795 })) {
23796 else => unreachable,
23797 inline .l, .le => |cc| comptime &.{ .{
23798 .required_features = .{ .f16c, null, null, null },
23799 .src_constraints = .{
23800 .{ .scalar_float = .{ .of = .word, .is = .word } },
23801 .{ .scalar_float = .{ .of = .word, .is = .word } },
23802 .any,
23803 },
23804 .patterns = &.{
23805 .{ .src = .{ .to_sse, .to_sse, .none } },
23806 },
23807 .extra_temps = .{
23808 .{ .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
23809 .unused,
23810 .unused,
23811 .unused,
23812 .unused,
23813 .unused,
23814 .unused,
23815 .unused,
23816 .unused,
23817 },
23818 .dst_temps = .{.{ .mut_rc_mask = .{
23819 .ref = .src0,
23820 .rc = .sse,
23821 .info = .{ .kind = .all, .scalar = .dword },
23822 } }},
23823 .each = .{ .once = &.{
23824 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
23825 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
23826 .{ ._, .v_ss, .cmp, .dst0x, .dst0x, .tmp0d, .vp(switch (cc) {
23827 else => unreachable,
23828 .l => .lt,
23829 .le => .le,
23830 }) },
23831 } },
23832 }, .{
23833 .required_features = .{ .f16c, null, null, null },
23834 .src_constraints = .{
23835 .{ .scalar_float = .{ .of = .qword, .is = .word } },
23836 .{ .scalar_float = .{ .of = .qword, .is = .word } },
23837 .any,
23838 },
23839 .patterns = &.{
23840 .{ .src = .{ .mem, .mem, .none } },
23841 .{ .src = .{ .sse, .mem, .none } },
23842 .{ .src = .{ .mem, .sse, .none } },
23843 .{ .src = .{ .to_sse, .to_sse, .none } },
23844 },
23845 .extra_temps = .{
23846 .{ .kind = .{ .rc = .sse } },
23847 .unused,
23848 .unused,
23849 .unused,
23850 .unused,
23851 .unused,
23852 .unused,
23853 .unused,
23854 .unused,
23855 },
23856 .dst_temps = .{.{ .mut_rc_mask = .{
23857 .ref = .src0,
23858 .rc = .sse,
23859 .info = .{ .kind = .all, .scalar = .dword },
23860 } }},
23861 .each = .{ .once = &.{
23862 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
23863 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
23864 .{ ._, .v_ps, .cmp, .dst0x, .dst0x, .tmp0x, .vp(switch (cc) {
23865 else => unreachable,
23866 .l => .lt,
23867 .le => .le,
23868 }) },
23869 } },
23870 }, .{
23871 .required_features = .{ .f16c, null, null, null },
23872 .src_constraints = .{
23873 .{ .scalar_float = .{ .of = .xword, .is = .word } },
23874 .{ .scalar_float = .{ .of = .xword, .is = .word } },
23875 .any,
23876 },
23877 .patterns = &.{
23878 .{ .src = .{ .mem, .mem, .none } },
23879 .{ .src = .{ .to_sse, .mem, .none } },
23880 .{ .src = .{ .mem, .to_sse, .none } },
23881 .{ .src = .{ .to_sse, .to_sse, .none } },
23882 },
23883 .extra_temps = .{
23884 .{ .kind = .{ .rc = .sse } },
23885 .unused,
23886 .unused,
23887 .unused,
23888 .unused,
23889 .unused,
23890 .unused,
23891 .unused,
23892 .unused,
23893 },
23894 .dst_temps = .{.{ .mut_rc_mask = .{
23895 .ref = .src0,
23896 .rc = .sse,
23897 .info = .{ .kind = .all, .scalar = .dword },
23898 } }},
23899 .each = .{ .once = &.{
23900 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
23901 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
23902 .{ ._, .v_ps, .cmp, .dst0y, .dst0y, .tmp0y, .vp(switch (cc) {
23903 else => unreachable,
23904 .l => .lt,
23905 .le => .le,
23906 }) },
23907 } },
23908 }, .{
23909 .required_features = .{ .avx, null, null, null },
23910 .src_constraints = .{
23911 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
23912 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
23913 .any,
23914 },
23915 .patterns = &.{
23916 .{ .src = .{ .to_sse, .mem, .none } },
23917 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
23918 .{ .src = .{ .to_sse, .to_sse, .none } },
23919 },
23920 .dst_temps = .{.{ .mut_rc_mask = .{
23921 .ref = .src0,
23922 .rc = .sse,
23923 .info = .{ .kind = .all, .scalar = .dword },
23924 } }},
23925 .each = .{ .once = &.{
23926 .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1d, .vp(switch (cc) {
23927 else => unreachable,
23928 .l => .lt,
23929 .le => .le,
23930 }) },
23931 } },
23932 }, .{
23933 .required_features = .{ .sse, null, null, null },
23934 .src_constraints = .{
23935 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
23936 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
23937 .any,
23938 },
23939 .patterns = &.{
23940 .{ .src = .{ .to_mut_sse, .mem, .none } },
23941 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
23942 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
23943 },
23944 .dst_temps = .{.{ .ref_mask = .{
23945 .ref = .src0,
23946 .info = .{ .kind = .all, .scalar = .dword },
23947 } }},
23948 .each = .{ .once = &.{
23949 .{ ._, ._ss, .cmp, .dst0x, .src1d, .sp(switch (cc) {
23950 else => unreachable,
23951 .l => .lt,
23952 .le => .le,
23953 }), ._ },
23954 } },
23955 }, .{
23956 .required_features = .{ .avx, null, null, null },
23957 .src_constraints = .{
23958 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
23959 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
23960 .any,
23961 },
23962 .patterns = &.{
23963 .{ .src = .{ .to_sse, .mem, .none } },
23964 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
23965 .{ .src = .{ .to_sse, .to_sse, .none } },
23966 },
23967 .dst_temps = .{.{ .mut_rc_mask = .{
23968 .ref = .src0,
23969 .rc = .sse,
23970 .info = .{ .kind = .all, .scalar = .dword },
23971 } }},
23972 .each = .{ .once = &.{
23973 .{ ._, .v_ps, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) {
23974 else => unreachable,
23975 .l => .lt,
23976 .le => .le,
23977 }) },
23978 } },
23979 }, .{
23980 .required_features = .{ .sse, null, null, null },
23981 .src_constraints = .{
23982 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
23983 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
23984 .any,
23985 },
23986 .patterns = &.{
23987 .{ .src = .{ .to_mut_sse, .mem, .none } },
23988 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
23989 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
23990 },
23991 .dst_temps = .{.{ .ref_mask = .{
23992 .ref = .src0,
23993 .info = .{ .kind = .all, .scalar = .dword },
23994 } }},
23995 .each = .{ .once = &.{
23996 .{ ._, ._ps, .cmp, .dst0x, .src1x, .sp(switch (cc) {
23997 else => unreachable,
23998 .l => .lt,
23999 .le => .le,
24000 }), ._ },
24001 } },
24002 }, .{
24003 .required_features = .{ .avx, null, null, null },
24004 .src_constraints = .{
24005 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
24006 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
24007 .any,
24008 },
24009 .patterns = &.{
24010 .{ .src = .{ .to_sse, .mem, .none } },
24011 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
24012 .{ .src = .{ .to_sse, .to_sse, .none } },
24013 },
24014 .dst_temps = .{.{ .mut_rc_mask = .{
24015 .ref = .src0,
24016 .rc = .sse,
24017 .info = .{ .kind = .all, .scalar = .dword },
24018 } }},
24019 .each = .{ .once = &.{
24020 .{ ._, .v_ps, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) {
24021 else => unreachable,
24022 .l => .lt,
24023 .le => .le,
24024 }) },
24025 } },
24026 }, .{
24027 .required_features = .{ .avx, null, null, null },
24028 .src_constraints = .{
24029 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
24030 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
24031 .any,
24032 },
24033 .patterns = &.{
24034 .{ .src = .{ .to_sse, .mem, .none } },
24035 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
24036 .{ .src = .{ .to_sse, .to_sse, .none } },
24037 },
24038 .dst_temps = .{.{ .mut_rc_mask = .{
24039 .ref = .src0,
24040 .rc = .sse,
24041 .info = .{ .kind = .all, .scalar = .qword },
24042 } }},
24043 .each = .{ .once = &.{
24044 .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1q, .vp(switch (cc) {
24045 else => unreachable,
24046 .l => .lt,
24047 .le => .le,
24048 }) },
24049 } },
24050 }, .{
24051 .required_features = .{ .sse2, null, null, null },
24052 .src_constraints = .{
24053 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
24054 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
24055 .any,
24056 },
24057 .patterns = &.{
24058 .{ .src = .{ .to_mut_sse, .mem, .none } },
24059 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
24060 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
24061 },
24062 .dst_temps = .{.{ .ref_mask = .{
24063 .ref = .src0,
24064 .info = .{ .kind = .all, .scalar = .qword },
24065 } }},
24066 .each = .{ .once = &.{
24067 .{ ._, ._sd, .cmp, .dst0x, .src1q, .sp(switch (cc) {
24068 else => unreachable,
24069 .l => .lt,
24070 .le => .le,
24071 }), ._ },
24072 } },
24073 }, .{
24074 .required_features = .{ .avx, null, null, null },
24075 .src_constraints = .{
24076 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
24077 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
24078 .any,
24079 },
24080 .patterns = &.{
24081 .{ .src = .{ .to_sse, .mem, .none } },
24082 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
24083 .{ .src = .{ .to_sse, .to_sse, .none } },
24084 },
24085 .dst_temps = .{.{ .mut_rc_mask = .{
24086 .ref = .src0,
24087 .rc = .sse,
24088 .info = .{ .kind = .all, .scalar = .qword },
24089 } }},
24090 .each = .{ .once = &.{
24091 .{ ._, .v_pd, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) {
24092 else => unreachable,
24093 .l => .lt,
24094 .le => .le,
24095 }) },
24096 } },
24097 }, .{
24098 .required_features = .{ .sse2, null, null, null },
24099 .src_constraints = .{
24100 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
24101 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
24102 .any,
24103 },
24104 .patterns = &.{
24105 .{ .src = .{ .to_mut_sse, .mem, .none } },
24106 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
24107 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
24108 },
24109 .dst_temps = .{.{ .ref_mask = .{
24110 .ref = .src0,
24111 .info = .{ .kind = .all, .scalar = .qword },
24112 } }},
24113 .each = .{ .once = &.{
24114 .{ ._, ._pd, .cmp, .dst0x, .src1x, .sp(switch (cc) {
24115 else => unreachable,
24116 .l => .lt,
24117 .le => .le,
24118 }), ._ },
24119 } },
24120 }, .{
24121 .required_features = .{ .avx, null, null, null },
24122 .src_constraints = .{
24123 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
24124 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
24125 .any,
24126 },
24127 .patterns = &.{
24128 .{ .src = .{ .to_sse, .mem, .none } },
24129 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
24130 .{ .src = .{ .to_sse, .to_sse, .none } },
24131 },
24132 .dst_temps = .{.{ .mut_rc_mask = .{
24133 .ref = .src0,
24134 .rc = .sse,
24135 .info = .{ .kind = .all, .scalar = .qword },
24136 } }},
24137 .each = .{ .once = &.{
24138 .{ ._, .v_pd, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) {
24139 else => unreachable,
24140 .l => .lt,
24141 .le => .le,
24142 }) },
24143 } },
24144 }, .{
24145 .required_features = .{ .f16c, .slow_incdec, null, null },
24146 .src_constraints = .{
24147 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
24148 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
24149 .any,
24150 },
24151 .patterns = &.{
24152 .{ .src = .{ .to_mem, .to_mem, .none } },
24153 },
24154 .extra_temps = .{
24155 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24156 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
24157 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
24158 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
24159 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24160 .unused,
24161 .unused,
24162 .unused,
24163 .unused,
24164 },
24165 .dst_temps = .{.mem},
24166 .clobbers = .{ .eflags = true },
24167 .each = .{ .once = &.{
24168 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
24169 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
24170 .{ .@"0:", .v_ps, .cvtph2, .tmp2y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
24171 .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src1x, .tmp0, .add_size), ._, ._ },
24172 .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .tmp3y, .vp(switch (cc) {
24173 else => unreachable,
24174 .l => .lt,
24175 .le => .le,
24176 }) },
24177 .{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ },
24178 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
24179 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
24180 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
24181 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24182 } },
24183 }, .{
24184 .required_features = .{ .f16c, null, null, null },
24185 .src_constraints = .{
24186 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
24187 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
24188 .any,
24189 },
24190 .patterns = &.{
24191 .{ .src = .{ .to_mem, .to_mem, .none } },
24192 },
24193 .extra_temps = .{
24194 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24195 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
24196 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
24197 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
24198 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24199 .unused,
24200 .unused,
24201 .unused,
24202 .unused,
24203 },
24204 .dst_temps = .{.mem},
24205 .clobbers = .{ .eflags = true },
24206 .each = .{ .once = &.{
24207 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
24208 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
24209 .{ .@"0:", .v_ps, .cvtph2, .tmp2y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
24210 .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src1x, .tmp0, .add_size), ._, ._ },
24211 .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .tmp3y, .vp(switch (cc) {
24212 else => unreachable,
24213 .l => .lt,
24214 .le => .le,
24215 }) },
24216 .{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ },
24217 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
24218 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
24219 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
24220 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24221 } },
24222 }, .{
24223 .required_features = .{ .avx, .slow_incdec, null, null },
24224 .src_constraints = .{
24225 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
24226 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
24227 .any,
24228 },
24229 .dst_constraints = .{.{ .bool_vec = .dword }},
24230 .patterns = &.{
24231 .{ .src = .{ .to_mem, .to_mem, .none } },
24232 },
24233 .call_frame = .{ .alignment = .@"16" },
24234 .extra_temps = .{
24235 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24236 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
24237 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
24238 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
24239 .{ .type = .i32, .kind = .{ .reg = .eax } },
24240 .{ .type = .u8, .kind = .{ .reg = .cl } },
24241 .{ .type = .u32, .kind = .{ .reg = .edx } },
24242 .unused,
24243 .unused,
24244 },
24245 .dst_temps = .{.{ .rc = .general_purpose }},
24246 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24247 .each = .{ .once = &.{
24248 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
24249 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
24250 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
24251 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
24252 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0) },
24253 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
24254 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
24255 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
24256 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
24257 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
24258 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
24259 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
24260 .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ },
24261 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
24262 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
24263 } },
24264 }, .{
24265 .required_features = .{ .avx, null, null, null },
24266 .src_constraints = .{
24267 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
24268 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
24269 .any,
24270 },
24271 .dst_constraints = .{.{ .bool_vec = .dword }},
24272 .patterns = &.{
24273 .{ .src = .{ .to_mem, .to_mem, .none } },
24274 },
24275 .call_frame = .{ .alignment = .@"16" },
24276 .extra_temps = .{
24277 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24278 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
24279 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
24280 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
24281 .{ .type = .i32, .kind = .{ .reg = .eax } },
24282 .{ .type = .u8, .kind = .{ .reg = .cl } },
24283 .{ .type = .u32, .kind = .{ .reg = .edx } },
24284 .unused,
24285 .unused,
24286 },
24287 .dst_temps = .{.{ .rc = .general_purpose }},
24288 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24289 .each = .{ .once = &.{
24290 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
24291 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
24292 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
24293 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
24294 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0) },
24295 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
24296 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
24297 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
24298 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
24299 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
24300 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
24301 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
24302 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
24303 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
24304 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
24305 } },
24306 }, .{
24307 .required_features = .{ .sse2, .slow_incdec, null, null },
24308 .src_constraints = .{
24309 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
24310 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
24311 .any,
24312 },
24313 .dst_constraints = .{.{ .bool_vec = .dword }},
24314 .patterns = &.{
24315 .{ .src = .{ .to_mem, .to_mem, .none } },
24316 },
24317 .call_frame = .{ .alignment = .@"16" },
24318 .extra_temps = .{
24319 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24320 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
24321 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
24322 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
24323 .{ .type = .i32, .kind = .{ .reg = .eax } },
24324 .{ .type = .u8, .kind = .{ .reg = .cl } },
24325 .{ .type = .u32, .kind = .{ .reg = .edx } },
24326 .unused,
24327 .unused,
24328 },
24329 .dst_temps = .{.{ .rc = .general_purpose }},
24330 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24331 .each = .{ .once = &.{
24332 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
24333 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
24334 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
24335 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
24336 .{ ._, .p_w, .insr, .tmp1x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
24337 .{ ._, .p_w, .insr, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ },
24338 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
24339 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
24340 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
24341 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
24342 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
24343 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
24344 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
24345 .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ },
24346 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
24347 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
24348 } },
24349 }, .{
24350 .required_features = .{ .sse2, null, null, null },
24351 .src_constraints = .{
24352 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
24353 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
24354 .any,
24355 },
24356 .dst_constraints = .{.{ .bool_vec = .dword }},
24357 .patterns = &.{
24358 .{ .src = .{ .to_mem, .to_mem, .none } },
24359 },
24360 .call_frame = .{ .alignment = .@"16" },
24361 .extra_temps = .{
24362 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24363 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
24364 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
24365 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
24366 .{ .type = .i32, .kind = .{ .reg = .eax } },
24367 .{ .type = .u8, .kind = .{ .reg = .cl } },
24368 .{ .type = .u32, .kind = .{ .reg = .edx } },
24369 .unused,
24370 .unused,
24371 },
24372 .dst_temps = .{.{ .rc = .general_purpose }},
24373 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24374 .each = .{ .once = &.{
24375 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
24376 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
24377 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
24378 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
24379 .{ ._, .p_w, .insr, .tmp1x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
24380 .{ ._, .p_w, .insr, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ },
24381 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
24382 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
24383 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
24384 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
24385 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
24386 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
24387 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
24388 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
24389 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
24390 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
24391 } },
24392 }, .{
24393 .required_features = .{ .sse, .slow_incdec, null, null },
24394 .src_constraints = .{
24395 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
24396 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
24397 .any,
24398 },
24399 .dst_constraints = .{.{ .bool_vec = .dword }},
24400 .patterns = &.{
24401 .{ .src = .{ .to_mem, .to_mem, .none } },
24402 },
24403 .call_frame = .{ .alignment = .@"16" },
24404 .extra_temps = .{
24405 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24406 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
24407 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
24408 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
24409 .{ .type = .i32, .kind = .{ .reg = .eax } },
24410 .{ .type = .u8, .kind = .{ .reg = .cl } },
24411 .{ .type = .u32, .kind = .{ .reg = .edx } },
24412 .{ .type = .f32, .kind = .mem },
24413 .unused,
24414 },
24415 .dst_temps = .{.{ .rc = .general_purpose }},
24416 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24417 .each = .{ .once = &.{
24418 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
24419 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
24420 .{ .@"0:", ._, .movzx, .tmp4d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
24421 .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ },
24422 .{ ._, ._ss, .mov, .tmp1x, .mem(.tmp7d), ._, ._ },
24423 .{ ._, ._, .movzx, .tmp4d, .memsi(.src1w, .@"2", .tmp0), ._, ._ },
24424 .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ },
24425 .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp7d), ._, ._ },
24426 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
24427 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
24428 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
24429 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
24430 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
24431 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
24432 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
24433 .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ },
24434 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
24435 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
24436 } },
24437 }, .{
24438 .required_features = .{ .sse, null, null, null },
24439 .src_constraints = .{
24440 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
24441 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
24442 .any,
24443 },
24444 .dst_constraints = .{.{ .bool_vec = .dword }},
24445 .patterns = &.{
24446 .{ .src = .{ .to_mem, .to_mem, .none } },
24447 },
24448 .call_frame = .{ .alignment = .@"16" },
24449 .extra_temps = .{
24450 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24451 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
24452 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
24453 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
24454 .{ .type = .i32, .kind = .{ .reg = .eax } },
24455 .{ .type = .u8, .kind = .{ .reg = .cl } },
24456 .{ .type = .u32, .kind = .{ .reg = .edx } },
24457 .{ .type = .f32, .kind = .mem },
24458 .unused,
24459 },
24460 .dst_temps = .{.{ .rc = .general_purpose }},
24461 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24462 .each = .{ .once = &.{
24463 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
24464 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
24465 .{ .@"0:", ._, .movzx, .tmp4d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
24466 .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ },
24467 .{ ._, ._ss, .mov, .tmp1x, .mem(.tmp7d), ._, ._ },
24468 .{ ._, ._, .movzx, .tmp4d, .memsi(.src1w, .@"2", .tmp0), ._, ._ },
24469 .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ },
24470 .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp7d), ._, ._ },
24471 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
24472 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
24473 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
24474 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
24475 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
24476 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
24477 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
24478 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
24479 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
24480 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
24481 } },
24482 }, .{
24483 .required_features = .{ .@"64bit", .avx, .slow_incdec, null },
24484 .src_constraints = .{
24485 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
24486 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
24487 .any,
24488 },
24489 .patterns = &.{
24490 .{ .src = .{ .to_mem, .to_mem, .none } },
24491 },
24492 .call_frame = .{ .alignment = .@"16" },
24493 .extra_temps = .{
24494 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24495 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
24496 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
24497 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
24498 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
24499 .{ .type = .i32, .kind = .{ .reg = .eax } },
24500 .{ .type = .u8, .kind = .{ .reg = .cl } },
24501 .{ .type = .u64, .kind = .{ .reg = .rdx } },
24502 .unused,
24503 },
24504 .dst_temps = .{.mem},
24505 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24506 .each = .{ .once = &.{
24507 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
24508 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24509 .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ },
24510 .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
24511 .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0) },
24512 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
24513 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
24514 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
24515 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
24516 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
24517 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
24518 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
24519 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
24520 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
24521 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
24522 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
24523 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
24524 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
24525 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24526 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
24527 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
24528 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
24529 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
24530 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
24531 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
24532 } },
24533 }, .{
24534 .required_features = .{ .@"64bit", .avx, null, null },
24535 .src_constraints = .{
24536 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
24537 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
24538 .any,
24539 },
24540 .patterns = &.{
24541 .{ .src = .{ .to_mem, .to_mem, .none } },
24542 },
24543 .call_frame = .{ .alignment = .@"16" },
24544 .extra_temps = .{
24545 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24546 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
24547 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
24548 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
24549 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
24550 .{ .type = .i32, .kind = .{ .reg = .eax } },
24551 .{ .type = .u8, .kind = .{ .reg = .cl } },
24552 .{ .type = .u64, .kind = .{ .reg = .rdx } },
24553 .unused,
24554 },
24555 .dst_temps = .{.mem},
24556 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24557 .each = .{ .once = &.{
24558 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
24559 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24560 .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ },
24561 .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
24562 .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0) },
24563 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
24564 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
24565 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
24566 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
24567 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
24568 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
24569 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
24570 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
24571 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
24572 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
24573 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
24574 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
24575 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
24576 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24577 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
24578 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
24579 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
24580 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
24581 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
24582 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
24583 } },
24584 }, .{
24585 .required_features = .{ .@"64bit", .sse2, .slow_incdec, null },
24586 .src_constraints = .{
24587 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
24588 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
24589 .any,
24590 },
24591 .patterns = &.{
24592 .{ .src = .{ .to_mem, .to_mem, .none } },
24593 },
24594 .call_frame = .{ .alignment = .@"16" },
24595 .extra_temps = .{
24596 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24597 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
24598 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
24599 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
24600 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
24601 .{ .type = .i32, .kind = .{ .reg = .eax } },
24602 .{ .type = .u8, .kind = .{ .reg = .cl } },
24603 .{ .type = .u64, .kind = .{ .reg = .rdx } },
24604 .unused,
24605 },
24606 .dst_temps = .{.mem},
24607 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24608 .each = .{ .once = &.{
24609 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
24610 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24611 .{ .@"0:", .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
24612 .{ ._, .p_w, .insr, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
24613 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },
24614 .{ ._, .p_w, .insr, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ },
24615 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
24616 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
24617 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
24618 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
24619 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
24620 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
24621 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
24622 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
24623 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
24624 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
24625 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
24626 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
24627 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
24628 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24629 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
24630 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
24631 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
24632 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
24633 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
24634 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
24635 } },
24636 }, .{
24637 .required_features = .{ .@"64bit", .sse2, null, null },
24638 .src_constraints = .{
24639 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
24640 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
24641 .any,
24642 },
24643 .patterns = &.{
24644 .{ .src = .{ .to_mem, .to_mem, .none } },
24645 },
24646 .call_frame = .{ .alignment = .@"16" },
24647 .extra_temps = .{
24648 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24649 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
24650 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
24651 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
24652 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
24653 .{ .type = .i32, .kind = .{ .reg = .eax } },
24654 .{ .type = .u8, .kind = .{ .reg = .cl } },
24655 .{ .type = .u64, .kind = .{ .reg = .rdx } },
24656 .unused,
24657 },
24658 .dst_temps = .{.mem},
24659 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24660 .each = .{ .once = &.{
24661 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
24662 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24663 .{ .@"0:", .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
24664 .{ ._, .p_w, .insr, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
24665 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },
24666 .{ ._, .p_w, .insr, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ },
24667 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
24668 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
24669 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
24670 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
24671 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
24672 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
24673 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
24674 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
24675 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
24676 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
24677 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
24678 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
24679 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
24680 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24681 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
24682 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
24683 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
24684 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
24685 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
24686 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
24687 } },
24688 }, .{
24689 .required_features = .{ .@"64bit", .sse, .slow_incdec, null },
24690 .src_constraints = .{
24691 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
24692 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
24693 .any,
24694 },
24695 .patterns = &.{
24696 .{ .src = .{ .to_mem, .to_mem, .none } },
24697 },
24698 .call_frame = .{ .alignment = .@"16" },
24699 .extra_temps = .{
24700 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24701 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
24702 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
24703 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
24704 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
24705 .{ .type = .i32, .kind = .{ .reg = .eax } },
24706 .{ .type = .u8, .kind = .{ .reg = .cl } },
24707 .{ .type = .u64, .kind = .{ .reg = .rdx } },
24708 .{ .type = .f32, .kind = .mem },
24709 },
24710 .dst_temps = .{.mem},
24711 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24712 .each = .{ .once = &.{
24713 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
24714 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24715 .{ .@"0:", ._, .movzx, .tmp5d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
24716 .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ },
24717 .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp8d), ._, ._ },
24718 .{ ._, ._, .movzx, .tmp5d, .memsi(.src1w, .@"2", .tmp0), ._, ._ },
24719 .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ },
24720 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp8d), ._, ._ },
24721 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
24722 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
24723 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
24724 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
24725 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
24726 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
24727 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
24728 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
24729 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
24730 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
24731 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
24732 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
24733 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
24734 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24735 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
24736 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
24737 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
24738 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
24739 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
24740 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
24741 } },
24742 }, .{
24743 .required_features = .{ .@"64bit", .sse, null, null },
24744 .src_constraints = .{
24745 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
24746 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
24747 .any,
24748 },
24749 .patterns = &.{
24750 .{ .src = .{ .to_mem, .to_mem, .none } },
24751 },
24752 .call_frame = .{ .alignment = .@"16" },
24753 .extra_temps = .{
24754 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24755 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
24756 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
24757 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
24758 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
24759 .{ .type = .i32, .kind = .{ .reg = .eax } },
24760 .{ .type = .u8, .kind = .{ .reg = .cl } },
24761 .{ .type = .u64, .kind = .{ .reg = .rdx } },
24762 .{ .type = .f32, .kind = .mem },
24763 },
24764 .dst_temps = .{.mem},
24765 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24766 .each = .{ .once = &.{
24767 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
24768 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24769 .{ .@"0:", ._, .movzx, .tmp5d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
24770 .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ },
24771 .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp8d), ._, ._ },
24772 .{ ._, ._, .movzx, .tmp5d, .memsi(.src1w, .@"2", .tmp0), ._, ._ },
24773 .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ },
24774 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp8d), ._, ._ },
24775 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
24776 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
24777 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
24778 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
24779 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
24780 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
24781 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
24782 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
24783 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
24784 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
24785 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
24786 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
24787 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
24788 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24789 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
24790 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
24791 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
24792 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
24793 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
24794 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
24795 } },
24796 }, .{
24797 .required_features = .{ .avx, .slow_incdec, null, null },
24798 .src_constraints = .{
24799 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
24800 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
24801 .any,
24802 },
24803 .patterns = &.{
24804 .{ .src = .{ .to_mem, .to_mem, .none } },
24805 },
24806 .extra_temps = .{
24807 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24808 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
24809 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
24810 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24811 .unused,
24812 .unused,
24813 .unused,
24814 .unused,
24815 .unused,
24816 },
24817 .dst_temps = .{.mem},
24818 .clobbers = .{ .eflags = true },
24819 .each = .{ .once = &.{
24820 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
24821 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
24822 .{ .@"0:", .v_ps, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
24823 .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
24824 else => unreachable,
24825 .l => .lt,
24826 .le => .le,
24827 }) },
24828 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ },
24829 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
24830 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
24831 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
24832 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24833 } },
24834 }, .{
24835 .required_features = .{ .avx, null, null, null },
24836 .src_constraints = .{
24837 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
24838 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
24839 .any,
24840 },
24841 .patterns = &.{
24842 .{ .src = .{ .to_mem, .to_mem, .none } },
24843 },
24844 .extra_temps = .{
24845 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24846 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
24847 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
24848 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24849 .unused,
24850 .unused,
24851 .unused,
24852 .unused,
24853 .unused,
24854 },
24855 .dst_temps = .{.mem},
24856 .clobbers = .{ .eflags = true },
24857 .each = .{ .once = &.{
24858 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
24859 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
24860 .{ .@"0:", .v_ps, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
24861 .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
24862 else => unreachable,
24863 .l => .lt,
24864 .le => .le,
24865 }) },
24866 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ },
24867 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
24868 .{ ._, ._c, .in, .tmp1q, ._, ._, ._ },
24869 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
24870 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24871 } },
24872 }, .{
24873 .required_features = .{ .sse2, null, null, null },
24874 .src_constraints = .{
24875 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
24876 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
24877 .any,
24878 },
24879 .patterns = &.{
24880 .{ .src = .{ .to_mem, .to_mem, .none } },
24881 },
24882 .extra_temps = .{
24883 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24884 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
24885 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
24886 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
24887 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24888 .unused,
24889 .unused,
24890 .unused,
24891 .unused,
24892 },
24893 .dst_temps = .{.mem},
24894 .clobbers = .{ .eflags = true },
24895 .each = .{ .once = &.{
24896 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
24897 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
24898 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
24899 .{ ._, ._ps, .mova, .tmp3x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ },
24900 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
24901 else => unreachable,
24902 .l => .lt,
24903 .le => .le,
24904 }), ._ },
24905 .{ ._, ._ps, .cmp, .tmp3x, .memiad(.src1x, .tmp0, .add_size, 16), .sp(switch (cc) {
24906 else => unreachable,
24907 .l => .lt,
24908 .le => .le,
24909 }), ._ },
24910 .{ ._, .p_w, .ackssd, .tmp2x, .tmp3x, ._, ._ },
24911 .{ ._, .p_b, .ackssw, .tmp2x, .tmp2x, ._, ._ },
24912 .{ ._, .p_b, .movmsk, .tmp4d, .tmp2x, ._, ._ },
24913 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
24914 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
24915 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
24916 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24917 } },
24918 }, .{
24919 .required_features = .{ .sse, null, null, null },
24920 .src_constraints = .{
24921 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
24922 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
24923 .any,
24924 },
24925 .patterns = &.{
24926 .{ .src = .{ .to_mem, .to_mem, .none } },
24927 },
24928 .extra_temps = .{
24929 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24930 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
24931 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
24932 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24933 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24934 .unused,
24935 .unused,
24936 .unused,
24937 .unused,
24938 },
24939 .dst_temps = .{.mem},
24940 .clobbers = .{ .eflags = true },
24941 .each = .{ .once = &.{
24942 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
24943 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
24944 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
24945 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
24946 else => unreachable,
24947 .l => .lt,
24948 .le => .le,
24949 }), ._ },
24950 .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ },
24951 .{ ._, ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ },
24952 .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, 16), .sp(switch (cc) {
24953 else => unreachable,
24954 .l => .lt,
24955 .le => .le,
24956 }), ._ },
24957 .{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ },
24958 .{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ },
24959 .{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ },
24960 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
24961 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
24962 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
24963 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24964 } },
24965 }, .{
24966 .required_features = .{ .sse, null, null, null },
24967 .src_constraints = .{
24968 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
24969 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
24970 .any,
24971 },
24972 .patterns = &.{
24973 .{ .src = .{ .to_mem, .to_mem, .none } },
24974 },
24975 .extra_temps = .{
24976 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24977 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
24978 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
24979 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24980 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24981 .unused,
24982 .unused,
24983 .unused,
24984 .unused,
24985 },
24986 .dst_temps = .{.mem},
24987 .clobbers = .{ .eflags = true },
24988 .each = .{ .once = &.{
24989 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
24990 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
24991 .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
24992 .{ .@"0:", ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, -16), ._, ._ },
24993 .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, -16), .sp(switch (cc) {
24994 else => unreachable,
24995 .l => .lt,
24996 .le => .le,
24997 }), ._ },
24998 .{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ },
24999 .{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ },
25000 .{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ },
25001 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
25002 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
25003 .{ .@"1:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
25004 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
25005 else => unreachable,
25006 .l => .lt,
25007 .le => .le,
25008 }), ._ },
25009 .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ },
25010 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
25011 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25012 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
25013 } },
25014 }, .{
25015 .required_features = .{ .avx, .slow_incdec, null, null },
25016 .src_constraints = .{
25017 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
25018 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
25019 .any,
25020 },
25021 .patterns = &.{
25022 .{ .src = .{ .to_mem, .to_mem, .none } },
25023 },
25024 .extra_temps = .{
25025 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25026 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
25027 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
25028 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
25029 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
25030 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
25031 .unused,
25032 .unused,
25033 .unused,
25034 },
25035 .dst_temps = .{.mem},
25036 .clobbers = .{ .eflags = true },
25037 .each = .{ .once = &.{
25038 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
25039 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25040 .{ .@"0:", .v_pd, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
25041 .{ ._, .v_pd, .mova, .tmp3y, .memiad(.src0y, .tmp0, .add_size, 32), ._, ._ },
25042 .{ ._, .v_pd, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
25043 else => unreachable,
25044 .l => .lt,
25045 .le => .le,
25046 }) },
25047 .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memiad(.src1y, .tmp0, .add_size, 32), .vp(switch (cc) {
25048 else => unreachable,
25049 .l => .lt,
25050 .le => .le,
25051 }) },
25052 .{ ._, .v_pd, .movmsk, .tmp4d, .tmp2y, ._, ._ },
25053 .{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ },
25054 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
25055 .{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ },
25056 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
25057 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
25058 .{ ._, ._, .add, .tmp0p, .si(64), ._, ._ },
25059 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25060 } },
25061 }, .{
25062 .required_features = .{ .avx, null, null, null },
25063 .src_constraints = .{
25064 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
25065 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
25066 .any,
25067 },
25068 .patterns = &.{
25069 .{ .src = .{ .to_mem, .to_mem, .none } },
25070 },
25071 .extra_temps = .{
25072 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25073 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
25074 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
25075 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
25076 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
25077 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
25078 .unused,
25079 .unused,
25080 .unused,
25081 },
25082 .dst_temps = .{.mem},
25083 .clobbers = .{ .eflags = true },
25084 .each = .{ .once = &.{
25085 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
25086 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25087 .{ .@"0:", .v_pd, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
25088 .{ ._, .v_pd, .mova, .tmp3y, .memiad(.src0y, .tmp0, .add_size, 32), ._, ._ },
25089 .{ ._, .v_pd, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
25090 else => unreachable,
25091 .l => .lt,
25092 .le => .le,
25093 }) },
25094 .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memiad(.src1y, .tmp0, .add_size, 32), .vp(switch (cc) {
25095 else => unreachable,
25096 .l => .lt,
25097 .le => .le,
25098 }) },
25099 .{ ._, .v_pd, .movmsk, .tmp4d, .tmp2y, ._, ._ },
25100 .{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ },
25101 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
25102 .{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ },
25103 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
25104 .{ ._, ._c, .in, .tmp1q, ._, ._, ._ },
25105 .{ ._, ._, .add, .tmp0p, .si(64), ._, ._ },
25106 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25107 } },
25108 }, .{
25109 .required_features = .{ .avx, null, null, null },
25110 .src_constraints = .{
25111 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
25112 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
25113 .any,
25114 },
25115 .patterns = &.{
25116 .{ .src = .{ .to_mem, .to_mem, .none } },
25117 },
25118 .extra_temps = .{
25119 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25120 .{ .type = .u32, .kind = .{ .reg = .rcx } },
25121 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25122 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
25123 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
25124 .unused,
25125 .unused,
25126 .unused,
25127 .unused,
25128 },
25129 .dst_temps = .{.mem},
25130 .clobbers = .{ .eflags = true },
25131 .each = .{ .once = &.{
25132 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
25133 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25134 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
25135 .{ .@"0:", .v_pd, .mova, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
25136 .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
25137 else => unreachable,
25138 .l => .lt,
25139 .le => .le,
25140 }) },
25141 .{ ._, .v_pd, .movmsk, .tmp4d, .tmp3y, ._, ._ },
25142 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
25143 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
25144 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
25145 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
25146 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
25147 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
25148 .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ },
25149 .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ },
25150 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
25151 .{ .@"1:", ._, .add, .tmp0p, .si(32), ._, ._ },
25152 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25153 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
25154 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
25155 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
25156 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
25157 } },
25158 }, .{
25159 .required_features = .{ .sse2, null, null, null },
25160 .src_constraints = .{
25161 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
25162 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
25163 .any,
25164 },
25165 .patterns = &.{
25166 .{ .src = .{ .to_mem, .to_mem, .none } },
25167 },
25168 .extra_temps = .{
25169 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25170 .{ .type = .u32, .kind = .{ .reg = .rcx } },
25171 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25172 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
25173 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
25174 .unused,
25175 .unused,
25176 .unused,
25177 .unused,
25178 },
25179 .dst_temps = .{.mem},
25180 .clobbers = .{ .eflags = true },
25181 .each = .{ .once = &.{
25182 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
25183 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25184 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
25185 .{ .@"0:", ._pd, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
25186 .{ ._, ._pd, .cmp, .tmp3x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
25187 else => unreachable,
25188 .l => .lt,
25189 .le => .le,
25190 }), ._ },
25191 .{ ._, ._pd, .movmsk, .tmp4d, .tmp3x, ._, ._ },
25192 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
25193 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
25194 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
25195 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
25196 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
25197 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
25198 .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ },
25199 .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ },
25200 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
25201 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
25202 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25203 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
25204 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
25205 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
25206 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
25207 } },
25208 }, .{
25209 .required_features = .{ .x87, .cmov, .slow_incdec, null },
25210 .src_constraints = .{
25211 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
25212 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
25213 .any,
25214 },
25215 .patterns = &.{
25216 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
25217 },
25218 .extra_temps = .{
25219 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25220 .{ .type = .u32, .kind = .{ .reg = .rcx } },
25221 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25222 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
25223 .{ .type = .f64, .kind = .{ .reg = .st6 } },
25224 .{ .type = .f64, .kind = .{ .reg = .st7 } },
25225 .unused,
25226 .unused,
25227 .unused,
25228 },
25229 .dst_temps = .{.mem},
25230 .clobbers = .{ .eflags = true },
25231 .each = .{ .once = &.{
25232 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
25233 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25234 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
25235 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
25236 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ },
25237 .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ },
25238 .{ ._, .f_p, .ucomi, .tmp4t, .tmp5t, ._, ._ },
25239 .{ ._, .f_p, .st, .tmp5t, ._, ._, ._ },
25240 .{ ._, .fromCond(switch (cc) {
25241 else => unreachable,
25242 .l => .a,
25243 .le => .ae,
25244 }), .set, .tmp3b, ._, ._, ._ },
25245 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
25246 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
25247 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
25248 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
25249 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
25250 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
25251 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
25252 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
25253 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
25254 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
25255 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25256 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
25257 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
25258 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
25259 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
25260 } },
25261 }, .{
25262 .required_features = .{ .x87, .cmov, null, null },
25263 .src_constraints = .{
25264 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
25265 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
25266 .any,
25267 },
25268 .patterns = &.{
25269 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
25270 },
25271 .extra_temps = .{
25272 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25273 .{ .type = .u32, .kind = .{ .reg = .rcx } },
25274 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25275 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
25276 .{ .type = .f64, .kind = .{ .reg = .st6 } },
25277 .{ .type = .f64, .kind = .{ .reg = .st7 } },
25278 .unused,
25279 .unused,
25280 .unused,
25281 },
25282 .dst_temps = .{.mem},
25283 .clobbers = .{ .eflags = true },
25284 .each = .{ .once = &.{
25285 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
25286 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25287 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
25288 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
25289 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ },
25290 .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ },
25291 .{ ._, .f_p, .ucomi, .tmp4t, .tmp5t, ._, ._ },
25292 .{ ._, .f_p, .st, .tmp5t, ._, ._, ._ },
25293 .{ ._, .fromCond(switch (cc) {
25294 else => unreachable,
25295 .l => .a,
25296 .le => .ae,
25297 }), .set, .tmp3b, ._, ._, ._ },
25298 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
25299 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
25300 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
25301 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
25302 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
25303 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
25304 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
25305 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
25306 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
25307 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
25308 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25309 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
25310 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
25311 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
25312 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
25313 } },
25314 }, .{
25315 .required_features = .{ .x87, null, null, null },
25316 .src_constraints = .{
25317 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
25318 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
25319 .any,
25320 },
25321 .patterns = &.{
25322 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
25323 },
25324 .extra_temps = .{
25325 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25326 .{ .type = .u32, .kind = .{ .reg = .rcx } },
25327 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25328 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
25329 .{ .type = .f64, .kind = .{ .reg = .st6 } },
25330 .{ .type = .f64, .kind = .{ .reg = .st7 } },
25331 .{ .type = .u8, .kind = .{ .reg = .ah } },
25332 .unused,
25333 .unused,
25334 },
25335 .dst_temps = .{.mem},
25336 .clobbers = .{ .eflags = true },
25337 .each = .{ .once = &.{
25338 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
25339 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25340 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
25341 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
25342 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ },
25343 .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ },
25344 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
25345 .{ ._, .fn_sw, .st, .tmp6w, ._, ._, ._ },
25346 switch (cc) {
25347 else => unreachable,
25348 .l => .{ ._, ._, .@"test", .tmp6b, .si(0b1_000_001), ._, ._ },
25349 .le => .{ ._, ._r, .sh, .tmp6b, .ui(1), ._, ._ },
25350 },
25351 .{ ._, .fromCond(switch (cc) {
25352 else => unreachable,
25353 .l => .z,
25354 .le => .nc,
25355 }), .set, .tmp3b, ._, ._, ._ },
25356 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
25357 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
25358 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
25359 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
25360 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
25361 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
25362 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
25363 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
25364 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
25365 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
25366 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25367 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
25368 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
25369 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
25370 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
25371 } },
25372 }, .{
25373 .required_features = .{ .x87, .cmov, .slow_incdec, null },
25374 .src_constraints = .{
25375 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
25376 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
25377 .any,
25378 },
25379 .patterns = &.{
25380 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
25381 },
25382 .extra_temps = .{
25383 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25384 .{ .type = .u32, .kind = .{ .reg = .rcx } },
25385 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25386 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
25387 .{ .type = .f80, .kind = .{ .reg = .st6 } },
25388 .{ .type = .f80, .kind = .{ .reg = .st7 } },
25389 .unused,
25390 .unused,
25391 .unused,
25392 },
25393 .dst_temps = .{.mem},
25394 .clobbers = .{ .eflags = true },
25395 .each = .{ .once = &.{
25396 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
25397 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25398 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
25399 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
25400 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
25401 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
25402 .{ ._, .f_p, .ucomi, .tmp4t, .tmp5t, ._, ._ },
25403 .{ ._, .f_p, .st, .tmp5t, ._, ._, ._ },
25404 .{ ._, .fromCond(switch (cc) {
25405 else => unreachable,
25406 .l => .a,
25407 .le => .ae,
25408 }), .set, .tmp3b, ._, ._, ._ },
25409 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
25410 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
25411 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
25412 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
25413 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
25414 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
25415 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
25416 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
25417 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
25418 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
25419 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25420 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
25421 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
25422 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
25423 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
25424 } },
25425 }, .{
25426 .required_features = .{ .x87, .cmov, null, null },
25427 .src_constraints = .{
25428 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
25429 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
25430 .any,
25431 },
25432 .patterns = &.{
25433 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
25434 },
25435 .extra_temps = .{
25436 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25437 .{ .type = .u32, .kind = .{ .reg = .rcx } },
25438 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25439 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
25440 .{ .type = .f80, .kind = .{ .reg = .st6 } },
25441 .{ .type = .f80, .kind = .{ .reg = .st7 } },
25442 .unused,
25443 .unused,
25444 .unused,
25445 },
25446 .dst_temps = .{.mem},
25447 .clobbers = .{ .eflags = true },
25448 .each = .{ .once = &.{
25449 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
25450 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25451 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
25452 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
25453 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
25454 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
25455 .{ ._, .f_p, .ucomi, .tmp4t, .tmp5t, ._, ._ },
25456 .{ ._, .f_p, .st, .tmp5t, ._, ._, ._ },
25457 .{ ._, .fromCond(switch (cc) {
25458 else => unreachable,
25459 .l => .a,
25460 .le => .ae,
25461 }), .set, .tmp3b, ._, ._, ._ },
25462 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
25463 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
25464 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
25465 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
25466 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
25467 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
25468 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
25469 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
25470 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
25471 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
25472 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25473 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
25474 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
25475 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
25476 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
25477 } },
25478 }, .{
25479 .required_features = .{ .x87, null, null, null },
25480 .src_constraints = .{
25481 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
25482 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
25483 .any,
25484 },
25485 .patterns = &.{
25486 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
25487 },
25488 .extra_temps = .{
25489 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25490 .{ .type = .u32, .kind = .{ .reg = .rcx } },
25491 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25492 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
25493 .{ .type = .f80, .kind = .{ .reg = .st6 } },
25494 .{ .type = .f80, .kind = .{ .reg = .st7 } },
25495 .{ .type = .u8, .kind = .{ .reg = .ah } },
25496 .unused,
25497 .unused,
25498 },
25499 .dst_temps = .{.mem},
25500 .clobbers = .{ .eflags = true },
25501 .each = .{ .once = &.{
25502 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
25503 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25504 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
25505 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
25506 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
25507 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
25508 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
25509 .{ ._, .fn_sw, .st, .tmp6w, ._, ._, ._ },
25510 switch (cc) {
25511 else => unreachable,
25512 .l => .{ ._, ._, .@"test", .tmp6b, .si(0b1_000_001), ._, ._ },
25513 .le => .{ ._, ._r, .sh, .tmp6b, .ui(1), ._, ._ },
25514 },
25515 .{ ._, .fromCond(switch (cc) {
25516 else => unreachable,
25517 .l => .z,
25518 .le => .nc,
25519 }), .set, .tmp3b, ._, ._, ._ },
25520 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
25521 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
25522 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
25523 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
25524 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
25525 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
25526 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
25527 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
25528 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
25529 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
25530 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25531 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
25532 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
25533 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
25534 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
25535 } },
25536 }, .{
25537 .required_features = .{ .avx, .slow_incdec, null, null },
25538 .src_constraints = .{
25539 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
25540 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
25541 .any,
25542 },
25543 .dst_constraints = .{.{ .bool_vec = .dword }},
25544 .patterns = &.{
25545 .{ .src = .{ .to_mem, .to_mem, .none } },
25546 },
25547 .call_frame = .{ .alignment = .@"16" },
25548 .extra_temps = .{
25549 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25550 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25551 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
25552 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
25553 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
25554 .{ .type = .i32, .kind = .{ .reg = .eax } },
25555 .{ .type = .u8, .kind = .{ .reg = .cl } },
25556 .{ .type = .u32, .kind = .{ .reg = .edx } },
25557 .unused,
25558 },
25559 .dst_temps = .{.{ .rc = .general_purpose }},
25560 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
25561 .each = .{ .once = &.{
25562 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
25563 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
25564 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25565 .{ .@"0:", .v_dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
25566 .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
25567 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
25568 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
25569 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
25570 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
25571 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
25572 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
25573 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
25574 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
25575 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
25576 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25577 } },
25578 }, .{
25579 .required_features = .{ .avx, .slow_incdec, null, null },
25580 .src_constraints = .{
25581 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
25582 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
25583 .any,
25584 },
25585 .dst_constraints = .{.{ .bool_vec = .dword }},
25586 .patterns = &.{
25587 .{ .src = .{ .to_mem, .to_mem, .none } },
25588 },
25589 .call_frame = .{ .alignment = .@"16" },
25590 .extra_temps = .{
25591 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25592 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25593 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
25594 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
25595 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
25596 .{ .type = .i32, .kind = .{ .reg = .eax } },
25597 .{ .type = .u8, .kind = .{ .reg = .cl } },
25598 .{ .type = .u32, .kind = .{ .reg = .edx } },
25599 .unused,
25600 },
25601 .dst_temps = .{.{ .rc = .general_purpose }},
25602 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
25603 .each = .{ .once = &.{
25604 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
25605 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
25606 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25607 .{ .@"0:", .v_dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
25608 .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
25609 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
25610 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
25611 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
25612 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
25613 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
25614 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
25615 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
25616 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
25617 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
25618 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25619 } },
25620 }, .{
25621 .required_features = .{ .sse2, .slow_incdec, null, null },
25622 .src_constraints = .{
25623 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
25624 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
25625 .any,
25626 },
25627 .dst_constraints = .{.{ .bool_vec = .dword }},
25628 .patterns = &.{
25629 .{ .src = .{ .to_mem, .to_mem, .none } },
25630 },
25631 .call_frame = .{ .alignment = .@"16" },
25632 .extra_temps = .{
25633 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25634 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25635 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
25636 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
25637 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
25638 .{ .type = .i32, .kind = .{ .reg = .eax } },
25639 .{ .type = .u8, .kind = .{ .reg = .cl } },
25640 .{ .type = .u32, .kind = .{ .reg = .edx } },
25641 .unused,
25642 },
25643 .dst_temps = .{.{ .rc = .general_purpose }},
25644 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
25645 .each = .{ .once = &.{
25646 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
25647 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
25648 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25649 .{ .@"0:", ._dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
25650 .{ ._, ._dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
25651 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
25652 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
25653 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
25654 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
25655 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
25656 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
25657 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
25658 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
25659 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
25660 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25661 } },
25662 }, .{
25663 .required_features = .{ .sse2, .slow_incdec, null, null },
25664 .src_constraints = .{
25665 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
25666 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
25667 .any,
25668 },
25669 .dst_constraints = .{.{ .bool_vec = .dword }},
25670 .patterns = &.{
25671 .{ .src = .{ .to_mem, .to_mem, .none } },
25672 },
25673 .call_frame = .{ .alignment = .@"16" },
25674 .extra_temps = .{
25675 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25676 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25677 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
25678 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
25679 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
25680 .{ .type = .i32, .kind = .{ .reg = .eax } },
25681 .{ .type = .u8, .kind = .{ .reg = .cl } },
25682 .{ .type = .u32, .kind = .{ .reg = .edx } },
25683 .unused,
25684 },
25685 .dst_temps = .{.{ .rc = .general_purpose }},
25686 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
25687 .each = .{ .once = &.{
25688 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
25689 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
25690 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25691 .{ .@"0:", ._dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
25692 .{ ._, ._dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
25693 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
25694 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
25695 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
25696 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
25697 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
25698 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
25699 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
25700 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
25701 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
25702 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25703 } },
25704 }, .{
25705 .required_features = .{ .sse, .slow_incdec, null, null },
25706 .src_constraints = .{
25707 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
25708 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
25709 .any,
25710 },
25711 .dst_constraints = .{.{ .bool_vec = .dword }},
25712 .patterns = &.{
25713 .{ .src = .{ .to_mem, .to_mem, .none } },
25714 },
25715 .call_frame = .{ .alignment = .@"16" },
25716 .extra_temps = .{
25717 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25718 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25719 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
25720 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
25721 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
25722 .{ .type = .i32, .kind = .{ .reg = .eax } },
25723 .{ .type = .u8, .kind = .{ .reg = .cl } },
25724 .{ .type = .u32, .kind = .{ .reg = .edx } },
25725 .unused,
25726 },
25727 .dst_temps = .{.{ .rc = .general_purpose }},
25728 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
25729 .each = .{ .once = &.{
25730 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
25731 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
25732 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25733 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
25734 .{ ._, ._ps, .mova, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
25735 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
25736 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
25737 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
25738 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
25739 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
25740 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
25741 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
25742 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
25743 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
25744 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25745 } },
25746 }, .{
25747 .required_features = .{ .sse2, .slow_incdec, null, null },
25748 .src_constraints = .{
25749 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
25750 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
25751 .any,
25752 },
25753 .dst_constraints = .{.{ .bool_vec = .dword }},
25754 .patterns = &.{
25755 .{ .src = .{ .to_mem, .to_mem, .none } },
25756 },
25757 .call_frame = .{ .alignment = .@"16" },
25758 .extra_temps = .{
25759 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25760 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25761 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
25762 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
25763 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
25764 .{ .type = .i32, .kind = .{ .reg = .eax } },
25765 .{ .type = .u8, .kind = .{ .reg = .cl } },
25766 .{ .type = .u32, .kind = .{ .reg = .edx } },
25767 .unused,
25768 },
25769 .dst_temps = .{.{ .rc = .general_purpose }},
25770 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
25771 .each = .{ .once = &.{
25772 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
25773 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
25774 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25775 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
25776 .{ ._, ._ps, .mova, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
25777 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
25778 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
25779 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
25780 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
25781 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
25782 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
25783 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
25784 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
25785 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
25786 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25787 } },
25788 }, .{
25789 .required_features = .{ .@"64bit", .avx, .slow_incdec, null },
25790 .src_constraints = .{
25791 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
25792 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
25793 .any,
25794 },
25795 .patterns = &.{
25796 .{ .src = .{ .to_mem, .to_mem, .none } },
25797 },
25798 .call_frame = .{ .alignment = .@"16" },
25799 .extra_temps = .{
25800 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25801 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25802 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
25803 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
25804 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
25805 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
25806 .{ .type = .i32, .kind = .{ .reg = .eax } },
25807 .{ .type = .u8, .kind = .{ .reg = .cl } },
25808 .{ .type = .u64, .kind = .{ .reg = .rdx } },
25809 },
25810 .dst_temps = .{.mem},
25811 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
25812 .each = .{ .once = &.{
25813 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
25814 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25815 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
25816 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
25817 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
25818 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
25819 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
25820 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
25821 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
25822 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
25823 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
25824 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
25825 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
25826 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
25827 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
25828 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
25829 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
25830 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
25831 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
25832 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
25833 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25834 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
25835 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
25836 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
25837 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
25838 } },
25839 }, .{
25840 .required_features = .{ .@"64bit", .avx, null, null },
25841 .src_constraints = .{
25842 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
25843 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
25844 .any,
25845 },
25846 .patterns = &.{
25847 .{ .src = .{ .to_mem, .to_mem, .none } },
25848 },
25849 .call_frame = .{ .alignment = .@"16" },
25850 .extra_temps = .{
25851 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25852 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25853 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
25854 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
25855 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
25856 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
25857 .{ .type = .i32, .kind = .{ .reg = .eax } },
25858 .{ .type = .u8, .kind = .{ .reg = .cl } },
25859 .{ .type = .u64, .kind = .{ .reg = .rdx } },
25860 },
25861 .dst_temps = .{.mem},
25862 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
25863 .each = .{ .once = &.{
25864 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
25865 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25866 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
25867 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
25868 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
25869 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
25870 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
25871 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
25872 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
25873 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
25874 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
25875 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
25876 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
25877 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
25878 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
25879 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
25880 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
25881 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
25882 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
25883 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
25884 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25885 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
25886 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
25887 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
25888 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
25889 } },
25890 }, .{
25891 .required_features = .{ .@"64bit", .sse2, .slow_incdec, null },
25892 .src_constraints = .{
25893 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
25894 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
25895 .any,
25896 },
25897 .patterns = &.{
25898 .{ .src = .{ .to_mem, .to_mem, .none } },
25899 },
25900 .call_frame = .{ .alignment = .@"16" },
25901 .extra_temps = .{
25902 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25903 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25904 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
25905 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
25906 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
25907 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
25908 .{ .type = .i32, .kind = .{ .reg = .eax } },
25909 .{ .type = .u8, .kind = .{ .reg = .cl } },
25910 .{ .type = .u64, .kind = .{ .reg = .rdx } },
25911 },
25912 .dst_temps = .{.mem},
25913 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
25914 .each = .{ .once = &.{
25915 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
25916 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25917 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
25918 .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
25919 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
25920 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
25921 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
25922 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
25923 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
25924 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
25925 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
25926 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
25927 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
25928 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
25929 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
25930 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
25931 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
25932 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
25933 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
25934 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
25935 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25936 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
25937 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
25938 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
25939 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
25940 } },
25941 }, .{
25942 .required_features = .{ .@"64bit", .sse2, null, null },
25943 .src_constraints = .{
25944 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
25945 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
25946 .any,
25947 },
25948 .patterns = &.{
25949 .{ .src = .{ .to_mem, .to_mem, .none } },
25950 },
25951 .call_frame = .{ .alignment = .@"16" },
25952 .extra_temps = .{
25953 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25954 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25955 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
25956 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
25957 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
25958 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
25959 .{ .type = .i32, .kind = .{ .reg = .eax } },
25960 .{ .type = .u8, .kind = .{ .reg = .cl } },
25961 .{ .type = .u64, .kind = .{ .reg = .rdx } },
25962 },
25963 .dst_temps = .{.mem},
25964 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
25965 .each = .{ .once = &.{
25966 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
25967 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25968 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
25969 .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
25970 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
25971 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
25972 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
25973 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
25974 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
25975 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
25976 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
25977 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
25978 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
25979 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
25980 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
25981 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
25982 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
25983 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
25984 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
25985 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
25986 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25987 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
25988 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
25989 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
25990 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
25991 } },
25992 }, .{
25993 .required_features = .{ .@"64bit", .sse, .slow_incdec, null },
25994 .src_constraints = .{
25995 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
25996 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
25997 .any,
25998 },
25999 .patterns = &.{
26000 .{ .src = .{ .to_mem, .to_mem, .none } },
26001 },
26002 .call_frame = .{ .alignment = .@"16" },
26003 .extra_temps = .{
26004 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26005 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
26006 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
26007 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
26008 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
26009 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
26010 .{ .type = .i32, .kind = .{ .reg = .eax } },
26011 .{ .type = .u8, .kind = .{ .reg = .cl } },
26012 .{ .type = .u64, .kind = .{ .reg = .rdx } },
26013 },
26014 .dst_temps = .{.mem},
26015 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
26016 .each = .{ .once = &.{
26017 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26018 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
26019 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
26020 .{ .@"0:", ._ps, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
26021 .{ ._, ._ps, .mova, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
26022 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
26023 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
26024 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
26025 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
26026 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
26027 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
26028 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
26029 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
26030 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
26031 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
26032 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
26033 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
26034 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
26035 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
26036 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
26037 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26038 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
26039 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
26040 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
26041 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
26042 } },
26043 }, .{
26044 .required_features = .{ .@"64bit", .sse, null, null },
26045 .src_constraints = .{
26046 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
26047 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
26048 .any,
26049 },
26050 .patterns = &.{
26051 .{ .src = .{ .to_mem, .to_mem, .none } },
26052 },
26053 .call_frame = .{ .alignment = .@"16" },
26054 .extra_temps = .{
26055 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26056 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
26057 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
26058 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
26059 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
26060 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
26061 .{ .type = .i32, .kind = .{ .reg = .eax } },
26062 .{ .type = .u8, .kind = .{ .reg = .cl } },
26063 .{ .type = .u64, .kind = .{ .reg = .rdx } },
26064 },
26065 .dst_temps = .{.mem},
26066 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
26067 .each = .{ .once = &.{
26068 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26069 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
26070 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
26071 .{ .@"0:", ._ps, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
26072 .{ ._, ._ps, .mova, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
26073 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
26074 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
26075 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
26076 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
26077 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
26078 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
26079 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
26080 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
26081 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
26082 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
26083 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
26084 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
26085 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
26086 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
26087 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
26088 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26089 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
26090 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
26091 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
26092 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
26093 } },
26094 } },
26095 });
26096 },
15053 .eq, .neq => |cmp_op| cg.select(&res, &.{ty_pl.ty.toType()}, &ops, switch (@as(Condition, switch (cmp_op) {26097 .eq, .neq => |cmp_op| cg.select(&res, &.{ty_pl.ty.toType()}, &ops, switch (@as(Condition, switch (cmp_op) {
15054 else => unreachable,26098 else => unreachable,
15055 .eq => .e,26099 .eq => .e,
...@@ -15058,11 +26102,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15058,11 +26102,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15058 else => unreachable,26102 else => unreachable,
15059 inline .e, .ne => |cc| comptime &.{ .{26103 inline .e, .ne => |cc| comptime &.{ .{
15060 .required_features = .{ .avx2, null, null, null },26104 .required_features = .{ .avx2, null, null, null },
15061 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },26105 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
15062 .patterns = &.{26106 .patterns = &.{
15063 .{ .src = .{ .to_ymm, .mem } },26107 .{ .src = .{ .to_ymm, .mem, .none } },
15064 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },26108 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
15065 .{ .src = .{ .to_ymm, .to_ymm } },26109 .{ .src = .{ .to_ymm, .to_ymm, .none } },
15066 },26110 },
15067 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{26111 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
15068 .kind = .all,26112 .kind = .all,
...@@ -15078,11 +26122,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15078,11 +26122,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15078 } },26122 } },
15079 }, .{26123 }, .{
15080 .required_features = .{ .avx2, null, null, null },26124 .required_features = .{ .avx2, null, null, null },
15081 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },26125 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
15082 .patterns = &.{26126 .patterns = &.{
15083 .{ .src = .{ .to_ymm, .mem } },26127 .{ .src = .{ .to_ymm, .mem, .none } },
15084 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },26128 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
15085 .{ .src = .{ .to_ymm, .to_ymm } },26129 .{ .src = .{ .to_ymm, .to_ymm, .none } },
15086 },26130 },
15087 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{26131 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
15088 .kind = .all,26132 .kind = .all,
...@@ -15098,11 +26142,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15098,11 +26142,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15098 } },26142 } },
15099 }, .{26143 }, .{
15100 .required_features = .{ .avx2, null, null, null },26144 .required_features = .{ .avx2, null, null, null },
15101 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },26145 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
15102 .patterns = &.{26146 .patterns = &.{
15103 .{ .src = .{ .to_ymm, .mem } },26147 .{ .src = .{ .to_ymm, .mem, .none } },
15104 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },26148 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
15105 .{ .src = .{ .to_ymm, .to_ymm } },26149 .{ .src = .{ .to_ymm, .to_ymm, .none } },
15106 },26150 },
15107 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{26151 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
15108 .kind = .all,26152 .kind = .all,
...@@ -15118,11 +26162,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15118,11 +26162,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15118 } },26162 } },
15119 }, .{26163 }, .{
15120 .required_features = .{ .avx2, null, null, null },26164 .required_features = .{ .avx2, null, null, null },
15121 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },26165 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
15122 .patterns = &.{26166 .patterns = &.{
15123 .{ .src = .{ .to_ymm, .mem } },26167 .{ .src = .{ .to_ymm, .mem, .none } },
15124 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },26168 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
15125 .{ .src = .{ .to_ymm, .to_ymm } },26169 .{ .src = .{ .to_ymm, .to_ymm, .none } },
15126 },26170 },
15127 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{26171 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
15128 .kind = .all,26172 .kind = .all,
...@@ -15138,11 +26182,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15138,11 +26182,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15138 } },26182 } },
15139 }, .{26183 }, .{
15140 .required_features = .{ .avx, null, null, null },26184 .required_features = .{ .avx, null, null, null },
15141 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },26185 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
15142 .patterns = &.{26186 .patterns = &.{
15143 .{ .src = .{ .to_xmm, .mem } },26187 .{ .src = .{ .to_xmm, .mem, .none } },
15144 .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } },26188 .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } },
15145 .{ .src = .{ .to_xmm, .to_xmm } },26189 .{ .src = .{ .to_xmm, .to_xmm, .none } },
15146 },26190 },
15147 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{26191 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
15148 .kind = .all,26192 .kind = .all,
...@@ -15158,11 +26202,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15158,11 +26202,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15158 } },26202 } },
15159 }, .{26203 }, .{
15160 .required_features = .{ .avx, null, null, null },26204 .required_features = .{ .avx, null, null, null },
15161 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },26205 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
15162 .patterns = &.{26206 .patterns = &.{
15163 .{ .src = .{ .to_xmm, .mem } },26207 .{ .src = .{ .to_xmm, .mem, .none } },
15164 .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } },26208 .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } },
15165 .{ .src = .{ .to_xmm, .to_xmm } },26209 .{ .src = .{ .to_xmm, .to_xmm, .none } },
15166 },26210 },
15167 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{26211 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
15168 .kind = .all,26212 .kind = .all,
...@@ -15178,11 +26222,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15178,11 +26222,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15178 } },26222 } },
15179 }, .{26223 }, .{
15180 .required_features = .{ .avx, null, null, null },26224 .required_features = .{ .avx, null, null, null },
15181 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },26225 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
15182 .patterns = &.{26226 .patterns = &.{
15183 .{ .src = .{ .to_xmm, .mem } },26227 .{ .src = .{ .to_xmm, .mem, .none } },
15184 .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } },26228 .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } },
15185 .{ .src = .{ .to_xmm, .to_xmm } },26229 .{ .src = .{ .to_xmm, .to_xmm, .none } },
15186 },26230 },
15187 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{26231 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
15188 .kind = .all,26232 .kind = .all,
...@@ -15198,11 +26242,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15198,11 +26242,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15198 } },26242 } },
15199 }, .{26243 }, .{
15200 .required_features = .{ .avx, null, null, null },26244 .required_features = .{ .avx, null, null, null },
15201 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },26245 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
15202 .patterns = &.{26246 .patterns = &.{
15203 .{ .src = .{ .to_xmm, .mem } },26247 .{ .src = .{ .to_xmm, .mem, .none } },
15204 .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } },26248 .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } },
15205 .{ .src = .{ .to_xmm, .to_xmm } },26249 .{ .src = .{ .to_xmm, .to_xmm, .none } },
15206 },26250 },
15207 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{26251 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
15208 .kind = .all,26252 .kind = .all,
...@@ -15218,11 +26262,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15218,11 +26262,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15218 } },26262 } },
15219 }, .{26263 }, .{
15220 .required_features = .{ .sse2, null, null, null },26264 .required_features = .{ .sse2, null, null, null },
15221 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },26265 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
15222 .patterns = &.{26266 .patterns = &.{
15223 .{ .src = .{ .to_mut_xmm, .mem } },26267 .{ .src = .{ .to_mut_xmm, .mem, .none } },
15224 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },26268 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
15225 .{ .src = .{ .to_mut_xmm, .to_xmm } },26269 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
15226 },26270 },
15227 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{26271 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
15228 .kind = .all,26272 .kind = .all,
...@@ -15238,11 +26282,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15238,11 +26282,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15238 } },26282 } },
15239 }, .{26283 }, .{
15240 .required_features = .{ .sse2, null, null, null },26284 .required_features = .{ .sse2, null, null, null },
15241 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },26285 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
15242 .patterns = &.{26286 .patterns = &.{
15243 .{ .src = .{ .to_mut_xmm, .mem } },26287 .{ .src = .{ .to_mut_xmm, .mem, .none } },
15244 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },26288 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
15245 .{ .src = .{ .to_mut_xmm, .to_xmm } },26289 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
15246 },26290 },
15247 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{26291 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
15248 .kind = .all,26292 .kind = .all,
...@@ -15258,11 +26302,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15258,11 +26302,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15258 } },26302 } },
15259 }, .{26303 }, .{
15260 .required_features = .{ .sse2, null, null, null },26304 .required_features = .{ .sse2, null, null, null },
15261 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },26305 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
15262 .patterns = &.{26306 .patterns = &.{
15263 .{ .src = .{ .to_mut_xmm, .mem } },26307 .{ .src = .{ .to_mut_xmm, .mem, .none } },
15264 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },26308 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
15265 .{ .src = .{ .to_mut_xmm, .to_xmm } },26309 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
15266 },26310 },
15267 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{26311 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
15268 .kind = .all,26312 .kind = .all,
...@@ -15278,11 +26322,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15278,11 +26322,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15278 } },26322 } },
15279 }, .{26323 }, .{
15280 .required_features = .{ .sse4_1, null, null, null },26324 .required_features = .{ .sse4_1, null, null, null },
15281 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },26325 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
15282 .patterns = &.{26326 .patterns = &.{
15283 .{ .src = .{ .to_mut_xmm, .mem } },26327 .{ .src = .{ .to_mut_xmm, .mem, .none } },
15284 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },26328 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
15285 .{ .src = .{ .to_mut_xmm, .to_xmm } },26329 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
15286 },26330 },
15287 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{26331 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
15288 .kind = .all,26332 .kind = .all,
...@@ -15298,11 +26342,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15298,11 +26342,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15298 } },26342 } },
15299 }, .{26343 }, .{
15300 .required_features = .{ .mmx, null, null, null },26344 .required_features = .{ .mmx, null, null, null },
15301 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },26345 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
15302 .patterns = &.{26346 .patterns = &.{
15303 .{ .src = .{ .to_mut_mm, .mem } },26347 .{ .src = .{ .to_mut_mm, .mem, .none } },
15304 .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } },26348 .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } },
15305 .{ .src = .{ .to_mut_mm, .to_mm } },26349 .{ .src = .{ .to_mut_mm, .to_mm, .none } },
15306 },26350 },
15307 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{26351 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
15308 .kind = .all,26352 .kind = .all,
...@@ -15318,11 +26362,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15318,11 +26362,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15318 } },26362 } },
15319 }, .{26363 }, .{
15320 .required_features = .{ .mmx, null, null, null },26364 .required_features = .{ .mmx, null, null, null },
15321 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },26365 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
15322 .patterns = &.{26366 .patterns = &.{
15323 .{ .src = .{ .to_mut_mm, .mem } },26367 .{ .src = .{ .to_mut_mm, .mem, .none } },
15324 .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } },26368 .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } },
15325 .{ .src = .{ .to_mut_mm, .to_mm } },26369 .{ .src = .{ .to_mut_mm, .to_mm, .none } },
15326 },26370 },
15327 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{26371 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
15328 .kind = .all,26372 .kind = .all,
...@@ -15338,11 +26382,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15338,11 +26382,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15338 } },26382 } },
15339 }, .{26383 }, .{
15340 .required_features = .{ .mmx, null, null, null },26384 .required_features = .{ .mmx, null, null, null },
15341 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },26385 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
15342 .patterns = &.{26386 .patterns = &.{
15343 .{ .src = .{ .to_mut_mm, .mem } },26387 .{ .src = .{ .to_mut_mm, .mem, .none } },
15344 .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } },26388 .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } },
15345 .{ .src = .{ .to_mut_mm, .to_mm } },26389 .{ .src = .{ .to_mut_mm, .to_mm, .none } },
15346 },26390 },
15347 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{26391 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
15348 .kind = .all,26392 .kind = .all,
...@@ -15357,17 +26401,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15357,17 +26401,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15357 .{ ._, .p_d, .cmpeq, .dst0q, .src1q, ._, ._ },26401 .{ ._, .p_d, .cmpeq, .dst0q, .src1q, ._, ._ },
15358 } },26402 } },
15359 }, .{26403 }, .{
15360 .src_constraints = .{ .{ .bool_vec = .byte }, .{ .bool_vec = .byte } },26404 .src_constraints = .{ .{ .bool_vec = .byte }, .{ .bool_vec = .byte }, .any },
15361 .patterns = &.{26405 .patterns = &.{
15362 .{ .src = .{ .mut_mem, .imm8 } },26406 .{ .src = .{ .mut_mem, .imm8, .none } },
15363 .{ .src = .{ .imm8, .mut_mem }, .commute = .{ 0, 1 } },26407 .{ .src = .{ .imm8, .mut_mem, .none }, .commute = .{ 0, 1 } },
15364 .{ .src = .{ .to_mut_gpr, .imm8 } },26408 .{ .src = .{ .to_mut_gpr, .imm8, .none } },
15365 .{ .src = .{ .imm8, .to_mut_gpr }, .commute = .{ 0, 1 } },26409 .{ .src = .{ .imm8, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15366 .{ .src = .{ .mut_mem, .to_gpr } },26410 .{ .src = .{ .mut_mem, .to_gpr, .none } },
15367 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },26411 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
15368 .{ .src = .{ .to_mut_gpr, .mem } },26412 .{ .src = .{ .to_mut_gpr, .mem, .none } },
15369 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },26413 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15370 .{ .src = .{ .to_mut_gpr, .to_gpr } },26414 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
15371 },26415 },
15372 .dst_temps = .{.{ .ref = .src0 }},26416 .dst_temps = .{.{ .ref = .src0 }},
15373 .clobbers = .{ .eflags = true },26417 .clobbers = .{ .eflags = true },
...@@ -15382,17 +26426,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15382,17 +26426,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15382 },26426 },
15383 } },26427 } },
15384 }, .{26428 }, .{
15385 .src_constraints = .{ .{ .bool_vec = .word }, .{ .bool_vec = .word } },26429 .src_constraints = .{ .{ .bool_vec = .word }, .{ .bool_vec = .word }, .any },
15386 .patterns = &.{26430 .patterns = &.{
15387 .{ .src = .{ .mut_mem, .imm16 } },26431 .{ .src = .{ .mut_mem, .imm16, .none } },
15388 .{ .src = .{ .imm16, .mut_mem }, .commute = .{ 0, 1 } },26432 .{ .src = .{ .imm16, .mut_mem, .none }, .commute = .{ 0, 1 } },
15389 .{ .src = .{ .to_mut_gpr, .imm16 } },26433 .{ .src = .{ .to_mut_gpr, .imm16, .none } },
15390 .{ .src = .{ .imm16, .to_mut_gpr }, .commute = .{ 0, 1 } },26434 .{ .src = .{ .imm16, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15391 .{ .src = .{ .mut_mem, .to_gpr } },26435 .{ .src = .{ .mut_mem, .to_gpr, .none } },
15392 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },26436 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
15393 .{ .src = .{ .to_mut_gpr, .mem } },26437 .{ .src = .{ .to_mut_gpr, .mem, .none } },
15394 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },26438 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15395 .{ .src = .{ .to_mut_gpr, .to_gpr } },26439 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
15396 },26440 },
15397 .dst_temps = .{.{ .ref = .src0 }},26441 .dst_temps = .{.{ .ref = .src0 }},
15398 .clobbers = .{ .eflags = true },26442 .clobbers = .{ .eflags = true },
...@@ -15407,17 +26451,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15407,17 +26451,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15407 },26451 },
15408 } },26452 } },
15409 }, .{26453 }, .{
15410 .src_constraints = .{ .{ .bool_vec = .dword }, .{ .bool_vec = .dword } },26454 .src_constraints = .{ .{ .bool_vec = .dword }, .{ .bool_vec = .dword }, .any },
15411 .patterns = &.{26455 .patterns = &.{
15412 .{ .src = .{ .mut_mem, .imm32 } },26456 .{ .src = .{ .mut_mem, .imm32, .none } },
15413 .{ .src = .{ .imm32, .mut_mem }, .commute = .{ 0, 1 } },26457 .{ .src = .{ .imm32, .mut_mem, .none }, .commute = .{ 0, 1 } },
15414 .{ .src = .{ .to_mut_gpr, .imm32 } },26458 .{ .src = .{ .to_mut_gpr, .imm32, .none } },
15415 .{ .src = .{ .imm32, .to_mut_gpr }, .commute = .{ 0, 1 } },26459 .{ .src = .{ .imm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15416 .{ .src = .{ .mut_mem, .to_gpr } },26460 .{ .src = .{ .mut_mem, .to_gpr, .none } },
15417 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },26461 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
15418 .{ .src = .{ .to_mut_gpr, .mem } },26462 .{ .src = .{ .to_mut_gpr, .mem, .none } },
15419 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },26463 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15420 .{ .src = .{ .to_mut_gpr, .to_gpr } },26464 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
15421 },26465 },
15422 .dst_temps = .{.{ .ref = .src0 }},26466 .dst_temps = .{.{ .ref = .src0 }},
15423 .clobbers = .{ .eflags = true },26467 .clobbers = .{ .eflags = true },
...@@ -15433,17 +26477,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15433,17 +26477,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15433 } },26477 } },
15434 }, .{26478 }, .{
15435 .required_features = .{ .@"64bit", null, null, null },26479 .required_features = .{ .@"64bit", null, null, null },
15436 .src_constraints = .{ .{ .bool_vec = .qword }, .{ .bool_vec = .qword } },26480 .src_constraints = .{ .{ .bool_vec = .qword }, .{ .bool_vec = .qword }, .any },
15437 .patterns = &.{26481 .patterns = &.{
15438 .{ .src = .{ .mut_mem, .simm32 } },26482 .{ .src = .{ .mut_mem, .simm32, .none } },
15439 .{ .src = .{ .simm32, .mut_mem }, .commute = .{ 0, 1 } },26483 .{ .src = .{ .simm32, .mut_mem, .none }, .commute = .{ 0, 1 } },
15440 .{ .src = .{ .to_mut_gpr, .simm32 } },26484 .{ .src = .{ .to_mut_gpr, .simm32, .none } },
15441 .{ .src = .{ .simm32, .to_mut_gpr }, .commute = .{ 0, 1 } },26485 .{ .src = .{ .simm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15442 .{ .src = .{ .mut_mem, .to_gpr } },26486 .{ .src = .{ .mut_mem, .to_gpr, .none } },
15443 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },26487 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
15444 .{ .src = .{ .to_mut_gpr, .mem } },26488 .{ .src = .{ .to_mut_gpr, .mem, .none } },
15445 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },26489 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15446 .{ .src = .{ .to_mut_gpr, .to_gpr } },26490 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
15447 },26491 },
15448 .dst_temps = .{.{ .ref = .src0 }},26492 .dst_temps = .{.{ .ref = .src0 }},
15449 .clobbers = .{ .eflags = true },26493 .clobbers = .{ .eflags = true },
...@@ -15458,9 +26502,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15458,9 +26502,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15458 },26502 },
15459 } },26503 } },
15460 }, .{26504 }, .{
15461 .src_constraints = .{ .any_bool_vec, .any_bool_vec },26505 .src_constraints = .{ .any_bool_vec, .any_bool_vec, .any },
15462 .patterns = &.{26506 .patterns = &.{
15463 .{ .src = .{ .to_mem, .to_mem } },26507 .{ .src = .{ .to_mem, .to_mem, .none } },
15464 },26508 },
15465 .extra_temps = .{26509 .extra_temps = .{
15466 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },26510 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -15497,9 +26541,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15497,9 +26541,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15497 } },26541 } },
15498 }, .{26542 }, .{
15499 .required_features = .{ .avx2, null, null, null },26543 .required_features = .{ .avx2, null, null, null },
15500 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },26544 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
15501 .patterns = &.{26545 .patterns = &.{
15502 .{ .src = .{ .to_mem, .to_mem } },26546 .{ .src = .{ .to_mem, .to_mem, .none } },
15503 },26547 },
15504 .extra_temps = .{26548 .extra_temps = .{
15505 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },26549 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -15542,9 +26586,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15542,9 +26586,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15542 } },26586 } },
15543 }, .{26587 }, .{
15544 .required_features = .{ .avx2, null, null, null },26588 .required_features = .{ .avx2, null, null, null },
15545 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },26589 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
15546 .patterns = &.{26590 .patterns = &.{
15547 .{ .src = .{ .to_mem, .to_mem } },26591 .{ .src = .{ .to_mem, .to_mem, .none } },
15548 },26592 },
15549 .extra_temps = .{26593 .extra_temps = .{
15550 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },26594 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -15589,9 +26633,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15589,9 +26633,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15589 } },26633 } },
15590 }, .{26634 }, .{
15591 .required_features = .{ .avx2, null, null, null },26635 .required_features = .{ .avx2, null, null, null },
15592 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },26636 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
15593 .patterns = &.{26637 .patterns = &.{
15594 .{ .src = .{ .to_mem, .to_mem } },26638 .{ .src = .{ .to_mem, .to_mem, .none } },
15595 },26639 },
15596 .extra_temps = .{26640 .extra_temps = .{
15597 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },26641 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -15634,9 +26678,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15634,9 +26678,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15634 } },26678 } },
15635 }, .{26679 }, .{
15636 .required_features = .{ .avx2, null, null, null },26680 .required_features = .{ .avx2, null, null, null },
15637 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },26681 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
15638 .patterns = &.{26682 .patterns = &.{
15639 .{ .src = .{ .to_mem, .to_mem } },26683 .{ .src = .{ .to_mem, .to_mem, .none } },
15640 },26684 },
15641 .extra_temps = .{26685 .extra_temps = .{
15642 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },26686 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -15703,9 +26747,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15703,9 +26747,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15703 } },26747 } },
15704 }, .{26748 }, .{
15705 .required_features = .{ .avx, null, null, null },26749 .required_features = .{ .avx, null, null, null },
15706 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },26750 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
15707 .patterns = &.{26751 .patterns = &.{
15708 .{ .src = .{ .to_mem, .to_mem } },26752 .{ .src = .{ .to_mem, .to_mem, .none } },
15709 },26753 },
15710 .extra_temps = .{26754 .extra_temps = .{
15711 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },26755 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -15748,9 +26792,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15748,9 +26792,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15748 } },26792 } },
15749 }, .{26793 }, .{
15750 .required_features = .{ .avx, null, null, null },26794 .required_features = .{ .avx, null, null, null },
15751 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },26795 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
15752 .patterns = &.{26796 .patterns = &.{
15753 .{ .src = .{ .to_mem, .to_mem } },26797 .{ .src = .{ .to_mem, .to_mem, .none } },
15754 },26798 },
15755 .extra_temps = .{26799 .extra_temps = .{
15756 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },26800 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -15795,9 +26839,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15795,9 +26839,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15795 } },26839 } },
15796 }, .{26840 }, .{
15797 .required_features = .{ .avx, null, null, null },26841 .required_features = .{ .avx, null, null, null },
15798 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },26842 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
15799 .patterns = &.{26843 .patterns = &.{
15800 .{ .src = .{ .to_mem, .to_mem } },26844 .{ .src = .{ .to_mem, .to_mem, .none } },
15801 },26845 },
15802 .extra_temps = .{26846 .extra_temps = .{
15803 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },26847 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -15864,9 +26908,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15864,9 +26908,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15864 } },26908 } },
15865 }, .{26909 }, .{
15866 .required_features = .{ .avx, null, null, null },26910 .required_features = .{ .avx, null, null, null },
15867 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },26911 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
15868 .patterns = &.{26912 .patterns = &.{
15869 .{ .src = .{ .to_mem, .to_mem } },26913 .{ .src = .{ .to_mem, .to_mem, .none } },
15870 },26914 },
15871 .extra_temps = .{26915 .extra_temps = .{
15872 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },26916 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -15933,9 +26977,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15933,9 +26977,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15933 } },26977 } },
15934 }, .{26978 }, .{
15935 .required_features = .{ .sse2, null, null, null },26979 .required_features = .{ .sse2, null, null, null },
15936 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },26980 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
15937 .patterns = &.{26981 .patterns = &.{
15938 .{ .src = .{ .to_mem, .to_mem } },26982 .{ .src = .{ .to_mem, .to_mem, .none } },
15939 },26983 },
15940 .extra_temps = .{26984 .extra_temps = .{
15941 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },26985 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -15978,9 +27022,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15978,9 +27022,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15978 } },27022 } },
15979 }, .{27023 }, .{
15980 .required_features = .{ .sse2, null, null, null },27024 .required_features = .{ .sse2, null, null, null },
15981 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },27025 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
15982 .patterns = &.{27026 .patterns = &.{
15983 .{ .src = .{ .to_mem, .to_mem } },27027 .{ .src = .{ .to_mem, .to_mem, .none } },
15984 },27028 },
15985 .extra_temps = .{27029 .extra_temps = .{
15986 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27030 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16025,9 +27069,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16025,9 +27069,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16025 } },27069 } },
16026 }, .{27070 }, .{
16027 .required_features = .{ .sse2, null, null, null },27071 .required_features = .{ .sse2, null, null, null },
16028 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },27072 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
16029 .patterns = &.{27073 .patterns = &.{
16030 .{ .src = .{ .to_mem, .to_mem } },27074 .{ .src = .{ .to_mem, .to_mem, .none } },
16031 },27075 },
16032 .extra_temps = .{27076 .extra_temps = .{
16033 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27077 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16094,9 +27138,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16094,9 +27138,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16094 } },27138 } },
16095 }, .{27139 }, .{
16096 .required_features = .{ .sse4_1, null, null, null },27140 .required_features = .{ .sse4_1, null, null, null },
16097 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },27141 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
16098 .patterns = &.{27142 .patterns = &.{
16099 .{ .src = .{ .to_mem, .to_mem } },27143 .{ .src = .{ .to_mem, .to_mem, .none } },
16100 },27144 },
16101 .extra_temps = .{27145 .extra_temps = .{
16102 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27146 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16163,9 +27207,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16163,9 +27207,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16163 } },27207 } },
16164 }, .{27208 }, .{
16165 .required_features = .{ .sse, .mmx, null, null },27209 .required_features = .{ .sse, .mmx, null, null },
16166 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },27210 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
16167 .patterns = &.{27211 .patterns = &.{
16168 .{ .src = .{ .to_mem, .to_mem } },27212 .{ .src = .{ .to_mem, .to_mem, .none } },
16169 },27213 },
16170 .extra_temps = .{27214 .extra_temps = .{
16171 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27215 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16208,9 +27252,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16208,9 +27252,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16208 } },27252 } },
16209 }, .{27253 }, .{
16210 .required_features = .{ .sse, .mmx, null, null },27254 .required_features = .{ .sse, .mmx, null, null },
16211 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },27255 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
16212 .patterns = &.{27256 .patterns = &.{
16213 .{ .src = .{ .to_mem, .to_mem } },27257 .{ .src = .{ .to_mem, .to_mem, .none } },
16214 },27258 },
16215 .extra_temps = .{27259 .extra_temps = .{
16216 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27260 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16281,9 +27325,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16281,9 +27325,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16281 } },27325 } },
16282 }, .{27326 }, .{
16283 .required_features = .{ .sse, .mmx, null, null },27327 .required_features = .{ .sse, .mmx, null, null },
16284 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },27328 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
16285 .patterns = &.{27329 .patterns = &.{
16286 .{ .src = .{ .to_mem, .to_mem } },27330 .{ .src = .{ .to_mem, .to_mem, .none } },
16287 },27331 },
16288 .extra_temps = .{27332 .extra_temps = .{
16289 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27333 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16355,10 +27399,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16355,10 +27399,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16355 },27399 },
16356 } },27400 } },
16357 }, .{27401 }, .{
16358 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },27402 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
16359 .dst_constraints = .{.{ .bool_vec = .byte }},27403 .dst_constraints = .{.{ .bool_vec = .byte }},
16360 .patterns = &.{27404 .patterns = &.{
16361 .{ .src = .{ .to_mem, .to_mem } },27405 .{ .src = .{ .to_mem, .to_mem, .none } },
16362 },27406 },
16363 .extra_temps = .{27407 .extra_temps = .{
16364 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27408 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16387,10 +27431,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16387,10 +27431,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16387 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },27431 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
16388 } },27432 } },
16389 }, .{27433 }, .{
16390 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },27434 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
16391 .dst_constraints = .{.{ .bool_vec = .byte }},27435 .dst_constraints = .{.{ .bool_vec = .byte }},
16392 .patterns = &.{27436 .patterns = &.{
16393 .{ .src = .{ .to_mem, .to_mem } },27437 .{ .src = .{ .to_mem, .to_mem, .none } },
16394 },27438 },
16395 .extra_temps = .{27439 .extra_temps = .{
16396 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27440 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16419,10 +27463,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16419,10 +27463,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16419 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },27463 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
16420 } },27464 } },
16421 }, .{27465 }, .{
16422 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },27466 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
16423 .dst_constraints = .{.{ .bool_vec = .byte }},27467 .dst_constraints = .{.{ .bool_vec = .byte }},
16424 .patterns = &.{27468 .patterns = &.{
16425 .{ .src = .{ .to_mem, .to_mem } },27469 .{ .src = .{ .to_mem, .to_mem, .none } },
16426 },27470 },
16427 .extra_temps = .{27471 .extra_temps = .{
16428 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27472 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16452,10 +27496,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16452,10 +27496,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16452 } },27496 } },
16453 }, .{27497 }, .{
16454 .required_features = .{ .@"64bit", null, null, null },27498 .required_features = .{ .@"64bit", null, null, null },
16455 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },27499 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
16456 .dst_constraints = .{.{ .bool_vec = .byte }},27500 .dst_constraints = .{.{ .bool_vec = .byte }},
16457 .patterns = &.{27501 .patterns = &.{
16458 .{ .src = .{ .to_mem, .to_mem } },27502 .{ .src = .{ .to_mem, .to_mem, .none } },
16459 },27503 },
16460 .extra_temps = .{27504 .extra_temps = .{
16461 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27505 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16484,10 +27528,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16484,10 +27528,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16484 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },27528 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
16485 } },27529 } },
16486 }, .{27530 }, .{
16487 .src_constraints = .{ .any_scalar_int, .any_scalar_int },27531 .src_constraints = .{ .any_scalar_int, .any_scalar_int, .any },
16488 .dst_constraints = .{.{ .bool_vec = .byte }},27532 .dst_constraints = .{.{ .bool_vec = .byte }},
16489 .patterns = &.{27533 .patterns = &.{
16490 .{ .src = .{ .to_mem, .to_mem } },27534 .{ .src = .{ .to_mem, .to_mem, .none } },
16491 },27535 },
16492 .extra_temps = .{27536 .extra_temps = .{
16493 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },27537 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -16523,10 +27567,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16523,10 +27567,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16523 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },27567 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
16524 } },27568 } },
16525 }, .{27569 }, .{
16526 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },27570 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
16527 .dst_constraints = .{.{ .bool_vec = .dword }},27571 .dst_constraints = .{.{ .bool_vec = .dword }},
16528 .patterns = &.{27572 .patterns = &.{
16529 .{ .src = .{ .to_mem, .to_mem } },27573 .{ .src = .{ .to_mem, .to_mem, .none } },
16530 },27574 },
16531 .extra_temps = .{27575 .extra_temps = .{
16532 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27576 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16556,10 +27600,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16556,10 +27600,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16556 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },27600 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
16557 } },27601 } },
16558 }, .{27602 }, .{
16559 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },27603 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
16560 .dst_constraints = .{.{ .bool_vec = .dword }},27604 .dst_constraints = .{.{ .bool_vec = .dword }},
16561 .patterns = &.{27605 .patterns = &.{
16562 .{ .src = .{ .to_mem, .to_mem } },27606 .{ .src = .{ .to_mem, .to_mem, .none } },
16563 },27607 },
16564 .extra_temps = .{27608 .extra_temps = .{
16565 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27609 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16589,10 +27633,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16589,10 +27633,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16589 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },27633 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
16590 } },27634 } },
16591 }, .{27635 }, .{
16592 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },27636 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
16593 .dst_constraints = .{.{ .bool_vec = .dword }},27637 .dst_constraints = .{.{ .bool_vec = .dword }},
16594 .patterns = &.{27638 .patterns = &.{
16595 .{ .src = .{ .to_mem, .to_mem } },27639 .{ .src = .{ .to_mem, .to_mem, .none } },
16596 },27640 },
16597 .extra_temps = .{27641 .extra_temps = .{
16598 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27642 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16623,10 +27667,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16623,10 +27667,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16623 } },27667 } },
16624 }, .{27668 }, .{
16625 .required_features = .{ .@"64bit", null, null, null },27669 .required_features = .{ .@"64bit", null, null, null },
16626 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },27670 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
16627 .dst_constraints = .{.{ .bool_vec = .dword }},27671 .dst_constraints = .{.{ .bool_vec = .dword }},
16628 .patterns = &.{27672 .patterns = &.{
16629 .{ .src = .{ .to_mem, .to_mem } },27673 .{ .src = .{ .to_mem, .to_mem, .none } },
16630 },27674 },
16631 .extra_temps = .{27675 .extra_temps = .{
16632 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27676 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16656,10 +27700,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16656,10 +27700,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16656 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },27700 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
16657 } },27701 } },
16658 }, .{27702 }, .{
16659 .src_constraints = .{ .any_scalar_int, .any_scalar_int },27703 .src_constraints = .{ .any_scalar_int, .any_scalar_int, .any },
16660 .dst_constraints = .{.{ .bool_vec = .dword }},27704 .dst_constraints = .{.{ .bool_vec = .dword }},
16661 .patterns = &.{27705 .patterns = &.{
16662 .{ .src = .{ .to_mem, .to_mem } },27706 .{ .src = .{ .to_mem, .to_mem, .none } },
16663 },27707 },
16664 .extra_temps = .{27708 .extra_temps = .{
16665 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },27709 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -16697,10 +27741,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16697,10 +27741,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16697 } },27741 } },
16698 }, .{27742 }, .{
16699 .required_features = .{ .@"64bit", null, null, null },27743 .required_features = .{ .@"64bit", null, null, null },
16700 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },27744 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
16701 .dst_constraints = .{.{ .bool_vec = .qword }},27745 .dst_constraints = .{.{ .bool_vec = .qword }},
16702 .patterns = &.{27746 .patterns = &.{
16703 .{ .src = .{ .to_mem, .to_mem } },27747 .{ .src = .{ .to_mem, .to_mem, .none } },
16704 },27748 },
16705 .extra_temps = .{27749 .extra_temps = .{
16706 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27750 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16731,10 +27775,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16731,10 +27775,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16731 } },27775 } },
16732 }, .{27776 }, .{
16733 .required_features = .{ .@"64bit", null, null, null },27777 .required_features = .{ .@"64bit", null, null, null },
16734 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },27778 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
16735 .dst_constraints = .{.{ .bool_vec = .qword }},27779 .dst_constraints = .{.{ .bool_vec = .qword }},
16736 .patterns = &.{27780 .patterns = &.{
16737 .{ .src = .{ .to_mem, .to_mem } },27781 .{ .src = .{ .to_mem, .to_mem, .none } },
16738 },27782 },
16739 .extra_temps = .{27783 .extra_temps = .{
16740 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27784 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16764,10 +27808,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16764,10 +27808,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16764 } },27808 } },
16765 }, .{27809 }, .{
16766 .required_features = .{ .@"64bit", null, null, null },27810 .required_features = .{ .@"64bit", null, null, null },
16767 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },27811 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
16768 .dst_constraints = .{.{ .bool_vec = .qword }},27812 .dst_constraints = .{.{ .bool_vec = .qword }},
16769 .patterns = &.{27813 .patterns = &.{
16770 .{ .src = .{ .to_mem, .to_mem } },27814 .{ .src = .{ .to_mem, .to_mem, .none } },
16771 },27815 },
16772 .extra_temps = .{27816 .extra_temps = .{
16773 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27817 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16798,10 +27842,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16798,10 +27842,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16798 } },27842 } },
16799 }, .{27843 }, .{
16800 .required_features = .{ .@"64bit", null, null, null },27844 .required_features = .{ .@"64bit", null, null, null },
16801 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },27845 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
16802 .dst_constraints = .{.{ .bool_vec = .qword }},27846 .dst_constraints = .{.{ .bool_vec = .qword }},
16803 .patterns = &.{27847 .patterns = &.{
16804 .{ .src = .{ .to_mem, .to_mem } },27848 .{ .src = .{ .to_mem, .to_mem, .none } },
16805 },27849 },
16806 .extra_temps = .{27850 .extra_temps = .{
16807 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27851 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16832,10 +27876,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16832,10 +27876,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16832 } },27876 } },
16833 }, .{27877 }, .{
16834 .required_features = .{ .@"64bit", null, null, null },27878 .required_features = .{ .@"64bit", null, null, null },
16835 .src_constraints = .{ .any_scalar_int, .any_scalar_int },27879 .src_constraints = .{ .any_scalar_int, .any_scalar_int, .any },
16836 .dst_constraints = .{.{ .bool_vec = .qword }},27880 .dst_constraints = .{.{ .bool_vec = .qword }},
16837 .patterns = &.{27881 .patterns = &.{
16838 .{ .src = .{ .to_mem, .to_mem } },27882 .{ .src = .{ .to_mem, .to_mem, .none } },
16839 },27883 },
16840 .extra_temps = .{27884 .extra_temps = .{
16841 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },27885 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -16872,9 +27916,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16872,9 +27916,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16872 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },27916 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
16873 } },27917 } },
16874 }, .{27918 }, .{
16875 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },27919 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
16876 .patterns = &.{27920 .patterns = &.{
16877 .{ .src = .{ .to_mem, .to_mem } },27921 .{ .src = .{ .to_mem, .to_mem, .none } },
16878 },27922 },
16879 .extra_temps = .{27923 .extra_temps = .{
16880 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27924 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16918,9 +27962,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16918,9 +27962,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16918 .src_constraints = .{27962 .src_constraints = .{
16919 .{ .scalar_float = .{ .of = .word, .is = .word } },27963 .{ .scalar_float = .{ .of = .word, .is = .word } },
16920 .{ .scalar_float = .{ .of = .word, .is = .word } },27964 .{ .scalar_float = .{ .of = .word, .is = .word } },
27965 .any,
16921 },27966 },
16922 .patterns = &.{27967 .patterns = &.{
16923 .{ .src = .{ .to_sse, .to_sse } },27968 .{ .src = .{ .to_sse, .to_sse, .none } },
16924 },27969 },
16925 .extra_temps = .{27970 .extra_temps = .{
16926 .{ .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },27971 .{ .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
...@@ -16941,7 +27986,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16941,7 +27986,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16941 .each = .{ .once = &.{27986 .each = .{ .once = &.{
16942 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },27987 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
16943 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },27988 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
16944 .{ ._, .v_ss, .cmp, .dst0x, .dst0x, .tmp0x, .vp(switch (cc) {27989 .{ ._, .v_ss, .cmp, .dst0x, .dst0x, .tmp0d, .vp(switch (cc) {
16945 else => unreachable,27990 else => unreachable,
16946 .e => .eq,27991 .e => .eq,
16947 .ne => .neq,27992 .ne => .neq,
...@@ -16952,12 +27997,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16952,12 +27997,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16952 .src_constraints = .{27997 .src_constraints = .{
16953 .{ .scalar_float = .{ .of = .qword, .is = .word } },27998 .{ .scalar_float = .{ .of = .qword, .is = .word } },
16954 .{ .scalar_float = .{ .of = .qword, .is = .word } },27999 .{ .scalar_float = .{ .of = .qword, .is = .word } },
28000 .any,
16955 },28001 },
16956 .patterns = &.{28002 .patterns = &.{
16957 .{ .src = .{ .mem, .mem } },28003 .{ .src = .{ .mem, .mem, .none } },
16958 .{ .src = .{ .sse, .mem } },28004 .{ .src = .{ .sse, .mem, .none } },
16959 .{ .src = .{ .mem, .sse } },28005 .{ .src = .{ .mem, .sse, .none } },
16960 .{ .src = .{ .to_sse, .to_sse } },28006 .{ .src = .{ .to_sse, .to_sse, .none } },
16961 },28007 },
16962 .extra_temps = .{28008 .extra_temps = .{
16963 .{ .kind = .{ .rc = .sse } },28009 .{ .kind = .{ .rc = .sse } },
...@@ -16989,12 +28035,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16989,12 +28035,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16989 .src_constraints = .{28035 .src_constraints = .{
16990 .{ .scalar_float = .{ .of = .xword, .is = .word } },28036 .{ .scalar_float = .{ .of = .xword, .is = .word } },
16991 .{ .scalar_float = .{ .of = .xword, .is = .word } },28037 .{ .scalar_float = .{ .of = .xword, .is = .word } },
28038 .any,
16992 },28039 },
16993 .patterns = &.{28040 .patterns = &.{
16994 .{ .src = .{ .mem, .mem } },28041 .{ .src = .{ .mem, .mem, .none } },
16995 .{ .src = .{ .to_sse, .mem } },28042 .{ .src = .{ .to_sse, .mem, .none } },
16996 .{ .src = .{ .mem, .to_sse } },28043 .{ .src = .{ .mem, .to_sse, .none } },
16997 .{ .src = .{ .to_sse, .to_sse } },28044 .{ .src = .{ .to_sse, .to_sse, .none } },
16998 },28045 },
16999 .extra_temps = .{28046 .extra_temps = .{
17000 .{ .kind = .{ .rc = .sse } },28047 .{ .kind = .{ .rc = .sse } },
...@@ -17026,11 +28073,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17026,11 +28073,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17026 .src_constraints = .{28073 .src_constraints = .{
17027 .{ .scalar_float = .{ .of = .dword, .is = .dword } },28074 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
17028 .{ .scalar_float = .{ .of = .dword, .is = .dword } },28075 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
28076 .any,
17029 },28077 },
17030 .patterns = &.{28078 .patterns = &.{
17031 .{ .src = .{ .to_sse, .mem } },28079 .{ .src = .{ .to_sse, .mem, .none } },
17032 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },28080 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
17033 .{ .src = .{ .to_sse, .to_sse } },28081 .{ .src = .{ .to_sse, .to_sse, .none } },
17034 },28082 },
17035 .dst_temps = .{.{ .mut_rc_mask = .{28083 .dst_temps = .{.{ .mut_rc_mask = .{
17036 .ref = .src0,28084 .ref = .src0,
...@@ -17038,7 +28086,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17038,7 +28086,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17038 .info = .{ .kind = .all, .scalar = .dword },28086 .info = .{ .kind = .all, .scalar = .dword },
17039 } }},28087 } }},
17040 .each = .{ .once = &.{28088 .each = .{ .once = &.{
17041 .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) {28089 .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1d, .vp(switch (cc) {
17042 else => unreachable,28090 else => unreachable,
17043 .e => .eq,28091 .e => .eq,
17044 .ne => .neq,28092 .ne => .neq,
...@@ -17049,18 +28097,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17049,18 +28097,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17049 .src_constraints = .{28097 .src_constraints = .{
17050 .{ .scalar_float = .{ .of = .dword, .is = .dword } },28098 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
17051 .{ .scalar_float = .{ .of = .dword, .is = .dword } },28099 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
28100 .any,
17052 },28101 },
17053 .patterns = &.{28102 .patterns = &.{
17054 .{ .src = .{ .to_mut_sse, .mem } },28103 .{ .src = .{ .to_mut_sse, .mem, .none } },
17055 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },28104 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
17056 .{ .src = .{ .to_mut_sse, .to_sse } },28105 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
17057 },28106 },
17058 .dst_temps = .{.{ .ref_mask = .{28107 .dst_temps = .{.{ .ref_mask = .{
17059 .ref = .src0,28108 .ref = .src0,
17060 .info = .{ .kind = .all, .scalar = .dword },28109 .info = .{ .kind = .all, .scalar = .dword },
17061 } }},28110 } }},
17062 .each = .{ .once = &.{28111 .each = .{ .once = &.{
17063 .{ ._, ._ss, .cmp, .dst0x, .src1x, .vp(switch (cc) {28112 .{ ._, ._ss, .cmp, .dst0x, .src1d, .sp(switch (cc) {
17064 else => unreachable,28113 else => unreachable,
17065 .e => .eq,28114 .e => .eq,
17066 .ne => .neq,28115 .ne => .neq,
...@@ -17071,11 +28120,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17071,11 +28120,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17071 .src_constraints = .{28120 .src_constraints = .{
17072 .{ .scalar_float = .{ .of = .xword, .is = .dword } },28121 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
17073 .{ .scalar_float = .{ .of = .xword, .is = .dword } },28122 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
28123 .any,
17074 },28124 },
17075 .patterns = &.{28125 .patterns = &.{
17076 .{ .src = .{ .to_sse, .mem } },28126 .{ .src = .{ .to_sse, .mem, .none } },
17077 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },28127 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
17078 .{ .src = .{ .to_sse, .to_sse } },28128 .{ .src = .{ .to_sse, .to_sse, .none } },
17079 },28129 },
17080 .dst_temps = .{.{ .mut_rc_mask = .{28130 .dst_temps = .{.{ .mut_rc_mask = .{
17081 .ref = .src0,28131 .ref = .src0,
...@@ -17094,18 +28144,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17094,18 +28144,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17094 .src_constraints = .{28144 .src_constraints = .{
17095 .{ .scalar_float = .{ .of = .xword, .is = .dword } },28145 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
17096 .{ .scalar_float = .{ .of = .xword, .is = .dword } },28146 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
28147 .any,
17097 },28148 },
17098 .patterns = &.{28149 .patterns = &.{
17099 .{ .src = .{ .to_mut_sse, .mem } },28150 .{ .src = .{ .to_mut_sse, .mem, .none } },
17100 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },28151 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
17101 .{ .src = .{ .to_mut_sse, .to_sse } },28152 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
17102 },28153 },
17103 .dst_temps = .{.{ .ref_mask = .{28154 .dst_temps = .{.{ .ref_mask = .{
17104 .ref = .src0,28155 .ref = .src0,
17105 .info = .{ .kind = .all, .scalar = .dword },28156 .info = .{ .kind = .all, .scalar = .dword },
17106 } }},28157 } }},
17107 .each = .{ .once = &.{28158 .each = .{ .once = &.{
17108 .{ ._, ._ps, .cmp, .dst0x, .src1x, .vp(switch (cc) {28159 .{ ._, ._ps, .cmp, .dst0x, .src1x, .sp(switch (cc) {
17109 else => unreachable,28160 else => unreachable,
17110 .e => .eq,28161 .e => .eq,
17111 .ne => .neq,28162 .ne => .neq,
...@@ -17116,11 +28167,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17116,11 +28167,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17116 .src_constraints = .{28167 .src_constraints = .{
17117 .{ .scalar_float = .{ .of = .yword, .is = .dword } },28168 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
17118 .{ .scalar_float = .{ .of = .yword, .is = .dword } },28169 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
28170 .any,
17119 },28171 },
17120 .patterns = &.{28172 .patterns = &.{
17121 .{ .src = .{ .to_sse, .mem } },28173 .{ .src = .{ .to_sse, .mem, .none } },
17122 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },28174 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
17123 .{ .src = .{ .to_sse, .to_sse } },28175 .{ .src = .{ .to_sse, .to_sse, .none } },
17124 },28176 },
17125 .dst_temps = .{.{ .mut_rc_mask = .{28177 .dst_temps = .{.{ .mut_rc_mask = .{
17126 .ref = .src0,28178 .ref = .src0,
...@@ -17139,11 +28191,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17139,11 +28191,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17139 .src_constraints = .{28191 .src_constraints = .{
17140 .{ .scalar_float = .{ .of = .qword, .is = .qword } },28192 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
17141 .{ .scalar_float = .{ .of = .qword, .is = .qword } },28193 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
28194 .any,
17142 },28195 },
17143 .patterns = &.{28196 .patterns = &.{
17144 .{ .src = .{ .to_sse, .mem } },28197 .{ .src = .{ .to_sse, .mem, .none } },
17145 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },28198 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
17146 .{ .src = .{ .to_sse, .to_sse } },28199 .{ .src = .{ .to_sse, .to_sse, .none } },
17147 },28200 },
17148 .dst_temps = .{.{ .mut_rc_mask = .{28201 .dst_temps = .{.{ .mut_rc_mask = .{
17149 .ref = .src0,28202 .ref = .src0,
...@@ -17151,7 +28204,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17151,7 +28204,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17151 .info = .{ .kind = .all, .scalar = .qword },28204 .info = .{ .kind = .all, .scalar = .qword },
17152 } }},28205 } }},
17153 .each = .{ .once = &.{28206 .each = .{ .once = &.{
17154 .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) {28207 .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1q, .vp(switch (cc) {
17155 else => unreachable,28208 else => unreachable,
17156 .e => .eq,28209 .e => .eq,
17157 .ne => .neq,28210 .ne => .neq,
...@@ -17162,18 +28215,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17162,18 +28215,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17162 .src_constraints = .{28215 .src_constraints = .{
17163 .{ .scalar_float = .{ .of = .qword, .is = .qword } },28216 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
17164 .{ .scalar_float = .{ .of = .qword, .is = .qword } },28217 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
28218 .any,
17165 },28219 },
17166 .patterns = &.{28220 .patterns = &.{
17167 .{ .src = .{ .to_mut_sse, .mem } },28221 .{ .src = .{ .to_mut_sse, .mem, .none } },
17168 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },28222 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
17169 .{ .src = .{ .to_mut_sse, .to_sse } },28223 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
17170 },28224 },
17171 .dst_temps = .{.{ .ref_mask = .{28225 .dst_temps = .{.{ .ref_mask = .{
17172 .ref = .src0,28226 .ref = .src0,
17173 .info = .{ .kind = .all, .scalar = .qword },28227 .info = .{ .kind = .all, .scalar = .qword },
17174 } }},28228 } }},
17175 .each = .{ .once = &.{28229 .each = .{ .once = &.{
17176 .{ ._, ._sd, .cmp, .dst0x, .src1x, .vp(switch (cc) {28230 .{ ._, ._sd, .cmp, .dst0x, .src1q, .sp(switch (cc) {
17177 else => unreachable,28231 else => unreachable,
17178 .e => .eq,28232 .e => .eq,
17179 .ne => .neq,28233 .ne => .neq,
...@@ -17184,11 +28238,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17184,11 +28238,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17184 .src_constraints = .{28238 .src_constraints = .{
17185 .{ .scalar_float = .{ .of = .xword, .is = .qword } },28239 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
17186 .{ .scalar_float = .{ .of = .xword, .is = .qword } },28240 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
28241 .any,
17187 },28242 },
17188 .patterns = &.{28243 .patterns = &.{
17189 .{ .src = .{ .to_sse, .mem } },28244 .{ .src = .{ .to_sse, .mem, .none } },
17190 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },28245 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
17191 .{ .src = .{ .to_sse, .to_sse } },28246 .{ .src = .{ .to_sse, .to_sse, .none } },
17192 },28247 },
17193 .dst_temps = .{.{ .mut_rc_mask = .{28248 .dst_temps = .{.{ .mut_rc_mask = .{
17194 .ref = .src0,28249 .ref = .src0,
...@@ -17207,18 +28262,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17207,18 +28262,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17207 .src_constraints = .{28262 .src_constraints = .{
17208 .{ .scalar_float = .{ .of = .xword, .is = .qword } },28263 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
17209 .{ .scalar_float = .{ .of = .xword, .is = .qword } },28264 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
28265 .any,
17210 },28266 },
17211 .patterns = &.{28267 .patterns = &.{
17212 .{ .src = .{ .to_mut_sse, .mem } },28268 .{ .src = .{ .to_mut_sse, .mem, .none } },
17213 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },28269 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
17214 .{ .src = .{ .to_mut_sse, .to_sse } },28270 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
17215 },28271 },
17216 .dst_temps = .{.{ .ref_mask = .{28272 .dst_temps = .{.{ .ref_mask = .{
17217 .ref = .src0,28273 .ref = .src0,
17218 .info = .{ .kind = .all, .scalar = .qword },28274 .info = .{ .kind = .all, .scalar = .qword },
17219 } }},28275 } }},
17220 .each = .{ .once = &.{28276 .each = .{ .once = &.{
17221 .{ ._, ._pd, .cmp, .dst0x, .src1x, .vp(switch (cc) {28277 .{ ._, ._pd, .cmp, .dst0x, .src1x, .sp(switch (cc) {
17222 else => unreachable,28278 else => unreachable,
17223 .e => .eq,28279 .e => .eq,
17224 .ne => .neq,28280 .ne => .neq,
...@@ -17229,11 +28285,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17229,11 +28285,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17229 .src_constraints = .{28285 .src_constraints = .{
17230 .{ .scalar_float = .{ .of = .yword, .is = .qword } },28286 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
17231 .{ .scalar_float = .{ .of = .yword, .is = .qword } },28287 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
28288 .any,
17232 },28289 },
17233 .patterns = &.{28290 .patterns = &.{
17234 .{ .src = .{ .to_sse, .mem } },28291 .{ .src = .{ .to_sse, .mem, .none } },
17235 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },28292 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
17236 .{ .src = .{ .to_sse, .to_sse } },28293 .{ .src = .{ .to_sse, .to_sse, .none } },
17237 },28294 },
17238 .dst_temps = .{.{ .mut_rc_mask = .{28295 .dst_temps = .{.{ .mut_rc_mask = .{
17239 .ref = .src0,28296 .ref = .src0,
...@@ -17252,15 +28309,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17252,15 +28309,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17252 .src_constraints = .{28309 .src_constraints = .{
17253 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },28310 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
17254 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },28311 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
28312 .any,
17255 },28313 },
17256 .patterns = &.{28314 .patterns = &.{
17257 .{ .src = .{ .to_mem, .to_mem } },28315 .{ .src = .{ .to_mem, .to_mem, .none } },
17258 },28316 },
17259 .extra_temps = .{28317 .extra_temps = .{
17260 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },28318 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
17261 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },28319 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
17262 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },28320 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
17263 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },28321 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
17264 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },28322 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
17265 .unused,28323 .unused,
17266 .unused,28324 .unused,
...@@ -17290,15 +28348,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17290,15 +28348,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17290 .src_constraints = .{28348 .src_constraints = .{
17291 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },28349 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
17292 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },28350 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
28351 .any,
17293 },28352 },
17294 .patterns = &.{28353 .patterns = &.{
17295 .{ .src = .{ .to_mem, .to_mem } },28354 .{ .src = .{ .to_mem, .to_mem, .none } },
17296 },28355 },
17297 .extra_temps = .{28356 .extra_temps = .{
17298 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },28357 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
17299 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },28358 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
17300 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },28359 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
17301 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },28360 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
17302 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },28361 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
17303 .unused,28362 .unused,
17304 .unused,28363 .unused,
...@@ -17328,21 +28387,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17328,21 +28387,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17328 .src_constraints = .{28387 .src_constraints = .{
17329 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },28388 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17330 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },28389 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28390 .any,
17331 },28391 },
17332 .dst_constraints = .{.{ .bool_vec = .dword }},28392 .dst_constraints = .{.{ .bool_vec = .dword }},
17333 .patterns = &.{28393 .patterns = &.{
17334 .{ .src = .{ .to_mem, .to_mem } },28394 .{ .src = .{ .to_mem, .to_mem, .none } },
17335 },28395 },
17336 .call_frame = .{ .alignment = .@"16" },28396 .call_frame = .{ .alignment = .@"16" },
17337 .extra_temps = .{28397 .extra_temps = .{
17338 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },28398 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
17339 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },28399 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
17340 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },28400 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17341 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {28401 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
17342 else => unreachable,
17343 .e => "__eqhf2",
17344 .ne => "__nehf2",
17345 } } } },
17346 .{ .type = .i32, .kind = .{ .reg = .eax } },28402 .{ .type = .i32, .kind = .{ .reg = .eax } },
17347 .{ .type = .u8, .kind = .{ .reg = .cl } },28403 .{ .type = .u8, .kind = .{ .reg = .cl } },
17348 .{ .type = .u32, .kind = .{ .reg = .edx } },28404 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -17373,21 +28429,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17373,21 +28429,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17373 .src_constraints = .{28429 .src_constraints = .{
17374 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },28430 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17375 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },28431 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28432 .any,
17376 },28433 },
17377 .dst_constraints = .{.{ .bool_vec = .dword }},28434 .dst_constraints = .{.{ .bool_vec = .dword }},
17378 .patterns = &.{28435 .patterns = &.{
17379 .{ .src = .{ .to_mem, .to_mem } },28436 .{ .src = .{ .to_mem, .to_mem, .none } },
17380 },28437 },
17381 .call_frame = .{ .alignment = .@"16" },28438 .call_frame = .{ .alignment = .@"16" },
17382 .extra_temps = .{28439 .extra_temps = .{
17383 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },28440 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
17384 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },28441 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
17385 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },28442 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17386 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {28443 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
17387 else => unreachable,
17388 .e => "__eqhf2",
17389 .ne => "__nehf2",
17390 } } } },
17391 .{ .type = .i32, .kind = .{ .reg = .eax } },28444 .{ .type = .i32, .kind = .{ .reg = .eax } },
17392 .{ .type = .u8, .kind = .{ .reg = .cl } },28445 .{ .type = .u8, .kind = .{ .reg = .cl } },
17393 .{ .type = .u32, .kind = .{ .reg = .edx } },28446 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -17418,21 +28471,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17418,21 +28471,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17418 .src_constraints = .{28471 .src_constraints = .{
17419 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },28472 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17420 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },28473 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28474 .any,
17421 },28475 },
17422 .dst_constraints = .{.{ .bool_vec = .dword }},28476 .dst_constraints = .{.{ .bool_vec = .dword }},
17423 .patterns = &.{28477 .patterns = &.{
17424 .{ .src = .{ .to_mem, .to_mem } },28478 .{ .src = .{ .to_mem, .to_mem, .none } },
17425 },28479 },
17426 .call_frame = .{ .alignment = .@"16" },28480 .call_frame = .{ .alignment = .@"16" },
17427 .extra_temps = .{28481 .extra_temps = .{
17428 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },28482 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
17429 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },28483 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
17430 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },28484 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17431 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {28485 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
17432 else => unreachable,
17433 .e => "__eqhf2",
17434 .ne => "__nehf2",
17435 } } } },
17436 .{ .type = .i32, .kind = .{ .reg = .eax } },28486 .{ .type = .i32, .kind = .{ .reg = .eax } },
17437 .{ .type = .u8, .kind = .{ .reg = .cl } },28487 .{ .type = .u8, .kind = .{ .reg = .cl } },
17438 .{ .type = .u32, .kind = .{ .reg = .edx } },28488 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -17464,21 +28514,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17464,21 +28514,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17464 .src_constraints = .{28514 .src_constraints = .{
17465 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },28515 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17466 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },28516 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28517 .any,
17467 },28518 },
17468 .dst_constraints = .{.{ .bool_vec = .dword }},28519 .dst_constraints = .{.{ .bool_vec = .dword }},
17469 .patterns = &.{28520 .patterns = &.{
17470 .{ .src = .{ .to_mem, .to_mem } },28521 .{ .src = .{ .to_mem, .to_mem, .none } },
17471 },28522 },
17472 .call_frame = .{ .alignment = .@"16" },28523 .call_frame = .{ .alignment = .@"16" },
17473 .extra_temps = .{28524 .extra_temps = .{
17474 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },28525 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
17475 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },28526 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
17476 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },28527 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17477 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {28528 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
17478 else => unreachable,
17479 .e => "__eqhf2",
17480 .ne => "__nehf2",
17481 } } } },
17482 .{ .type = .i32, .kind = .{ .reg = .eax } },28529 .{ .type = .i32, .kind = .{ .reg = .eax } },
17483 .{ .type = .u8, .kind = .{ .reg = .cl } },28530 .{ .type = .u8, .kind = .{ .reg = .cl } },
17484 .{ .type = .u32, .kind = .{ .reg = .edx } },28531 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -17510,21 +28557,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17510,21 +28557,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17510 .src_constraints = .{28557 .src_constraints = .{
17511 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },28558 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17512 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },28559 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28560 .any,
17513 },28561 },
17514 .dst_constraints = .{.{ .bool_vec = .dword }},28562 .dst_constraints = .{.{ .bool_vec = .dword }},
17515 .patterns = &.{28563 .patterns = &.{
17516 .{ .src = .{ .to_mem, .to_mem } },28564 .{ .src = .{ .to_mem, .to_mem, .none } },
17517 },28565 },
17518 .call_frame = .{ .alignment = .@"16" },28566 .call_frame = .{ .alignment = .@"16" },
17519 .extra_temps = .{28567 .extra_temps = .{
17520 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },28568 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
17521 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },28569 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
17522 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },28570 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17523 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {28571 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
17524 else => unreachable,
17525 .e => "__eqhf2",
17526 .ne => "__nehf2",
17527 } } } },
17528 .{ .type = .i32, .kind = .{ .reg = .eax } },28572 .{ .type = .i32, .kind = .{ .reg = .eax } },
17529 .{ .type = .u8, .kind = .{ .reg = .cl } },28573 .{ .type = .u8, .kind = .{ .reg = .cl } },
17530 .{ .type = .u32, .kind = .{ .reg = .edx } },28574 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -17558,21 +28602,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17558,21 +28602,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17558 .src_constraints = .{28602 .src_constraints = .{
17559 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },28603 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17560 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },28604 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28605 .any,
17561 },28606 },
17562 .dst_constraints = .{.{ .bool_vec = .dword }},28607 .dst_constraints = .{.{ .bool_vec = .dword }},
17563 .patterns = &.{28608 .patterns = &.{
17564 .{ .src = .{ .to_mem, .to_mem } },28609 .{ .src = .{ .to_mem, .to_mem, .none } },
17565 },28610 },
17566 .call_frame = .{ .alignment = .@"16" },28611 .call_frame = .{ .alignment = .@"16" },
17567 .extra_temps = .{28612 .extra_temps = .{
17568 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },28613 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
17569 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },28614 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
17570 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },28615 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17571 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {28616 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
17572 else => unreachable,
17573 .e => "__eqhf2",
17574 .ne => "__nehf2",
17575 } } } },
17576 .{ .type = .i32, .kind = .{ .reg = .eax } },28617 .{ .type = .i32, .kind = .{ .reg = .eax } },
17577 .{ .type = .u8, .kind = .{ .reg = .cl } },28618 .{ .type = .u8, .kind = .{ .reg = .cl } },
17578 .{ .type = .u32, .kind = .{ .reg = .edx } },28619 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -17606,9 +28647,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17606,9 +28647,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17606 .src_constraints = .{28647 .src_constraints = .{
17607 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },28648 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17608 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },28649 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28650 .any,
17609 },28651 },
17610 .patterns = &.{28652 .patterns = &.{
17611 .{ .src = .{ .to_mem, .to_mem } },28653 .{ .src = .{ .to_mem, .to_mem, .none } },
17612 },28654 },
17613 .call_frame = .{ .alignment = .@"16" },28655 .call_frame = .{ .alignment = .@"16" },
17614 .extra_temps = .{28656 .extra_temps = .{
...@@ -17616,11 +28658,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17616,11 +28658,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17616 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },28658 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
17617 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },28659 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
17618 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },28660 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17619 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {28661 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
17620 else => unreachable,
17621 .e => "__eqhf2",
17622 .ne => "__nehf2",
17623 } } } },
17624 .{ .type = .i32, .kind = .{ .reg = .eax } },28662 .{ .type = .i32, .kind = .{ .reg = .eax } },
17625 .{ .type = .u8, .kind = .{ .reg = .cl } },28663 .{ .type = .u8, .kind = .{ .reg = .cl } },
17626 .{ .type = .u64, .kind = .{ .reg = .rdx } },28664 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -17660,9 +28698,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17660,9 +28698,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17660 .src_constraints = .{28698 .src_constraints = .{
17661 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },28699 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17662 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },28700 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28701 .any,
17663 },28702 },
17664 .patterns = &.{28703 .patterns = &.{
17665 .{ .src = .{ .to_mem, .to_mem } },28704 .{ .src = .{ .to_mem, .to_mem, .none } },
17666 },28705 },
17667 .call_frame = .{ .alignment = .@"16" },28706 .call_frame = .{ .alignment = .@"16" },
17668 .extra_temps = .{28707 .extra_temps = .{
...@@ -17670,11 +28709,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17670,11 +28709,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17670 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },28709 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
17671 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },28710 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
17672 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },28711 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17673 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {28712 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
17674 else => unreachable,
17675 .e => "__eqhf2",
17676 .ne => "__nehf2",
17677 } } } },
17678 .{ .type = .i32, .kind = .{ .reg = .eax } },28713 .{ .type = .i32, .kind = .{ .reg = .eax } },
17679 .{ .type = .u8, .kind = .{ .reg = .cl } },28714 .{ .type = .u8, .kind = .{ .reg = .cl } },
17680 .{ .type = .u64, .kind = .{ .reg = .rdx } },28715 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -17714,9 +28749,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17714,9 +28749,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17714 .src_constraints = .{28749 .src_constraints = .{
17715 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },28750 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17716 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },28751 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28752 .any,
17717 },28753 },
17718 .patterns = &.{28754 .patterns = &.{
17719 .{ .src = .{ .to_mem, .to_mem } },28755 .{ .src = .{ .to_mem, .to_mem, .none } },
17720 },28756 },
17721 .call_frame = .{ .alignment = .@"16" },28757 .call_frame = .{ .alignment = .@"16" },
17722 .extra_temps = .{28758 .extra_temps = .{
...@@ -17724,11 +28760,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17724,11 +28760,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17724 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },28760 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
17725 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },28761 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
17726 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },28762 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17727 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {28763 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
17728 else => unreachable,
17729 .e => "__eqhf2",
17730 .ne => "__nehf2",
17731 } } } },
17732 .{ .type = .i32, .kind = .{ .reg = .eax } },28764 .{ .type = .i32, .kind = .{ .reg = .eax } },
17733 .{ .type = .u8, .kind = .{ .reg = .cl } },28765 .{ .type = .u8, .kind = .{ .reg = .cl } },
17734 .{ .type = .u64, .kind = .{ .reg = .rdx } },28766 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -17769,9 +28801,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17769,9 +28801,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17769 .src_constraints = .{28801 .src_constraints = .{
17770 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },28802 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17771 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },28803 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28804 .any,
17772 },28805 },
17773 .patterns = &.{28806 .patterns = &.{
17774 .{ .src = .{ .to_mem, .to_mem } },28807 .{ .src = .{ .to_mem, .to_mem, .none } },
17775 },28808 },
17776 .call_frame = .{ .alignment = .@"16" },28809 .call_frame = .{ .alignment = .@"16" },
17777 .extra_temps = .{28810 .extra_temps = .{
...@@ -17779,11 +28812,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17779,11 +28812,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17779 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },28812 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
17780 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },28813 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
17781 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },28814 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17782 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {28815 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
17783 else => unreachable,
17784 .e => "__eqhf2",
17785 .ne => "__nehf2",
17786 } } } },
17787 .{ .type = .i32, .kind = .{ .reg = .eax } },28816 .{ .type = .i32, .kind = .{ .reg = .eax } },
17788 .{ .type = .u8, .kind = .{ .reg = .cl } },28817 .{ .type = .u8, .kind = .{ .reg = .cl } },
17789 .{ .type = .u64, .kind = .{ .reg = .rdx } },28818 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -17824,9 +28853,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17824,9 +28853,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17824 .src_constraints = .{28853 .src_constraints = .{
17825 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },28854 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17826 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },28855 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28856 .any,
17827 },28857 },
17828 .patterns = &.{28858 .patterns = &.{
17829 .{ .src = .{ .to_mem, .to_mem } },28859 .{ .src = .{ .to_mem, .to_mem, .none } },
17830 },28860 },
17831 .call_frame = .{ .alignment = .@"16" },28861 .call_frame = .{ .alignment = .@"16" },
17832 .extra_temps = .{28862 .extra_temps = .{
...@@ -17834,11 +28864,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17834,11 +28864,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17834 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },28864 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
17835 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },28865 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
17836 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },28866 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17837 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {28867 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
17838 else => unreachable,
17839 .e => "__eqhf2",
17840 .ne => "__nehf2",
17841 } } } },
17842 .{ .type = .i32, .kind = .{ .reg = .eax } },28868 .{ .type = .i32, .kind = .{ .reg = .eax } },
17843 .{ .type = .u8, .kind = .{ .reg = .cl } },28869 .{ .type = .u8, .kind = .{ .reg = .cl } },
17844 .{ .type = .u64, .kind = .{ .reg = .rdx } },28870 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -17881,9 +28907,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17881,9 +28907,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17881 .src_constraints = .{28907 .src_constraints = .{
17882 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },28908 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17883 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },28909 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28910 .any,
17884 },28911 },
17885 .patterns = &.{28912 .patterns = &.{
17886 .{ .src = .{ .to_mem, .to_mem } },28913 .{ .src = .{ .to_mem, .to_mem, .none } },
17887 },28914 },
17888 .call_frame = .{ .alignment = .@"16" },28915 .call_frame = .{ .alignment = .@"16" },
17889 .extra_temps = .{28916 .extra_temps = .{
...@@ -17891,11 +28918,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17891,11 +28918,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17891 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },28918 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
17892 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },28919 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
17893 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },28920 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17894 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {28921 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
17895 else => unreachable,
17896 .e => "__eqhf2",
17897 .ne => "__nehf2",
17898 } } } },
17899 .{ .type = .i32, .kind = .{ .reg = .eax } },28922 .{ .type = .i32, .kind = .{ .reg = .eax } },
17900 .{ .type = .u8, .kind = .{ .reg = .cl } },28923 .{ .type = .u8, .kind = .{ .reg = .cl } },
17901 .{ .type = .u64, .kind = .{ .reg = .rdx } },28924 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -17938,9 +28961,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17938,9 +28961,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17938 .src_constraints = .{28961 .src_constraints = .{
17939 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },28962 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
17940 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },28963 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
28964 .any,
17941 },28965 },
17942 .patterns = &.{28966 .patterns = &.{
17943 .{ .src = .{ .to_mem, .to_mem } },28967 .{ .src = .{ .to_mem, .to_mem, .none } },
17944 },28968 },
17945 .extra_temps = .{28969 .extra_temps = .{
17946 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },28970 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -17975,9 +28999,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17975,9 +28999,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17975 .src_constraints = .{28999 .src_constraints = .{
17976 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },29000 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
17977 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },29001 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
29002 .any,
17978 },29003 },
17979 .patterns = &.{29004 .patterns = &.{
17980 .{ .src = .{ .to_mem, .to_mem } },29005 .{ .src = .{ .to_mem, .to_mem, .none } },
17981 },29006 },
17982 .extra_temps = .{29007 .extra_temps = .{
17983 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },29008 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18012,9 +29037,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18012,9 +29037,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18012 .src_constraints = .{29037 .src_constraints = .{
18013 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },29038 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
18014 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },29039 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
29040 .any,
18015 },29041 },
18016 .patterns = &.{29042 .patterns = &.{
18017 .{ .src = .{ .to_mem, .to_mem } },29043 .{ .src = .{ .to_mem, .to_mem, .none } },
18018 },29044 },
18019 .extra_temps = .{29045 .extra_temps = .{
18020 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },29046 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18034,12 +29060,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18034,12 +29060,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18034 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },29060 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
18035 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },29061 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
18036 .{ ._, ._ps, .mova, .tmp3x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ },29062 .{ ._, ._ps, .mova, .tmp3x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ },
18037 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .vp(switch (cc) {29063 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
18038 else => unreachable,29064 else => unreachable,
18039 .e => .eq,29065 .e => .eq,
18040 .ne => .neq,29066 .ne => .neq,
18041 }), ._ },29067 }), ._ },
18042 .{ ._, ._ps, .cmp, .tmp3x, .memiad(.src1x, .tmp0, .add_size, 16), .vp(switch (cc) {29068 .{ ._, ._ps, .cmp, .tmp3x, .memiad(.src1x, .tmp0, .add_size, 16), .sp(switch (cc) {
18043 else => unreachable,29069 else => unreachable,
18044 .e => .eq,29070 .e => .eq,
18045 .ne => .neq,29071 .ne => .neq,
...@@ -18057,9 +29083,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18057,9 +29083,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18057 .src_constraints = .{29083 .src_constraints = .{
18058 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },29084 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
18059 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },29085 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
29086 .any,
18060 },29087 },
18061 .patterns = &.{29088 .patterns = &.{
18062 .{ .src = .{ .to_mem, .to_mem } },29089 .{ .src = .{ .to_mem, .to_mem, .none } },
18063 },29090 },
18064 .extra_temps = .{29091 .extra_temps = .{
18065 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },29092 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18078,14 +29105,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18078,14 +29105,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18078 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },29105 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
18079 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },29106 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
18080 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },29107 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
18081 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .vp(switch (cc) {29108 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
18082 else => unreachable,29109 else => unreachable,
18083 .e => .eq,29110 .e => .eq,
18084 .ne => .neq,29111 .ne => .neq,
18085 }), ._ },29112 }), ._ },
18086 .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ },29113 .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ },
18087 .{ ._, ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ },29114 .{ ._, ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ },
18088 .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, 16), .vp(switch (cc) {29115 .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, 16), .sp(switch (cc) {
18089 else => unreachable,29116 else => unreachable,
18090 .e => .eq,29117 .e => .eq,
18091 .ne => .neq,29118 .ne => .neq,
...@@ -18103,9 +29130,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18103,9 +29130,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18103 .src_constraints = .{29130 .src_constraints = .{
18104 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },29131 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
18105 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },29132 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
29133 .any,
18106 },29134 },
18107 .patterns = &.{29135 .patterns = &.{
18108 .{ .src = .{ .to_mem, .to_mem } },29136 .{ .src = .{ .to_mem, .to_mem, .none } },
18109 },29137 },
18110 .extra_temps = .{29138 .extra_temps = .{
18111 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },29139 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18125,7 +29153,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18125,7 +29153,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18125 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },29153 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
18126 .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },29154 .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
18127 .{ .@"0:", ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, -16), ._, ._ },29155 .{ .@"0:", ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, -16), ._, ._ },
18128 .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, -16), .vp(switch (cc) {29156 .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, -16), .sp(switch (cc) {
18129 else => unreachable,29157 else => unreachable,
18130 .e => .eq,29158 .e => .eq,
18131 .ne => .neq,29159 .ne => .neq,
...@@ -18136,7 +29164,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18136,7 +29164,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18136 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },29164 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
18137 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },29165 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
18138 .{ .@"1:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },29166 .{ .@"1:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
18139 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .vp(switch (cc) {29167 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
18140 else => unreachable,29168 else => unreachable,
18141 .e => .eq,29169 .e => .eq,
18142 .ne => .neq,29170 .ne => .neq,
...@@ -18151,9 +29179,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18151,9 +29179,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18151 .src_constraints = .{29179 .src_constraints = .{
18152 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },29180 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
18153 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },29181 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
29182 .any,
18154 },29183 },
18155 .patterns = &.{29184 .patterns = &.{
18156 .{ .src = .{ .to_mem, .to_mem } },29185 .{ .src = .{ .to_mem, .to_mem, .none } },
18157 },29186 },
18158 .extra_temps = .{29187 .extra_temps = .{
18159 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },29188 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18197,9 +29226,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18197,9 +29226,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18197 .src_constraints = .{29226 .src_constraints = .{
18198 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },29227 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
18199 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },29228 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
29229 .any,
18200 },29230 },
18201 .patterns = &.{29231 .patterns = &.{
18202 .{ .src = .{ .to_mem, .to_mem } },29232 .{ .src = .{ .to_mem, .to_mem, .none } },
18203 },29233 },
18204 .extra_temps = .{29234 .extra_temps = .{
18205 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },29235 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18243,9 +29273,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18243,9 +29273,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18243 .src_constraints = .{29273 .src_constraints = .{
18244 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },29274 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
18245 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },29275 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
29276 .any,
18246 },29277 },
18247 .patterns = &.{29278 .patterns = &.{
18248 .{ .src = .{ .to_mem, .to_mem } },29279 .{ .src = .{ .to_mem, .to_mem, .none } },
18249 },29280 },
18250 .extra_temps = .{29281 .extra_temps = .{
18251 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },29282 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18292,9 +29323,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18292,9 +29323,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18292 .src_constraints = .{29323 .src_constraints = .{
18293 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },29324 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
18294 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },29325 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
29326 .any,
18295 },29327 },
18296 .patterns = &.{29328 .patterns = &.{
18297 .{ .src = .{ .to_mem, .to_mem } },29329 .{ .src = .{ .to_mem, .to_mem, .none } },
18298 },29330 },
18299 .extra_temps = .{29331 .extra_temps = .{
18300 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },29332 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18314,7 +29346,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18314,7 +29346,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18314 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },29346 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
18315 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },29347 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
18316 .{ .@"0:", ._pd, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },29348 .{ .@"0:", ._pd, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
18317 .{ ._, ._pd, .cmp, .tmp3x, .memia(.src1x, .tmp0, .add_size), .vp(switch (cc) {29349 .{ ._, ._pd, .cmp, .tmp3x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
18318 else => unreachable,29350 else => unreachable,
18319 .e => .eq,29351 .e => .eq,
18320 .ne => .neq,29352 .ne => .neq,
...@@ -18341,9 +29373,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18341,9 +29373,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18341 .src_constraints = .{29373 .src_constraints = .{
18342 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },29374 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
18343 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },29375 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
29376 .any,
18344 },29377 },
18345 .patterns = &.{29378 .patterns = &.{
18346 .{ .src = .{ .to_mem, .to_mem } },29379 .{ .src = .{ .to_mem, .to_mem, .none } },
18347 },29380 },
18348 .extra_temps = .{29381 .extra_temps = .{
18349 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },29382 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18351,8 +29384,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18351,8 +29384,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18351 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },29384 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
18352 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },29385 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
18353 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },29386 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
18354 .{ .type = .f80, .kind = .{ .reg = .st6 } },29387 .{ .type = .f64, .kind = .{ .reg = .st6 } },
18355 .{ .type = .f80, .kind = .{ .reg = .st7 } },29388 .{ .type = .f64, .kind = .{ .reg = .st7 } },
18356 .unused,29389 .unused,
18357 .unused,29390 .unused,
18358 },29391 },
...@@ -18400,9 +29433,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18400,9 +29433,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18400 .src_constraints = .{29433 .src_constraints = .{
18401 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },29434 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
18402 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },29435 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
29436 .any,
18403 },29437 },
18404 .patterns = &.{29438 .patterns = &.{
18405 .{ .src = .{ .to_mem, .to_mem } },29439 .{ .src = .{ .to_mem, .to_mem, .none } },
18406 },29440 },
18407 .extra_temps = .{29441 .extra_temps = .{
18408 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },29442 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18410,8 +29444,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18410,8 +29444,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18410 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },29444 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
18411 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },29445 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
18412 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },29446 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
18413 .{ .type = .f80, .kind = .{ .reg = .st6 } },29447 .{ .type = .f64, .kind = .{ .reg = .st6 } },
18414 .{ .type = .f80, .kind = .{ .reg = .st7 } },29448 .{ .type = .f64, .kind = .{ .reg = .st7 } },
18415 .unused,29449 .unused,
18416 .unused,29450 .unused,
18417 },29451 },
...@@ -18459,17 +29493,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18459,17 +29493,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18459 .src_constraints = .{29493 .src_constraints = .{
18460 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },29494 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
18461 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },29495 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
29496 .any,
18462 },29497 },
18463 .patterns = &.{29498 .patterns = &.{
18464 .{ .src = .{ .to_mem, .to_mem } },29499 .{ .src = .{ .to_mem, .to_mem, .none } },
18465 },29500 },
18466 .extra_temps = .{29501 .extra_temps = .{
18467 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },29502 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
18468 .{ .type = .u32, .kind = .{ .reg = .rcx } },29503 .{ .type = .u32, .kind = .{ .reg = .rcx } },
18469 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },29504 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
18470 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },29505 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
18471 .{ .type = .f80, .kind = .{ .reg = .st6 } },29506 .{ .type = .f64, .kind = .{ .reg = .st6 } },
18472 .{ .type = .f80, .kind = .{ .reg = .st7 } },29507 .{ .type = .f64, .kind = .{ .reg = .st7 } },
18473 .{ .type = .u8, .kind = .{ .reg = .ah } },29508 .{ .type = .u8, .kind = .{ .reg = .ah } },
18474 .unused,29509 .unused,
18475 .unused,29510 .unused,
...@@ -18509,9 +29544,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18509,9 +29544,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18509 .src_constraints = .{29544 .src_constraints = .{
18510 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },29545 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
18511 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },29546 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
29547 .any,
18512 },29548 },
18513 .patterns = &.{29549 .patterns = &.{
18514 .{ .src = .{ .to_mem, .to_mem } },29550 .{ .src = .{ .to_mem, .to_mem, .none } },
18515 },29551 },
18516 .extra_temps = .{29552 .extra_temps = .{
18517 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },29553 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18568,9 +29604,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18568,9 +29604,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18568 .src_constraints = .{29604 .src_constraints = .{
18569 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },29605 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
18570 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },29606 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
29607 .any,
18571 },29608 },
18572 .patterns = &.{29609 .patterns = &.{
18573 .{ .src = .{ .to_mem, .to_mem } },29610 .{ .src = .{ .to_mem, .to_mem, .none } },
18574 },29611 },
18575 .extra_temps = .{29612 .extra_temps = .{
18576 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },29613 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18627,9 +29664,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18627,9 +29664,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18627 .src_constraints = .{29664 .src_constraints = .{
18628 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },29665 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
18629 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },29666 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
29667 .any,
18630 },29668 },
18631 .patterns = &.{29669 .patterns = &.{
18632 .{ .src = .{ .to_mem, .to_mem } },29670 .{ .src = .{ .to_mem, .to_mem, .none } },
18633 },29671 },
18634 .extra_temps = .{29672 .extra_temps = .{
18635 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },29673 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18677,10 +29715,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18677,10 +29715,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18677 .src_constraints = .{29715 .src_constraints = .{
18678 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },29716 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18679 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },29717 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
29718 .any,
18680 },29719 },
18681 .dst_constraints = .{.{ .bool_vec = .dword }},29720 .dst_constraints = .{.{ .bool_vec = .dword }},
18682 .patterns = &.{29721 .patterns = &.{
18683 .{ .src = .{ .to_mem, .to_mem } },29722 .{ .src = .{ .to_mem, .to_mem, .none } },
18684 },29723 },
18685 .call_frame = .{ .alignment = .@"16" },29724 .call_frame = .{ .alignment = .@"16" },
18686 .extra_temps = .{29725 .extra_temps = .{
...@@ -18688,11 +29727,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18688,11 +29727,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18688 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },29727 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
18689 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },29728 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
18690 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },29729 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18691 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {29730 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
18692 else => unreachable,
18693 .e => "__eqtf2",
18694 .ne => "__netf2",
18695 } } } },
18696 .{ .type = .i32, .kind = .{ .reg = .eax } },29731 .{ .type = .i32, .kind = .{ .reg = .eax } },
18697 .{ .type = .u8, .kind = .{ .reg = .cl } },29732 .{ .type = .u8, .kind = .{ .reg = .cl } },
18698 .{ .type = .u32, .kind = .{ .reg = .edx } },29733 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -18722,10 +29757,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18722,10 +29757,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18722 .src_constraints = .{29757 .src_constraints = .{
18723 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },29758 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18724 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },29759 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
29760 .any,
18725 },29761 },
18726 .dst_constraints = .{.{ .bool_vec = .dword }},29762 .dst_constraints = .{.{ .bool_vec = .dword }},
18727 .patterns = &.{29763 .patterns = &.{
18728 .{ .src = .{ .to_mem, .to_mem } },29764 .{ .src = .{ .to_mem, .to_mem, .none } },
18729 },29765 },
18730 .call_frame = .{ .alignment = .@"16" },29766 .call_frame = .{ .alignment = .@"16" },
18731 .extra_temps = .{29767 .extra_temps = .{
...@@ -18733,11 +29769,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18733,11 +29769,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18733 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },29769 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
18734 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },29770 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
18735 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },29771 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18736 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {29772 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
18737 else => unreachable,
18738 .e => "__eqtf2",
18739 .ne => "__netf2",
18740 } } } },
18741 .{ .type = .i32, .kind = .{ .reg = .eax } },29773 .{ .type = .i32, .kind = .{ .reg = .eax } },
18742 .{ .type = .u8, .kind = .{ .reg = .cl } },29774 .{ .type = .u8, .kind = .{ .reg = .cl } },
18743 .{ .type = .u32, .kind = .{ .reg = .edx } },29775 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -18767,10 +29799,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18767,10 +29799,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18767 .src_constraints = .{29799 .src_constraints = .{
18768 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },29800 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18769 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },29801 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
29802 .any,
18770 },29803 },
18771 .dst_constraints = .{.{ .bool_vec = .dword }},29804 .dst_constraints = .{.{ .bool_vec = .dword }},
18772 .patterns = &.{29805 .patterns = &.{
18773 .{ .src = .{ .to_mem, .to_mem } },29806 .{ .src = .{ .to_mem, .to_mem, .none } },
18774 },29807 },
18775 .call_frame = .{ .alignment = .@"16" },29808 .call_frame = .{ .alignment = .@"16" },
18776 .extra_temps = .{29809 .extra_temps = .{
...@@ -18778,11 +29811,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18778,11 +29811,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18778 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },29811 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
18779 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },29812 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
18780 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },29813 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18781 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {29814 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
18782 else => unreachable,
18783 .e => "__eqtf2",
18784 .ne => "__netf2",
18785 } } } },
18786 .{ .type = .i32, .kind = .{ .reg = .eax } },29815 .{ .type = .i32, .kind = .{ .reg = .eax } },
18787 .{ .type = .u8, .kind = .{ .reg = .cl } },29816 .{ .type = .u8, .kind = .{ .reg = .cl } },
18788 .{ .type = .u32, .kind = .{ .reg = .edx } },29817 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -18812,10 +29841,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18812,10 +29841,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18812 .src_constraints = .{29841 .src_constraints = .{
18813 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },29842 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18814 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },29843 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
29844 .any,
18815 },29845 },
18816 .dst_constraints = .{.{ .bool_vec = .dword }},29846 .dst_constraints = .{.{ .bool_vec = .dword }},
18817 .patterns = &.{29847 .patterns = &.{
18818 .{ .src = .{ .to_mem, .to_mem } },29848 .{ .src = .{ .to_mem, .to_mem, .none } },
18819 },29849 },
18820 .call_frame = .{ .alignment = .@"16" },29850 .call_frame = .{ .alignment = .@"16" },
18821 .extra_temps = .{29851 .extra_temps = .{
...@@ -18823,11 +29853,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18823,11 +29853,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18823 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },29853 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
18824 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },29854 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
18825 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },29855 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18826 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {29856 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
18827 else => unreachable,
18828 .e => "__eqtf2",
18829 .ne => "__netf2",
18830 } } } },
18831 .{ .type = .i32, .kind = .{ .reg = .eax } },29857 .{ .type = .i32, .kind = .{ .reg = .eax } },
18832 .{ .type = .u8, .kind = .{ .reg = .cl } },29858 .{ .type = .u8, .kind = .{ .reg = .cl } },
18833 .{ .type = .u32, .kind = .{ .reg = .edx } },29859 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -18857,10 +29883,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18857,10 +29883,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18857 .src_constraints = .{29883 .src_constraints = .{
18858 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },29884 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18859 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },29885 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
29886 .any,
18860 },29887 },
18861 .dst_constraints = .{.{ .bool_vec = .dword }},29888 .dst_constraints = .{.{ .bool_vec = .dword }},
18862 .patterns = &.{29889 .patterns = &.{
18863 .{ .src = .{ .to_mem, .to_mem } },29890 .{ .src = .{ .to_mem, .to_mem, .none } },
18864 },29891 },
18865 .call_frame = .{ .alignment = .@"16" },29892 .call_frame = .{ .alignment = .@"16" },
18866 .extra_temps = .{29893 .extra_temps = .{
...@@ -18868,11 +29895,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18868,11 +29895,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18868 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },29895 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
18869 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },29896 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
18870 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },29897 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18871 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {29898 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
18872 else => unreachable,
18873 .e => "__eqtf2",
18874 .ne => "__netf2",
18875 } } } },
18876 .{ .type = .i32, .kind = .{ .reg = .eax } },29899 .{ .type = .i32, .kind = .{ .reg = .eax } },
18877 .{ .type = .u8, .kind = .{ .reg = .cl } },29900 .{ .type = .u8, .kind = .{ .reg = .cl } },
18878 .{ .type = .u32, .kind = .{ .reg = .edx } },29901 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -18902,10 +29925,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18902,10 +29925,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18902 .src_constraints = .{29925 .src_constraints = .{
18903 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },29926 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18904 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },29927 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
29928 .any,
18905 },29929 },
18906 .dst_constraints = .{.{ .bool_vec = .dword }},29930 .dst_constraints = .{.{ .bool_vec = .dword }},
18907 .patterns = &.{29931 .patterns = &.{
18908 .{ .src = .{ .to_mem, .to_mem } },29932 .{ .src = .{ .to_mem, .to_mem, .none } },
18909 },29933 },
18910 .call_frame = .{ .alignment = .@"16" },29934 .call_frame = .{ .alignment = .@"16" },
18911 .extra_temps = .{29935 .extra_temps = .{
...@@ -18913,11 +29937,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18913,11 +29937,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18913 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },29937 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
18914 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },29938 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
18915 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },29939 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18916 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {29940 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
18917 else => unreachable,
18918 .e => "__eqtf2",
18919 .ne => "__netf2",
18920 } } } },
18921 .{ .type = .i32, .kind = .{ .reg = .eax } },29941 .{ .type = .i32, .kind = .{ .reg = .eax } },
18922 .{ .type = .u8, .kind = .{ .reg = .cl } },29942 .{ .type = .u8, .kind = .{ .reg = .cl } },
18923 .{ .type = .u32, .kind = .{ .reg = .edx } },29943 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -18947,9 +29967,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18947,9 +29967,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18947 .src_constraints = .{29967 .src_constraints = .{
18948 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },29968 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18949 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },29969 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
29970 .any,
18950 },29971 },
18951 .patterns = &.{29972 .patterns = &.{
18952 .{ .src = .{ .to_mem, .to_mem } },29973 .{ .src = .{ .to_mem, .to_mem, .none } },
18953 },29974 },
18954 .call_frame = .{ .alignment = .@"16" },29975 .call_frame = .{ .alignment = .@"16" },
18955 .extra_temps = .{29976 .extra_temps = .{
...@@ -18958,11 +29979,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18958,11 +29979,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18958 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },29979 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
18959 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },29980 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
18960 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },29981 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18961 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {29982 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
18962 else => unreachable,
18963 .e => "__eqtf2",
18964 .ne => "__netf2",
18965 } } } },
18966 .{ .type = .i32, .kind = .{ .reg = .eax } },29983 .{ .type = .i32, .kind = .{ .reg = .eax } },
18967 .{ .type = .u8, .kind = .{ .reg = .cl } },29984 .{ .type = .u8, .kind = .{ .reg = .cl } },
18968 .{ .type = .u64, .kind = .{ .reg = .rdx } },29985 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -19001,9 +30018,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19001,9 +30018,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19001 .src_constraints = .{30018 .src_constraints = .{
19002 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },30019 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
19003 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },30020 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
30021 .any,
19004 },30022 },
19005 .patterns = &.{30023 .patterns = &.{
19006 .{ .src = .{ .to_mem, .to_mem } },30024 .{ .src = .{ .to_mem, .to_mem, .none } },
19007 },30025 },
19008 .call_frame = .{ .alignment = .@"16" },30026 .call_frame = .{ .alignment = .@"16" },
19009 .extra_temps = .{30027 .extra_temps = .{
...@@ -19012,11 +30030,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19012,11 +30030,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19012 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },30030 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
19013 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },30031 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
19014 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },30032 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
19015 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {30033 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
19016 else => unreachable,
19017 .e => "__eqtf2",
19018 .ne => "__netf2",
19019 } } } },
19020 .{ .type = .i32, .kind = .{ .reg = .eax } },30034 .{ .type = .i32, .kind = .{ .reg = .eax } },
19021 .{ .type = .u8, .kind = .{ .reg = .cl } },30035 .{ .type = .u8, .kind = .{ .reg = .cl } },
19022 .{ .type = .u64, .kind = .{ .reg = .rdx } },30036 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -19055,9 +30069,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19055,9 +30069,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19055 .src_constraints = .{30069 .src_constraints = .{
19056 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },30070 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
19057 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },30071 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
30072 .any,
19058 },30073 },
19059 .patterns = &.{30074 .patterns = &.{
19060 .{ .src = .{ .to_mem, .to_mem } },30075 .{ .src = .{ .to_mem, .to_mem, .none } },
19061 },30076 },
19062 .call_frame = .{ .alignment = .@"16" },30077 .call_frame = .{ .alignment = .@"16" },
19063 .extra_temps = .{30078 .extra_temps = .{
...@@ -19066,11 +30081,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19066,11 +30081,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19066 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },30081 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
19067 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },30082 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
19068 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },30083 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
19069 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {30084 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
19070 else => unreachable,
19071 .e => "__eqtf2",
19072 .ne => "__netf2",
19073 } } } },
19074 .{ .type = .i32, .kind = .{ .reg = .eax } },30085 .{ .type = .i32, .kind = .{ .reg = .eax } },
19075 .{ .type = .u8, .kind = .{ .reg = .cl } },30086 .{ .type = .u8, .kind = .{ .reg = .cl } },
19076 .{ .type = .u64, .kind = .{ .reg = .rdx } },30087 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -19109,9 +30120,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19109,9 +30120,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19109 .src_constraints = .{30120 .src_constraints = .{
19110 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },30121 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
19111 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },30122 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
30123 .any,
19112 },30124 },
19113 .patterns = &.{30125 .patterns = &.{
19114 .{ .src = .{ .to_mem, .to_mem } },30126 .{ .src = .{ .to_mem, .to_mem, .none } },
19115 },30127 },
19116 .call_frame = .{ .alignment = .@"16" },30128 .call_frame = .{ .alignment = .@"16" },
19117 .extra_temps = .{30129 .extra_temps = .{
...@@ -19120,11 +30132,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19120,11 +30132,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19120 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },30132 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
19121 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },30133 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
19122 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },30134 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
19123 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {30135 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
19124 else => unreachable,
19125 .e => "__eqtf2",
19126 .ne => "__netf2",
19127 } } } },
19128 .{ .type = .i32, .kind = .{ .reg = .eax } },30136 .{ .type = .i32, .kind = .{ .reg = .eax } },
19129 .{ .type = .u8, .kind = .{ .reg = .cl } },30137 .{ .type = .u8, .kind = .{ .reg = .cl } },
19130 .{ .type = .u64, .kind = .{ .reg = .rdx } },30138 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -19163,9 +30171,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19163,9 +30171,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19163 .src_constraints = .{30171 .src_constraints = .{
19164 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },30172 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
19165 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },30173 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
30174 .any,
19166 },30175 },
19167 .patterns = &.{30176 .patterns = &.{
19168 .{ .src = .{ .to_mem, .to_mem } },30177 .{ .src = .{ .to_mem, .to_mem, .none } },
19169 },30178 },
19170 .call_frame = .{ .alignment = .@"16" },30179 .call_frame = .{ .alignment = .@"16" },
19171 .extra_temps = .{30180 .extra_temps = .{
...@@ -19174,11 +30183,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19174,11 +30183,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19174 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },30183 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
19175 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },30184 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
19176 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },30185 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
19177 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {30186 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
19178 else => unreachable,
19179 .e => "__eqtf2",
19180 .ne => "__netf2",
19181 } } } },
19182 .{ .type = .i32, .kind = .{ .reg = .eax } },30187 .{ .type = .i32, .kind = .{ .reg = .eax } },
19183 .{ .type = .u8, .kind = .{ .reg = .cl } },30188 .{ .type = .u8, .kind = .{ .reg = .cl } },
19184 .{ .type = .u64, .kind = .{ .reg = .rdx } },30189 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -19217,9 +30222,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19217,9 +30222,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19217 .src_constraints = .{30222 .src_constraints = .{
19218 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },30223 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
19219 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },30224 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
30225 .any,
19220 },30226 },
19221 .patterns = &.{30227 .patterns = &.{
19222 .{ .src = .{ .to_mem, .to_mem } },30228 .{ .src = .{ .to_mem, .to_mem, .none } },
19223 },30229 },
19224 .call_frame = .{ .alignment = .@"16" },30230 .call_frame = .{ .alignment = .@"16" },
19225 .extra_temps = .{30231 .extra_temps = .{
...@@ -19228,11 +30234,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19228,11 +30234,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19228 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },30234 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
19229 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },30235 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
19230 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },30236 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
19231 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {30237 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
19232 else => unreachable,
19233 .e => "__eqtf2",
19234 .ne => "__netf2",
19235 } } } },
19236 .{ .type = .i32, .kind = .{ .reg = .eax } },30238 .{ .type = .i32, .kind = .{ .reg = .eax } },
19237 .{ .type = .u8, .kind = .{ .reg = .cl } },30239 .{ .type = .u8, .kind = .{ .reg = .cl } },
19238 .{ .type = .u64, .kind = .{ .reg = .rdx } },30240 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -19267,31 +30269,1469 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19267,31 +30269,1469 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19267 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },30269 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
19268 } },30270 } },
19269 } },30271 } },
19270 }) catch |err| switch (err) {30272 }),
19271 error.SelectFailed => return cg.fail("failed to select {s} {s} {} {} {}", .{30273 }) catch |err| switch (err) {
19272 @tagName(air_tag),30274 error.SelectFailed => return cg.fail("failed to select {s} {s} {} {} {}", .{
19273 @tagName(extra.compareOperator()),30275 @tagName(air_tag),
19274 cg.typeOf(extra.lhs).fmt(pt),30276 @tagName(extra.compareOperator()),
19275 ops[0].tracking(cg),30277 cg.typeOf(extra.lhs).fmt(pt),
19276 ops[1].tracking(cg),30278 ops[0].tracking(cg),
19277 }),30279 ops[1].tracking(cg),
19278 else => |e| return e,30280 }),
19279 },30281 else => |e| return e,
19280 .gte => unreachable,30282 };
19281 .gt => unreachable,30283 try res[0].finish(inst, &.{ extra.lhs, extra.rhs }, &ops, cg);
19282 }30284 },
19283 try res[0].finish(inst, &.{ extra.lhs, extra.rhs }, &ops, cg);30285
30286 .sqrt => |air_tag| if (use_old) try cg.airSqrt(inst) else {
30287 const un_op = air_datas[@intFromEnum(inst)].un_op;
30288 var ops = try cg.tempsFromOperands(inst, .{un_op});
30289 var res: [1]Temp = undefined;
30290 cg.select(&res, &.{cg.typeOf(un_op)}, &ops, comptime &.{ .{
30291 .required_features = .{ .f16c, null, null, null },
30292 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
30293 .patterns = &.{
30294 .{ .src = .{ .to_sse, .none, .none } },
30295 },
30296 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
30297 .each = .{ .once = &.{
30298 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
30299 .{ ._, .v_ss, .sqrt, .dst0x, .dst0x, .dst0d, ._ },
30300 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
30301 } },
30302 }, .{
30303 .required_features = .{ .sse, null, null, null },
30304 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
30305 .patterns = &.{
30306 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
30307 },
30308 .call_frame = .{ .alignment = .@"16" },
30309 .extra_temps = .{
30310 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },
30311 .unused,
30312 .unused,
30313 .unused,
30314 .unused,
30315 .unused,
30316 .unused,
30317 .unused,
30318 .unused,
30319 },
30320 .dst_temps = .{.{ .ref = .src0 }},
30321 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
30322 .each = .{ .once = &.{
30323 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
30324 } },
30325 }, .{
30326 .required_features = .{ .f16c, null, null, null },
30327 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
30328 .patterns = &.{
30329 .{ .src = .{ .mem, .none, .none } },
30330 .{ .src = .{ .to_sse, .none, .none } },
30331 },
30332 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
30333 .each = .{ .once = &.{
30334 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
30335 .{ ._, .v_ps, .sqrt, .dst0x, .dst0x, ._, ._ },
30336 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
30337 } },
30338 }, .{
30339 .required_features = .{ .f16c, null, null, null },
30340 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
30341 .patterns = &.{
30342 .{ .src = .{ .mem, .none, .none } },
30343 .{ .src = .{ .to_sse, .none, .none } },
30344 },
30345 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
30346 .each = .{ .once = &.{
30347 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
30348 .{ ._, .v_ps, .sqrt, .dst0y, .dst0y, ._, ._ },
30349 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
30350 } },
30351 }, .{
30352 .required_features = .{ .f16c, null, null, null },
30353 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
30354 .patterns = &.{
30355 .{ .src = .{ .to_mem, .none, .none } },
30356 },
30357 .extra_temps = .{
30358 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30359 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
30360 .unused,
30361 .unused,
30362 .unused,
30363 .unused,
30364 .unused,
30365 .unused,
30366 .unused,
30367 },
30368 .dst_temps = .{.mem},
30369 .clobbers = .{ .eflags = true },
30370 .each = .{ .once = &.{
30371 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
30372 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
30373 .{ ._, .v_ps, .sqrt, .tmp1y, .tmp1y, ._, ._ },
30374 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
30375 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
30376 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30377 } },
30378 }, .{
30379 .required_features = .{ .avx, null, null, null },
30380 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
30381 .patterns = &.{
30382 .{ .src = .{ .to_mem, .none, .none } },
30383 },
30384 .call_frame = .{ .alignment = .@"16" },
30385 .extra_temps = .{
30386 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30387 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
30388 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },
30389 .unused,
30390 .unused,
30391 .unused,
30392 .unused,
30393 .unused,
30394 .unused,
30395 },
30396 .dst_temps = .{.mem},
30397 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
30398 .each = .{ .once = &.{
30399 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
30400 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
30401 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
30402 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
30403 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
30404 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30405 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30406 } },
30407 }, .{
30408 .required_features = .{ .sse4_1, null, null, null },
30409 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
30410 .patterns = &.{
30411 .{ .src = .{ .to_mem, .none, .none } },
30412 },
30413 .call_frame = .{ .alignment = .@"16" },
30414 .extra_temps = .{
30415 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30416 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
30417 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },
30418 .unused,
30419 .unused,
30420 .unused,
30421 .unused,
30422 .unused,
30423 .unused,
30424 },
30425 .dst_temps = .{.mem},
30426 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
30427 .each = .{ .once = &.{
30428 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
30429 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
30430 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
30431 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
30432 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
30433 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30434 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30435 } },
30436 }, .{
30437 .required_features = .{ .sse2, null, null, null },
30438 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
30439 .patterns = &.{
30440 .{ .src = .{ .to_mem, .none, .none } },
30441 },
30442 .call_frame = .{ .alignment = .@"16" },
30443 .extra_temps = .{
30444 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30445 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
30446 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },
30447 .{ .type = .f16, .kind = .{ .reg = .ax } },
30448 .unused,
30449 .unused,
30450 .unused,
30451 .unused,
30452 .unused,
30453 },
30454 .dst_temps = .{.mem},
30455 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
30456 .each = .{ .once = &.{
30457 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
30458 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
30459 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
30460 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
30461 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
30462 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
30463 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30464 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30465 } },
30466 }, .{
30467 .required_features = .{ .sse, null, null, null },
30468 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
30469 .patterns = &.{
30470 .{ .src = .{ .to_mem, .none, .none } },
30471 },
30472 .call_frame = .{ .alignment = .@"16" },
30473 .extra_temps = .{
30474 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30475 .{ .type = .f16, .kind = .{ .reg = .ax } },
30476 .{ .type = .f32, .kind = .mem },
30477 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
30478 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },
30479 .unused,
30480 .unused,
30481 .unused,
30482 .unused,
30483 },
30484 .dst_temps = .{.mem},
30485 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
30486 .each = .{ .once = &.{
30487 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
30488 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
30489 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
30490 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
30491 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
30492 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
30493 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
30494 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
30495 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30496 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30497 } },
30498 }, .{
30499 .required_features = .{ .avx, null, null, null },
30500 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
30501 .patterns = &.{
30502 .{ .src = .{ .mem, .none, .none } },
30503 },
30504 .dst_temps = .{.{ .rc = .sse }},
30505 .each = .{ .once = &.{
30506 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
30507 .{ ._, .v_ss, .sqrt, .dst0x, .dst0x, .src0d, ._ },
30508 } },
30509 }, .{
30510 .required_features = .{ .avx, null, null, null },
30511 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
30512 .patterns = &.{
30513 .{ .src = .{ .to_sse, .none, .none } },
30514 },
30515 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
30516 .each = .{ .once = &.{
30517 .{ ._, .v_ss, .sqrt, .dst0x, .src0x, .src0d, ._ },
30518 } },
30519 }, .{
30520 .required_features = .{ .sse4_1, null, null, null },
30521 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
30522 .patterns = &.{
30523 .{ .src = .{ .mem, .none, .none } },
30524 },
30525 .dst_temps = .{.{ .rc = .sse }},
30526 .each = .{ .once = &.{
30527 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
30528 .{ ._, ._ss, .sqrt, .dst0x, .src0d, ._, ._ },
30529 } },
30530 }, .{
30531 .required_features = .{ .sse4_1, null, null, null },
30532 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
30533 .patterns = &.{
30534 .{ .src = .{ .to_mut_sse, .none, .none } },
30535 },
30536 .dst_temps = .{.{ .ref = .src0 }},
30537 .each = .{ .once = &.{
30538 .{ ._, ._ss, .sqrt, .dst0x, .src0d, ._, ._ },
30539 } },
30540 }, .{
30541 .required_features = .{ .sse, null, null, null },
30542 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
30543 .patterns = &.{
30544 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
30545 },
30546 .call_frame = .{ .alignment = .@"16" },
30547 .extra_temps = .{
30548 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtf" } } },
30549 .unused,
30550 .unused,
30551 .unused,
30552 .unused,
30553 .unused,
30554 .unused,
30555 .unused,
30556 .unused,
30557 },
30558 .dst_temps = .{.{ .ref = .src0 }},
30559 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
30560 .each = .{ .once = &.{
30561 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
30562 } },
30563 }, .{
30564 .required_features = .{ .avx, null, null, null },
30565 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
30566 .patterns = &.{
30567 .{ .src = .{ .mem, .none, .none } },
30568 .{ .src = .{ .to_sse, .none, .none } },
30569 },
30570 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
30571 .each = .{ .once = &.{
30572 .{ ._, .v_ps, .sqrt, .dst0x, .src0x, ._, ._ },
30573 } },
30574 }, .{
30575 .required_features = .{ .sse4_1, null, null, null },
30576 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
30577 .patterns = &.{
30578 .{ .src = .{ .mem, .none, .none } },
30579 .{ .src = .{ .to_sse, .none, .none } },
30580 },
30581 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
30582 .each = .{ .once = &.{
30583 .{ ._, ._ps, .sqrt, .dst0x, .src0x, ._, ._ },
30584 } },
30585 }, .{
30586 .required_features = .{ .avx, null, null, null },
30587 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
30588 .patterns = &.{
30589 .{ .src = .{ .mem, .none, .none } },
30590 .{ .src = .{ .to_sse, .none, .none } },
30591 },
30592 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
30593 .each = .{ .once = &.{
30594 .{ ._, .v_ps, .sqrt, .dst0y, .src0y, ._, ._ },
30595 } },
30596 }, .{
30597 .required_features = .{ .avx, null, null, null },
30598 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
30599 .patterns = &.{
30600 .{ .src = .{ .to_mem, .none, .none } },
30601 },
30602 .extra_temps = .{
30603 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30604 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
30605 .unused,
30606 .unused,
30607 .unused,
30608 .unused,
30609 .unused,
30610 .unused,
30611 .unused,
30612 },
30613 .dst_temps = .{.mem},
30614 .clobbers = .{ .eflags = true },
30615 .each = .{ .once = &.{
30616 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
30617 .{ .@"0:", .v_ps, .sqrt, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
30618 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
30619 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
30620 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30621 } },
30622 }, .{
30623 .required_features = .{ .sse4_1, null, null, null },
30624 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
30625 .patterns = &.{
30626 .{ .src = .{ .to_mem, .none, .none } },
30627 },
30628 .extra_temps = .{
30629 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30630 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
30631 .unused,
30632 .unused,
30633 .unused,
30634 .unused,
30635 .unused,
30636 .unused,
30637 .unused,
30638 },
30639 .dst_temps = .{.mem},
30640 .clobbers = .{ .eflags = true },
30641 .each = .{ .once = &.{
30642 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
30643 .{ .@"0:", ._ps, .sqrt, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
30644 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
30645 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
30646 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30647 } },
30648 }, .{
30649 .required_features = .{ .avx, null, null, null },
30650 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
30651 .patterns = &.{
30652 .{ .src = .{ .to_mem, .none, .none } },
30653 },
30654 .call_frame = .{ .alignment = .@"16" },
30655 .extra_temps = .{
30656 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30657 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
30658 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtf" } } },
30659 .unused,
30660 .unused,
30661 .unused,
30662 .unused,
30663 .unused,
30664 .unused,
30665 },
30666 .dst_temps = .{.mem},
30667 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
30668 .each = .{ .once = &.{
30669 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
30670 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
30671 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
30672 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
30673 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
30674 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30675 } },
30676 }, .{
30677 .required_features = .{ .sse, null, null, null },
30678 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
30679 .patterns = &.{
30680 .{ .src = .{ .to_mem, .none, .none } },
30681 },
30682 .call_frame = .{ .alignment = .@"16" },
30683 .extra_temps = .{
30684 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30685 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
30686 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtf" } } },
30687 .unused,
30688 .unused,
30689 .unused,
30690 .unused,
30691 .unused,
30692 .unused,
30693 },
30694 .dst_temps = .{.mem},
30695 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
30696 .each = .{ .once = &.{
30697 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
30698 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
30699 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
30700 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
30701 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
30702 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30703 } },
30704 }, .{
30705 .required_features = .{ .avx, null, null, null },
30706 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
30707 .patterns = &.{
30708 .{ .src = .{ .mem, .none, .none } },
30709 },
30710 .dst_temps = .{.{ .rc = .sse }},
30711 .each = .{ .once = &.{
30712 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
30713 .{ ._, .v_sd, .sqrt, .dst0x, .dst0x, .src0q, ._ },
30714 } },
30715 }, .{
30716 .required_features = .{ .avx, null, null, null },
30717 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
30718 .patterns = &.{
30719 .{ .src = .{ .to_sse, .none, .none } },
30720 },
30721 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
30722 .each = .{ .once = &.{
30723 .{ ._, .v_sd, .sqrt, .dst0x, .src0x, .src0q, ._ },
30724 } },
30725 }, .{
30726 .required_features = .{ .sse4_1, null, null, null },
30727 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
30728 .patterns = &.{
30729 .{ .src = .{ .mem, .none, .none } },
30730 },
30731 .dst_temps = .{.{ .rc = .sse }},
30732 .each = .{ .once = &.{
30733 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
30734 .{ ._, ._sd, .sqrt, .dst0x, .src0q, ._, ._ },
30735 } },
30736 }, .{
30737 .required_features = .{ .sse4_1, null, null, null },
30738 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
30739 .patterns = &.{
30740 .{ .src = .{ .to_mut_sse, .none, .none } },
30741 },
30742 .dst_temps = .{.{ .ref = .src0 }},
30743 .each = .{ .once = &.{
30744 .{ ._, ._sd, .sqrt, .dst0x, .src0q, ._, ._ },
30745 } },
30746 }, .{
30747 .required_features = .{ .sse, null, null, null },
30748 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
30749 .patterns = &.{
30750 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
30751 },
30752 .call_frame = .{ .alignment = .@"16" },
30753 .extra_temps = .{
30754 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } },
30755 .unused,
30756 .unused,
30757 .unused,
30758 .unused,
30759 .unused,
30760 .unused,
30761 .unused,
30762 .unused,
30763 },
30764 .dst_temps = .{.{ .ref = .src0 }},
30765 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
30766 .each = .{ .once = &.{
30767 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
30768 } },
30769 }, .{
30770 .required_features = .{ .avx, null, null, null },
30771 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
30772 .patterns = &.{
30773 .{ .src = .{ .mem, .none, .none } },
30774 .{ .src = .{ .to_sse, .none, .none } },
30775 },
30776 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
30777 .each = .{ .once = &.{
30778 .{ ._, .v_pd, .sqrt, .dst0x, .src0x, ._, ._ },
30779 } },
30780 }, .{
30781 .required_features = .{ .sse4_1, null, null, null },
30782 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
30783 .patterns = &.{
30784 .{ .src = .{ .mem, .none, .none } },
30785 .{ .src = .{ .to_sse, .none, .none } },
30786 },
30787 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
30788 .each = .{ .once = &.{
30789 .{ ._, ._pd, .sqrt, .dst0x, .src0x, ._, ._ },
30790 } },
30791 }, .{
30792 .required_features = .{ .avx, null, null, null },
30793 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
30794 .patterns = &.{
30795 .{ .src = .{ .mem, .none, .none } },
30796 .{ .src = .{ .to_sse, .none, .none } },
30797 },
30798 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
30799 .each = .{ .once = &.{
30800 .{ ._, .v_pd, .sqrt, .dst0y, .src0y, ._, ._ },
30801 } },
30802 }, .{
30803 .required_features = .{ .avx, null, null, null },
30804 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
30805 .patterns = &.{
30806 .{ .src = .{ .to_mem, .none, .none } },
30807 },
30808 .extra_temps = .{
30809 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30810 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
30811 .unused,
30812 .unused,
30813 .unused,
30814 .unused,
30815 .unused,
30816 .unused,
30817 .unused,
30818 },
30819 .dst_temps = .{.mem},
30820 .clobbers = .{ .eflags = true },
30821 .each = .{ .once = &.{
30822 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
30823 .{ .@"0:", .v_pd, .sqrt, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
30824 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
30825 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
30826 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30827 } },
30828 }, .{
30829 .required_features = .{ .sse4_1, null, null, null },
30830 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
30831 .patterns = &.{
30832 .{ .src = .{ .to_mem, .none, .none } },
30833 },
30834 .extra_temps = .{
30835 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30836 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
30837 .unused,
30838 .unused,
30839 .unused,
30840 .unused,
30841 .unused,
30842 .unused,
30843 .unused,
30844 },
30845 .dst_temps = .{.mem},
30846 .clobbers = .{ .eflags = true },
30847 .each = .{ .once = &.{
30848 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
30849 .{ .@"0:", ._pd, .sqrt, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
30850 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
30851 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
30852 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30853 } },
30854 }, .{
30855 .required_features = .{ .avx, null, null, null },
30856 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
30857 .patterns = &.{
30858 .{ .src = .{ .to_mem, .none, .none } },
30859 },
30860 .call_frame = .{ .alignment = .@"16" },
30861 .extra_temps = .{
30862 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30863 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
30864 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } },
30865 .unused,
30866 .unused,
30867 .unused,
30868 .unused,
30869 .unused,
30870 .unused,
30871 },
30872 .dst_temps = .{.mem},
30873 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
30874 .each = .{ .once = &.{
30875 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
30876 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
30877 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
30878 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
30879 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
30880 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30881 } },
30882 }, .{
30883 .required_features = .{ .sse2, null, null, null },
30884 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
30885 .patterns = &.{
30886 .{ .src = .{ .to_mem, .none, .none } },
30887 },
30888 .call_frame = .{ .alignment = .@"16" },
30889 .extra_temps = .{
30890 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30891 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
30892 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } },
30893 .unused,
30894 .unused,
30895 .unused,
30896 .unused,
30897 .unused,
30898 .unused,
30899 },
30900 .dst_temps = .{.mem},
30901 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
30902 .each = .{ .once = &.{
30903 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
30904 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
30905 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
30906 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
30907 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
30908 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30909 } },
30910 }, .{
30911 .required_features = .{ .sse, null, null, null },
30912 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
30913 .patterns = &.{
30914 .{ .src = .{ .to_mem, .none, .none } },
30915 },
30916 .call_frame = .{ .alignment = .@"16" },
30917 .extra_temps = .{
30918 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30919 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
30920 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } },
30921 .unused,
30922 .unused,
30923 .unused,
30924 .unused,
30925 .unused,
30926 .unused,
30927 },
30928 .dst_temps = .{.mem},
30929 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
30930 .each = .{ .once = &.{
30931 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
30932 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
30933 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
30934 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
30935 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
30936 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
30937 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30938 } },
30939 }, .{
30940 .required_features = .{ .x87, null, null, null },
30941 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
30942 .patterns = &.{
30943 .{ .src = .{ .mem, .none, .none } },
30944 .{ .src = .{ .to_x87, .none, .none } },
30945 },
30946 .extra_temps = .{
30947 .{ .type = .f80, .kind = .{ .reg = .st7 } },
30948 .unused,
30949 .unused,
30950 .unused,
30951 .unused,
30952 .unused,
30953 .unused,
30954 .unused,
30955 .unused,
30956 },
30957 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .x87 } }},
30958 .each = .{ .once = &.{
30959 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
30960 .{ ._, .f_, .sqrt, ._, ._, ._, ._ },
30961 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
30962 } },
30963 }, .{
30964 .required_features = .{ .x87, null, null, null },
30965 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
30966 .patterns = &.{
30967 .{ .src = .{ .to_mem, .none, .none } },
30968 },
30969 .extra_temps = .{
30970 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30971 .{ .type = .f80, .kind = .{ .reg = .st7 } },
30972 .unused,
30973 .unused,
30974 .unused,
30975 .unused,
30976 .unused,
30977 .unused,
30978 .unused,
30979 },
30980 .dst_temps = .{.mem},
30981 .clobbers = .{ .eflags = true },
30982 .each = .{ .once = &.{
30983 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
30984 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
30985 .{ ._, .f_, .sqrt, ._, ._, ._, ._ },
30986 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
30987 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
30988 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30989 } },
30990 }, .{
30991 .required_features = .{ .sse, null, null, null },
30992 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
30993 .patterns = &.{
30994 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
30995 },
30996 .call_frame = .{ .alignment = .@"16" },
30997 .extra_temps = .{
30998 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } },
30999 .unused,
31000 .unused,
31001 .unused,
31002 .unused,
31003 .unused,
31004 .unused,
31005 .unused,
31006 .unused,
31007 },
31008 .dst_temps = .{.{ .ref = .src0 }},
31009 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31010 .each = .{ .once = &.{
31011 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
31012 } },
31013 }, .{
31014 .required_features = .{ .avx, null, null, null },
31015 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
31016 .patterns = &.{
31017 .{ .src = .{ .to_mem, .none, .none } },
31018 },
31019 .call_frame = .{ .alignment = .@"16" },
31020 .extra_temps = .{
31021 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31022 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
31023 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } },
31024 .unused,
31025 .unused,
31026 .unused,
31027 .unused,
31028 .unused,
31029 .unused,
31030 },
31031 .dst_temps = .{.mem},
31032 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31033 .each = .{ .once = &.{
31034 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31035 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
31036 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
31037 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
31038 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
31039 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31040 } },
31041 }, .{
31042 .required_features = .{ .sse2, null, null, null },
31043 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
31044 .patterns = &.{
31045 .{ .src = .{ .to_mem, .none, .none } },
31046 },
31047 .call_frame = .{ .alignment = .@"16" },
31048 .extra_temps = .{
31049 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31050 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
31051 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } },
31052 .unused,
31053 .unused,
31054 .unused,
31055 .unused,
31056 .unused,
31057 .unused,
31058 },
31059 .dst_temps = .{.mem},
31060 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31061 .each = .{ .once = &.{
31062 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31063 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
31064 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
31065 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
31066 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
31067 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31068 } },
31069 }, .{
31070 .required_features = .{ .sse, null, null, null },
31071 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
31072 .patterns = &.{
31073 .{ .src = .{ .to_mem, .none, .none } },
31074 },
31075 .call_frame = .{ .alignment = .@"16" },
31076 .extra_temps = .{
31077 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31078 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
31079 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } },
31080 .unused,
31081 .unused,
31082 .unused,
31083 .unused,
31084 .unused,
31085 .unused,
31086 },
31087 .dst_temps = .{.mem},
31088 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31089 .each = .{ .once = &.{
31090 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31091 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
31092 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
31093 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
31094 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
31095 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31096 } },
31097 } }) catch |err| switch (err) {
31098 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
31099 @tagName(air_tag),
31100 cg.typeOf(un_op).fmt(pt),
31101 ops[0].tracking(cg),
31102 }),
31103 else => |e| return e,
31104 };
31105 try res[0].finish(inst, &.{un_op}, &ops, cg);
31106 },
31107 .sin, .cos, .tan, .exp, .exp2, .log, .log2, .log10, .round => |air_tag| if (use_old) try cg.airUnaryMath(inst, air_tag) else {
31108 const un_op = air_datas[@intFromEnum(inst)].un_op;
31109 var ops = try cg.tempsFromOperands(inst, .{un_op});
31110 var res: [1]Temp = undefined;
31111 cg.select(&res, &.{cg.typeOf(un_op)}, &ops, switch (air_tag) {
31112 else => unreachable,
31113 inline .sin, .cos, .tan, .exp, .exp2, .log, .log2, .log10, .round => |name| comptime &.{ .{
31114 .required_features = .{ .sse, null, null, null },
31115 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
31116 .patterns = &.{
31117 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
31118 },
31119 .call_frame = .{ .alignment = .@"16" },
31120 .extra_temps = .{
31121 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },
31122 .unused,
31123 .unused,
31124 .unused,
31125 .unused,
31126 .unused,
31127 .unused,
31128 .unused,
31129 .unused,
31130 },
31131 .dst_temps = .{.{ .ref = .src0 }},
31132 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31133 .each = .{ .once = &.{
31134 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
31135 } },
31136 }, .{
31137 .required_features = .{ .avx, null, null, null },
31138 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
31139 .patterns = &.{
31140 .{ .src = .{ .to_mem, .none, .none } },
31141 },
31142 .call_frame = .{ .alignment = .@"16" },
31143 .extra_temps = .{
31144 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31145 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
31146 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },
31147 .unused,
31148 .unused,
31149 .unused,
31150 .unused,
31151 .unused,
31152 .unused,
31153 },
31154 .dst_temps = .{.mem},
31155 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31156 .each = .{ .once = &.{
31157 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31158 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
31159 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
31160 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
31161 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
31162 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
31163 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31164 } },
31165 }, .{
31166 .required_features = .{ .sse4_1, null, null, null },
31167 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
31168 .patterns = &.{
31169 .{ .src = .{ .to_mem, .none, .none } },
31170 },
31171 .call_frame = .{ .alignment = .@"16" },
31172 .extra_temps = .{
31173 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31174 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
31175 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },
31176 .unused,
31177 .unused,
31178 .unused,
31179 .unused,
31180 .unused,
31181 .unused,
31182 },
31183 .dst_temps = .{.mem},
31184 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31185 .each = .{ .once = &.{
31186 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31187 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
31188 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
31189 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
31190 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
31191 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
31192 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31193 } },
31194 }, .{
31195 .required_features = .{ .sse2, null, null, null },
31196 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
31197 .patterns = &.{
31198 .{ .src = .{ .to_mem, .none, .none } },
31199 },
31200 .call_frame = .{ .alignment = .@"16" },
31201 .extra_temps = .{
31202 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31203 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
31204 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },
31205 .{ .type = .f16, .kind = .{ .reg = .ax } },
31206 .unused,
31207 .unused,
31208 .unused,
31209 .unused,
31210 .unused,
31211 },
31212 .dst_temps = .{.mem},
31213 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31214 .each = .{ .once = &.{
31215 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31216 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
31217 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
31218 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
31219 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
31220 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
31221 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
31222 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31223 } },
31224 }, .{
31225 .required_features = .{ .sse, null, null, null },
31226 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
31227 .patterns = &.{
31228 .{ .src = .{ .to_mem, .none, .none } },
31229 },
31230 .call_frame = .{ .alignment = .@"16" },
31231 .extra_temps = .{
31232 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31233 .{ .type = .f16, .kind = .{ .reg = .ax } },
31234 .{ .type = .f32, .kind = .mem },
31235 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
31236 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },
31237 .unused,
31238 .unused,
31239 .unused,
31240 .unused,
31241 },
31242 .dst_temps = .{.mem},
31243 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31244 .each = .{ .once = &.{
31245 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31246 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
31247 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
31248 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
31249 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
31250 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
31251 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
31252 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
31253 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
31254 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31255 } },
31256 }, .{
31257 .required_features = .{ .sse, null, null, null },
31258 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
31259 .patterns = &.{
31260 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
31261 },
31262 .call_frame = .{ .alignment = .@"16" },
31263 .extra_temps = .{
31264 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "f" } } },
31265 .unused,
31266 .unused,
31267 .unused,
31268 .unused,
31269 .unused,
31270 .unused,
31271 .unused,
31272 .unused,
31273 },
31274 .dst_temps = .{.{ .ref = .src0 }},
31275 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31276 .each = .{ .once = &.{
31277 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
31278 } },
31279 }, .{
31280 .required_features = .{ .avx, null, null, null },
31281 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
31282 .patterns = &.{
31283 .{ .src = .{ .to_mem, .none, .none } },
31284 },
31285 .call_frame = .{ .alignment = .@"16" },
31286 .extra_temps = .{
31287 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31288 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
31289 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "f" } } },
31290 .unused,
31291 .unused,
31292 .unused,
31293 .unused,
31294 .unused,
31295 .unused,
31296 },
31297 .dst_temps = .{.mem},
31298 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31299 .each = .{ .once = &.{
31300 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31301 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
31302 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
31303 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
31304 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
31305 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31306 } },
31307 }, .{
31308 .required_features = .{ .sse, null, null, null },
31309 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
31310 .patterns = &.{
31311 .{ .src = .{ .to_mem, .none, .none } },
31312 },
31313 .call_frame = .{ .alignment = .@"16" },
31314 .extra_temps = .{
31315 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31316 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
31317 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "f" } } },
31318 .unused,
31319 .unused,
31320 .unused,
31321 .unused,
31322 .unused,
31323 .unused,
31324 },
31325 .dst_temps = .{.mem},
31326 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31327 .each = .{ .once = &.{
31328 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31329 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
31330 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
31331 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
31332 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
31333 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31334 } },
31335 }, .{
31336 .required_features = .{ .sse, null, null, null },
31337 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
31338 .patterns = &.{
31339 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
31340 },
31341 .call_frame = .{ .alignment = .@"16" },
31342 .extra_temps = .{
31343 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } },
31344 .unused,
31345 .unused,
31346 .unused,
31347 .unused,
31348 .unused,
31349 .unused,
31350 .unused,
31351 .unused,
31352 },
31353 .dst_temps = .{.{ .ref = .src0 }},
31354 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31355 .each = .{ .once = &.{
31356 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
31357 } },
31358 }, .{
31359 .required_features = .{ .avx, null, null, null },
31360 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
31361 .patterns = &.{
31362 .{ .src = .{ .to_mem, .none, .none } },
31363 },
31364 .call_frame = .{ .alignment = .@"16" },
31365 .extra_temps = .{
31366 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31367 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
31368 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } },
31369 .unused,
31370 .unused,
31371 .unused,
31372 .unused,
31373 .unused,
31374 .unused,
31375 },
31376 .dst_temps = .{.mem},
31377 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31378 .each = .{ .once = &.{
31379 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31380 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
31381 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
31382 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
31383 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
31384 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31385 } },
31386 }, .{
31387 .required_features = .{ .sse2, null, null, null },
31388 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
31389 .patterns = &.{
31390 .{ .src = .{ .to_mem, .none, .none } },
31391 },
31392 .call_frame = .{ .alignment = .@"16" },
31393 .extra_temps = .{
31394 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31395 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
31396 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } },
31397 .unused,
31398 .unused,
31399 .unused,
31400 .unused,
31401 .unused,
31402 .unused,
31403 },
31404 .dst_temps = .{.mem},
31405 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31406 .each = .{ .once = &.{
31407 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31408 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
31409 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
31410 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
31411 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
31412 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31413 } },
31414 }, .{
31415 .required_features = .{ .sse, null, null, null },
31416 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
31417 .patterns = &.{
31418 .{ .src = .{ .to_mem, .none, .none } },
31419 },
31420 .call_frame = .{ .alignment = .@"16" },
31421 .extra_temps = .{
31422 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31423 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
31424 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } },
31425 .unused,
31426 .unused,
31427 .unused,
31428 .unused,
31429 .unused,
31430 .unused,
31431 },
31432 .dst_temps = .{.mem},
31433 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31434 .each = .{ .once = &.{
31435 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31436 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
31437 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
31438 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
31439 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
31440 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
31441 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31442 } },
31443 }, .{
31444 .required_features = .{ .avx, .x87, null, null },
31445 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
31446 .patterns = &.{
31447 .{ .src = .{ .to_mem, .none, .none } },
31448 },
31449 .call_frame = .{ .size = 16, .alignment = .@"16" },
31450 .extra_temps = .{
31451 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
31452 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
31453 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },
31454 .unused,
31455 .unused,
31456 .unused,
31457 .unused,
31458 .unused,
31459 .unused,
31460 },
31461 .dst_temps = .{.{ .reg = .st0 }},
31462 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31463 .each = .{ .once = &.{
31464 .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ },
31465 .{ ._, .v_dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ },
31466 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
31467 } },
31468 }, .{
31469 .required_features = .{ .sse2, .x87, null, null },
31470 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
31471 .patterns = &.{
31472 .{ .src = .{ .to_mem, .none, .none } },
31473 },
31474 .call_frame = .{ .size = 16, .alignment = .@"16" },
31475 .extra_temps = .{
31476 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
31477 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
31478 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },
31479 .unused,
31480 .unused,
31481 .unused,
31482 .unused,
31483 .unused,
31484 .unused,
31485 },
31486 .dst_temps = .{.{ .reg = .st0 }},
31487 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31488 .each = .{ .once = &.{
31489 .{ ._, ._dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ },
31490 .{ ._, ._dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ },
31491 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
31492 } },
31493 }, .{
31494 .required_features = .{ .sse, .x87, null, null },
31495 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
31496 .patterns = &.{
31497 .{ .src = .{ .to_mem, .none, .none } },
31498 },
31499 .call_frame = .{ .size = 16, .alignment = .@"16" },
31500 .extra_temps = .{
31501 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
31502 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
31503 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },
31504 .unused,
31505 .unused,
31506 .unused,
31507 .unused,
31508 .unused,
31509 .unused,
31510 },
31511 .dst_temps = .{.{ .reg = .st0 }},
31512 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31513 .each = .{ .once = &.{
31514 .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ },
31515 .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ },
31516 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
31517 } },
31518 }, .{
31519 .required_features = .{ .avx, .x87, null, null },
31520 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
31521 .patterns = &.{
31522 .{ .src = .{ .to_mem, .none, .none } },
31523 },
31524 .call_frame = .{ .size = 16, .alignment = .@"16" },
31525 .extra_temps = .{
31526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31527 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
31528 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
31529 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },
31530 .unused,
31531 .unused,
31532 .unused,
31533 .unused,
31534 .unused,
31535 },
31536 .dst_temps = .{.mem},
31537 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31538 .each = .{ .once = &.{
31539 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31540 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
31541 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
31542 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
31543 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
31544 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
31545 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
31546 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31547 } },
31548 }, .{
31549 .required_features = .{ .sse2, .x87, null, null },
31550 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
31551 .patterns = &.{
31552 .{ .src = .{ .to_mem, .none, .none } },
31553 },
31554 .call_frame = .{ .size = 16, .alignment = .@"16" },
31555 .extra_temps = .{
31556 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31557 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
31558 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
31559 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },
31560 .unused,
31561 .unused,
31562 .unused,
31563 .unused,
31564 .unused,
31565 },
31566 .dst_temps = .{.mem},
31567 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31568 .each = .{ .once = &.{
31569 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31570 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
31571 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
31572 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
31573 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
31574 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
31575 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
31576 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31577 } },
31578 }, .{
31579 .required_features = .{ .sse, .x87, null, null },
31580 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
31581 .patterns = &.{
31582 .{ .src = .{ .to_mem, .none, .none } },
31583 },
31584 .call_frame = .{ .size = 16, .alignment = .@"16" },
31585 .extra_temps = .{
31586 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31587 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
31588 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
31589 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },
31590 .unused,
31591 .unused,
31592 .unused,
31593 .unused,
31594 .unused,
31595 },
31596 .dst_temps = .{.mem},
31597 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31598 .each = .{ .once = &.{
31599 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31600 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
31601 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
31602 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
31603 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
31604 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
31605 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
31606 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31607 } },
31608 }, .{
31609 .required_features = .{ .sse, null, null, null },
31610 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
31611 .patterns = &.{
31612 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
31613 },
31614 .call_frame = .{ .alignment = .@"16" },
31615 .extra_temps = .{
31616 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } },
31617 .unused,
31618 .unused,
31619 .unused,
31620 .unused,
31621 .unused,
31622 .unused,
31623 .unused,
31624 .unused,
31625 },
31626 .dst_temps = .{.{ .ref = .src0 }},
31627 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31628 .each = .{ .once = &.{
31629 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
31630 } },
31631 }, .{
31632 .required_features = .{ .avx, null, null, null },
31633 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
31634 .patterns = &.{
31635 .{ .src = .{ .to_mem, .none, .none } },
31636 },
31637 .call_frame = .{ .alignment = .@"16" },
31638 .extra_temps = .{
31639 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31640 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
31641 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } },
31642 .unused,
31643 .unused,
31644 .unused,
31645 .unused,
31646 .unused,
31647 .unused,
31648 },
31649 .dst_temps = .{.mem},
31650 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31651 .each = .{ .once = &.{
31652 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31653 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
31654 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
31655 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
31656 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
31657 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31658 } },
31659 }, .{
31660 .required_features = .{ .sse2, null, null, null },
31661 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
31662 .patterns = &.{
31663 .{ .src = .{ .to_mem, .none, .none } },
31664 },
31665 .call_frame = .{ .alignment = .@"16" },
31666 .extra_temps = .{
31667 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31668 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
31669 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } },
31670 .unused,
31671 .unused,
31672 .unused,
31673 .unused,
31674 .unused,
31675 .unused,
31676 },
31677 .dst_temps = .{.mem},
31678 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31679 .each = .{ .once = &.{
31680 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31681 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
31682 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
31683 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
31684 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
31685 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31686 } },
31687 }, .{
31688 .required_features = .{ .sse, null, null, null },
31689 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
31690 .patterns = &.{
31691 .{ .src = .{ .to_mem, .none, .none } },
31692 },
31693 .call_frame = .{ .alignment = .@"16" },
31694 .extra_temps = .{
31695 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31696 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
31697 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } },
31698 .unused,
31699 .unused,
31700 .unused,
31701 .unused,
31702 .unused,
31703 .unused,
31704 },
31705 .dst_temps = .{.mem},
31706 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31707 .each = .{ .once = &.{
31708 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31709 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
31710 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
31711 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
31712 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
31713 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31714 } },
31715 } },
31716 }) catch |err| switch (err) {
31717 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
31718 @tagName(air_tag),
31719 cg.typeOf(un_op).fmt(pt),
31720 ops[0].tracking(cg),
31721 }),
31722 else => |e| return e,
31723 };
31724 try res[0].finish(inst, &.{un_op}, &ops, cg);
19284 },31725 },
19285
19286 .abs => |air_tag| if (use_old) try cg.airAbs(inst) else {31726 .abs => |air_tag| if (use_old) try cg.airAbs(inst) else {
19287 const ty_op = air_datas[@intFromEnum(inst)].ty_op;31727 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
19288 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});31728 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
19289 var res: [1]Temp = undefined;31729 var res: [1]Temp = undefined;
19290 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{31730 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
19291 .required_features = .{ .cmov, null, null, null },31731 .required_features = .{ .cmov, null, null, null },
19292 .src_constraints = .{ .{ .int = .byte }, .any },31732 .src_constraints = .{ .{ .int = .byte }, .any, .any },
19293 .patterns = &.{31733 .patterns = &.{
19294 .{ .src = .{ .to_gpr, .none } },31734 .{ .src = .{ .to_gpr, .none, .none } },
19295 },31735 },
19296 .dst_temps = .{.{ .rc = .general_purpose }},31736 .dst_temps = .{.{ .rc = .general_purpose }},
19297 .clobbers = .{ .eflags = true },31737 .clobbers = .{ .eflags = true },
...@@ -19301,9 +31741,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19301,9 +31741,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19301 .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ },31741 .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ },
19302 } },31742 } },
19303 }, .{31743 }, .{
19304 .src_constraints = .{ .{ .int = .byte }, .any },31744 .src_constraints = .{ .{ .int = .byte }, .any, .any },
19305 .patterns = &.{31745 .patterns = &.{
19306 .{ .src = .{ .mut_mem, .none } },31746 .{ .src = .{ .mut_mem, .none, .none } },
19307 },31747 },
19308 .dst_temps = .{.{ .ref = .src0 }},31748 .dst_temps = .{.{ .ref = .src0 }},
19309 .clobbers = .{ .eflags = true },31749 .clobbers = .{ .eflags = true },
...@@ -19313,9 +31753,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19313,9 +31753,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19313 .{ ._, ._, .neg, .dst0b, ._, ._, ._ },31753 .{ ._, ._, .neg, .dst0b, ._, ._, ._ },
19314 } },31754 } },
19315 }, .{31755 }, .{
19316 .src_constraints = .{ .{ .int = .byte }, .any },31756 .src_constraints = .{ .{ .int = .byte }, .any, .any },
19317 .patterns = &.{31757 .patterns = &.{
19318 .{ .src = .{ .to_mut_gpr, .none } },31758 .{ .src = .{ .to_mut_gpr, .none, .none } },
19319 },31759 },
19320 .dst_temps = .{.{ .ref = .src0 }},31760 .dst_temps = .{.{ .ref = .src0 }},
19321 .clobbers = .{ .eflags = true },31761 .clobbers = .{ .eflags = true },
...@@ -19326,9 +31766,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19326,9 +31766,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19326 } },31766 } },
19327 }, .{31767 }, .{
19328 .required_features = .{ .cmov, null, null, null },31768 .required_features = .{ .cmov, null, null, null },
19329 .src_constraints = .{ .{ .int = .word }, .any },31769 .src_constraints = .{ .{ .int = .word }, .any, .any },
19330 .patterns = &.{31770 .patterns = &.{
19331 .{ .src = .{ .mem, .none } },31771 .{ .src = .{ .mem, .none, .none } },
19332 },31772 },
19333 .dst_temps = .{.{ .rc = .general_purpose }},31773 .dst_temps = .{.{ .rc = .general_purpose }},
19334 .clobbers = .{ .eflags = true },31774 .clobbers = .{ .eflags = true },
...@@ -19339,9 +31779,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19339,9 +31779,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19339 } },31779 } },
19340 }, .{31780 }, .{
19341 .required_features = .{ .cmov, null, null, null },31781 .required_features = .{ .cmov, null, null, null },
19342 .src_constraints = .{ .{ .int = .word }, .any },31782 .src_constraints = .{ .{ .int = .word }, .any, .any },
19343 .patterns = &.{31783 .patterns = &.{
19344 .{ .src = .{ .to_gpr, .none } },31784 .{ .src = .{ .to_gpr, .none, .none } },
19345 },31785 },
19346 .dst_temps = .{.{ .rc = .general_purpose }},31786 .dst_temps = .{.{ .rc = .general_purpose }},
19347 .clobbers = .{ .eflags = true },31787 .clobbers = .{ .eflags = true },
...@@ -19351,9 +31791,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19351,9 +31791,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19351 .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ },31791 .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ },
19352 } },31792 } },
19353 }, .{31793 }, .{
19354 .src_constraints = .{ .{ .int = .word }, .any },31794 .src_constraints = .{ .{ .int = .word }, .any, .any },
19355 .patterns = &.{31795 .patterns = &.{
19356 .{ .src = .{ .mut_mem, .none } },31796 .{ .src = .{ .mut_mem, .none, .none } },
19357 },31797 },
19358 .dst_temps = .{.{ .ref = .src0 }},31798 .dst_temps = .{.{ .ref = .src0 }},
19359 .clobbers = .{ .eflags = true },31799 .clobbers = .{ .eflags = true },
...@@ -19363,9 +31803,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19363,9 +31803,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19363 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },31803 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
19364 } },31804 } },
19365 }, .{31805 }, .{
19366 .src_constraints = .{ .{ .int = .word }, .any },31806 .src_constraints = .{ .{ .int = .word }, .any, .any },
19367 .patterns = &.{31807 .patterns = &.{
19368 .{ .src = .{ .to_mut_gpr, .none } },31808 .{ .src = .{ .to_mut_gpr, .none, .none } },
19369 },31809 },
19370 .dst_temps = .{.{ .ref = .src0 }},31810 .dst_temps = .{.{ .ref = .src0 }},
19371 .clobbers = .{ .eflags = true },31811 .clobbers = .{ .eflags = true },
...@@ -19376,10 +31816,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19376,10 +31816,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19376 } },31816 } },
19377 }, .{31817 }, .{
19378 .required_features = .{ .cmov, null, null, null },31818 .required_features = .{ .cmov, null, null, null },
19379 .src_constraints = .{ .{ .int = .dword }, .any },31819 .src_constraints = .{ .{ .int = .dword }, .any, .any },
19380 .patterns = &.{31820 .patterns = &.{
19381 .{ .src = .{ .mem, .none } },31821 .{ .src = .{ .mem, .none, .none } },
19382 .{ .src = .{ .to_gpr, .none } },31822 .{ .src = .{ .to_gpr, .none, .none } },
19383 },31823 },
19384 .dst_temps = .{.{ .rc = .general_purpose }},31824 .dst_temps = .{.{ .rc = .general_purpose }},
19385 .clobbers = .{ .eflags = true },31825 .clobbers = .{ .eflags = true },
...@@ -19389,9 +31829,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19389,9 +31829,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19389 .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ },31829 .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ },
19390 } },31830 } },
19391 }, .{31831 }, .{
19392 .src_constraints = .{ .{ .int = .dword }, .any },31832 .src_constraints = .{ .{ .int = .dword }, .any, .any },
19393 .patterns = &.{31833 .patterns = &.{
19394 .{ .src = .{ .mut_mem, .none } },31834 .{ .src = .{ .mut_mem, .none, .none } },
19395 },31835 },
19396 .dst_temps = .{.{ .ref = .src0 }},31836 .dst_temps = .{.{ .ref = .src0 }},
19397 .clobbers = .{ .eflags = true },31837 .clobbers = .{ .eflags = true },
...@@ -19401,9 +31841,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19401,9 +31841,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19401 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },31841 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
19402 } },31842 } },
19403 }, .{31843 }, .{
19404 .src_constraints = .{ .{ .int = .dword }, .any },31844 .src_constraints = .{ .{ .int = .dword }, .any, .any },
19405 .patterns = &.{31845 .patterns = &.{
19406 .{ .src = .{ .to_mut_gpr, .none } },31846 .{ .src = .{ .to_mut_gpr, .none, .none } },
19407 },31847 },
19408 .dst_temps = .{.{ .ref = .src0 }},31848 .dst_temps = .{.{ .ref = .src0 }},
19409 .clobbers = .{ .eflags = true },31849 .clobbers = .{ .eflags = true },
...@@ -19414,10 +31854,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19414,10 +31854,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19414 } },31854 } },
19415 }, .{31855 }, .{
19416 .required_features = .{ .@"64bit", .cmov, null, null },31856 .required_features = .{ .@"64bit", .cmov, null, null },
19417 .src_constraints = .{ .{ .int = .qword }, .any },31857 .src_constraints = .{ .{ .int = .qword }, .any, .any },
19418 .patterns = &.{31858 .patterns = &.{
19419 .{ .src = .{ .mem, .none } },31859 .{ .src = .{ .mem, .none, .none } },
19420 .{ .src = .{ .to_gpr, .none } },31860 .{ .src = .{ .to_gpr, .none, .none } },
19421 },31861 },
19422 .dst_temps = .{.{ .rc = .general_purpose }},31862 .dst_temps = .{.{ .rc = .general_purpose }},
19423 .clobbers = .{ .eflags = true },31863 .clobbers = .{ .eflags = true },
...@@ -19428,9 +31868,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19428,9 +31868,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19428 } },31868 } },
19429 }, .{31869 }, .{
19430 .required_features = .{ .@"64bit", null, null, null },31870 .required_features = .{ .@"64bit", null, null, null },
19431 .src_constraints = .{ .{ .int = .qword }, .any },31871 .src_constraints = .{ .{ .int = .qword }, .any, .any },
19432 .patterns = &.{31872 .patterns = &.{
19433 .{ .src = .{ .mut_mem, .none } },31873 .{ .src = .{ .mut_mem, .none, .none } },
19434 },31874 },
19435 .dst_temps = .{.{ .ref = .src0 }},31875 .dst_temps = .{.{ .ref = .src0 }},
19436 .clobbers = .{ .eflags = true },31876 .clobbers = .{ .eflags = true },
...@@ -19441,9 +31881,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19441,9 +31881,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19441 } },31881 } },
19442 }, .{31882 }, .{
19443 .required_features = .{ .@"64bit", null, null, null },31883 .required_features = .{ .@"64bit", null, null, null },
19444 .src_constraints = .{ .{ .int = .qword }, .any },31884 .src_constraints = .{ .{ .int = .qword }, .any, .any },
19445 .patterns = &.{31885 .patterns = &.{
19446 .{ .src = .{ .to_mut_gpr, .none } },31886 .{ .src = .{ .to_mut_gpr, .none, .none } },
19447 },31887 },
19448 .dst_temps = .{.{ .ref = .src0 }},31888 .dst_temps = .{.{ .ref = .src0 }},
19449 .clobbers = .{ .eflags = true },31889 .clobbers = .{ .eflags = true },
...@@ -19454,9 +31894,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19454,9 +31894,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19454 } },31894 } },
19455 }, .{31895 }, .{
19456 .required_features = .{ .@"64bit", null, null, null },31896 .required_features = .{ .@"64bit", null, null, null },
19457 .src_constraints = .{ .any_int, .any },31897 .src_constraints = .{ .any_int, .any, .any },
19458 .patterns = &.{31898 .patterns = &.{
19459 .{ .src = .{ .to_mem, .none } },31899 .{ .src = .{ .to_mem, .none, .none } },
19460 },31900 },
19461 .extra_temps = .{31901 .extra_temps = .{
19462 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },31902 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -19487,10 +31927,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19487,10 +31927,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19487 } },31927 } },
19488 }, .{31928 }, .{
19489 .required_features = .{ .mmx, .ssse3, null, null },31929 .required_features = .{ .mmx, .ssse3, null, null },
19490 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any },31930 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any },
19491 .patterns = &.{31931 .patterns = &.{
19492 .{ .src = .{ .mem, .none } },31932 .{ .src = .{ .mem, .none, .none } },
19493 .{ .src = .{ .to_mm, .none } },31933 .{ .src = .{ .to_mm, .none, .none } },
19494 },31934 },
19495 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }},31935 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }},
19496 .each = .{ .once = &.{31936 .each = .{ .once = &.{
...@@ -19498,10 +31938,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19498,10 +31938,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19498 } },31938 } },
19499 }, .{31939 }, .{
19500 .required_features = .{ .mmx, .ssse3, null, null },31940 .required_features = .{ .mmx, .ssse3, null, null },
19501 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any },31941 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
19502 .patterns = &.{31942 .patterns = &.{
19503 .{ .src = .{ .mem, .none } },31943 .{ .src = .{ .mem, .none, .none } },
19504 .{ .src = .{ .to_mm, .none } },31944 .{ .src = .{ .to_mm, .none, .none } },
19505 },31945 },
19506 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }},31946 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }},
19507 .each = .{ .once = &.{31947 .each = .{ .once = &.{
...@@ -19509,10 +31949,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19509,10 +31949,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19509 } },31949 } },
19510 }, .{31950 }, .{
19511 .required_features = .{ .mmx, .ssse3, null, null },31951 .required_features = .{ .mmx, .ssse3, null, null },
19512 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any },31952 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
19513 .patterns = &.{31953 .patterns = &.{
19514 .{ .src = .{ .mem, .none } },31954 .{ .src = .{ .mem, .none, .none } },
19515 .{ .src = .{ .to_mm, .none } },31955 .{ .src = .{ .to_mm, .none, .none } },
19516 },31956 },
19517 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }},31957 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }},
19518 .each = .{ .once = &.{31958 .each = .{ .once = &.{
...@@ -19520,10 +31960,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19520,10 +31960,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19520 } },31960 } },
19521 }, .{31961 }, .{
19522 .required_features = .{ .ssse3, null, null, null },31962 .required_features = .{ .ssse3, null, null, null },
19523 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any },31963 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any },
19524 .patterns = &.{31964 .patterns = &.{
19525 .{ .src = .{ .mem, .none } },31965 .{ .src = .{ .mem, .none, .none } },
19526 .{ .src = .{ .to_sse, .none } },31966 .{ .src = .{ .to_sse, .none, .none } },
19527 },31967 },
19528 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},31968 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
19529 .each = .{ .once = &.{31969 .each = .{ .once = &.{
...@@ -19531,10 +31971,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19531,10 +31971,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19531 } },31971 } },
19532 }, .{31972 }, .{
19533 .required_features = .{ .ssse3, null, null, null },31973 .required_features = .{ .ssse3, null, null, null },
19534 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any },31974 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
19535 .patterns = &.{31975 .patterns = &.{
19536 .{ .src = .{ .mem, .none } },31976 .{ .src = .{ .mem, .none, .none } },
19537 .{ .src = .{ .to_sse, .none } },31977 .{ .src = .{ .to_sse, .none, .none } },
19538 },31978 },
19539 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},31979 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
19540 .each = .{ .once = &.{31980 .each = .{ .once = &.{
...@@ -19542,10 +31982,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19542,10 +31982,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19542 } },31982 } },
19543 }, .{31983 }, .{
19544 .required_features = .{ .ssse3, null, null, null },31984 .required_features = .{ .ssse3, null, null, null },
19545 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },31985 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
19546 .patterns = &.{31986 .patterns = &.{
19547 .{ .src = .{ .mem, .none } },31987 .{ .src = .{ .mem, .none, .none } },
19548 .{ .src = .{ .to_sse, .none } },31988 .{ .src = .{ .to_sse, .none, .none } },
19549 },31989 },
19550 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},31990 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
19551 .each = .{ .once = &.{31991 .each = .{ .once = &.{
...@@ -19553,10 +31993,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19553,10 +31993,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19553 } },31993 } },
19554 }, .{31994 }, .{
19555 .required_features = .{ .avx, null, null, null },31995 .required_features = .{ .avx, null, null, null },
19556 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any },31996 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any },
19557 .patterns = &.{31997 .patterns = &.{
19558 .{ .src = .{ .mem, .none } },31998 .{ .src = .{ .mem, .none, .none } },
19559 .{ .src = .{ .to_sse, .none } },31999 .{ .src = .{ .to_sse, .none, .none } },
19560 },32000 },
19561 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},32001 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
19562 .each = .{ .once = &.{32002 .each = .{ .once = &.{
...@@ -19564,10 +32004,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19564,10 +32004,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19564 } },32004 } },
19565 }, .{32005 }, .{
19566 .required_features = .{ .avx, null, null, null },32006 .required_features = .{ .avx, null, null, null },
19567 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any },32007 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
19568 .patterns = &.{32008 .patterns = &.{
19569 .{ .src = .{ .mem, .none } },32009 .{ .src = .{ .mem, .none, .none } },
19570 .{ .src = .{ .to_sse, .none } },32010 .{ .src = .{ .to_sse, .none, .none } },
19571 },32011 },
19572 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},32012 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
19573 .each = .{ .once = &.{32013 .each = .{ .once = &.{
...@@ -19575,10 +32015,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19575,10 +32015,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19575 } },32015 } },
19576 }, .{32016 }, .{
19577 .required_features = .{ .avx, null, null, null },32017 .required_features = .{ .avx, null, null, null },
19578 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },32018 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
19579 .patterns = &.{32019 .patterns = &.{
19580 .{ .src = .{ .mem, .none } },32020 .{ .src = .{ .mem, .none, .none } },
19581 .{ .src = .{ .to_sse, .none } },32021 .{ .src = .{ .to_sse, .none, .none } },
19582 },32022 },
19583 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},32023 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
19584 .each = .{ .once = &.{32024 .each = .{ .once = &.{
...@@ -19586,10 +32026,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19586,10 +32026,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19586 } },32026 } },
19587 }, .{32027 }, .{
19588 .required_features = .{ .avx2, null, null, null },32028 .required_features = .{ .avx2, null, null, null },
19589 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .byte } }, .any },32029 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .byte } }, .any, .any },
19590 .patterns = &.{32030 .patterns = &.{
19591 .{ .src = .{ .mem, .none } },32031 .{ .src = .{ .mem, .none, .none } },
19592 .{ .src = .{ .to_sse, .none } },32032 .{ .src = .{ .to_sse, .none, .none } },
19593 },32033 },
19594 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},32034 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
19595 .each = .{ .once = &.{32035 .each = .{ .once = &.{
...@@ -19597,10 +32037,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19597,10 +32037,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19597 } },32037 } },
19598 }, .{32038 }, .{
19599 .required_features = .{ .avx2, null, null, null },32039 .required_features = .{ .avx2, null, null, null },
19600 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any },32040 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any, .any },
19601 .patterns = &.{32041 .patterns = &.{
19602 .{ .src = .{ .mem, .none } },32042 .{ .src = .{ .mem, .none, .none } },
19603 .{ .src = .{ .to_sse, .none } },32043 .{ .src = .{ .to_sse, .none, .none } },
19604 },32044 },
19605 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},32045 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
19606 .each = .{ .once = &.{32046 .each = .{ .once = &.{
...@@ -19608,10 +32048,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19608,10 +32048,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19608 } },32048 } },
19609 }, .{32049 }, .{
19610 .required_features = .{ .avx2, null, null, null },32050 .required_features = .{ .avx2, null, null, null },
19611 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },32051 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
19612 .patterns = &.{32052 .patterns = &.{
19613 .{ .src = .{ .mem, .none } },32053 .{ .src = .{ .mem, .none, .none } },
19614 .{ .src = .{ .to_sse, .none } },32054 .{ .src = .{ .to_sse, .none, .none } },
19615 },32055 },
19616 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},32056 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
19617 .each = .{ .once = &.{32057 .each = .{ .once = &.{
...@@ -19619,9 +32059,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19619,9 +32059,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19619 } },32059 } },
19620 }, .{32060 }, .{
19621 .required_features = .{ .avx2, null, null, null },32061 .required_features = .{ .avx2, null, null, null },
19622 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .byte } }, .any },32062 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .byte } }, .any, .any },
19623 .patterns = &.{32063 .patterns = &.{
19624 .{ .src = .{ .to_mem, .none } },32064 .{ .src = .{ .to_mem, .none, .none } },
19625 },32065 },
19626 .extra_temps = .{32066 .extra_temps = .{
19627 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32067 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -19645,9 +32085,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19645,9 +32085,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19645 } },32085 } },
19646 }, .{32086 }, .{
19647 .required_features = .{ .avx2, null, null, null },32087 .required_features = .{ .avx2, null, null, null },
19648 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .word } }, .any },32088 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .word } }, .any, .any },
19649 .patterns = &.{32089 .patterns = &.{
19650 .{ .src = .{ .to_mem, .none } },32090 .{ .src = .{ .to_mem, .none, .none } },
19651 },32091 },
19652 .extra_temps = .{32092 .extra_temps = .{
19653 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32093 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -19671,9 +32111,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19671,9 +32111,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19671 } },32111 } },
19672 }, .{32112 }, .{
19673 .required_features = .{ .avx2, null, null, null },32113 .required_features = .{ .avx2, null, null, null },
19674 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }, .any },32114 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
19675 .patterns = &.{32115 .patterns = &.{
19676 .{ .src = .{ .to_mem, .none } },32116 .{ .src = .{ .to_mem, .none, .none } },
19677 },32117 },
19678 .extra_temps = .{32118 .extra_temps = .{
19679 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32119 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -19697,9 +32137,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19697,9 +32137,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19697 } },32137 } },
19698 }, .{32138 }, .{
19699 .required_features = .{ .avx, null, null, null },32139 .required_features = .{ .avx, null, null, null },
19700 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any },32140 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any },
19701 .patterns = &.{32141 .patterns = &.{
19702 .{ .src = .{ .to_mem, .none } },32142 .{ .src = .{ .to_mem, .none, .none } },
19703 },32143 },
19704 .extra_temps = .{32144 .extra_temps = .{
19705 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32145 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -19723,9 +32163,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19723,9 +32163,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19723 } },32163 } },
19724 }, .{32164 }, .{
19725 .required_features = .{ .avx, null, null, null },32165 .required_features = .{ .avx, null, null, null },
19726 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any },32166 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
19727 .patterns = &.{32167 .patterns = &.{
19728 .{ .src = .{ .to_mem, .none } },32168 .{ .src = .{ .to_mem, .none, .none } },
19729 },32169 },
19730 .extra_temps = .{32170 .extra_temps = .{
19731 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32171 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -19749,9 +32189,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19749,9 +32189,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19749 } },32189 } },
19750 }, .{32190 }, .{
19751 .required_features = .{ .avx, null, null, null },32191 .required_features = .{ .avx, null, null, null },
19752 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any },32192 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
19753 .patterns = &.{32193 .patterns = &.{
19754 .{ .src = .{ .to_mem, .none } },32194 .{ .src = .{ .to_mem, .none, .none } },
19755 },32195 },
19756 .extra_temps = .{32196 .extra_temps = .{
19757 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32197 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -19774,14 +32214,557 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19774,14 +32214,557 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19774 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },32214 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
19775 } },32215 } },
19776 }, .{32216 }, .{
19777 .required_features = .{ .ssse3, null, null, null },32217 .required_features = .{ .ssse3, null, null, null },
19778 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any },32218 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any },
32219 .patterns = &.{
32220 .{ .src = .{ .to_mem, .none, .none } },
32221 },
32222 .extra_temps = .{
32223 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32224 .{ .kind = .{ .rc = .sse } },
32225 .unused,
32226 .unused,
32227 .unused,
32228 .unused,
32229 .unused,
32230 .unused,
32231 .unused,
32232 },
32233 .dst_temps = .{.mem},
32234 .clobbers = .{ .eflags = true },
32235 .each = .{ .once = &.{
32236 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
32237 .{ .@"0:", .p_b, .abs, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
32238 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
32239 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
32240 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32241 } },
32242 }, .{
32243 .required_features = .{ .ssse3, null, null, null },
32244 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
32245 .patterns = &.{
32246 .{ .src = .{ .to_mem, .none, .none } },
32247 },
32248 .extra_temps = .{
32249 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32250 .{ .kind = .{ .rc = .sse } },
32251 .unused,
32252 .unused,
32253 .unused,
32254 .unused,
32255 .unused,
32256 .unused,
32257 .unused,
32258 },
32259 .dst_temps = .{.mem},
32260 .clobbers = .{ .eflags = true },
32261 .each = .{ .once = &.{
32262 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
32263 .{ .@"0:", .p_w, .abs, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
32264 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
32265 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
32266 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32267 } },
32268 }, .{
32269 .required_features = .{ .ssse3, null, null, null },
32270 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
32271 .patterns = &.{
32272 .{ .src = .{ .to_mem, .none, .none } },
32273 },
32274 .extra_temps = .{
32275 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32276 .{ .kind = .{ .rc = .sse } },
32277 .unused,
32278 .unused,
32279 .unused,
32280 .unused,
32281 .unused,
32282 .unused,
32283 .unused,
32284 },
32285 .dst_temps = .{.mem},
32286 .clobbers = .{ .eflags = true },
32287 .each = .{ .once = &.{
32288 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
32289 .{ .@"0:", .p_d, .abs, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
32290 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
32291 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
32292 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32293 } },
32294 }, .{
32295 .required_features = .{ .mmx, .ssse3, null, null },
32296 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any },
32297 .patterns = &.{
32298 .{ .src = .{ .to_mem, .none, .none } },
32299 },
32300 .extra_temps = .{
32301 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32302 .{ .kind = .{ .rc = .sse } },
32303 .unused,
32304 .unused,
32305 .unused,
32306 .unused,
32307 .unused,
32308 .unused,
32309 .unused,
32310 },
32311 .dst_temps = .{.mem},
32312 .clobbers = .{ .eflags = true },
32313 .each = .{ .once = &.{
32314 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
32315 .{ .@"0:", .p_b, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
32316 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
32317 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
32318 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32319 } },
32320 }, .{
32321 .required_features = .{ .mmx, .ssse3, null, null },
32322 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
32323 .patterns = &.{
32324 .{ .src = .{ .to_mem, .none, .none } },
32325 },
32326 .extra_temps = .{
32327 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32328 .{ .kind = .{ .rc = .sse } },
32329 .unused,
32330 .unused,
32331 .unused,
32332 .unused,
32333 .unused,
32334 .unused,
32335 .unused,
32336 },
32337 .dst_temps = .{.mem},
32338 .clobbers = .{ .eflags = true },
32339 .each = .{ .once = &.{
32340 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
32341 .{ .@"0:", .p_w, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
32342 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
32343 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
32344 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32345 } },
32346 }, .{
32347 .required_features = .{ .mmx, .ssse3, null, null },
32348 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
32349 .patterns = &.{
32350 .{ .src = .{ .to_mem, .none, .none } },
32351 },
32352 .extra_temps = .{
32353 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32354 .{ .kind = .{ .rc = .sse } },
32355 .unused,
32356 .unused,
32357 .unused,
32358 .unused,
32359 .unused,
32360 .unused,
32361 .unused,
32362 },
32363 .dst_temps = .{.mem},
32364 .clobbers = .{ .eflags = true },
32365 .each = .{ .once = &.{
32366 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
32367 .{ .@"0:", .p_d, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
32368 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
32369 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
32370 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32371 } },
32372 }, .{
32373 .required_features = .{ .cmov, .slow_incdec, null, null },
32374 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
32375 .patterns = &.{
32376 .{ .src = .{ .to_mem, .none, .none } },
32377 },
32378 .extra_temps = .{
32379 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32380 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32381 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32382 .unused,
32383 .unused,
32384 .unused,
32385 .unused,
32386 .unused,
32387 .unused,
32388 },
32389 .dst_temps = .{.mem},
32390 .clobbers = .{ .eflags = true },
32391 .each = .{ .once = &.{
32392 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
32393 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },
32394 .{ ._, ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
32395 .{ ._, ._, .sub, .tmp1b, .tmp2b, ._, ._ },
32396 .{ ._, ._s, .cmov, .tmp1d, .tmp2d, ._, ._ },
32397 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
32398 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
32399 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32400 } },
32401 }, .{
32402 .required_features = .{ .cmov, null, null, null },
32403 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
32404 .patterns = &.{
32405 .{ .src = .{ .to_mem, .none, .none } },
32406 },
32407 .extra_temps = .{
32408 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32409 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32410 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32411 .unused,
32412 .unused,
32413 .unused,
32414 .unused,
32415 .unused,
32416 .unused,
32417 },
32418 .dst_temps = .{.mem},
32419 .clobbers = .{ .eflags = true },
32420 .each = .{ .once = &.{
32421 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
32422 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },
32423 .{ ._, ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
32424 .{ ._, ._, .sub, .tmp1b, .tmp2b, ._, ._ },
32425 .{ ._, ._s, .cmov, .tmp1d, .tmp2d, ._, ._ },
32426 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
32427 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
32428 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
32429 } },
32430 }, .{
32431 .required_features = .{ .slow_incdec, null, null, null },
32432 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
32433 .patterns = &.{
32434 .{ .src = .{ .to_mem, .none, .none } },
32435 },
32436 .extra_temps = .{
32437 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32438 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32439 .unused,
32440 .unused,
32441 .unused,
32442 .unused,
32443 .unused,
32444 .unused,
32445 .unused,
32446 },
32447 .dst_temps = .{.mem},
32448 .clobbers = .{ .eflags = true },
32449 .each = .{ .once = &.{
32450 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
32451 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
32452 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
32453 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
32454 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },
32455 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
32456 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
32457 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32458 } },
32459 }, .{
32460 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
32461 .patterns = &.{
32462 .{ .src = .{ .to_mem, .none, .none } },
32463 },
32464 .extra_temps = .{
32465 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32466 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32467 .unused,
32468 .unused,
32469 .unused,
32470 .unused,
32471 .unused,
32472 .unused,
32473 .unused,
32474 },
32475 .dst_temps = .{.mem},
32476 .clobbers = .{ .eflags = true },
32477 .each = .{ .once = &.{
32478 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
32479 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
32480 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
32481 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
32482 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },
32483 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
32484 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
32485 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
32486 } },
32487 }, .{
32488 .required_features = .{ .cmov, null, null, null },
32489 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
32490 .patterns = &.{
32491 .{ .src = .{ .to_mem, .none, .none } },
32492 },
32493 .extra_temps = .{
32494 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32495 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
32496 .unused,
32497 .unused,
32498 .unused,
32499 .unused,
32500 .unused,
32501 .unused,
32502 .unused,
32503 },
32504 .dst_temps = .{.mem},
32505 .clobbers = .{ .eflags = true },
32506 .each = .{ .once = &.{
32507 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
32508 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },
32509 .{ ._, ._, .sub, .tmp1w, .memia(.src0w, .tmp0, .add_size), ._, ._ },
32510 .{ ._, ._s, .cmov, .tmp1w, .memia(.src0w, .tmp0, .add_size), ._, ._ },
32511 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
32512 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
32513 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32514 } },
32515 }, .{
32516 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
32517 .patterns = &.{
32518 .{ .src = .{ .to_mem, .none, .none } },
32519 },
32520 .extra_temps = .{
32521 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32522 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
32523 .unused,
32524 .unused,
32525 .unused,
32526 .unused,
32527 .unused,
32528 .unused,
32529 .unused,
32530 },
32531 .dst_temps = .{.mem},
32532 .clobbers = .{ .eflags = true },
32533 .each = .{ .once = &.{
32534 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
32535 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
32536 .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ },
32537 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
32538 .{ ._, ._, .neg, .tmp1d, ._, ._, ._ },
32539 .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
32540 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
32541 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32542 } },
32543 }, .{
32544 .required_features = .{ .cmov, null, null, null },
32545 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
32546 .patterns = &.{
32547 .{ .src = .{ .to_mem, .none, .none } },
32548 },
32549 .extra_temps = .{
32550 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32551 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32552 .unused,
32553 .unused,
32554 .unused,
32555 .unused,
32556 .unused,
32557 .unused,
32558 .unused,
32559 },
32560 .dst_temps = .{.mem},
32561 .clobbers = .{ .eflags = true },
32562 .each = .{ .once = &.{
32563 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
32564 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },
32565 .{ ._, ._, .sub, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
32566 .{ ._, ._s, .cmov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
32567 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
32568 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
32569 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32570 } },
32571 }, .{
32572 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
32573 .patterns = &.{
32574 .{ .src = .{ .to_mem, .none, .none } },
32575 },
32576 .extra_temps = .{
32577 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32578 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32579 .unused,
32580 .unused,
32581 .unused,
32582 .unused,
32583 .unused,
32584 .unused,
32585 .unused,
32586 },
32587 .dst_temps = .{.mem},
32588 .clobbers = .{ .eflags = true },
32589 .each = .{ .once = &.{
32590 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
32591 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
32592 .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ },
32593 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
32594 .{ ._, ._, .neg, .tmp1d, ._, ._, ._ },
32595 .{ .@"1:", ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
32596 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
32597 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32598 } },
32599 }, .{
32600 .required_features = .{ .@"64bit", .cmov, null, null },
32601 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
32602 .patterns = &.{
32603 .{ .src = .{ .to_mem, .none, .none } },
32604 },
32605 .extra_temps = .{
32606 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32607 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32608 .unused,
32609 .unused,
32610 .unused,
32611 .unused,
32612 .unused,
32613 .unused,
32614 .unused,
32615 },
32616 .dst_temps = .{.mem},
32617 .clobbers = .{ .eflags = true },
32618 .each = .{ .once = &.{
32619 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
32620 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },
32621 .{ ._, ._, .sub, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
32622 .{ ._, ._s, .cmov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
32623 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
32624 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
32625 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32626 } },
32627 }, .{
32628 .required_features = .{ .@"64bit", null, null, null },
32629 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
32630 .patterns = &.{
32631 .{ .src = .{ .to_mem, .none, .none } },
32632 },
32633 .extra_temps = .{
32634 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32635 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32636 .unused,
32637 .unused,
32638 .unused,
32639 .unused,
32640 .unused,
32641 .unused,
32642 .unused,
32643 },
32644 .dst_temps = .{.mem},
32645 .clobbers = .{ .eflags = true },
32646 .each = .{ .once = &.{
32647 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
32648 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
32649 .{ ._, ._, .@"test", .tmp1q, .tmp1q, ._, ._ },
32650 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
32651 .{ ._, ._, .neg, .tmp1q, ._, ._, ._ },
32652 .{ .@"1:", ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
32653 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
32654 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32655 } },
32656 }, .{
32657 .required_features = .{ .@"64bit", null, null, null },
32658 .src_constraints = .{ .any_scalar_int, .any, .any },
32659 .patterns = &.{
32660 .{ .src = .{ .to_mem, .none, .none } },
32661 },
32662 .extra_temps = .{
32663 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32664 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32665 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
32666 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32667 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
32668 .unused,
32669 .unused,
32670 .unused,
32671 .unused,
32672 },
32673 .dst_temps = .{.mem},
32674 .clobbers = .{ .eflags = true },
32675 .each = .{ .once = &.{
32676 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
32677 .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size), ._, ._ },
32678 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_src0_elem_size, -8), ._, ._ },
32679 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },
32680 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
32681 .{ .@"1:", ._, .mov, .tmp4q, .memi(.src0q, .tmp0), ._, ._ },
32682 .{ ._, ._, .xor, .tmp4q, .tmp2q, ._, ._ },
32683 .{ ._, ._r, .sh, .tmp3b, .ui(1), ._, ._ },
32684 .{ ._, ._, .sbb, .tmp4q, .tmp2q, ._, ._ },
32685 .{ ._, ._c, .set, .tmp3b, ._, ._, ._ },
32686 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
32687 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 8), ._, ._ },
32688 .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ },
32689 .{ ._, ._a, .j, .@"1b", ._, ._, ._ },
32690 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ },
32691 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
32692 } },
32693 }, .{
32694 .required_features = .{ .avx, null, null, null },
32695 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
32696 .patterns = &.{
32697 .{ .src = .{ .to_sse, .none, .none } },
32698 },
32699 .extra_temps = .{
32700 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32701 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
32702 .unused,
32703 .unused,
32704 .unused,
32705 .unused,
32706 .unused,
32707 .unused,
32708 .unused,
32709 },
32710 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
32711 .each = .{ .once = &.{
32712 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
32713 .{ ._, .v_ps, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
32714 } },
32715 }, .{
32716 .required_features = .{ .sse, null, null, null },
32717 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
32718 .patterns = &.{
32719 .{ .src = .{ .to_mut_sse, .none, .none } },
32720 },
32721 .extra_temps = .{
32722 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32723 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
32724 .unused,
32725 .unused,
32726 .unused,
32727 .unused,
32728 .unused,
32729 .unused,
32730 .unused,
32731 },
32732 .dst_temps = .{.{ .ref = .src0 }},
32733 .each = .{ .once = &.{
32734 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
32735 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
32736 } },
32737 }, .{
32738 .required_features = .{ .avx, null, null, null },
32739 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
32740 .patterns = &.{
32741 .{ .src = .{ .to_sse, .none, .none } },
32742 },
32743 .extra_temps = .{
32744 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32745 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
32746 .unused,
32747 .unused,
32748 .unused,
32749 .unused,
32750 .unused,
32751 .unused,
32752 .unused,
32753 },
32754 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
32755 .each = .{ .once = &.{
32756 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
32757 .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
32758 } },
32759 }, .{
32760 .required_features = .{ .avx, null, null, null },
32761 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
19779 .patterns = &.{32762 .patterns = &.{
19780 .{ .src = .{ .to_mem, .none } },32763 .{ .src = .{ .to_sse, .none, .none } },
19781 },32764 },
19782 .extra_temps = .{32765 .extra_temps = .{
19783 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32766 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
19784 .{ .kind = .{ .rc = .sse } },32767 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
19785 .unused,32768 .unused,
19786 .unused,32769 .unused,
19787 .unused,32770 .unused,
...@@ -19790,24 +32773,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19790,24 +32773,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19790 .unused,32773 .unused,
19791 .unused,32774 .unused,
19792 },32775 },
19793 .dst_temps = .{.mem},32776 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
19794 .clobbers = .{ .eflags = true },
19795 .each = .{ .once = &.{32777 .each = .{ .once = &.{
19796 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },32778 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
19797 .{ .@"0:", .p_b, .abs, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },32779 .{ ._, .v_pd, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
19798 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
19799 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
19800 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
19801 } },32780 } },
19802 }, .{32781 }, .{
19803 .required_features = .{ .ssse3, null, null, null },32782 .required_features = .{ .sse2, null, null, null },
19804 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any },32783 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
19805 .patterns = &.{32784 .patterns = &.{
19806 .{ .src = .{ .to_mem, .none } },32785 .{ .src = .{ .to_mut_sse, .none, .none } },
19807 },32786 },
19808 .extra_temps = .{32787 .extra_temps = .{
19809 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32788 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
19810 .{ .kind = .{ .rc = .sse } },32789 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
19811 .unused,32790 .unused,
19812 .unused,32791 .unused,
19813 .unused,32792 .unused,
...@@ -19816,24 +32795,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19816,24 +32795,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19816 .unused,32795 .unused,
19817 .unused,32796 .unused,
19818 },32797 },
19819 .dst_temps = .{.mem},32798 .dst_temps = .{.{ .ref = .src0 }},
19820 .clobbers = .{ .eflags = true },
19821 .each = .{ .once = &.{32799 .each = .{ .once = &.{
19822 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },32800 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
19823 .{ .@"0:", .p_w, .abs, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },32801 .{ ._, ._pd, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
19824 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
19825 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
19826 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
19827 } },32802 } },
19828 }, .{32803 }, .{
19829 .required_features = .{ .ssse3, null, null, null },32804 .required_features = .{ .avx, null, null, null },
19830 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any },32805 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
19831 .patterns = &.{32806 .patterns = &.{
19832 .{ .src = .{ .to_mem, .none } },32807 .{ .src = .{ .to_sse, .none, .none } },
19833 },32808 },
19834 .extra_temps = .{32809 .extra_temps = .{
19835 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32810 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
19836 .{ .kind = .{ .rc = .sse } },32811 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
19837 .unused,32812 .unused,
19838 .unused,32813 .unused,
19839 .unused,32814 .unused,
...@@ -19842,24 +32817,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19842,24 +32817,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19842 .unused,32817 .unused,
19843 .unused,32818 .unused,
19844 },32819 },
19845 .dst_temps = .{.mem},32820 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
19846 .clobbers = .{ .eflags = true },
19847 .each = .{ .once = &.{32821 .each = .{ .once = &.{
19848 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },32822 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
19849 .{ .@"0:", .p_d, .abs, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },32823 .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
19850 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
19851 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
19852 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
19853 } },32824 } },
19854 }, .{32825 }, .{
19855 .required_features = .{ .mmx, .ssse3, null, null },32826 .required_features = .{ .x87, null, null, null },
19856 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any },32827 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
19857 .patterns = &.{32828 .patterns = &.{
19858 .{ .src = .{ .to_mem, .none } },32829 .{ .src = .{ .mem, .none, .none } },
32830 .{ .src = .{ .to_x87, .none, .none } },
19859 },32831 },
19860 .extra_temps = .{32832 .extra_temps = .{
19861 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32833 .{ .type = .f80, .kind = .{ .reg = .st7 } },
19862 .{ .kind = .{ .rc = .sse } },32834 .unused,
19863 .unused,32835 .unused,
19864 .unused,32836 .unused,
19865 .unused,32837 .unused,
...@@ -19868,24 +32840,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19868,24 +32840,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19868 .unused,32840 .unused,
19869 .unused,32841 .unused,
19870 },32842 },
19871 .dst_temps = .{.mem},32843 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .x87 } }},
19872 .clobbers = .{ .eflags = true },
19873 .each = .{ .once = &.{32844 .each = .{ .once = &.{
19874 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },32845 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
19875 .{ .@"0:", .p_b, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },32846 .{ ._, .f_, .abs, ._, ._, ._, ._ },
19876 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },32847 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
19877 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
19878 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
19879 } },32848 } },
19880 }, .{32849 }, .{
19881 .required_features = .{ .mmx, .ssse3, null, null },32850 .required_features = .{ .avx, null, null, null },
19882 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any },32851 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
19883 .patterns = &.{32852 .patterns = &.{
19884 .{ .src = .{ .to_mem, .none } },32853 .{ .src = .{ .to_sse, .none, .none } },
19885 },32854 },
19886 .extra_temps = .{32855 .extra_temps = .{
19887 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32856 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
19888 .{ .kind = .{ .rc = .sse } },32857 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
19889 .unused,32858 .unused,
19890 .unused,32859 .unused,
19891 .unused,32860 .unused,
...@@ -19894,24 +32863,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19894,24 +32863,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19894 .unused,32863 .unused,
19895 .unused,32864 .unused,
19896 },32865 },
19897 .dst_temps = .{.mem},32866 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
19898 .clobbers = .{ .eflags = true },
19899 .each = .{ .once = &.{32867 .each = .{ .once = &.{
19900 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },32868 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
19901 .{ .@"0:", .p_w, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },32869 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
19902 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
19903 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
19904 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
19905 } },32870 } },
19906 }, .{32871 }, .{
19907 .required_features = .{ .mmx, .ssse3, null, null },32872 .required_features = .{ .sse2, null, null, null },
19908 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any },32873 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
19909 .patterns = &.{32874 .patterns = &.{
19910 .{ .src = .{ .to_mem, .none } },32875 .{ .src = .{ .to_mut_sse, .none, .none } },
19911 },32876 },
19912 .extra_temps = .{32877 .extra_temps = .{
19913 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32878 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
19914 .{ .kind = .{ .rc = .sse } },32879 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
19915 .unused,32880 .unused,
19916 .unused,32881 .unused,
19917 .unused,32882 .unused,
...@@ -19920,25 +32885,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19920,25 +32885,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19920 .unused,32885 .unused,
19921 .unused,32886 .unused,
19922 },32887 },
19923 .dst_temps = .{.mem},32888 .dst_temps = .{.{ .ref = .src0 }},
19924 .clobbers = .{ .eflags = true },
19925 .each = .{ .once = &.{32889 .each = .{ .once = &.{
19926 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },32890 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
19927 .{ .@"0:", .p_d, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },32891 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
19928 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
19929 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
19930 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
19931 } },32892 } },
19932 }, .{32893 }, .{
19933 .required_features = .{ .cmov, .slow_incdec, null, null },32894 .required_features = .{ .sse, null, null, null },
19934 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },32895 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
19935 .patterns = &.{32896 .patterns = &.{
19936 .{ .src = .{ .to_mem, .none } },32897 .{ .src = .{ .to_mut_sse, .none, .none } },
19937 },32898 },
19938 .extra_temps = .{32899 .extra_temps = .{
19939 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32900 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
19940 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },32901 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
19941 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },32902 .unused,
19942 .unused,32903 .unused,
19943 .unused,32904 .unused,
19944 .unused,32905 .unused,
...@@ -19946,28 +32907,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19946,28 +32907,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19946 .unused,32907 .unused,
19947 .unused,32908 .unused,
19948 },32909 },
19949 .dst_temps = .{.mem},32910 .dst_temps = .{.{ .ref = .src0 }},
19950 .clobbers = .{ .eflags = true },
19951 .each = .{ .once = &.{32911 .each = .{ .once = &.{
19952 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },32912 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
19953 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },32913 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
19954 .{ ._, ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
19955 .{ ._, ._, .sub, .tmp1b, .tmp2b, ._, ._ },
19956 .{ ._, ._s, .cmov, .tmp1d, .tmp2d, ._, ._ },
19957 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
19958 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
19959 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
19960 } },32914 } },
19961 }, .{32915 }, .{
19962 .required_features = .{ .cmov, null, null, null },32916 .required_features = .{ .avx2, null, null, null },
19963 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },32917 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any },
19964 .patterns = &.{32918 .patterns = &.{
19965 .{ .src = .{ .to_mem, .none } },32919 .{ .src = .{ .to_sse, .none, .none } },
19966 },32920 },
19967 .extra_temps = .{32921 .extra_temps = .{
19968 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32922 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
19969 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },32923 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
19970 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },32924 .unused,
19971 .unused,32925 .unused,
19972 .unused,32926 .unused,
19973 .unused,32927 .unused,
...@@ -19975,27 +32929,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19975,27 +32929,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19975 .unused,32929 .unused,
19976 .unused,32930 .unused,
19977 },32931 },
19978 .dst_temps = .{.mem},32932 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
19979 .clobbers = .{ .eflags = true },
19980 .each = .{ .once = &.{32933 .each = .{ .once = &.{
19981 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },32934 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
19982 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },32935 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
19983 .{ ._, ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
19984 .{ ._, ._, .sub, .tmp1b, .tmp2b, ._, ._ },
19985 .{ ._, ._s, .cmov, .tmp1d, .tmp2d, ._, ._ },
19986 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
19987 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
19988 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
19989 } },32936 } },
19990 }, .{32937 }, .{
19991 .required_features = .{ .slow_incdec, null, null, null },32938 .required_features = .{ .avx, null, null, null },
19992 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },32939 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any },
19993 .patterns = &.{32940 .patterns = &.{
19994 .{ .src = .{ .to_mem, .none } },32941 .{ .src = .{ .to_sse, .none, .none } },
19995 },32942 },
19996 .extra_temps = .{32943 .extra_temps = .{
19997 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32944 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
19998 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },32945 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
19999 .unused,32946 .unused,
20000 .unused,32947 .unused,
20001 .unused,32948 .unused,
...@@ -20004,28 +32951,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20004,28 +32951,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20004 .unused,32951 .unused,
20005 .unused,32952 .unused,
20006 },32953 },
20007 .dst_temps = .{.mem},32954 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
20008 .clobbers = .{ .eflags = true },
20009 .each = .{ .once = &.{32955 .each = .{ .once = &.{
20010 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },32956 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20011 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },32957 .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
20012 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
20013 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
20014 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },
20015 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
20016 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
20017 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20018 } },32958 } },
20019 }, .{32959 }, .{
20020 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },32960 .required_features = .{ .avx, null, null, null },
32961 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
20021 .patterns = &.{32962 .patterns = &.{
20022 .{ .src = .{ .to_mem, .none } },32963 .{ .src = .{ .to_mem, .none, .none } },
20023 },32964 },
20024 .extra_temps = .{32965 .extra_temps = .{
20025 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32966 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20026 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },32967 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
20027 .unused,32968 .{ .kind = .{ .rc = .sse } },
20028 .unused,32969 .{ .kind = .{ .rc = .sse } },
20029 .unused,32970 .unused,
20030 .unused,32971 .unused,
20031 .unused,32972 .unused,
...@@ -20033,28 +32974,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20033,28 +32974,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20033 .unused,32974 .unused,
20034 },32975 },
20035 .dst_temps = .{.mem},32976 .dst_temps = .{.mem},
20036 .clobbers = .{ .eflags = true },
20037 .each = .{ .once = &.{32977 .each = .{ .once = &.{
32978 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
32979 .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
20038 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },32980 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20039 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },32981 .{ .@"0:", .v_ps, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
20040 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },32982 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
20041 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },32983 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
20042 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },32984 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20043 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
20044 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
20045 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
20046 } },32985 } },
20047 }, .{32986 }, .{
20048 .required_features = .{ .cmov, null, null, null },32987 .required_features = .{ .sse, null, null, null },
20049 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },32988 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
20050 .patterns = &.{32989 .patterns = &.{
20051 .{ .src = .{ .to_mem, .none } },32990 .{ .src = .{ .to_mem, .none, .none } },
20052 },32991 },
20053 .extra_temps = .{32992 .extra_temps = .{
20054 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32993 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20055 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },32994 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20056 .unused,32995 .{ .kind = .{ .rc = .sse } },
20057 .unused,32996 .{ .kind = .{ .rc = .sse } },
20058 .unused,32997 .unused,
20059 .unused,32998 .unused,
20060 .unused,32999 .unused,
...@@ -20062,26 +33001,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20062,26 +33001,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20062 .unused,33001 .unused,
20063 },33002 },
20064 .dst_temps = .{.mem},33003 .dst_temps = .{.mem},
20065 .clobbers = .{ .eflags = true },
20066 .each = .{ .once = &.{33004 .each = .{ .once = &.{
33005 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
33006 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
20067 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },33007 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20068 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },33008 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
20069 .{ ._, ._, .sub, .tmp1w, .memia(.src0w, .tmp0, .add_size), ._, ._ },33009 .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
20070 .{ ._, ._s, .cmov, .tmp1w, .memia(.src0w, .tmp0, .add_size), ._, ._ },33010 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
20071 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },33011 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
20072 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
20073 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },33012 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20074 } },33013 } },
20075 }, .{33014 }, .{
20076 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },33015 .required_features = .{ .avx, null, null, null },
33016 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
20077 .patterns = &.{33017 .patterns = &.{
20078 .{ .src = .{ .to_mem, .none } },33018 .{ .src = .{ .to_mem, .none, .none } },
20079 },33019 },
20080 .extra_temps = .{33020 .extra_temps = .{
20081 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },33021 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20082 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },33022 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
20083 .unused,33023 .{ .kind = .{ .rc = .sse } },
20084 .unused,33024 .{ .kind = .{ .rc = .sse } },
20085 .unused,33025 .unused,
20086 .unused,33026 .unused,
20087 .unused,33027 .unused,
...@@ -20089,28 +33029,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20089,28 +33029,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20089 .unused,33029 .unused,
20090 },33030 },
20091 .dst_temps = .{.mem},33031 .dst_temps = .{.mem},
20092 .clobbers = .{ .eflags = true },
20093 .each = .{ .once = &.{33032 .each = .{ .once = &.{
33033 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
33034 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
20094 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },33035 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20095 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },33036 .{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
20096 .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ },33037 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
20097 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },33038 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
20098 .{ ._, ._, .neg, .tmp1d, ._, ._, ._ },
20099 .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
20100 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
20101 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },33039 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20102 } },33040 } },
20103 }, .{33041 }, .{
20104 .required_features = .{ .cmov, null, null, null },33042 .required_features = .{ .sse2, null, null, null },
20105 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },33043 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
20106 .patterns = &.{33044 .patterns = &.{
20107 .{ .src = .{ .to_mem, .none } },33045 .{ .src = .{ .to_mem, .none, .none } },
20108 },33046 },
20109 .extra_temps = .{33047 .extra_temps = .{
20110 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },33048 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20111 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },33049 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20112 .unused,33050 .{ .kind = .{ .rc = .sse } },
20113 .unused,33051 .{ .kind = .{ .rc = .sse } },
20114 .unused,33052 .unused,
20115 .unused,33053 .unused,
20116 .unused,33054 .unused,
...@@ -20118,26 +33056,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20118,26 +33056,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20118 .unused,33056 .unused,
20119 },33057 },
20120 .dst_temps = .{.mem},33058 .dst_temps = .{.mem},
20121 .clobbers = .{ .eflags = true },
20122 .each = .{ .once = &.{33059 .each = .{ .once = &.{
33060 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
33061 .{ ._, ._pd, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
20123 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },33062 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20124 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },33063 .{ .@"0:", ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
20125 .{ ._, ._, .sub, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },33064 .{ ._, ._pd, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
20126 .{ ._, ._s, .cmov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },33065 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
20127 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },33066 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
20128 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
20129 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },33067 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20130 } },33068 } },
20131 }, .{33069 }, .{
20132 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },33070 .required_features = .{ .avx2, null, null, null },
33071 .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any, .any },
20133 .patterns = &.{33072 .patterns = &.{
20134 .{ .src = .{ .to_mem, .none } },33073 .{ .src = .{ .to_mem, .none, .none } },
20135 },33074 },
20136 .extra_temps = .{33075 .extra_temps = .{
20137 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },33076 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20138 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },33077 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
20139 .unused,33078 .{ .kind = .{ .rc = .sse } },
20140 .unused,33079 .{ .kind = .{ .rc = .sse } },
20141 .unused,33080 .unused,
20142 .unused,33081 .unused,
20143 .unused,33082 .unused,
...@@ -20145,28 +33084,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20145,28 +33084,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20145 .unused,33084 .unused,
20146 },33085 },
20147 .dst_temps = .{.mem},33086 .dst_temps = .{.mem},
20148 .clobbers = .{ .eflags = true },
20149 .each = .{ .once = &.{33087 .each = .{ .once = &.{
33088 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
33089 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
20150 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },33090 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20151 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },33091 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
20152 .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ },33092 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
20153 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },33093 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
20154 .{ ._, ._, .neg, .tmp1d, ._, ._, ._ },
20155 .{ .@"1:", ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
20156 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
20157 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },33094 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20158 } },33095 } },
20159 }, .{33096 }, .{
20160 .required_features = .{ .@"64bit", .cmov, null, null },33097 .required_features = .{ .avx, null, null, null },
20161 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },33098 .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any, .any },
20162 .patterns = &.{33099 .patterns = &.{
20163 .{ .src = .{ .to_mem, .none } },33100 .{ .src = .{ .to_mem, .none, .none } },
20164 },33101 },
20165 .extra_temps = .{33102 .extra_temps = .{
20166 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },33103 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20167 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },33104 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
20168 .unused,33105 .{ .kind = .{ .rc = .sse } },
20169 .unused,33106 .{ .kind = .{ .rc = .sse } },
20170 .unused,33107 .unused,
20171 .unused,33108 .unused,
20172 .unused,33109 .unused,
...@@ -20174,27 +33111,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20174,27 +33111,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20174 .unused,33111 .unused,
20175 },33112 },
20176 .dst_temps = .{.mem},33113 .dst_temps = .{.mem},
20177 .clobbers = .{ .eflags = true },
20178 .each = .{ .once = &.{33114 .each = .{ .once = &.{
33115 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
33116 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
20179 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },33117 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20180 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },33118 .{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
20181 .{ ._, ._, .sub, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },33119 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
20182 .{ ._, ._s, .cmov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },33120 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
20183 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
20184 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
20185 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },33121 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20186 } },33122 } },
20187 }, .{33123 }, .{
20188 .required_features = .{ .@"64bit", null, null, null },33124 .required_features = .{ .sse2, null, null, null },
20189 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },33125 .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any },
20190 .patterns = &.{33126 .patterns = &.{
20191 .{ .src = .{ .to_mem, .none } },33127 .{ .src = .{ .to_mem, .none, .none } },
20192 },33128 },
20193 .extra_temps = .{33129 .extra_temps = .{
20194 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },33130 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20195 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },33131 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20196 .unused,33132 .{ .kind = .{ .rc = .sse } },
20197 .unused,33133 .{ .kind = .{ .rc = .sse } },
20198 .unused,33134 .unused,
20199 .unused,33135 .unused,
20200 .unused,33136 .unused,
...@@ -20202,63 +33138,1137 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20202,63 +33138,1137 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20202 .unused,33138 .unused,
20203 },33139 },
20204 .dst_temps = .{.mem},33140 .dst_temps = .{.mem},
20205 .clobbers = .{ .eflags = true },
20206 .each = .{ .once = &.{33141 .each = .{ .once = &.{
33142 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
33143 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
20207 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },33144 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20208 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },33145 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
20209 .{ ._, ._, .@"test", .tmp1q, .tmp1q, ._, ._ },33146 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
20210 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },33147 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
20211 .{ ._, ._, .neg, .tmp1q, ._, ._, ._ },33148 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
20212 .{ .@"1:", ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
20213 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
20214 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },33149 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20215 } },33150 } },
20216 }, .{33151 }, .{
20217 .required_features = .{ .@"64bit", null, null, null },33152 .required_features = .{ .sse, null, null, null },
20218 .src_constraints = .{ .any_scalar_int, .any },33153 .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any },
20219 .patterns = &.{33154 .patterns = &.{
20220 .{ .src = .{ .to_mem, .none } },33155 .{ .src = .{ .to_mem, .none, .none } },
20221 },33156 },
20222 .extra_temps = .{33157 .extra_temps = .{
20223 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20224 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },33158 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20225 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },33159 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20226 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },33160 .{ .kind = .{ .rc = .sse } },
20227 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },33161 .{ .kind = .{ .rc = .sse } },
33162 .unused,
20228 .unused,33163 .unused,
20229 .unused,33164 .unused,
20230 .unused,33165 .unused,
20231 .unused,33166 .unused,
20232 },33167 },
20233 .dst_temps = .{.mem},33168 .dst_temps = .{.mem},
20234 .clobbers = .{ .eflags = true },
20235 .each = .{ .once = &.{33169 .each = .{ .once = &.{
20236 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },33170 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20237 .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size), ._, ._ },33171 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
20238 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_src0_elem_size, -8), ._, ._ },33172 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20239 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },33173 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
20240 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },33174 .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
20241 .{ .@"1:", ._, .mov, .tmp4q, .memi(.src0q, .tmp0), ._, ._ },33175 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
20242 .{ ._, ._, .xor, .tmp4q, .tmp2q, ._, ._ },33176 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
20243 .{ ._, ._r, .sh, .tmp3b, .ui(1), ._, ._ },33177 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20244 .{ ._, ._, .sbb, .tmp4q, .tmp2q, ._, ._ },33178 } },
20245 .{ ._, ._c, .set, .tmp3b, ._, ._, ._ },33179 } }) catch |err| switch (err) {
20246 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },33180 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
20247 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 8), ._, ._ },33181 @tagName(air_tag),
20248 .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ },33182 cg.typeOf(ty_op.operand).fmt(pt),
20249 .{ ._, ._a, .j, .@"1b", ._, ._, ._ },33183 ops[0].tracking(cg),
20250 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ },33184 }),
20251 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },33185 else => |e| return e,
33186 };
33187 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
33188 },
33189 .floor, .ceil, .trunc_float => |air_tag| if (use_old) try cg.airRound(inst, .{ .direction = switch (air_tag) {
33190 else => unreachable,
33191 .floor => .down,
33192 .ceil => .up,
33193 .trunc_float => .zero,
33194 }, .precision = .inexact }) else {
33195 const un_op = air_datas[@intFromEnum(inst)].un_op;
33196 var ops = try cg.tempsFromOperands(inst, .{un_op});
33197 var res: [1]Temp = undefined;
33198 cg.select(&res, &.{cg.typeOf(un_op)}, &ops, switch (@as(bits.RoundMode.Direction, switch (air_tag) {
33199 else => unreachable,
33200 .floor => .down,
33201 .ceil => .up,
33202 .trunc_float => .zero,
33203 })) {
33204 else => unreachable,
33205 inline .down, .up, .zero => |direction| comptime &.{ .{
33206 .required_features = .{ .f16c, null, null, null },
33207 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
33208 .patterns = &.{
33209 .{ .src = .{ .to_sse, .none, .none } },
33210 },
33211 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
33212 .each = .{ .once = &.{
33213 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
33214 .{ ._, .v_ss, .round, .dst0x, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }) },
33215 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
33216 } },
33217 }, .{
33218 .required_features = .{ .sse, null, null, null },
33219 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
33220 .patterns = &.{
33221 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
33222 },
33223 .call_frame = .{ .alignment = .@"16" },
33224 .extra_temps = .{
33225 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
33226 else => unreachable,
33227 .down => "__floorh",
33228 .up => "__ceilh",
33229 .zero => "__trunch",
33230 } } } },
33231 .unused,
33232 .unused,
33233 .unused,
33234 .unused,
33235 .unused,
33236 .unused,
33237 .unused,
33238 .unused,
33239 },
33240 .dst_temps = .{.{ .ref = .src0 }},
33241 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33242 .each = .{ .once = &.{
33243 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
33244 } },
33245 }, .{
33246 .required_features = .{ .f16c, null, null, null },
33247 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
33248 .patterns = &.{
33249 .{ .src = .{ .mem, .none, .none } },
33250 .{ .src = .{ .to_sse, .none, .none } },
33251 },
33252 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
33253 .each = .{ .once = &.{
33254 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
33255 .{ ._, .v_ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
33256 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
33257 } },
33258 }, .{
33259 .required_features = .{ .f16c, null, null, null },
33260 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
33261 .patterns = &.{
33262 .{ .src = .{ .mem, .none, .none } },
33263 .{ .src = .{ .to_sse, .none, .none } },
33264 },
33265 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
33266 .each = .{ .once = &.{
33267 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
33268 .{ ._, .v_ps, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
33269 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
33270 } },
33271 }, .{
33272 .required_features = .{ .f16c, null, null, null },
33273 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
33274 .patterns = &.{
33275 .{ .src = .{ .to_mem, .none, .none } },
33276 },
33277 .extra_temps = .{
33278 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33279 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
33280 .unused,
33281 .unused,
33282 .unused,
33283 .unused,
33284 .unused,
33285 .unused,
33286 .unused,
33287 },
33288 .dst_temps = .{.mem},
33289 .clobbers = .{ .eflags = true },
33290 .each = .{ .once = &.{
33291 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33292 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
33293 .{ ._, .v_ps, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
33294 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
33295 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
33296 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33297 } },
33298 }, .{
33299 .required_features = .{ .avx, null, null, null },
33300 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
33301 .patterns = &.{
33302 .{ .src = .{ .to_mem, .none, .none } },
33303 },
33304 .call_frame = .{ .alignment = .@"16" },
33305 .extra_temps = .{
33306 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33307 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
33308 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
33309 else => unreachable,
33310 .down => "__floorh",
33311 .up => "__ceilh",
33312 .zero => "__trunch",
33313 } } } },
33314 .unused,
33315 .unused,
33316 .unused,
33317 .unused,
33318 .unused,
33319 .unused,
33320 },
33321 .dst_temps = .{.mem},
33322 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33323 .each = .{ .once = &.{
33324 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33325 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
33326 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
33327 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
33328 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
33329 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
33330 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33331 } },
33332 }, .{
33333 .required_features = .{ .sse4_1, null, null, null },
33334 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
33335 .patterns = &.{
33336 .{ .src = .{ .to_mem, .none, .none } },
33337 },
33338 .call_frame = .{ .alignment = .@"16" },
33339 .extra_temps = .{
33340 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33341 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
33342 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
33343 else => unreachable,
33344 .down => "__floorh",
33345 .up => "__ceilh",
33346 .zero => "__trunch",
33347 } } } },
33348 .unused,
33349 .unused,
33350 .unused,
33351 .unused,
33352 .unused,
33353 .unused,
33354 },
33355 .dst_temps = .{.mem},
33356 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33357 .each = .{ .once = &.{
33358 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33359 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
33360 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
33361 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
33362 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
33363 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
33364 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33365 } },
33366 }, .{
33367 .required_features = .{ .sse2, null, null, null },
33368 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
33369 .patterns = &.{
33370 .{ .src = .{ .to_mem, .none, .none } },
33371 },
33372 .call_frame = .{ .alignment = .@"16" },
33373 .extra_temps = .{
33374 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33375 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
33376 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
33377 else => unreachable,
33378 .down => "__floorh",
33379 .up => "__ceilh",
33380 .zero => "__trunch",
33381 } } } },
33382 .{ .type = .f16, .kind = .{ .reg = .ax } },
33383 .unused,
33384 .unused,
33385 .unused,
33386 .unused,
33387 .unused,
33388 },
33389 .dst_temps = .{.mem},
33390 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33391 .each = .{ .once = &.{
33392 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33393 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
33394 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
33395 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
33396 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
33397 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
33398 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
33399 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33400 } },
33401 }, .{
33402 .required_features = .{ .sse, null, null, null },
33403 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
33404 .patterns = &.{
33405 .{ .src = .{ .to_mem, .none, .none } },
33406 },
33407 .call_frame = .{ .alignment = .@"16" },
33408 .extra_temps = .{
33409 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33410 .{ .type = .f16, .kind = .{ .reg = .ax } },
33411 .{ .type = .f32, .kind = .mem },
33412 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
33413 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
33414 else => unreachable,
33415 .down => "__floorh",
33416 .up => "__ceilh",
33417 .zero => "__trunch",
33418 } } } },
33419 .unused,
33420 .unused,
33421 .unused,
33422 .unused,
33423 },
33424 .dst_temps = .{.mem},
33425 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33426 .each = .{ .once = &.{
33427 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33428 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
33429 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
33430 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
33431 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
33432 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
33433 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
33434 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
33435 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
33436 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33437 } },
33438 }, .{
33439 .required_features = .{ .avx, null, null, null },
33440 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
33441 .patterns = &.{
33442 .{ .src = .{ .mem, .none, .none } },
33443 },
33444 .dst_temps = .{.{ .rc = .sse }},
33445 .each = .{ .once = &.{
33446 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
33447 .{ ._, .v_ss, .round, .dst0x, .dst0x, .src0d, .rm(.{ .direction = direction, .precision = .inexact }) },
33448 } },
33449 }, .{
33450 .required_features = .{ .avx, null, null, null },
33451 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
33452 .patterns = &.{
33453 .{ .src = .{ .to_sse, .none, .none } },
33454 },
33455 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
33456 .each = .{ .once = &.{
33457 .{ ._, .v_ss, .round, .dst0x, .src0x, .src0d, .rm(.{ .direction = direction, .precision = .inexact }) },
33458 } },
33459 }, .{
33460 .required_features = .{ .sse4_1, null, null, null },
33461 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
33462 .patterns = &.{
33463 .{ .src = .{ .mem, .none, .none } },
33464 },
33465 .dst_temps = .{.{ .rc = .sse }},
33466 .each = .{ .once = &.{
33467 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
33468 .{ ._, ._ss, .round, .dst0x, .src0d, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
33469 } },
33470 }, .{
33471 .required_features = .{ .sse4_1, null, null, null },
33472 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
33473 .patterns = &.{
33474 .{ .src = .{ .to_mut_sse, .none, .none } },
33475 },
33476 .dst_temps = .{.{ .ref = .src0 }},
33477 .each = .{ .once = &.{
33478 .{ ._, ._ss, .round, .dst0x, .src0d, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
33479 } },
33480 }, .{
33481 .required_features = .{ .sse, null, null, null },
33482 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
33483 .patterns = &.{
33484 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
33485 },
33486 .call_frame = .{ .alignment = .@"16" },
33487 .extra_temps = .{
33488 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
33489 else => unreachable,
33490 .down => "floorf",
33491 .up => "ceilf",
33492 .zero => "truncf",
33493 } } } },
33494 .unused,
33495 .unused,
33496 .unused,
33497 .unused,
33498 .unused,
33499 .unused,
33500 .unused,
33501 .unused,
33502 },
33503 .dst_temps = .{.{ .ref = .src0 }},
33504 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33505 .each = .{ .once = &.{
33506 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
33507 } },
33508 }, .{
33509 .required_features = .{ .avx, null, null, null },
33510 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
33511 .patterns = &.{
33512 .{ .src = .{ .mem, .none, .none } },
33513 .{ .src = .{ .to_sse, .none, .none } },
33514 },
33515 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
33516 .each = .{ .once = &.{
33517 .{ ._, .v_ps, .round, .dst0x, .src0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
33518 } },
33519 }, .{
33520 .required_features = .{ .sse4_1, null, null, null },
33521 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
33522 .patterns = &.{
33523 .{ .src = .{ .mem, .none, .none } },
33524 .{ .src = .{ .to_sse, .none, .none } },
33525 },
33526 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
33527 .each = .{ .once = &.{
33528 .{ ._, ._ps, .round, .dst0x, .src0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
33529 } },
33530 }, .{
33531 .required_features = .{ .avx, null, null, null },
33532 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
33533 .patterns = &.{
33534 .{ .src = .{ .mem, .none, .none } },
33535 .{ .src = .{ .to_sse, .none, .none } },
33536 },
33537 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
33538 .each = .{ .once = &.{
33539 .{ ._, .v_ps, .round, .dst0y, .src0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
33540 } },
33541 }, .{
33542 .required_features = .{ .avx, null, null, null },
33543 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
33544 .patterns = &.{
33545 .{ .src = .{ .to_mem, .none, .none } },
33546 },
33547 .extra_temps = .{
33548 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33549 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
33550 .unused,
33551 .unused,
33552 .unused,
33553 .unused,
33554 .unused,
33555 .unused,
33556 .unused,
33557 },
33558 .dst_temps = .{.mem},
33559 .clobbers = .{ .eflags = true },
33560 .each = .{ .once = &.{
33561 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33562 .{ .@"0:", .v_ps, .round, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), .rm(.{
33563 .direction = direction,
33564 .precision = .inexact,
33565 }), ._ },
33566 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
33567 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
33568 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33569 } },
33570 }, .{
33571 .required_features = .{ .sse4_1, null, null, null },
33572 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
33573 .patterns = &.{
33574 .{ .src = .{ .to_mem, .none, .none } },
33575 },
33576 .extra_temps = .{
33577 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33578 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
33579 .unused,
33580 .unused,
33581 .unused,
33582 .unused,
33583 .unused,
33584 .unused,
33585 .unused,
33586 },
33587 .dst_temps = .{.mem},
33588 .clobbers = .{ .eflags = true },
33589 .each = .{ .once = &.{
33590 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33591 .{ .@"0:", ._ps, .round, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), .rm(.{
33592 .direction = direction,
33593 .precision = .inexact,
33594 }), ._ },
33595 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
33596 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
33597 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33598 } },
33599 }, .{
33600 .required_features = .{ .avx, null, null, null },
33601 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
33602 .patterns = &.{
33603 .{ .src = .{ .to_mem, .none, .none } },
33604 },
33605 .call_frame = .{ .alignment = .@"16" },
33606 .extra_temps = .{
33607 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33608 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
33609 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
33610 else => unreachable,
33611 .down => "floorf",
33612 .up => "ceilf",
33613 .zero => "truncf",
33614 } } } },
33615 .unused,
33616 .unused,
33617 .unused,
33618 .unused,
33619 .unused,
33620 .unused,
33621 },
33622 .dst_temps = .{.mem},
33623 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33624 .each = .{ .once = &.{
33625 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33626 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
33627 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
33628 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
33629 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
33630 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33631 } },
33632 }, .{
33633 .required_features = .{ .sse, null, null, null },
33634 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
33635 .patterns = &.{
33636 .{ .src = .{ .to_mem, .none, .none } },
33637 },
33638 .call_frame = .{ .alignment = .@"16" },
33639 .extra_temps = .{
33640 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33641 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
33642 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
33643 else => unreachable,
33644 .down => "floorf",
33645 .up => "ceilf",
33646 .zero => "truncf",
33647 } } } },
33648 .unused,
33649 .unused,
33650 .unused,
33651 .unused,
33652 .unused,
33653 .unused,
33654 },
33655 .dst_temps = .{.mem},
33656 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33657 .each = .{ .once = &.{
33658 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33659 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
33660 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
33661 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
33662 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
33663 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33664 } },
33665 }, .{
33666 .required_features = .{ .avx, null, null, null },
33667 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
33668 .patterns = &.{
33669 .{ .src = .{ .mem, .none, .none } },
33670 },
33671 .dst_temps = .{.{ .rc = .sse }},
33672 .each = .{ .once = &.{
33673 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
33674 .{ ._, .v_sd, .round, .dst0x, .dst0x, .src0q, .rm(.{ .direction = direction, .precision = .inexact }) },
33675 } },
33676 }, .{
33677 .required_features = .{ .avx, null, null, null },
33678 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
33679 .patterns = &.{
33680 .{ .src = .{ .to_sse, .none, .none } },
33681 },
33682 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
33683 .each = .{ .once = &.{
33684 .{ ._, .v_sd, .round, .dst0x, .src0x, .src0q, .rm(.{ .direction = direction, .precision = .inexact }) },
33685 } },
33686 }, .{
33687 .required_features = .{ .sse4_1, null, null, null },
33688 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
33689 .patterns = &.{
33690 .{ .src = .{ .mem, .none, .none } },
33691 },
33692 .dst_temps = .{.{ .rc = .sse }},
33693 .each = .{ .once = &.{
33694 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
33695 .{ ._, ._sd, .round, .dst0x, .src0q, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
33696 } },
33697 }, .{
33698 .required_features = .{ .sse4_1, null, null, null },
33699 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
33700 .patterns = &.{
33701 .{ .src = .{ .to_mut_sse, .none, .none } },
33702 },
33703 .dst_temps = .{.{ .ref = .src0 }},
33704 .each = .{ .once = &.{
33705 .{ ._, ._sd, .round, .dst0x, .src0q, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
33706 } },
33707 }, .{
33708 .required_features = .{ .sse, null, null, null },
33709 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
33710 .patterns = &.{
33711 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
33712 },
33713 .call_frame = .{ .alignment = .@"16" },
33714 .extra_temps = .{
33715 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
33716 else => unreachable,
33717 .down => "floor",
33718 .up => "ceil",
33719 .zero => "trunc",
33720 } } } },
33721 .unused,
33722 .unused,
33723 .unused,
33724 .unused,
33725 .unused,
33726 .unused,
33727 .unused,
33728 .unused,
33729 },
33730 .dst_temps = .{.{ .ref = .src0 }},
33731 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33732 .each = .{ .once = &.{
33733 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
33734 } },
33735 }, .{
33736 .required_features = .{ .avx, null, null, null },
33737 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
33738 .patterns = &.{
33739 .{ .src = .{ .mem, .none, .none } },
33740 .{ .src = .{ .to_sse, .none, .none } },
33741 },
33742 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
33743 .each = .{ .once = &.{
33744 .{ ._, .v_pd, .round, .dst0x, .src0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
33745 } },
33746 }, .{
33747 .required_features = .{ .sse4_1, null, null, null },
33748 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
33749 .patterns = &.{
33750 .{ .src = .{ .mem, .none, .none } },
33751 .{ .src = .{ .to_sse, .none, .none } },
33752 },
33753 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
33754 .each = .{ .once = &.{
33755 .{ ._, ._pd, .round, .dst0x, .src0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
33756 } },
33757 }, .{
33758 .required_features = .{ .avx, null, null, null },
33759 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
33760 .patterns = &.{
33761 .{ .src = .{ .mem, .none, .none } },
33762 .{ .src = .{ .to_sse, .none, .none } },
33763 },
33764 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
33765 .each = .{ .once = &.{
33766 .{ ._, .v_pd, .round, .dst0y, .src0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
33767 } },
33768 }, .{
33769 .required_features = .{ .avx, null, null, null },
33770 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
33771 .patterns = &.{
33772 .{ .src = .{ .to_mem, .none, .none } },
33773 },
33774 .extra_temps = .{
33775 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33776 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
33777 .unused,
33778 .unused,
33779 .unused,
33780 .unused,
33781 .unused,
33782 .unused,
33783 .unused,
33784 },
33785 .dst_temps = .{.mem},
33786 .clobbers = .{ .eflags = true },
33787 .each = .{ .once = &.{
33788 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33789 .{ .@"0:", .v_pd, .round, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), .rm(.{
33790 .direction = direction,
33791 .precision = .inexact,
33792 }), ._ },
33793 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
33794 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
33795 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33796 } },
33797 }, .{
33798 .required_features = .{ .sse4_1, null, null, null },
33799 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
33800 .patterns = &.{
33801 .{ .src = .{ .to_mem, .none, .none } },
33802 },
33803 .extra_temps = .{
33804 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33805 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
33806 .unused,
33807 .unused,
33808 .unused,
33809 .unused,
33810 .unused,
33811 .unused,
33812 .unused,
33813 },
33814 .dst_temps = .{.mem},
33815 .clobbers = .{ .eflags = true },
33816 .each = .{ .once = &.{
33817 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33818 .{ .@"0:", ._pd, .round, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), .rm(.{
33819 .direction = direction,
33820 .precision = .inexact,
33821 }), ._ },
33822 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
33823 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
33824 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33825 } },
33826 }, .{
33827 .required_features = .{ .avx, null, null, null },
33828 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
33829 .patterns = &.{
33830 .{ .src = .{ .to_mem, .none, .none } },
33831 },
33832 .call_frame = .{ .alignment = .@"16" },
33833 .extra_temps = .{
33834 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33835 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
33836 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
33837 else => unreachable,
33838 .down => "floor",
33839 .up => "ceil",
33840 .zero => "trunc",
33841 } } } },
33842 .unused,
33843 .unused,
33844 .unused,
33845 .unused,
33846 .unused,
33847 .unused,
33848 },
33849 .dst_temps = .{.mem},
33850 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33851 .each = .{ .once = &.{
33852 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33853 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
33854 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
33855 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
33856 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
33857 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33858 } },
33859 }, .{
33860 .required_features = .{ .sse2, null, null, null },
33861 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
33862 .patterns = &.{
33863 .{ .src = .{ .to_mem, .none, .none } },
33864 },
33865 .call_frame = .{ .alignment = .@"16" },
33866 .extra_temps = .{
33867 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33868 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
33869 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
33870 else => unreachable,
33871 .down => "floor",
33872 .up => "ceil",
33873 .zero => "trunc",
33874 } } } },
33875 .unused,
33876 .unused,
33877 .unused,
33878 .unused,
33879 .unused,
33880 .unused,
33881 },
33882 .dst_temps = .{.mem},
33883 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33884 .each = .{ .once = &.{
33885 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33886 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
33887 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
33888 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
33889 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
33890 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33891 } },
33892 }, .{
33893 .required_features = .{ .sse, null, null, null },
33894 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
33895 .patterns = &.{
33896 .{ .src = .{ .to_mem, .none, .none } },
33897 },
33898 .call_frame = .{ .alignment = .@"16" },
33899 .extra_temps = .{
33900 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33901 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
33902 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
33903 else => unreachable,
33904 .down => "floor",
33905 .up => "ceil",
33906 .zero => "trunc",
33907 } } } },
33908 .unused,
33909 .unused,
33910 .unused,
33911 .unused,
33912 .unused,
33913 .unused,
33914 },
33915 .dst_temps = .{.mem},
33916 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33917 .each = .{ .once = &.{
33918 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33919 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
33920 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
33921 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
33922 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
33923 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
33924 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33925 } },
33926 }, .{
33927 .required_features = .{ .avx, .x87, null, null },
33928 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
33929 .patterns = &.{
33930 .{ .src = .{ .to_mem, .none, .none } },
33931 },
33932 .call_frame = .{ .size = 16, .alignment = .@"16" },
33933 .extra_temps = .{
33934 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
33935 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
33936 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
33937 else => unreachable,
33938 .down => "__floorx",
33939 .up => "__ceilx",
33940 .zero => "__truncx",
33941 } } } },
33942 .unused,
33943 .unused,
33944 .unused,
33945 .unused,
33946 .unused,
33947 .unused,
33948 },
33949 .dst_temps = .{.{ .reg = .st0 }},
33950 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33951 .each = .{ .once = &.{
33952 .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ },
33953 .{ ._, .v_dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ },
33954 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
33955 } },
33956 }, .{
33957 .required_features = .{ .sse2, .x87, null, null },
33958 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
33959 .patterns = &.{
33960 .{ .src = .{ .to_mem, .none, .none } },
33961 },
33962 .call_frame = .{ .size = 16, .alignment = .@"16" },
33963 .extra_temps = .{
33964 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
33965 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
33966 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
33967 else => unreachable,
33968 .down => "__floorx",
33969 .up => "__ceilx",
33970 .zero => "__truncx",
33971 } } } },
33972 .unused,
33973 .unused,
33974 .unused,
33975 .unused,
33976 .unused,
33977 .unused,
33978 },
33979 .dst_temps = .{.{ .reg = .st0 }},
33980 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33981 .each = .{ .once = &.{
33982 .{ ._, ._dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ },
33983 .{ ._, ._dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ },
33984 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
33985 } },
33986 }, .{
33987 .required_features = .{ .sse, .x87, null, null },
33988 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
33989 .patterns = &.{
33990 .{ .src = .{ .to_mem, .none, .none } },
33991 },
33992 .call_frame = .{ .size = 16, .alignment = .@"16" },
33993 .extra_temps = .{
33994 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
33995 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
33996 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
33997 else => unreachable,
33998 .down => "__floorx",
33999 .up => "__ceilx",
34000 .zero => "__truncx",
34001 } } } },
34002 .unused,
34003 .unused,
34004 .unused,
34005 .unused,
34006 .unused,
34007 .unused,
34008 },
34009 .dst_temps = .{.{ .reg = .st0 }},
34010 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34011 .each = .{ .once = &.{
34012 .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ },
34013 .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ },
34014 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
34015 } },
34016 }, .{
34017 .required_features = .{ .avx, .x87, null, null },
34018 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
34019 .patterns = &.{
34020 .{ .src = .{ .to_mem, .none, .none } },
34021 },
34022 .call_frame = .{ .size = 16, .alignment = .@"16" },
34023 .extra_temps = .{
34024 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34025 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
34026 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
34027 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
34028 else => unreachable,
34029 .down => "__floorx",
34030 .up => "__ceilx",
34031 .zero => "__truncx",
34032 } } } },
34033 .unused,
34034 .unused,
34035 .unused,
34036 .unused,
34037 .unused,
34038 },
34039 .dst_temps = .{.mem},
34040 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34041 .each = .{ .once = &.{
34042 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
34043 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
34044 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
34045 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
34046 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
34047 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
34048 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
34049 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34050 } },
34051 }, .{
34052 .required_features = .{ .sse2, .x87, null, null },
34053 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
34054 .patterns = &.{
34055 .{ .src = .{ .to_mem, .none, .none } },
34056 },
34057 .call_frame = .{ .size = 16, .alignment = .@"16" },
34058 .extra_temps = .{
34059 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34060 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
34061 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
34062 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
34063 else => unreachable,
34064 .down => "__floorx",
34065 .up => "__ceilx",
34066 .zero => "__truncx",
34067 } } } },
34068 .unused,
34069 .unused,
34070 .unused,
34071 .unused,
34072 .unused,
34073 },
34074 .dst_temps = .{.mem},
34075 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34076 .each = .{ .once = &.{
34077 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
34078 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
34079 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
34080 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
34081 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
34082 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
34083 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
34084 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34085 } },
34086 }, .{
34087 .required_features = .{ .sse, .x87, null, null },
34088 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
34089 .patterns = &.{
34090 .{ .src = .{ .to_mem, .none, .none } },
34091 },
34092 .call_frame = .{ .size = 16, .alignment = .@"16" },
34093 .extra_temps = .{
34094 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34095 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
34096 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
34097 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
34098 else => unreachable,
34099 .down => "__floorx",
34100 .up => "__ceilx",
34101 .zero => "__truncx",
34102 } } } },
34103 .unused,
34104 .unused,
34105 .unused,
34106 .unused,
34107 .unused,
34108 },
34109 .dst_temps = .{.mem},
34110 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34111 .each = .{ .once = &.{
34112 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
34113 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
34114 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
34115 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
34116 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
34117 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
34118 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
34119 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34120 } },
34121 }, .{
34122 .required_features = .{ .sse, null, null, null },
34123 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
34124 .patterns = &.{
34125 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
34126 },
34127 .call_frame = .{ .alignment = .@"16" },
34128 .extra_temps = .{
34129 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
34130 else => unreachable,
34131 .down => "floorq",
34132 .up => "ceilq",
34133 .zero => "truncq",
34134 } } } },
34135 .unused,
34136 .unused,
34137 .unused,
34138 .unused,
34139 .unused,
34140 .unused,
34141 .unused,
34142 .unused,
34143 },
34144 .dst_temps = .{.{ .ref = .src0 }},
34145 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34146 .each = .{ .once = &.{
34147 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
34148 } },
34149 }, .{
34150 .required_features = .{ .avx, null, null, null },
34151 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
34152 .patterns = &.{
34153 .{ .src = .{ .to_mem, .none, .none } },
34154 },
34155 .call_frame = .{ .alignment = .@"16" },
34156 .extra_temps = .{
34157 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34158 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
34159 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
34160 else => unreachable,
34161 .down => "floorq",
34162 .up => "ceilq",
34163 .zero => "truncq",
34164 } } } },
34165 .unused,
34166 .unused,
34167 .unused,
34168 .unused,
34169 .unused,
34170 .unused,
34171 },
34172 .dst_temps = .{.mem},
34173 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34174 .each = .{ .once = &.{
34175 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
34176 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
34177 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
34178 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
34179 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
34180 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34181 } },
34182 }, .{
34183 .required_features = .{ .sse2, null, null, null },
34184 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
34185 .patterns = &.{
34186 .{ .src = .{ .to_mem, .none, .none } },
34187 },
34188 .call_frame = .{ .alignment = .@"16" },
34189 .extra_temps = .{
34190 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34191 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
34192 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
34193 else => unreachable,
34194 .down => "floorq",
34195 .up => "ceilq",
34196 .zero => "truncq",
34197 } } } },
34198 .unused,
34199 .unused,
34200 .unused,
34201 .unused,
34202 .unused,
34203 .unused,
34204 },
34205 .dst_temps = .{.mem},
34206 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34207 .each = .{ .once = &.{
34208 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
34209 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
34210 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
34211 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
34212 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
34213 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34214 } },
34215 }, .{
34216 .required_features = .{ .sse, null, null, null },
34217 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
34218 .patterns = &.{
34219 .{ .src = .{ .to_mem, .none, .none } },
34220 },
34221 .call_frame = .{ .alignment = .@"16" },
34222 .extra_temps = .{
34223 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34224 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
34225 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
34226 else => unreachable,
34227 .down => "floorq",
34228 .up => "ceilq",
34229 .zero => "truncq",
34230 } } } },
34231 .unused,
34232 .unused,
34233 .unused,
34234 .unused,
34235 .unused,
34236 .unused,
34237 },
34238 .dst_temps = .{.mem},
34239 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34240 .each = .{ .once = &.{
34241 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
34242 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
34243 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
34244 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
34245 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
34246 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34247 } },
20252 } },34248 } },
20253 }, .{34249 }) catch |err| switch (err) {
34250 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
34251 @tagName(air_tag),
34252 cg.typeOf(un_op).fmt(pt),
34253 ops[0].tracking(cg),
34254 }),
34255 else => |e| return e,
34256 };
34257 try res[0].finish(inst, &.{un_op}, &ops, cg);
34258 },
34259 .neg, .neg_optimized => |air_tag| if (use_old) try cg.airFloatSign(inst, .neg) else {
34260 const un_op = air_datas[@intFromEnum(inst)].un_op;
34261 var ops = try cg.tempsFromOperands(inst, .{un_op});
34262 var res: [1]Temp = undefined;
34263 cg.select(&res, &.{cg.typeOf(un_op)}, &ops, comptime &.{ .{
20254 .required_features = .{ .avx, null, null, null },34264 .required_features = .{ .avx, null, null, null },
20255 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },34265 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
20256 .patterns = &.{34266 .patterns = &.{
20257 .{ .src = .{ .to_sse, .none } },34267 .{ .src = .{ .to_sse, .none, .none } },
20258 },34268 },
20259 .extra_temps = .{34269 .extra_temps = .{
20260 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },34270 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20261 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },34271 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20262 .unused,34272 .unused,
20263 .unused,34273 .unused,
20264 .unused,34274 .unused,
...@@ -20270,17 +34280,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20270,17 +34280,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20270 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},34280 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
20271 .each = .{ .once = &.{34281 .each = .{ .once = &.{
20272 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },34282 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20273 .{ ._, .v_ps, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },34283 .{ ._, .v_ps, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },
20274 } },34284 } },
20275 }, .{34285 }, .{
20276 .required_features = .{ .sse, null, null, null },34286 .required_features = .{ .sse, null, null, null },
20277 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },34287 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
20278 .patterns = &.{34288 .patterns = &.{
20279 .{ .src = .{ .to_mut_sse, .none } },34289 .{ .src = .{ .to_mut_sse, .none, .none } },
20280 },34290 },
20281 .extra_temps = .{34291 .extra_temps = .{
20282 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },34292 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20283 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },34293 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20284 .unused,34294 .unused,
20285 .unused,34295 .unused,
20286 .unused,34296 .unused,
...@@ -20292,17 +34302,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20292,17 +34302,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20292 .dst_temps = .{.{ .ref = .src0 }},34302 .dst_temps = .{.{ .ref = .src0 }},
20293 .each = .{ .once = &.{34303 .each = .{ .once = &.{
20294 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },34304 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20295 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },34305 .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
20296 } },34306 } },
20297 }, .{34307 }, .{
20298 .required_features = .{ .avx, null, null, null },34308 .required_features = .{ .avx, null, null, null },
20299 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any },34309 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
20300 .patterns = &.{34310 .patterns = &.{
20301 .{ .src = .{ .to_sse, .none } },34311 .{ .src = .{ .to_sse, .none, .none } },
20302 },34312 },
20303 .extra_temps = .{34313 .extra_temps = .{
20304 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },34314 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20305 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },34315 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
20306 .unused,34316 .unused,
20307 .unused,34317 .unused,
20308 .unused,34318 .unused,
...@@ -20314,17 +34324,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20314,17 +34324,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20314 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},34324 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
20315 .each = .{ .once = &.{34325 .each = .{ .once = &.{
20316 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },34326 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20317 .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },34327 .{ ._, .v_ps, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
20318 } },34328 } },
20319 }, .{34329 }, .{
20320 .required_features = .{ .avx, null, null, null },34330 .required_features = .{ .avx, null, null, null },
20321 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },34331 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
20322 .patterns = &.{34332 .patterns = &.{
20323 .{ .src = .{ .to_sse, .none } },34333 .{ .src = .{ .to_sse, .none, .none } },
20324 },34334 },
20325 .extra_temps = .{34335 .extra_temps = .{
20326 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },34336 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20327 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },34337 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20328 .unused,34338 .unused,
20329 .unused,34339 .unused,
20330 .unused,34340 .unused,
...@@ -20336,17 +34346,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20336,17 +34346,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20336 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},34346 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
20337 .each = .{ .once = &.{34347 .each = .{ .once = &.{
20338 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },34348 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20339 .{ ._, .v_pd, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },34349 .{ ._, .v_pd, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },
20340 } },34350 } },
20341 }, .{34351 }, .{
20342 .required_features = .{ .sse2, null, null, null },34352 .required_features = .{ .sse2, null, null, null },
20343 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },34353 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
20344 .patterns = &.{34354 .patterns = &.{
20345 .{ .src = .{ .to_mut_sse, .none } },34355 .{ .src = .{ .to_mut_sse, .none, .none } },
20346 },34356 },
20347 .extra_temps = .{34357 .extra_temps = .{
20348 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },34358 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20349 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },34359 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20350 .unused,34360 .unused,
20351 .unused,34361 .unused,
20352 .unused,34362 .unused,
...@@ -20358,17 +34368,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20358,17 +34368,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20358 .dst_temps = .{.{ .ref = .src0 }},34368 .dst_temps = .{.{ .ref = .src0 }},
20359 .each = .{ .once = &.{34369 .each = .{ .once = &.{
20360 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },34370 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20361 .{ ._, ._pd, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },34371 .{ ._, ._pd, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
20362 } },34372 } },
20363 }, .{34373 }, .{
20364 .required_features = .{ .avx, null, null, null },34374 .required_features = .{ .avx, null, null, null },
20365 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },34375 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
20366 .patterns = &.{34376 .patterns = &.{
20367 .{ .src = .{ .to_sse, .none } },34377 .{ .src = .{ .to_sse, .none, .none } },
20368 },34378 },
20369 .extra_temps = .{34379 .extra_temps = .{
20370 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },34380 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20371 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },34381 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
20372 .unused,34382 .unused,
20373 .unused,34383 .unused,
20374 .unused,34384 .unused,
...@@ -20380,14 +34390,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20380,14 +34390,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20380 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},34390 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
20381 .each = .{ .once = &.{34391 .each = .{ .once = &.{
20382 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },34392 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20383 .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },34393 .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
20384 } },34394 } },
20385 }, .{34395 }, .{
20386 .required_features = .{ .x87, null, null, null },34396 .required_features = .{ .x87, null, null, null },
20387 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },34397 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
20388 .patterns = &.{34398 .patterns = &.{
20389 .{ .src = .{ .mem, .none } },34399 .{ .src = .{ .mem, .none, .none } },
20390 .{ .src = .{ .to_x87, .none } },34400 .{ .src = .{ .to_x87, .none, .none } },
20391 },34401 },
20392 .extra_temps = .{34402 .extra_temps = .{
20393 .{ .type = .f80, .kind = .{ .reg = .st7 } },34403 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -20403,18 +34413,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20403,18 +34413,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20403 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .x87 } }},34413 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .x87 } }},
20404 .each = .{ .once = &.{34414 .each = .{ .once = &.{
20405 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },34415 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
20406 .{ ._, .f_, .abs, ._, ._, ._, ._ },34416 .{ ._, .f_, .chs, ._, ._, ._, ._ },
20407 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },34417 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
20408 } },34418 } },
20409 }, .{34419 }, .{
20410 .required_features = .{ .avx, null, null, null },34420 .required_features = .{ .avx, null, null, null },
20411 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any },34421 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
20412 .patterns = &.{34422 .patterns = &.{
20413 .{ .src = .{ .to_sse, .none } },34423 .{ .src = .{ .to_sse, .none, .none } },
20414 },34424 },
20415 .extra_temps = .{34425 .extra_temps = .{
20416 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },34426 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20417 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },34427 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20418 .unused,34428 .unused,
20419 .unused,34429 .unused,
20420 .unused,34430 .unused,
...@@ -20426,17 +34436,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20426,17 +34436,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20426 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},34436 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
20427 .each = .{ .once = &.{34437 .each = .{ .once = &.{
20428 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },34438 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20429 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },34439 .{ ._, .vp_, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },
20430 } },34440 } },
20431 }, .{34441 }, .{
20432 .required_features = .{ .sse2, null, null, null },34442 .required_features = .{ .sse2, null, null, null },
20433 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any },34443 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
20434 .patterns = &.{34444 .patterns = &.{
20435 .{ .src = .{ .to_mut_sse, .none } },34445 .{ .src = .{ .to_mut_sse, .none, .none } },
20436 },34446 },
20437 .extra_temps = .{34447 .extra_temps = .{
20438 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },34448 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20439 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },34449 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20440 .unused,34450 .unused,
20441 .unused,34451 .unused,
20442 .unused,34452 .unused,
...@@ -20448,17 +34458,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20448,17 +34458,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20448 .dst_temps = .{.{ .ref = .src0 }},34458 .dst_temps = .{.{ .ref = .src0 }},
20449 .each = .{ .once = &.{34459 .each = .{ .once = &.{
20450 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },34460 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20451 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },34461 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
20452 } },34462 } },
20453 }, .{34463 }, .{
20454 .required_features = .{ .sse, null, null, null },34464 .required_features = .{ .sse, null, null, null },
20455 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any },34465 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
20456 .patterns = &.{34466 .patterns = &.{
20457 .{ .src = .{ .to_mut_sse, .none } },34467 .{ .src = .{ .to_mut_sse, .none, .none } },
20458 },34468 },
20459 .extra_temps = .{34469 .extra_temps = .{
20460 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },34470 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20461 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },34471 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20462 .unused,34472 .unused,
20463 .unused,34473 .unused,
20464 .unused,34474 .unused,
...@@ -20470,17 +34480,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20470,17 +34480,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20470 .dst_temps = .{.{ .ref = .src0 }},34480 .dst_temps = .{.{ .ref = .src0 }},
20471 .each = .{ .once = &.{34481 .each = .{ .once = &.{
20472 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },34482 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20473 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },34483 .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
20474 } },34484 } },
20475 }, .{34485 }, .{
20476 .required_features = .{ .avx2, null, null, null },34486 .required_features = .{ .avx2, null, null, null },
20477 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any },34487 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any },
20478 .patterns = &.{34488 .patterns = &.{
20479 .{ .src = .{ .to_sse, .none } },34489 .{ .src = .{ .to_sse, .none, .none } },
20480 },34490 },
20481 .extra_temps = .{34491 .extra_temps = .{
20482 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },34492 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20483 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },34493 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
20484 .unused,34494 .unused,
20485 .unused,34495 .unused,
20486 .unused,34496 .unused,
...@@ -20492,17 +34502,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20492,17 +34502,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20492 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},34502 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
20493 .each = .{ .once = &.{34503 .each = .{ .once = &.{
20494 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },34504 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20495 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },34505 .{ ._, .vp_, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
20496 } },34506 } },
20497 }, .{34507 }, .{
20498 .required_features = .{ .avx, null, null, null },34508 .required_features = .{ .avx, null, null, null },
20499 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any },34509 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any },
20500 .patterns = &.{34510 .patterns = &.{
20501 .{ .src = .{ .to_sse, .none } },34511 .{ .src = .{ .to_sse, .none, .none } },
20502 },34512 },
20503 .extra_temps = .{34513 .extra_temps = .{
20504 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },34514 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20505 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },34515 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
20506 .unused,34516 .unused,
20507 .unused,34517 .unused,
20508 .unused,34518 .unused,
...@@ -20514,17 +34524,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20514,17 +34524,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20514 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},34524 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
20515 .each = .{ .once = &.{34525 .each = .{ .once = &.{
20516 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },34526 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20517 .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },34527 .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
20518 } },34528 } },
20519 }, .{34529 }, .{
20520 .required_features = .{ .avx, null, null, null },34530 .required_features = .{ .avx, null, null, null },
20521 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },34531 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
20522 .patterns = &.{34532 .patterns = &.{
20523 .{ .src = .{ .to_mem, .none } },34533 .{ .src = .{ .to_mem, .none, .none } },
20524 },34534 },
20525 .extra_temps = .{34535 .extra_temps = .{
20526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34536 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20527 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },34537 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
20528 .{ .kind = .{ .rc = .sse } },34538 .{ .kind = .{ .rc = .sse } },
20529 .{ .kind = .{ .rc = .sse } },34539 .{ .kind = .{ .rc = .sse } },
20530 .unused,34540 .unused,
...@@ -20538,20 +34548,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20538,20 +34548,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20538 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },34548 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20539 .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },34549 .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
20540 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },34550 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20541 .{ .@"0:", .v_ps, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },34551 .{ .@"0:", .v_ps, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
20542 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },34552 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
20543 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },34553 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
20544 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },34554 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20545 } },34555 } },
20546 }, .{34556 }, .{
20547 .required_features = .{ .sse, null, null, null },34557 .required_features = .{ .sse, null, null, null },
20548 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },34558 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
20549 .patterns = &.{34559 .patterns = &.{
20550 .{ .src = .{ .to_mem, .none } },34560 .{ .src = .{ .to_mem, .none, .none } },
20551 },34561 },
20552 .extra_temps = .{34562 .extra_temps = .{
20553 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34563 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20554 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },34564 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20555 .{ .kind = .{ .rc = .sse } },34565 .{ .kind = .{ .rc = .sse } },
20556 .{ .kind = .{ .rc = .sse } },34566 .{ .kind = .{ .rc = .sse } },
20557 .unused,34567 .unused,
...@@ -20566,20 +34576,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20566,20 +34576,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20566 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },34576 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
20567 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },34577 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20568 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },34578 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
20569 .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },34579 .{ ._, ._ps, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
20570 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },34580 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
20571 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },34581 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
20572 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },34582 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20573 } },34583 } },
20574 }, .{34584 }, .{
20575 .required_features = .{ .avx, null, null, null },34585 .required_features = .{ .avx, null, null, null },
20576 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },34586 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
20577 .patterns = &.{34587 .patterns = &.{
20578 .{ .src = .{ .to_mem, .none } },34588 .{ .src = .{ .to_mem, .none, .none } },
20579 },34589 },
20580 .extra_temps = .{34590 .extra_temps = .{
20581 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34591 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20582 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },34592 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
20583 .{ .kind = .{ .rc = .sse } },34593 .{ .kind = .{ .rc = .sse } },
20584 .{ .kind = .{ .rc = .sse } },34594 .{ .kind = .{ .rc = .sse } },
20585 .unused,34595 .unused,
...@@ -20593,20 +34603,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20593,20 +34603,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20593 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },34603 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20594 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },34604 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
20595 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },34605 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20596 .{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },34606 .{ .@"0:", .v_pd, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
20597 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },34607 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
20598 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },34608 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
20599 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },34609 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20600 } },34610 } },
20601 }, .{34611 }, .{
20602 .required_features = .{ .sse2, null, null, null },34612 .required_features = .{ .sse2, null, null, null },
20603 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },34613 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
20604 .patterns = &.{34614 .patterns = &.{
20605 .{ .src = .{ .to_mem, .none } },34615 .{ .src = .{ .to_mem, .none, .none } },
20606 },34616 },
20607 .extra_temps = .{34617 .extra_temps = .{
20608 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34618 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20609 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },34619 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20610 .{ .kind = .{ .rc = .sse } },34620 .{ .kind = .{ .rc = .sse } },
20611 .{ .kind = .{ .rc = .sse } },34621 .{ .kind = .{ .rc = .sse } },
20612 .unused,34622 .unused,
...@@ -20621,20 +34631,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20621,20 +34631,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20621 .{ ._, ._pd, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },34631 .{ ._, ._pd, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
20622 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },34632 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20623 .{ .@"0:", ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },34633 .{ .@"0:", ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
20624 .{ ._, ._pd, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },34634 .{ ._, ._pd, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
20625 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },34635 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
20626 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },34636 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
20627 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },34637 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20628 } },34638 } },
20629 }, .{34639 }, .{
20630 .required_features = .{ .avx2, null, null, null },34640 .required_features = .{ .avx2, null, null, null },
20631 .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any },34641 .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any, .any },
20632 .patterns = &.{34642 .patterns = &.{
20633 .{ .src = .{ .to_mem, .none } },34643 .{ .src = .{ .to_mem, .none, .none } },
20634 },34644 },
20635 .extra_temps = .{34645 .extra_temps = .{
20636 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34646 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20637 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },34647 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
20638 .{ .kind = .{ .rc = .sse } },34648 .{ .kind = .{ .rc = .sse } },
20639 .{ .kind = .{ .rc = .sse } },34649 .{ .kind = .{ .rc = .sse } },
20640 .unused,34650 .unused,
...@@ -20648,20 +34658,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20648,20 +34658,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20648 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },34658 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20649 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },34659 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
20650 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },34660 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20651 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },34661 .{ .@"0:", .vp_, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
20652 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },34662 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
20653 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },34663 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
20654 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },34664 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20655 } },34665 } },
20656 }, .{34666 }, .{
20657 .required_features = .{ .avx, null, null, null },34667 .required_features = .{ .avx, null, null, null },
20658 .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any },34668 .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any, .any },
20659 .patterns = &.{34669 .patterns = &.{
20660 .{ .src = .{ .to_mem, .none } },34670 .{ .src = .{ .to_mem, .none, .none } },
20661 },34671 },
20662 .extra_temps = .{34672 .extra_temps = .{
20663 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34673 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20664 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },34674 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
20665 .{ .kind = .{ .rc = .sse } },34675 .{ .kind = .{ .rc = .sse } },
20666 .{ .kind = .{ .rc = .sse } },34676 .{ .kind = .{ .rc = .sse } },
20667 .unused,34677 .unused,
...@@ -20675,20 +34685,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20675,20 +34685,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20675 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },34685 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20676 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },34686 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
20677 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },34687 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20678 .{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },34688 .{ .@"0:", .v_pd, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
20679 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },34689 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
20680 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },34690 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
20681 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },34691 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20682 } },34692 } },
20683 }, .{34693 }, .{
20684 .required_features = .{ .sse2, null, null, null },34694 .required_features = .{ .sse2, null, null, null },
20685 .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any },34695 .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any },
20686 .patterns = &.{34696 .patterns = &.{
20687 .{ .src = .{ .to_mem, .none } },34697 .{ .src = .{ .to_mem, .none, .none } },
20688 },34698 },
20689 .extra_temps = .{34699 .extra_temps = .{
20690 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34700 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20691 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },34701 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20692 .{ .kind = .{ .rc = .sse } },34702 .{ .kind = .{ .rc = .sse } },
20693 .{ .kind = .{ .rc = .sse } },34703 .{ .kind = .{ .rc = .sse } },
20694 .unused,34704 .unused,
...@@ -20703,20 +34713,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20703,20 +34713,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20703 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },34713 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
20704 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },34714 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20705 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },34715 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
20706 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },34716 .{ ._, .p_, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
20707 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },34717 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
20708 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },34718 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
20709 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },34719 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20710 } },34720 } },
20711 }, .{34721 }, .{
20712 .required_features = .{ .sse, null, null, null },34722 .required_features = .{ .sse, null, null, null },
20713 .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any },34723 .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any },
20714 .patterns = &.{34724 .patterns = &.{
20715 .{ .src = .{ .to_mem, .none } },34725 .{ .src = .{ .to_mem, .none, .none } },
20716 },34726 },
20717 .extra_temps = .{34727 .extra_temps = .{
20718 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34728 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20719 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },34729 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20720 .{ .kind = .{ .rc = .sse } },34730 .{ .kind = .{ .rc = .sse } },
20721 .{ .kind = .{ .rc = .sse } },34731 .{ .kind = .{ .rc = .sse } },
20722 .unused,34732 .unused,
...@@ -20731,7 +34741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20731,7 +34741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20731 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },34741 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
20732 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },34742 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20733 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },34743 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
20734 .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },34744 .{ ._, ._ps, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
20735 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },34745 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
20736 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },34746 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
20737 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },34747 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
...@@ -20739,12 +34749,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20739,12 +34749,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20739 } }) catch |err| switch (err) {34749 } }) catch |err| switch (err) {
20740 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{34750 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
20741 @tagName(air_tag),34751 @tagName(air_tag),
20742 cg.typeOf(ty_op.operand).fmt(pt),34752 cg.typeOf(un_op).fmt(pt),
20743 ops[0].tracking(cg),34753 ops[0].tracking(cg),
20744 }),34754 }),
20745 else => |e| return e,34755 else => |e| return e,
20746 };34756 };
20747 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);34757 try res[0].finish(inst, &.{un_op}, &ops, cg);
20748 },34758 },
2074934759
20750 .cmp_lt,34760 .cmp_lt,
...@@ -20773,9 +34783,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20773,9 +34783,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20773 }) {34783 }) {
20774 inline false, true => |strict| comptime &.{ .{34784 inline false, true => |strict| comptime &.{ .{
20775 .required_features = .{ .f16c, null, null, null },34785 .required_features = .{ .f16c, null, null, null },
20776 .src_constraints = .{ .{ .float = .word }, .{ .float = .word } },34786 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
20777 .patterns = &.{34787 .patterns = &.{
20778 .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } },34788 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
20779 },34789 },
20780 .extra_temps = .{34790 .extra_temps = .{
20781 .{ .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },34791 .{ .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
...@@ -20800,9 +34810,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20800,9 +34810,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20800 } },34810 } },
20801 }, .{34811 }, .{
20802 .required_features = .{ .sse, null, null, null },34812 .required_features = .{ .sse, null, null, null },
20803 .src_constraints = .{ .{ .float = .word }, .{ .float = .word } },34813 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
20804 .patterns = &.{34814 .patterns = &.{
20805 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },34815 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
20806 },34816 },
20807 .call_frame = .{ .alignment = .@"16" },34817 .call_frame = .{ .alignment = .@"16" },
20808 .extra_temps = .{34818 .extra_temps = .{
...@@ -20827,10 +34837,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20827,10 +34837,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20827 } },34837 } },
20828 }, .{34838 }, .{
20829 .required_features = .{ .avx, null, null, null },34839 .required_features = .{ .avx, null, null, null },
20830 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword } },34840 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },
20831 .patterns = &.{34841 .patterns = &.{
20832 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },34842 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
20833 .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } },34843 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
20834 },34844 },
20835 .dst_temps = .{.{ .cc = switch (strict) {34845 .dst_temps = .{.{ .cc = switch (strict) {
20836 true => .a,34846 true => .a,
...@@ -20842,10 +34852,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20842,10 +34852,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20842 } },34852 } },
20843 }, .{34853 }, .{
20844 .required_features = .{ .sse, null, null, null },34854 .required_features = .{ .sse, null, null, null },
20845 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword } },34855 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },
20846 .patterns = &.{34856 .patterns = &.{
20847 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },34857 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
20848 .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } },34858 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
20849 },34859 },
20850 .dst_temps = .{.{ .cc = switch (strict) {34860 .dst_temps = .{.{ .cc = switch (strict) {
20851 true => .a,34861 true => .a,
...@@ -20857,10 +34867,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20857,10 +34867,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20857 } },34867 } },
20858 }, .{34868 }, .{
20859 .required_features = .{ .avx, null, null, null },34869 .required_features = .{ .avx, null, null, null },
20860 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },34870 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
20861 .patterns = &.{34871 .patterns = &.{
20862 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },34872 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
20863 .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } },34873 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
20864 },34874 },
20865 .dst_temps = .{.{ .cc = switch (strict) {34875 .dst_temps = .{.{ .cc = switch (strict) {
20866 true => .a,34876 true => .a,
...@@ -20872,10 +34882,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20872,10 +34882,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20872 } },34882 } },
20873 }, .{34883 }, .{
20874 .required_features = .{ .sse2, null, null, null },34884 .required_features = .{ .sse2, null, null, null },
20875 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },34885 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
20876 .patterns = &.{34886 .patterns = &.{
20877 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },34887 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
20878 .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } },34888 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
20879 },34889 },
20880 .dst_temps = .{.{ .cc = switch (strict) {34890 .dst_temps = .{.{ .cc = switch (strict) {
20881 true => .a,34891 true => .a,
...@@ -20887,13 +34897,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20887,13 +34897,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20887 } },34897 } },
20888 }, .{34898 }, .{
20889 .required_features = .{ .x87, .cmov, null, null },34899 .required_features = .{ .x87, .cmov, null, null },
20890 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },34900 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
20891 .patterns = &.{34901 .patterns = &.{
20892 .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } },34902 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
20893 },34903 },
20894 .extra_temps = .{34904 .extra_temps = .{
20895 .{ .type = .f80, .kind = .{ .reg = .st6 } },34905 .{ .type = .f64, .kind = .{ .reg = .st6 } },
20896 .{ .type = .f80, .kind = .{ .reg = .st7 } },34906 .{ .type = .f64, .kind = .{ .reg = .st7 } },
20897 .unused,34907 .unused,
20898 .unused,34908 .unused,
20899 .unused,34909 .unused,
...@@ -20915,13 +34925,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20915,13 +34925,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20915 } },34925 } },
20916 }, .{34926 }, .{
20917 .required_features = .{ .sahf, .x87, null, null },34927 .required_features = .{ .sahf, .x87, null, null },
20918 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },34928 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
20919 .patterns = &.{34929 .patterns = &.{
20920 .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } },34930 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
20921 },34931 },
20922 .extra_temps = .{34932 .extra_temps = .{
20923 .{ .type = .f80, .kind = .{ .reg = .st6 } },34933 .{ .type = .f64, .kind = .{ .reg = .st6 } },
20924 .{ .type = .f80, .kind = .{ .reg = .st7 } },34934 .{ .type = .f64, .kind = .{ .reg = .st7 } },
20925 .{ .type = .u8, .kind = .{ .reg = .ah } },34935 .{ .type = .u8, .kind = .{ .reg = .ah } },
20926 .unused,34936 .unused,
20927 .unused,34937 .unused,
...@@ -20944,13 +34954,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20944,13 +34954,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20944 } },34954 } },
20945 }, .{34955 }, .{
20946 .required_features = .{ .x87, null, null, null },34956 .required_features = .{ .x87, null, null, null },
20947 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },34957 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
20948 .patterns = &.{34958 .patterns = &.{
20949 .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } },34959 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
20950 },34960 },
20951 .extra_temps = .{34961 .extra_temps = .{
20952 .{ .type = .f80, .kind = .{ .reg = .st6 } },34962 .{ .type = .f64, .kind = .{ .reg = .st6 } },
20953 .{ .type = .f80, .kind = .{ .reg = .st7 } },34963 .{ .type = .f64, .kind = .{ .reg = .st7 } },
20954 .{ .type = .u8, .kind = .{ .reg = .ah } },34964 .{ .type = .u8, .kind = .{ .reg = .ah } },
20955 .unused,34965 .unused,
20956 .unused,34966 .unused,
...@@ -20976,10 +34986,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20976,10 +34986,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20976 } },34986 } },
20977 }, .{34987 }, .{
20978 .required_features = .{ .x87, .cmov, null, null },34988 .required_features = .{ .x87, .cmov, null, null },
20979 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },34989 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
20980 .patterns = &.{34990 .patterns = &.{
20981 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },34991 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
20982 .{ .src = .{ .to_x87, .to_x87 }, .commute = .{ 0, 1 } },34992 .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } },
20983 },34993 },
20984 .extra_temps = .{34994 .extra_temps = .{
20985 .{ .type = .f80, .kind = .{ .reg = .st7 } },34995 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -21003,9 +35013,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21003,9 +35013,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21003 } },35013 } },
21004 }, .{35014 }, .{
21005 .required_features = .{ .sahf, .x87, null, null },35015 .required_features = .{ .sahf, .x87, null, null },
21006 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },35016 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
21007 .patterns = &.{35017 .patterns = &.{
21008 .{ .src = .{ .mem, .mem }, .commute = .{ 0, 1 } },35018 .{ .src = .{ .mem, .mem, .none }, .commute = .{ 0, 1 } },
21009 },35019 },
21010 .extra_temps = .{35020 .extra_temps = .{
21011 .{ .type = .f80, .kind = .{ .reg = .st6 } },35021 .{ .type = .f80, .kind = .{ .reg = .st6 } },
...@@ -21032,10 +35042,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21032,10 +35042,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21032 } },35042 } },
21033 }, .{35043 }, .{
21034 .required_features = .{ .sahf, .x87, null, null },35044 .required_features = .{ .sahf, .x87, null, null },
21035 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },35045 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
21036 .patterns = &.{35046 .patterns = &.{
21037 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },35047 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
21038 .{ .src = .{ .to_x87, .to_x87 }, .commute = .{ 0, 1 } },35048 .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } },
21039 },35049 },
21040 .extra_temps = .{35050 .extra_temps = .{
21041 .{ .type = .f80, .kind = .{ .reg = .st6 } },35051 .{ .type = .f80, .kind = .{ .reg = .st6 } },
...@@ -21061,9 +35071,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21061,9 +35071,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21061 } },35071 } },
21062 }, .{35072 }, .{
21063 .required_features = .{ .x87, null, null, null },35073 .required_features = .{ .x87, null, null, null },
21064 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },35074 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
21065 .patterns = &.{35075 .patterns = &.{
21066 .{ .src = .{ .mem, .mem }, .commute = .{ 0, 1 } },35076 .{ .src = .{ .mem, .mem, .none }, .commute = .{ 0, 1 } },
21067 },35077 },
21068 .extra_temps = .{35078 .extra_temps = .{
21069 .{ .type = .f80, .kind = .{ .reg = .st6 } },35079 .{ .type = .f80, .kind = .{ .reg = .st6 } },
...@@ -21093,10 +35103,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21093,10 +35103,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21093 } },35103 } },
21094 }, .{35104 }, .{
21095 .required_features = .{ .x87, null, null, null },35105 .required_features = .{ .x87, null, null, null },
21096 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },35106 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
21097 .patterns = &.{35107 .patterns = &.{
21098 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },35108 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
21099 .{ .src = .{ .to_x87, .to_x87 }, .commute = .{ 0, 1 } },35109 .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } },
21100 },35110 },
21101 .extra_temps = .{35111 .extra_temps = .{
21102 .{ .type = .f80, .kind = .{ .reg = .st6 } },35112 .{ .type = .f80, .kind = .{ .reg = .st6 } },
...@@ -21125,9 +35135,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21125,9 +35135,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21125 } },35135 } },
21126 }, .{35136 }, .{
21127 .required_features = .{ .sse, null, null, null },35137 .required_features = .{ .sse, null, null, null },
21128 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword } },35138 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword }, .any },
21129 .patterns = &.{35139 .patterns = &.{
21130 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },35140 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
21131 },35141 },
21132 .call_frame = .{ .alignment = .@"16" },35142 .call_frame = .{ .alignment = .@"16" },
21133 .extra_temps = .{35143 .extra_temps = .{
...@@ -21205,15 +35215,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21205,15 +35215,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21205 switch (Condition.fromCompareOperatorUnsigned(cmp_op)) {35215 switch (Condition.fromCompareOperatorUnsigned(cmp_op)) {
21206 else => unreachable,35216 else => unreachable,
21207 inline .e, .ne => |cc| comptime &.{.{35217 inline .e, .ne => |cc| comptime &.{.{
21208 .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte } },35218 .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte }, .any },
21209 .patterns = &.{35219 .patterns = &.{
21210 .{ .src = .{ .mem, .imm8 } },35220 .{ .src = .{ .mem, .imm8, .none } },
21211 .{ .src = .{ .imm8, .mem }, .commute = .{ 0, 1 } },35221 .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } },
21212 .{ .src = .{ .to_gpr, .imm8 } },35222 .{ .src = .{ .to_gpr, .imm8, .none } },
21213 .{ .src = .{ .imm8, .to_gpr }, .commute = .{ 0, 1 } },35223 .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } },
21214 .{ .src = .{ .mem, .to_gpr } },35224 .{ .src = .{ .mem, .to_gpr, .none } },
21215 .{ .src = .{ .to_gpr, .mem }, .commute = .{ 0, 1 } },35225 .{ .src = .{ .to_gpr, .mem, .none }, .commute = .{ 0, 1 } },
21216 .{ .src = .{ .to_gpr, .to_gpr } },35226 .{ .src = .{ .to_gpr, .to_gpr, .none } },
21217 },35227 },
21218 .dst_temps = .{.{ .rc = .general_purpose }},35228 .dst_temps = .{.{ .rc = .general_purpose }},
21219 .clobbers = .{ .eflags = true },35229 .clobbers = .{ .eflags = true },
...@@ -21255,9 +35265,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21255,9 +35265,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21255 }) {35265 }) {
21256 inline false, true => |optimized| comptime &.{ .{35266 inline false, true => |optimized| comptime &.{ .{
21257 .required_features = .{ .f16c, null, null, null },35267 .required_features = .{ .f16c, null, null, null },
21258 .src_constraints = .{ .{ .float = .word }, .{ .float = .word } },35268 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
21259 .patterns = &.{35269 .patterns = &.{
21260 .{ .src = .{ .to_sse, .to_sse } },35270 .{ .src = .{ .to_sse, .to_sse, .none } },
21261 },35271 },
21262 .extra_temps = .{35272 .extra_temps = .{
21263 .{ .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },35273 .{ .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
...@@ -21278,13 +35288,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21278,13 +35288,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21278 .each = .{ .once = &.{35288 .each = .{ .once = &.{
21279 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },35289 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
21280 .{ ._, .v_ps, .cvtph2, .tmp1x, .src1q, ._, ._ },35290 .{ ._, .v_ps, .cvtph2, .tmp1x, .src1q, ._, ._ },
21281 .{ ._, .v_ss, .ucomi, .tmp0x, .tmp1x, ._, ._ },35291 .{ ._, .v_ss, .ucomi, .tmp0x, .tmp1d, ._, ._ },
21282 } },35292 } },
21283 }, .{35293 }, .{
21284 .required_features = .{ .sse, null, null, null },35294 .required_features = .{ .sse, null, null, null },
21285 .src_constraints = .{ .{ .float = .word }, .{ .float = .word } },35295 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
21286 .patterns = &.{35296 .patterns = &.{
21287 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },35297 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
21288 },35298 },
21289 .call_frame = .{ .alignment = .@"16" },35299 .call_frame = .{ .alignment = .@"16" },
21290 .extra_temps = .{35300 .extra_temps = .{
...@@ -21306,11 +35316,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21306,11 +35316,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21306 } },35316 } },
21307 }, .{35317 }, .{
21308 .required_features = .{ .avx, null, null, null },35318 .required_features = .{ .avx, null, null, null },
21309 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword } },35319 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },
21310 .patterns = &.{35320 .patterns = &.{
21311 .{ .src = .{ .to_sse, .mem } },35321 .{ .src = .{ .to_sse, .mem, .none } },
21312 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },35322 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
21313 .{ .src = .{ .to_sse, .to_sse } },35323 .{ .src = .{ .to_sse, .to_sse, .none } },
21314 },35324 },
21315 .dst_temps = .{.{ .cc = switch (optimized) {35325 .dst_temps = .{.{ .cc = switch (optimized) {
21316 false => .z_and_np,35326 false => .z_and_np,
...@@ -21322,11 +35332,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21322,11 +35332,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21322 } },35332 } },
21323 }, .{35333 }, .{
21324 .required_features = .{ .sse, null, null, null },35334 .required_features = .{ .sse, null, null, null },
21325 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword } },35335 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },
21326 .patterns = &.{35336 .patterns = &.{
21327 .{ .src = .{ .to_sse, .mem } },35337 .{ .src = .{ .to_sse, .mem, .none } },
21328 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },35338 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
21329 .{ .src = .{ .to_sse, .to_sse } },35339 .{ .src = .{ .to_sse, .to_sse, .none } },
21330 },35340 },
21331 .dst_temps = .{.{ .cc = switch (optimized) {35341 .dst_temps = .{.{ .cc = switch (optimized) {
21332 false => .z_and_np,35342 false => .z_and_np,
...@@ -21338,11 +35348,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21338,11 +35348,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21338 } },35348 } },
21339 }, .{35349 }, .{
21340 .required_features = .{ .avx, null, null, null },35350 .required_features = .{ .avx, null, null, null },
21341 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },35351 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
21342 .patterns = &.{35352 .patterns = &.{
21343 .{ .src = .{ .to_sse, .mem } },35353 .{ .src = .{ .to_sse, .mem, .none } },
21344 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },35354 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
21345 .{ .src = .{ .to_sse, .to_sse } },35355 .{ .src = .{ .to_sse, .to_sse, .none } },
21346 },35356 },
21347 .dst_temps = .{.{ .cc = switch (optimized) {35357 .dst_temps = .{.{ .cc = switch (optimized) {
21348 false => .z_and_np,35358 false => .z_and_np,
...@@ -21354,11 +35364,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21354,11 +35364,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21354 } },35364 } },
21355 }, .{35365 }, .{
21356 .required_features = .{ .sse2, null, null, null },35366 .required_features = .{ .sse2, null, null, null },
21357 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },35367 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
21358 .patterns = &.{35368 .patterns = &.{
21359 .{ .src = .{ .to_sse, .mem } },35369 .{ .src = .{ .to_sse, .mem, .none } },
21360 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },35370 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
21361 .{ .src = .{ .to_sse, .to_sse } },35371 .{ .src = .{ .to_sse, .to_sse, .none } },
21362 },35372 },
21363 .dst_temps = .{.{ .cc = switch (optimized) {35373 .dst_temps = .{.{ .cc = switch (optimized) {
21364 false => .z_and_np,35374 false => .z_and_np,
...@@ -21370,13 +35380,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21370,13 +35380,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21370 } },35380 } },
21371 }, .{35381 }, .{
21372 .required_features = .{ .x87, .cmov, null, null },35382 .required_features = .{ .x87, .cmov, null, null },
21373 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },35383 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
21374 .patterns = &.{35384 .patterns = &.{
21375 .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } },35385 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
21376 },35386 },
21377 .extra_temps = .{35387 .extra_temps = .{
21378 .{ .type = .f80, .kind = .{ .reg = .st6 } },35388 .{ .type = .f64, .kind = .{ .reg = .st6 } },
21379 .{ .type = .f80, .kind = .{ .reg = .st7 } },35389 .{ .type = .f64, .kind = .{ .reg = .st7 } },
21380 .unused,35390 .unused,
21381 .unused,35391 .unused,
21382 .unused,35392 .unused,
...@@ -21398,13 +35408,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21398,13 +35408,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21398 } },35408 } },
21399 }, .{35409 }, .{
21400 .required_features = .{ .sahf, .x87, null, null },35410 .required_features = .{ .sahf, .x87, null, null },
21401 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },35411 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
21402 .patterns = &.{35412 .patterns = &.{
21403 .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } },35413 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
21404 },35414 },
21405 .extra_temps = .{35415 .extra_temps = .{
21406 .{ .type = .f80, .kind = .{ .reg = .st6 } },35416 .{ .type = .f64, .kind = .{ .reg = .st6 } },
21407 .{ .type = .f80, .kind = .{ .reg = .st7 } },35417 .{ .type = .f64, .kind = .{ .reg = .st7 } },
21408 .{ .type = .u8, .kind = .{ .reg = .ah } },35418 .{ .type = .u8, .kind = .{ .reg = .ah } },
21409 .unused,35419 .unused,
21410 .unused,35420 .unused,
...@@ -21427,13 +35437,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21427,13 +35437,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21427 } },35437 } },
21428 }, .{35438 }, .{
21429 .required_features = .{ .x87, null, null, null },35439 .required_features = .{ .x87, null, null, null },
21430 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },35440 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
21431 .patterns = &.{35441 .patterns = &.{
21432 .{ .src = .{ .to_mem, .to_mem } },35442 .{ .src = .{ .to_mem, .to_mem, .none } },
21433 },35443 },
21434 .extra_temps = .{35444 .extra_temps = .{
21435 .{ .type = .f80, .kind = .{ .reg = .st6 } },35445 .{ .type = .f64, .kind = .{ .reg = .st6 } },
21436 .{ .type = .f80, .kind = .{ .reg = .st7 } },35446 .{ .type = .f64, .kind = .{ .reg = .st7 } },
21437 .{ .type = .u8, .kind = .{ .reg = .ah } },35447 .{ .type = .u8, .kind = .{ .reg = .ah } },
21438 .unused,35448 .unused,
21439 .unused,35449 .unused,
...@@ -21466,11 +35476,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21466,11 +35476,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21466 } },35476 } },
21467 }, .{35477 }, .{
21468 .required_features = .{ .x87, .cmov, null, null },35478 .required_features = .{ .x87, .cmov, null, null },
21469 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },35479 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
21470 .patterns = &.{35480 .patterns = &.{
21471 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },35481 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
21472 .{ .src = .{ .mem, .to_x87 } },35482 .{ .src = .{ .mem, .to_x87, .none } },
21473 .{ .src = .{ .to_x87, .to_x87 } },35483 .{ .src = .{ .to_x87, .to_x87, .none } },
21474 },35484 },
21475 .extra_temps = .{35485 .extra_temps = .{
21476 .{ .type = .f80, .kind = .{ .reg = .st7 } },35486 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -21494,9 +35504,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21494,9 +35504,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21494 } },35504 } },
21495 }, .{35505 }, .{
21496 .required_features = .{ .sahf, .x87, null, null },35506 .required_features = .{ .sahf, .x87, null, null },
21497 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },35507 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
21498 .patterns = &.{35508 .patterns = &.{
21499 .{ .src = .{ .mem, .mem } },35509 .{ .src = .{ .mem, .mem, .none } },
21500 },35510 },
21501 .extra_temps = .{35511 .extra_temps = .{
21502 .{ .type = .f80, .kind = .{ .reg = .st6 } },35512 .{ .type = .f80, .kind = .{ .reg = .st6 } },
...@@ -21523,11 +35533,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21523,11 +35533,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21523 } },35533 } },
21524 }, .{35534 }, .{
21525 .required_features = .{ .sahf, .x87, null, null },35535 .required_features = .{ .sahf, .x87, null, null },
21526 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },35536 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
21527 .patterns = &.{35537 .patterns = &.{
21528 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },35538 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
21529 .{ .src = .{ .mem, .to_x87 } },35539 .{ .src = .{ .mem, .to_x87, .none } },
21530 .{ .src = .{ .to_x87, .to_x87 } },35540 .{ .src = .{ .to_x87, .to_x87, .none } },
21531 },35541 },
21532 .extra_temps = .{35542 .extra_temps = .{
21533 .{ .type = .f80, .kind = .{ .reg = .st6 } },35543 .{ .type = .f80, .kind = .{ .reg = .st6 } },
...@@ -21553,9 +35563,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21553,9 +35563,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21553 } },35563 } },
21554 }, .{35564 }, .{
21555 .required_features = .{ .x87, null, null, null },35565 .required_features = .{ .x87, null, null, null },
21556 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },35566 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
21557 .patterns = &.{35567 .patterns = &.{
21558 .{ .src = .{ .mem, .mem } },35568 .{ .src = .{ .mem, .mem, .none } },
21559 },35569 },
21560 .extra_temps = .{35570 .extra_temps = .{
21561 .{ .type = .f80, .kind = .{ .reg = .st6 } },35571 .{ .type = .f80, .kind = .{ .reg = .st6 } },
...@@ -21592,11 +35602,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21592,11 +35602,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21592 } },35602 } },
21593 }, .{35603 }, .{
21594 .required_features = .{ .x87, null, null, null },35604 .required_features = .{ .x87, null, null, null },
21595 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },35605 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
21596 .patterns = &.{35606 .patterns = &.{
21597 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },35607 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
21598 .{ .src = .{ .mem, .to_x87 } },35608 .{ .src = .{ .mem, .to_x87, .none } },
21599 .{ .src = .{ .to_x87, .to_x87 } },35609 .{ .src = .{ .to_x87, .to_x87, .none } },
21600 },35610 },
21601 .extra_temps = .{35611 .extra_temps = .{
21602 .{ .type = .f80, .kind = .{ .reg = .st6 } },35612 .{ .type = .f80, .kind = .{ .reg = .st6 } },
...@@ -21631,9 +35641,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21631,9 +35641,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21631 } },35641 } },
21632 }, .{35642 }, .{
21633 .required_features = .{ .sse, null, null, null },35643 .required_features = .{ .sse, null, null, null },
21634 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword } },35644 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword }, .any },
21635 .patterns = &.{35645 .patterns = &.{
21636 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },35646 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
21637 },35647 },
21638 .call_frame = .{ .alignment = .@"16" },35648 .call_frame = .{ .alignment = .@"16" },
21639 .extra_temps = .{35649 .extra_temps = .{
...@@ -21664,279 +35674,6765 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21664,279 +35674,6765 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21664 },35674 },
21665 }35675 }
21666 },35676 },
21667 .int => res[0] = ops[0].cmpInts(cmp_op, &ops[1], cg) catch |err| break :err err,35677 .int => res[0] = ops[0].cmpInts(cmp_op, &ops[1], cg) catch |err| break :err err,
21668 }) catch |err| switch (err) {35678 }) catch |err| switch (err) {
21669 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{35679 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
21670 @tagName(air_tag),35680 @tagName(air_tag),
21671 cg.typeOf(bin_op.lhs).fmt(pt),35681 cg.typeOf(bin_op.lhs).fmt(pt),
21672 ops[0].tracking(cg),35682 ops[0].tracking(cg),
21673 ops[1].tracking(cg),35683 ops[1].tracking(cg),
21674 }),35684 }),
21675 else => |e| return e,35685 else => |e| return e,
21676 };35686 };
21677 if (opt_info) |*oi| {35687 if (opt_info) |*oi| {
21678 for (ops) |op| for (res) |r| {35688 for (ops) |op| for (res) |r| {
21679 if (op.index == r.index) break;35689 if (op.index == r.index) break;
21680 } else try op.die(cg);35690 } else try op.die(cg);
21681 try cg.genCopy(.bool, oi.res[0].tracking(cg).short, res[0].tracking(cg).short, .{});35691 try cg.genCopy(.bool, oi.res[0].tracking(cg).short, res[0].tracking(cg).short, .{});
21682 try res[0].die(cg);35692 try res[0].die(cg);
21683 res[0] = oi.res[0];35693 res[0] = oi.res[0];
21684 try cg.restoreState(oi.state, &oi.deaths, .{35694 try cg.restoreState(oi.state, &oi.deaths, .{
21685 .emit_instructions = true,35695 .emit_instructions = true,
21686 .update_tracking = true,35696 .update_tracking = true,
21687 .resurrect = true,35697 .resurrect = true,
21688 .close_scope = true,35698 .close_scope = true,
21689 });35699 });
21690 cg.performReloc(oi.reloc);35700 cg.performReloc(oi.reloc);
21691 @memset(&ops, res[0]);35701 @memset(&ops, res[0]);
21692 }35702 }
21693 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);35703 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
21694 },35704 },
2169535705
21696 .cond_br => try cg.airCondBr(inst),35706 .cond_br => try cg.airCondBr(inst),
21697 .switch_br => try cg.airSwitchBr(inst),35707 .switch_br => try cg.airSwitchBr(inst),
21698 .loop_switch_br => try cg.airLoopSwitchBr(inst),35708 .loop_switch_br => try cg.airLoopSwitchBr(inst),
21699 .switch_dispatch => try cg.airSwitchDispatch(inst),35709 .switch_dispatch => try cg.airSwitchDispatch(inst),
21700 .@"try", .try_cold => try cg.airTry(inst),35710 .@"try", .try_cold => try cg.airTry(inst),
21701 .try_ptr, .try_ptr_cold => try cg.airTryPtr(inst),35711 .try_ptr, .try_ptr_cold => try cg.airTryPtr(inst),
21702 .dbg_stmt => if (cg.debug_output != .none) {35712 .dbg_stmt => if (cg.debug_output != .none) {
21703 const dbg_stmt = air_datas[@intFromEnum(inst)].dbg_stmt;35713 const dbg_stmt = air_datas[@intFromEnum(inst)].dbg_stmt;
21704 _ = try cg.addInst(.{35714 _ = try cg.addInst(.{
21705 .tag = .pseudo,35715 .tag = .pseudo,
21706 .ops = .pseudo_dbg_line_stmt_line_column,35716 .ops = .pseudo_dbg_line_stmt_line_column,
21707 .data = .{ .line_column = .{35717 .data = .{ .line_column = .{
21708 .line = dbg_stmt.line,35718 .line = dbg_stmt.line,
21709 .column = dbg_stmt.column,35719 .column = dbg_stmt.column,
35720 } },
35721 });
35722 },
35723 .dbg_empty_stmt => if (cg.debug_output != .none) {
35724 if (cg.mir_instructions.len > 0) {
35725 const prev_mir_op = &cg.mir_instructions.items(.ops)[cg.mir_instructions.len - 1];
35726 if (prev_mir_op.* == .pseudo_dbg_line_line_column)
35727 prev_mir_op.* = .pseudo_dbg_line_stmt_line_column;
35728 }
35729 try cg.asmOpOnly(.{ ._, .nop });
35730 },
35731 .dbg_inline_block => {
35732 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
35733 const extra = cg.air.extraData(Air.DbgInlineBlock, ty_pl.payload);
35734 const old_inline_func = cg.inline_func;
35735 defer cg.inline_func = old_inline_func;
35736 cg.inline_func = extra.data.func;
35737 if (cg.debug_output != .none) _ = try cg.addInst(.{
35738 .tag = .pseudo,
35739 .ops = .pseudo_dbg_enter_inline_func,
35740 .data = .{ .func = extra.data.func },
35741 });
35742 try cg.lowerBlock(inst, @ptrCast(cg.air.extra[extra.end..][0..extra.data.body_len]));
35743 if (cg.debug_output != .none) _ = try cg.addInst(.{
35744 .tag = .pseudo,
35745 .ops = .pseudo_dbg_leave_inline_func,
35746 .data = .{ .func = old_inline_func },
35747 });
35748 },
35749 .dbg_var_ptr,
35750 .dbg_var_val,
35751 .dbg_arg_inline,
35752 => if (use_old) try cg.airDbgVar(inst) else if (cg.debug_output != .none) {
35753 const pl_op = air_datas[@intFromEnum(inst)].pl_op;
35754 var ops = try cg.tempsFromOperands(inst, .{pl_op.operand});
35755 var mcv = ops[0].tracking(cg).short;
35756 switch (mcv) {
35757 else => {},
35758 .eflags => |cc| switch (cc) {
35759 else => {},
35760 // These values would self destruct. Maybe we make them use their
35761 // turing complete dwarf expression interpreters for once?
35762 .z_and_np, .nz_or_p => {
35763 try cg.spillEflagsIfOccupied();
35764 mcv = ops[0].tracking(cg).short;
35765 },
35766 },
35767 }
35768 try cg.genLocalDebugInfo(inst, ops[0].tracking(cg).short);
35769 try ops[0].die(cg);
35770 },
35771 .is_null_ptr => if (use_old) try cg.airIsNullPtr(inst) else {
35772 const un_op = air_datas[@intFromEnum(inst)].un_op;
35773 const opt_ty = cg.typeOf(un_op).childType(zcu);
35774 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);
35775 const opt_child_ty = opt_ty.optionalChild(zcu);
35776 const opt_child_abi_size: u31 = @intCast(opt_child_ty.abiSize(zcu));
35777 var ops = try cg.tempsFromOperands(inst, .{un_op});
35778 if (!opt_repr_is_pl) try ops[0].toOffset(opt_child_abi_size, cg);
35779 while (try ops[0].toLea(cg)) {}
35780 try cg.asmMemoryImmediate(
35781 .{ ._, .cmp },
35782 try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = if (!opt_repr_is_pl)
35783 .byte
35784 else if (opt_child_ty.isSlice(zcu))
35785 .qword
35786 else
35787 .fromSize(opt_child_abi_size) }),
35788 .u(0),
35789 );
35790 const is_null = try cg.tempInit(.bool, .{ .eflags = .e });
35791 try is_null.finish(inst, &.{un_op}, &ops, cg);
35792 },
35793 .is_non_null_ptr => if (use_old) try cg.airIsNonNullPtr(inst) else {
35794 const un_op = air_datas[@intFromEnum(inst)].un_op;
35795 const opt_ty = cg.typeOf(un_op).childType(zcu);
35796 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);
35797 const opt_child_ty = opt_ty.optionalChild(zcu);
35798 const opt_child_abi_size: u31 = @intCast(opt_child_ty.abiSize(zcu));
35799 var ops = try cg.tempsFromOperands(inst, .{un_op});
35800 if (!opt_repr_is_pl) try ops[0].toOffset(opt_child_abi_size, cg);
35801 while (try ops[0].toLea(cg)) {}
35802 try cg.asmMemoryImmediate(
35803 .{ ._, .cmp },
35804 try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = if (!opt_repr_is_pl)
35805 .byte
35806 else if (opt_child_ty.isSlice(zcu))
35807 .qword
35808 else
35809 .fromSize(opt_child_abi_size) }),
35810 .u(0),
35811 );
35812 const is_non_null = try cg.tempInit(.bool, .{ .eflags = .ne });
35813 try is_non_null.finish(inst, &.{un_op}, &ops, cg);
35814 },
35815 .is_err_ptr => if (use_old) try cg.airIsErrPtr(inst) else {
35816 const un_op = air_datas[@intFromEnum(inst)].un_op;
35817 const eu_ty = cg.typeOf(un_op).childType(zcu);
35818 const eu_err_ty = eu_ty.errorUnionSet(zcu);
35819 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
35820 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
35821 var ops = try cg.tempsFromOperands(inst, .{un_op});
35822 try ops[0].toOffset(eu_err_off, cg);
35823 while (try ops[0].toLea(cg)) {}
35824 try cg.asmMemoryImmediate(
35825 .{ ._, .cmp },
35826 try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = cg.memSize(eu_err_ty) }),
35827 .u(0),
35828 );
35829 const is_err = try cg.tempInit(.bool, .{ .eflags = .ne });
35830 try is_err.finish(inst, &.{un_op}, &ops, cg);
35831 },
35832 .is_non_err_ptr => if (use_old) try cg.airIsNonErrPtr(inst) else {
35833 const un_op = air_datas[@intFromEnum(inst)].un_op;
35834 const eu_ty = cg.typeOf(un_op).childType(zcu);
35835 const eu_err_ty = eu_ty.errorUnionSet(zcu);
35836 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
35837 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
35838 var ops = try cg.tempsFromOperands(inst, .{un_op});
35839 try ops[0].toOffset(eu_err_off, cg);
35840 while (try ops[0].toLea(cg)) {}
35841 try cg.asmMemoryImmediate(
35842 .{ ._, .cmp },
35843 try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = cg.memSize(eu_err_ty) }),
35844 .u(0),
35845 );
35846 const is_non_err = try cg.tempInit(.bool, .{ .eflags = .e });
35847 try is_non_err.finish(inst, &.{un_op}, &ops, cg);
35848 },
35849 .load => if (use_old) try cg.airLoad(inst) else fallback: {
35850 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
35851 const val_ty = ty_op.ty.toType();
35852 const ptr_ty = cg.typeOf(ty_op.operand);
35853 const ptr_info = ptr_ty.ptrInfo(zcu);
35854 if (ptr_info.packed_offset.host_size > 0 and
35855 (ptr_info.flags.vector_index == .none or val_ty.toIntern() == .bool_type))
35856 break :fallback try cg.airLoad(inst);
35857 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
35858 const res = try ops[0].load(val_ty, .{
35859 .disp = switch (ptr_info.flags.vector_index) {
35860 .none => 0,
35861 .runtime => unreachable,
35862 else => |vector_index| @intCast(val_ty.abiSize(zcu) * @intFromEnum(vector_index)),
35863 },
35864 }, cg);
35865 try res.finish(inst, &.{ty_op.operand}, &ops, cg);
35866 },
35867 .ret => try cg.airRet(inst, false),
35868 .ret_safe => try cg.airRet(inst, true),
35869 .ret_load => try cg.airRetLoad(inst),
35870 .store, .store_safe => |air_tag| if (use_old) try cg.airStore(inst, switch (air_tag) {
35871 else => unreachable,
35872 .store => false,
35873 .store_safe => true,
35874 }) else fallback: {
35875 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
35876 const ptr_ty = cg.typeOf(bin_op.lhs);
35877 const ptr_info = ptr_ty.ptrInfo(zcu);
35878 const val_ty = cg.typeOf(bin_op.rhs);
35879 if (ptr_info.packed_offset.host_size > 0 and
35880 (ptr_info.flags.vector_index == .none or val_ty.toIntern() == .bool_type))
35881 break :fallback try cg.airStore(inst, switch (air_tag) {
35882 else => unreachable,
35883 .store => false,
35884 .store_safe => true,
35885 });
35886 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
35887 try ops[0].store(&ops[1], .{
35888 .disp = switch (ptr_info.flags.vector_index) {
35889 .none => 0,
35890 .runtime => unreachable,
35891 else => |vector_index| @intCast(val_ty.abiSize(zcu) * @intFromEnum(vector_index)),
35892 },
35893 .safe = switch (air_tag) {
35894 else => unreachable,
35895 .store => false,
35896 .store_safe => true,
35897 },
35898 }, cg);
35899 for (ops) |op| try op.die(cg);
35900 },
35901 .unreach => {},
35902 .fptrunc => |air_tag| if (use_old) try cg.airFptrunc(inst) else {
35903 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
35904 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
35905 var res: [1]Temp = undefined;
35906 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
35907 .required_features = .{ .f16c, null, null, null },
35908 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
35909 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
35910 .patterns = &.{
35911 .{ .src = .{ .to_sse, .none, .none } },
35912 },
35913 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
35914 .each = .{ .once = &.{
35915 .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ },
35916 } },
35917 }, .{
35918 .required_features = .{ .f16c, null, null, null },
35919 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
35920 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .word } }},
35921 .patterns = &.{
35922 .{ .src = .{ .to_sse, .none, .none } },
35923 },
35924 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
35925 .each = .{ .once = &.{
35926 .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ },
35927 } },
35928 }, .{
35929 .required_features = .{ .f16c, null, null, null },
35930 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
35931 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .word } }},
35932 .patterns = &.{
35933 .{ .src = .{ .to_sse, .none, .none } },
35934 },
35935 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
35936 .each = .{ .once = &.{
35937 .{ ._, .v_, .cvtps2ph, .dst0x, .src0y, .rm(.{}), ._ },
35938 } },
35939 }, .{
35940 .required_features = .{ .sse, null, null, null },
35941 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
35942 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
35943 .patterns = &.{
35944 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
35945 },
35946 .call_frame = .{ .alignment = .@"16" },
35947 .extra_temps = .{
35948 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
35949 .unused,
35950 .unused,
35951 .unused,
35952 .unused,
35953 .unused,
35954 .unused,
35955 .unused,
35956 .unused,
35957 },
35958 .dst_temps = .{.{ .ref = .src0 }},
35959 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
35960 .each = .{ .once = &.{
35961 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
35962 } },
35963 }, .{
35964 .required_features = .{ .f16c, null, null, null },
35965 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
35966 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }},
35967 .patterns = &.{
35968 .{ .src = .{ .to_mem, .none, .none } },
35969 },
35970 .extra_temps = .{
35971 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35972 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
35973 .unused,
35974 .unused,
35975 .unused,
35976 .unused,
35977 .unused,
35978 .unused,
35979 .unused,
35980 },
35981 .dst_temps = .{.mem},
35982 .clobbers = .{ .eflags = true },
35983 .each = .{ .once = &.{
35984 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
35985 .{ .@"0:", .v_ps, .mova, .tmp1y, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
35986 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
35987 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
35988 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
35989 } },
35990 }, .{
35991 .required_features = .{ .avx, null, null, null },
35992 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
35993 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
35994 .patterns = &.{
35995 .{ .src = .{ .to_mem, .none, .none } },
35996 },
35997 .call_frame = .{ .alignment = .@"16" },
35998 .extra_temps = .{
35999 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36000 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
36001 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
36002 .unused,
36003 .unused,
36004 .unused,
36005 .unused,
36006 .unused,
36007 .unused,
36008 },
36009 .dst_temps = .{.mem},
36010 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36011 .each = .{ .once = &.{
36012 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36013 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
36014 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
36015 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
36016 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
36017 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36018 } },
36019 }, .{
36020 .required_features = .{ .sse4_1, null, null, null },
36021 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
36022 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
36023 .patterns = &.{
36024 .{ .src = .{ .to_mem, .none, .none } },
36025 },
36026 .call_frame = .{ .alignment = .@"16" },
36027 .extra_temps = .{
36028 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36029 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
36030 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
36031 .unused,
36032 .unused,
36033 .unused,
36034 .unused,
36035 .unused,
36036 .unused,
36037 },
36038 .dst_temps = .{.mem},
36039 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36040 .each = .{ .once = &.{
36041 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36042 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
36043 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
36044 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
36045 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
36046 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36047 } },
36048 }, .{
36049 .required_features = .{ .sse2, null, null, null },
36050 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
36051 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
36052 .patterns = &.{
36053 .{ .src = .{ .to_mem, .none, .none } },
36054 },
36055 .call_frame = .{ .alignment = .@"16" },
36056 .extra_temps = .{
36057 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36058 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
36059 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
36060 .{ .type = .f16, .kind = .{ .reg = .ax } },
36061 .unused,
36062 .unused,
36063 .unused,
36064 .unused,
36065 .unused,
36066 },
36067 .dst_temps = .{.mem},
36068 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36069 .each = .{ .once = &.{
36070 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36071 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
36072 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
36073 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
36074 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
36075 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
36076 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36077 } },
36078 }, .{
36079 .required_features = .{ .sse, null, null, null },
36080 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
36081 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
36082 .patterns = &.{
36083 .{ .src = .{ .to_mem, .none, .none } },
36084 },
36085 .call_frame = .{ .alignment = .@"16" },
36086 .extra_temps = .{
36087 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36088 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
36089 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
36090 .{ .type = .f32, .kind = .mem },
36091 .{ .type = .f16, .kind = .{ .reg = .ax } },
36092 .unused,
36093 .unused,
36094 .unused,
36095 .unused,
36096 },
36097 .dst_temps = .{.mem},
36098 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36099 .each = .{ .once = &.{
36100 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36101 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
36102 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
36103 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },
36104 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },
36105 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
36106 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
36107 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36108 } },
36109 }, .{
36110 .required_features = .{ .sse, null, null, null },
36111 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
36112 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
36113 .patterns = &.{
36114 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
36115 },
36116 .call_frame = .{ .alignment = .@"16" },
36117 .extra_temps = .{
36118 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
36119 .unused,
36120 .unused,
36121 .unused,
36122 .unused,
36123 .unused,
36124 .unused,
36125 .unused,
36126 .unused,
36127 },
36128 .dst_temps = .{.{ .ref = .src0 }},
36129 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36130 .each = .{ .once = &.{
36131 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
36132 } },
36133 }, .{
36134 .required_features = .{ .avx, null, null, null },
36135 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
36136 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
36137 .patterns = &.{
36138 .{ .src = .{ .to_mem, .none, .none } },
36139 },
36140 .call_frame = .{ .alignment = .@"16" },
36141 .extra_temps = .{
36142 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36143 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
36144 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
36145 .unused,
36146 .unused,
36147 .unused,
36148 .unused,
36149 .unused,
36150 .unused,
36151 },
36152 .dst_temps = .{.mem},
36153 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36154 .each = .{ .once = &.{
36155 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36156 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
36157 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
36158 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
36159 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
36160 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36161 } },
36162 }, .{
36163 .required_features = .{ .sse4_1, null, null, null },
36164 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
36165 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
36166 .patterns = &.{
36167 .{ .src = .{ .to_mem, .none, .none } },
36168 },
36169 .call_frame = .{ .alignment = .@"16" },
36170 .extra_temps = .{
36171 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36172 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
36173 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
36174 .unused,
36175 .unused,
36176 .unused,
36177 .unused,
36178 .unused,
36179 .unused,
36180 },
36181 .dst_temps = .{.mem},
36182 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36183 .each = .{ .once = &.{
36184 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36185 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
36186 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
36187 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
36188 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
36189 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36190 } },
36191 }, .{
36192 .required_features = .{ .sse2, null, null, null },
36193 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
36194 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
36195 .patterns = &.{
36196 .{ .src = .{ .to_mem, .none, .none } },
36197 },
36198 .call_frame = .{ .alignment = .@"16" },
36199 .extra_temps = .{
36200 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36201 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
36202 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
36203 .{ .type = .f16, .kind = .{ .reg = .ax } },
36204 .unused,
36205 .unused,
36206 .unused,
36207 .unused,
36208 .unused,
36209 },
36210 .dst_temps = .{.mem},
36211 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36212 .each = .{ .once = &.{
36213 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36214 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
36215 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
36216 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
36217 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
36218 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
36219 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36220 } },
36221 }, .{
36222 .required_features = .{ .sse, null, null, null },
36223 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
36224 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
36225 .patterns = &.{
36226 .{ .src = .{ .to_mem, .none, .none } },
36227 },
36228 .call_frame = .{ .alignment = .@"16" },
36229 .extra_temps = .{
36230 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36231 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
36232 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
36233 .{ .type = .f32, .kind = .mem },
36234 .{ .type = .f16, .kind = .{ .reg = .ax } },
36235 .unused,
36236 .unused,
36237 .unused,
36238 .unused,
36239 },
36240 .dst_temps = .{.mem},
36241 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36242 .each = .{ .once = &.{
36243 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36244 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
36245 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
36246 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
36247 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },
36248 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },
36249 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
36250 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
36251 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36252 } },
36253 }, .{
36254 .required_features = .{ .avx, null, null, null },
36255 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
36256 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
36257 .patterns = &.{
36258 .{ .src = .{ .mem, .none, .none } },
36259 },
36260 .dst_temps = .{.{ .rc = .sse }},
36261 .each = .{ .once = &.{
36262 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
36263 .{ ._, .v_ss, .cvtsd2, .dst0x, .dst0x, .src0q, ._ },
36264 } },
36265 }, .{
36266 .required_features = .{ .avx, null, null, null },
36267 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
36268 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
36269 .patterns = &.{
36270 .{ .src = .{ .to_sse, .none, .none } },
36271 },
36272 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
36273 .each = .{ .once = &.{
36274 .{ ._, .v_ss, .cvtsd2, .dst0x, .src0x, .src0q, ._ },
36275 } },
36276 }, .{
36277 .required_features = .{ .sse2, null, null, null },
36278 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
36279 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
36280 .patterns = &.{
36281 .{ .src = .{ .mem, .none, .none } },
36282 .{ .src = .{ .to_sse, .none, .none } },
36283 },
36284 .dst_temps = .{.{ .rc = .sse }},
36285 .each = .{ .once = &.{
36286 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
36287 .{ ._, ._ss, .cvtsd2, .dst0x, .src0q, ._, ._ },
36288 } },
36289 }, .{
36290 .required_features = .{ .x87, null, null, null },
36291 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
36292 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
36293 .patterns = &.{
36294 .{ .src = .{ .to_mem, .none, .none } },
36295 },
36296 .extra_temps = .{
36297 .{ .type = .f64, .kind = .{ .reg = .st7 } },
36298 .unused,
36299 .unused,
36300 .unused,
36301 .unused,
36302 .unused,
36303 .unused,
36304 .unused,
36305 .unused,
36306 },
36307 .dst_temps = .{.mem},
36308 .each = .{ .once = &.{
36309 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
36310 .{ ._, .f_p, .st, .dst0d, ._, ._, ._ },
36311 } },
36312 }, .{
36313 .required_features = .{ .avx, null, null, null },
36314 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
36315 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .dword } }},
36316 .patterns = &.{
36317 .{ .src = .{ .mem, .none, .none } },
36318 .{ .src = .{ .to_sse, .none, .none } },
36319 },
36320 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
36321 .each = .{ .once = &.{
36322 .{ ._, .v_ps, .cvtpd2, .dst0x, .src0x, ._, ._ },
36323 } },
36324 }, .{
36325 .required_features = .{ .sse2, null, null, null },
36326 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
36327 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .dword } }},
36328 .patterns = &.{
36329 .{ .src = .{ .mem, .none, .none } },
36330 .{ .src = .{ .to_sse, .none, .none } },
36331 },
36332 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
36333 .each = .{ .once = &.{
36334 .{ ._, ._ps, .cvtpd2, .dst0x, .src0x, ._, ._ },
36335 } },
36336 }, .{
36337 .required_features = .{ .avx, null, null, null },
36338 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
36339 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }},
36340 .patterns = &.{
36341 .{ .src = .{ .mem, .none, .none } },
36342 .{ .src = .{ .to_sse, .none, .none } },
36343 },
36344 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
36345 .each = .{ .once = &.{
36346 .{ ._, .v_ps, .cvtpd2, .dst0x, .src0y, ._, ._ },
36347 } },
36348 }, .{
36349 .required_features = .{ .avx, null, null, null },
36350 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
36351 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }},
36352 .patterns = &.{
36353 .{ .src = .{ .to_mem, .none, .none } },
36354 },
36355 .extra_temps = .{
36356 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36357 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
36358 .unused,
36359 .unused,
36360 .unused,
36361 .unused,
36362 .unused,
36363 .unused,
36364 .unused,
36365 },
36366 .dst_temps = .{.mem},
36367 .clobbers = .{ .eflags = true },
36368 .each = .{ .once = &.{
36369 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36370 .{ .@"0:", .v_ps, .cvtpd2, .tmp1x, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
36371 .{ ._, .v_ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
36372 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
36373 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36374 } },
36375 }, .{
36376 .required_features = .{ .sse2, null, null, null },
36377 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
36378 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }},
36379 .patterns = &.{
36380 .{ .src = .{ .to_mem, .none, .none } },
36381 },
36382 .extra_temps = .{
36383 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36384 .{ .type = .vector_2_f32, .kind = .{ .rc = .sse } },
36385 .unused,
36386 .unused,
36387 .unused,
36388 .unused,
36389 .unused,
36390 .unused,
36391 .unused,
36392 },
36393 .dst_temps = .{.mem},
36394 .clobbers = .{ .eflags = true },
36395 .each = .{ .once = &.{
36396 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36397 .{ .@"0:", ._ps, .cvtpd2, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
36398 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
36399 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
36400 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36401 } },
36402 }, .{
36403 .required_features = .{ .x87, null, null, null },
36404 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
36405 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
36406 .patterns = &.{
36407 .{ .src = .{ .to_mem, .none, .none } },
36408 },
36409 .extra_temps = .{
36410 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36411 .{ .type = .f64, .kind = .{ .reg = .st7 } },
36412 .unused,
36413 .unused,
36414 .unused,
36415 .unused,
36416 .unused,
36417 .unused,
36418 .unused,
36419 },
36420 .dst_temps = .{.mem},
36421 .clobbers = .{ .eflags = true },
36422 .each = .{ .once = &.{
36423 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36424 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
36425 .{ ._, .f_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
36426 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
36427 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36428 } },
36429 }, .{
36430 .required_features = .{ .avx, null, null, null },
36431 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
36432 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
36433 .patterns = &.{
36434 .{ .src = .{ .to_mem, .none, .none } },
36435 },
36436 .call_frame = .{ .size = 16, .alignment = .@"16" },
36437 .extra_temps = .{
36438 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
36439 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
36440 .unused,
36441 .unused,
36442 .unused,
36443 .unused,
36444 .unused,
36445 .unused,
36446 .unused,
36447 },
36448 .dst_temps = .{.{ .reg = .xmm0 }},
36449 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36450 .each = .{ .once = &.{
36451 .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
36452 .{ ._, .v_dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
36453 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
36454 } },
36455 }, .{
36456 .required_features = .{ .sse2, null, null, null },
36457 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
36458 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
36459 .patterns = &.{
36460 .{ .src = .{ .to_mem, .none, .none } },
36461 },
36462 .call_frame = .{ .size = 16, .alignment = .@"16" },
36463 .extra_temps = .{
36464 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
36465 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
36466 .unused,
36467 .unused,
36468 .unused,
36469 .unused,
36470 .unused,
36471 .unused,
36472 .unused,
36473 },
36474 .dst_temps = .{.{ .reg = .xmm0 }},
36475 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36476 .each = .{ .once = &.{
36477 .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
36478 .{ ._, ._dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
36479 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
36480 } },
36481 }, .{
36482 .required_features = .{ .sse, null, null, null },
36483 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
36484 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
36485 .patterns = &.{
36486 .{ .src = .{ .to_mem, .none, .none } },
36487 },
36488 .call_frame = .{ .size = 16, .alignment = .@"16" },
36489 .extra_temps = .{
36490 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
36491 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
36492 .unused,
36493 .unused,
36494 .unused,
36495 .unused,
36496 .unused,
36497 .unused,
36498 .unused,
36499 },
36500 .dst_temps = .{.{ .reg = .xmm0 }},
36501 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36502 .each = .{ .once = &.{
36503 .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ },
36504 .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ },
36505 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
36506 } },
36507 }, .{
36508 .required_features = .{ .avx, null, null, null },
36509 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
36510 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
36511 .patterns = &.{
36512 .{ .src = .{ .to_mem, .none, .none } },
36513 },
36514 .call_frame = .{ .size = 16, .alignment = .@"16" },
36515 .extra_temps = .{
36516 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36517 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
36518 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
36519 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
36520 .unused,
36521 .unused,
36522 .unused,
36523 .unused,
36524 .unused,
36525 },
36526 .dst_temps = .{.mem},
36527 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36528 .each = .{ .once = &.{
36529 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36530 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
36531 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
36532 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
36533 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
36534 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
36535 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36536 } },
36537 }, .{
36538 .required_features = .{ .sse4_1, null, null, null },
36539 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
36540 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
36541 .patterns = &.{
36542 .{ .src = .{ .to_mem, .none, .none } },
36543 },
36544 .call_frame = .{ .size = 16, .alignment = .@"16" },
36545 .extra_temps = .{
36546 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36547 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
36548 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
36549 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
36550 .unused,
36551 .unused,
36552 .unused,
36553 .unused,
36554 .unused,
36555 },
36556 .dst_temps = .{.mem},
36557 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36558 .each = .{ .once = &.{
36559 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36560 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
36561 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
36562 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
36563 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
36564 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
36565 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36566 } },
36567 }, .{
36568 .required_features = .{ .sse2, null, null, null },
36569 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
36570 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
36571 .patterns = &.{
36572 .{ .src = .{ .to_mem, .none, .none } },
36573 },
36574 .call_frame = .{ .size = 16, .alignment = .@"16" },
36575 .extra_temps = .{
36576 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36577 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
36578 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
36579 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
36580 .{ .type = .f16, .kind = .{ .reg = .ax } },
36581 .unused,
36582 .unused,
36583 .unused,
36584 .unused,
36585 },
36586 .dst_temps = .{.mem},
36587 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36588 .each = .{ .once = &.{
36589 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36590 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
36591 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
36592 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
36593 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
36594 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
36595 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
36596 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36597 } },
36598 }, .{
36599 .required_features = .{ .sse, null, null, null },
36600 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
36601 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
36602 .patterns = &.{
36603 .{ .src = .{ .to_mem, .none, .none } },
36604 },
36605 .call_frame = .{ .size = 16, .alignment = .@"16" },
36606 .extra_temps = .{
36607 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36608 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
36609 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
36610 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
36611 .{ .type = .f16, .kind = .{ .reg = .ax } },
36612 .unused,
36613 .unused,
36614 .unused,
36615 .unused,
36616 },
36617 .dst_temps = .{.mem},
36618 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36619 .each = .{ .once = &.{
36620 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36621 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
36622 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
36623 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
36624 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp1x, ._, ._ },
36625 .{ ._, ._, .mov, .tmp4d, .mem(.tmp2d), ._, ._ },
36626 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
36627 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
36628 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36629 } },
36630 }, .{
36631 .required_features = .{ .x87, null, null, null },
36632 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
36633 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
36634 .patterns = &.{
36635 .{ .src = .{ .mem, .none, .none } },
36636 .{ .src = .{ .to_x87, .none, .none } },
36637 },
36638 .extra_temps = .{
36639 .{ .type = .f80, .kind = .{ .reg = .st7 } },
36640 .unused,
36641 .unused,
36642 .unused,
36643 .unused,
36644 .unused,
36645 .unused,
36646 .unused,
36647 .unused,
36648 },
36649 .dst_temps = .{.mem},
36650 .each = .{ .once = &.{
36651 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
36652 .{ ._, .f_p, .st, .dst0d, ._, ._, ._ },
36653 } },
36654 }, .{
36655 .required_features = .{ .x87, null, null, null },
36656 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
36657 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
36658 .patterns = &.{
36659 .{ .src = .{ .to_mem, .none, .none } },
36660 },
36661 .extra_temps = .{
36662 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36663 .{ .type = .f80, .kind = .{ .reg = .st7 } },
36664 .unused,
36665 .unused,
36666 .unused,
36667 .unused,
36668 .unused,
36669 .unused,
36670 .unused,
36671 },
36672 .dst_temps = .{.mem},
36673 .clobbers = .{ .eflags = true },
36674 .each = .{ .once = &.{
36675 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36676 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
36677 .{ ._, .f_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
36678 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
36679 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36680 } },
36681 }, .{
36682 .required_features = .{ .x87, null, null, null },
36683 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
36684 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
36685 .patterns = &.{
36686 .{ .src = .{ .mem, .none, .none } },
36687 .{ .src = .{ .to_x87, .none, .none } },
36688 },
36689 .extra_temps = .{
36690 .{ .type = .f80, .kind = .{ .reg = .st7 } },
36691 .unused,
36692 .unused,
36693 .unused,
36694 .unused,
36695 .unused,
36696 .unused,
36697 .unused,
36698 .unused,
36699 },
36700 .dst_temps = .{.mem},
36701 .each = .{ .once = &.{
36702 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
36703 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
36704 } },
36705 }, .{
36706 .required_features = .{ .x87, null, null, null },
36707 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
36708 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
36709 .patterns = &.{
36710 .{ .src = .{ .to_mem, .none, .none } },
36711 },
36712 .extra_temps = .{
36713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36714 .{ .type = .f80, .kind = .{ .reg = .st7 } },
36715 .unused,
36716 .unused,
36717 .unused,
36718 .unused,
36719 .unused,
36720 .unused,
36721 .unused,
36722 },
36723 .dst_temps = .{.mem},
36724 .clobbers = .{ .eflags = true },
36725 .each = .{ .once = &.{
36726 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36727 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
36728 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
36729 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
36730 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36731 } },
36732 }, .{
36733 .required_features = .{ .sse, null, null, null },
36734 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
36735 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
36736 .patterns = &.{
36737 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
36738 },
36739 .call_frame = .{ .alignment = .@"16" },
36740 .extra_temps = .{
36741 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
36742 .unused,
36743 .unused,
36744 .unused,
36745 .unused,
36746 .unused,
36747 .unused,
36748 .unused,
36749 .unused,
36750 },
36751 .dst_temps = .{.{ .ref = .src0 }},
36752 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36753 .each = .{ .once = &.{
36754 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
36755 } },
36756 }, .{
36757 .required_features = .{ .avx, null, null, null },
36758 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
36759 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
36760 .patterns = &.{
36761 .{ .src = .{ .to_mem, .none, .none } },
36762 },
36763 .call_frame = .{ .alignment = .@"16" },
36764 .extra_temps = .{
36765 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36766 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
36767 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
36768 .unused,
36769 .unused,
36770 .unused,
36771 .unused,
36772 .unused,
36773 .unused,
36774 },
36775 .dst_temps = .{.mem},
36776 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36777 .each = .{ .once = &.{
36778 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36779 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
36780 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
36781 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
36782 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
36783 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36784 } },
36785 }, .{
36786 .required_features = .{ .sse4_1, null, null, null },
36787 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
36788 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
36789 .patterns = &.{
36790 .{ .src = .{ .to_mem, .none, .none } },
36791 },
36792 .call_frame = .{ .alignment = .@"16" },
36793 .extra_temps = .{
36794 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36795 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
36796 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
36797 .unused,
36798 .unused,
36799 .unused,
36800 .unused,
36801 .unused,
36802 .unused,
36803 },
36804 .dst_temps = .{.mem},
36805 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36806 .each = .{ .once = &.{
36807 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36808 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
36809 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
36810 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
36811 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
36812 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36813 } },
36814 }, .{
36815 .required_features = .{ .sse2, null, null, null },
36816 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
36817 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
36818 .patterns = &.{
36819 .{ .src = .{ .to_mem, .none, .none } },
36820 },
36821 .call_frame = .{ .alignment = .@"16" },
36822 .extra_temps = .{
36823 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36824 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
36825 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
36826 .{ .type = .f16, .kind = .{ .reg = .ax } },
36827 .unused,
36828 .unused,
36829 .unused,
36830 .unused,
36831 .unused,
36832 },
36833 .dst_temps = .{.mem},
36834 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36835 .each = .{ .once = &.{
36836 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36837 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
36838 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
36839 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
36840 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
36841 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
36842 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36843 } },
36844 }, .{
36845 .required_features = .{ .sse, null, null, null },
36846 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
36847 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
36848 .patterns = &.{
36849 .{ .src = .{ .to_mem, .none, .none } },
36850 },
36851 .call_frame = .{ .alignment = .@"16" },
36852 .extra_temps = .{
36853 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36854 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
36855 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
36856 .{ .type = .f32, .kind = .mem },
36857 .{ .type = .f16, .kind = .{ .reg = .ax } },
36858 .unused,
36859 .unused,
36860 .unused,
36861 .unused,
36862 },
36863 .dst_temps = .{.mem},
36864 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36865 .each = .{ .once = &.{
36866 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36867 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
36868 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
36869 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },
36870 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },
36871 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
36872 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
36873 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36874 } },
36875 }, .{
36876 .required_features = .{ .sse, null, null, null },
36877 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
36878 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
36879 .patterns = &.{
36880 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
36881 },
36882 .call_frame = .{ .alignment = .@"16" },
36883 .extra_temps = .{
36884 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
36885 .unused,
36886 .unused,
36887 .unused,
36888 .unused,
36889 .unused,
36890 .unused,
36891 .unused,
36892 .unused,
36893 },
36894 .dst_temps = .{.{ .ref = .src0 }},
36895 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36896 .each = .{ .once = &.{
36897 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
36898 } },
36899 }, .{
36900 .required_features = .{ .avx, null, null, null },
36901 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
36902 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
36903 .patterns = &.{
36904 .{ .src = .{ .to_mem, .none, .none } },
36905 },
36906 .call_frame = .{ .alignment = .@"16" },
36907 .extra_temps = .{
36908 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36909 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
36910 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
36911 .unused,
36912 .unused,
36913 .unused,
36914 .unused,
36915 .unused,
36916 .unused,
36917 },
36918 .dst_temps = .{.mem},
36919 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36920 .each = .{ .once = &.{
36921 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36922 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
36923 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
36924 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
36925 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
36926 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36927 } },
36928 }, .{
36929 .required_features = .{ .sse2, null, null, null },
36930 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
36931 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
36932 .patterns = &.{
36933 .{ .src = .{ .to_mem, .none, .none } },
36934 },
36935 .call_frame = .{ .alignment = .@"16" },
36936 .extra_temps = .{
36937 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36938 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
36939 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
36940 .unused,
36941 .unused,
36942 .unused,
36943 .unused,
36944 .unused,
36945 .unused,
36946 },
36947 .dst_temps = .{.mem},
36948 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36949 .each = .{ .once = &.{
36950 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36951 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
36952 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
36953 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
36954 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
36955 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36956 } },
36957 }, .{
36958 .required_features = .{ .sse, null, null, null },
36959 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
36960 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
36961 .patterns = &.{
36962 .{ .src = .{ .to_mem, .none, .none } },
36963 },
36964 .call_frame = .{ .alignment = .@"16" },
36965 .extra_temps = .{
36966 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36967 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
36968 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
36969 .unused,
36970 .unused,
36971 .unused,
36972 .unused,
36973 .unused,
36974 .unused,
36975 },
36976 .dst_temps = .{.mem},
36977 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36978 .each = .{ .once = &.{
36979 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36980 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
36981 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
36982 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
36983 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
36984 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36985 } },
36986 }, .{
36987 .required_features = .{ .sse, null, null, null },
36988 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
36989 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
36990 .patterns = &.{
36991 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
36992 },
36993 .call_frame = .{ .alignment = .@"16" },
36994 .extra_temps = .{
36995 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
36996 .unused,
36997 .unused,
36998 .unused,
36999 .unused,
37000 .unused,
37001 .unused,
37002 .unused,
37003 .unused,
37004 },
37005 .dst_temps = .{.{ .ref = .src0 }},
37006 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37007 .each = .{ .once = &.{
37008 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
37009 } },
37010 }, .{
37011 .required_features = .{ .avx, null, null, null },
37012 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
37013 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
37014 .patterns = &.{
37015 .{ .src = .{ .to_mem, .none, .none } },
37016 },
37017 .call_frame = .{ .alignment = .@"16" },
37018 .extra_temps = .{
37019 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37020 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
37021 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
37022 .unused,
37023 .unused,
37024 .unused,
37025 .unused,
37026 .unused,
37027 .unused,
37028 },
37029 .dst_temps = .{.mem},
37030 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37031 .each = .{ .once = &.{
37032 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
37033 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
37034 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
37035 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
37036 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
37037 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37038 } },
37039 }, .{
37040 .required_features = .{ .sse2, null, null, null },
37041 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
37042 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
37043 .patterns = &.{
37044 .{ .src = .{ .to_mem, .none, .none } },
37045 },
37046 .call_frame = .{ .alignment = .@"16" },
37047 .extra_temps = .{
37048 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37049 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
37050 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
37051 .unused,
37052 .unused,
37053 .unused,
37054 .unused,
37055 .unused,
37056 .unused,
37057 },
37058 .dst_temps = .{.mem},
37059 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37060 .each = .{ .once = &.{
37061 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
37062 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
37063 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
37064 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
37065 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
37066 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37067 } },
37068 }, .{
37069 .required_features = .{ .sse, null, null, null },
37070 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
37071 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
37072 .patterns = &.{
37073 .{ .src = .{ .to_mem, .none, .none } },
37074 },
37075 .call_frame = .{ .alignment = .@"16" },
37076 .extra_temps = .{
37077 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37078 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
37079 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
37080 .unused,
37081 .unused,
37082 .unused,
37083 .unused,
37084 .unused,
37085 .unused,
37086 },
37087 .dst_temps = .{.mem},
37088 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37089 .each = .{ .once = &.{
37090 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
37091 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
37092 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
37093 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
37094 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
37095 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37096 } },
37097 }, .{
37098 .required_features = .{ .sse, .x87, null, null },
37099 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
37100 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
37101 .patterns = &.{
37102 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
37103 },
37104 .call_frame = .{ .alignment = .@"16" },
37105 .extra_temps = .{
37106 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
37107 .unused,
37108 .unused,
37109 .unused,
37110 .unused,
37111 .unused,
37112 .unused,
37113 .unused,
37114 .unused,
37115 },
37116 .dst_temps = .{.{ .reg = .st0 }},
37117 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37118 .each = .{ .once = &.{
37119 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
37120 } },
37121 }, .{
37122 .required_features = .{ .avx, null, null, null },
37123 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
37124 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
37125 .patterns = &.{
37126 .{ .src = .{ .to_mem, .none, .none } },
37127 },
37128 .call_frame = .{ .alignment = .@"16" },
37129 .extra_temps = .{
37130 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37131 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
37132 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
37133 .unused,
37134 .unused,
37135 .unused,
37136 .unused,
37137 .unused,
37138 .unused,
37139 },
37140 .dst_temps = .{.mem},
37141 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37142 .each = .{ .once = &.{
37143 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
37144 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
37145 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
37146 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
37147 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
37148 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
37149 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37150 } },
37151 }, .{
37152 .required_features = .{ .sse2, null, null, null },
37153 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
37154 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
37155 .patterns = &.{
37156 .{ .src = .{ .to_mem, .none, .none } },
37157 },
37158 .call_frame = .{ .alignment = .@"16" },
37159 .extra_temps = .{
37160 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37161 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
37162 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
37163 .unused,
37164 .unused,
37165 .unused,
37166 .unused,
37167 .unused,
37168 .unused,
37169 },
37170 .dst_temps = .{.mem},
37171 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37172 .each = .{ .once = &.{
37173 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
37174 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
37175 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
37176 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
37177 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
37178 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
37179 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37180 } },
37181 }, .{
37182 .required_features = .{ .sse, null, null, null },
37183 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
37184 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
37185 .patterns = &.{
37186 .{ .src = .{ .to_mem, .none, .none } },
37187 },
37188 .call_frame = .{ .alignment = .@"16" },
37189 .extra_temps = .{
37190 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37191 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
37192 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
37193 .unused,
37194 .unused,
37195 .unused,
37196 .unused,
37197 .unused,
37198 .unused,
37199 },
37200 .dst_temps = .{.mem},
37201 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37202 .each = .{ .once = &.{
37203 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
37204 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
37205 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
37206 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
37207 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
37208 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
37209 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37210 } },
37211 } }) catch |err| switch (err) {
37212 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
37213 @tagName(air_tag),
37214 ty_op.ty.toType().fmt(pt),
37215 cg.typeOf(ty_op.operand).fmt(pt),
37216 ops[0].tracking(cg),
37217 }),
37218 else => |e| return e,
37219 };
37220 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
37221 },
37222 .fpext => |air_tag| if (use_old) try cg.airFpext(inst) else {
37223 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
37224 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
37225 var res: [1]Temp = undefined;
37226 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
37227 .required_features = .{ .f16c, null, null, null },
37228 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
37229 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
37230 .patterns = &.{
37231 .{ .src = .{ .to_sse, .none, .none } },
37232 },
37233 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
37234 .each = .{ .once = &.{
37235 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
37236 } },
37237 }, .{
37238 .required_features = .{ .f16c, null, null, null },
37239 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
37240 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }},
37241 .patterns = &.{
37242 .{ .src = .{ .mem, .none, .none } },
37243 .{ .src = .{ .to_sse, .none, .none } },
37244 },
37245 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
37246 .each = .{ .once = &.{
37247 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
37248 } },
37249 }, .{
37250 .required_features = .{ .f16c, null, null, null },
37251 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
37252 .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .dword } }},
37253 .patterns = &.{
37254 .{ .src = .{ .mem, .none, .none } },
37255 .{ .src = .{ .to_sse, .none, .none } },
37256 },
37257 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
37258 .each = .{ .once = &.{
37259 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
37260 } },
37261 }, .{
37262 .required_features = .{ .sse, null, null, null },
37263 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
37264 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
37265 .patterns = &.{
37266 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
37267 },
37268 .call_frame = .{ .alignment = .@"16" },
37269 .extra_temps = .{
37270 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
37271 .unused,
37272 .unused,
37273 .unused,
37274 .unused,
37275 .unused,
37276 .unused,
37277 .unused,
37278 .unused,
37279 },
37280 .dst_temps = .{.{ .ref = .src0 }},
37281 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37282 .each = .{ .once = &.{
37283 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
37284 } },
37285 }, .{
37286 .required_features = .{ .f16c, null, null, null },
37287 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
37288 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }},
37289 .patterns = &.{
37290 .{ .src = .{ .to_mem, .none, .none } },
37291 },
37292 .extra_temps = .{
37293 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37294 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
37295 .unused,
37296 .unused,
37297 .unused,
37298 .unused,
37299 .unused,
37300 .unused,
37301 .unused,
37302 },
37303 .dst_temps = .{.mem},
37304 .clobbers = .{ .eflags = true },
37305 .each = .{ .once = &.{
37306 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
37307 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
37308 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
37309 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
37310 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37311 } },
37312 }, .{
37313 .required_features = .{ .avx, null, null, null },
37314 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
37315 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
37316 .patterns = &.{
37317 .{ .src = .{ .to_mem, .none, .none } },
37318 },
37319 .call_frame = .{ .alignment = .@"16" },
37320 .extra_temps = .{
37321 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37322 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
37323 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
37324 .unused,
37325 .unused,
37326 .unused,
37327 .unused,
37328 .unused,
37329 .unused,
37330 },
37331 .dst_temps = .{.mem},
37332 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37333 .each = .{ .once = &.{
37334 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
37335 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
37336 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
37337 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
37338 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
37339 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
37340 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37341 } },
37342 }, .{
37343 .required_features = .{ .sse2, null, null, null },
37344 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
37345 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
37346 .patterns = &.{
37347 .{ .src = .{ .to_mem, .none, .none } },
37348 },
37349 .call_frame = .{ .alignment = .@"16" },
37350 .extra_temps = .{
37351 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37352 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
37353 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
37354 .unused,
37355 .unused,
37356 .unused,
37357 .unused,
37358 .unused,
37359 .unused,
37360 },
37361 .dst_temps = .{.mem},
37362 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37363 .each = .{ .once = &.{
37364 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
37365 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
37366 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
37367 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
37368 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
37369 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
37370 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37371 } },
37372 }, .{
37373 .required_features = .{ .sse, null, null, null },
37374 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
37375 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
37376 .patterns = &.{
37377 .{ .src = .{ .to_mem, .none, .none } },
37378 },
37379 .call_frame = .{ .alignment = .@"16" },
37380 .extra_temps = .{
37381 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37382 .{ .type = .f16, .kind = .{ .reg = .ax } },
37383 .{ .type = .f32, .kind = .mem },
37384 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
37385 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
37386 .unused,
37387 .unused,
37388 .unused,
37389 .unused,
37390 },
37391 .dst_temps = .{.mem},
37392 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37393 .each = .{ .once = &.{
37394 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
37395 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
37396 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
37397 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
37398 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
37399 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
37400 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
37401 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37402 } },
37403 }, .{
37404 .required_features = .{ .f16c, null, null, null },
37405 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
37406 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
37407 .patterns = &.{
37408 .{ .src = .{ .to_sse, .none, .none } },
37409 },
37410 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
37411 .each = .{ .once = &.{
37412 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
37413 .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .dst0d, ._ },
37414 } },
37415 }, .{
37416 .required_features = .{ .f16c, null, null, null },
37417 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .word } }, .any, .any },
37418 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }},
37419 .patterns = &.{
37420 .{ .src = .{ .mem, .none, .none } },
37421 .{ .src = .{ .to_sse, .none, .none } },
37422 },
37423 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
37424 .each = .{ .once = &.{
37425 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
37426 .{ ._, .v_pd, .cvtps2, .dst0x, .dst0q, ._, ._ },
37427 } },
37428 }, .{
37429 .required_features = .{ .f16c, null, null, null },
37430 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
37431 .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }},
37432 .patterns = &.{
37433 .{ .src = .{ .mem, .none, .none } },
37434 .{ .src = .{ .to_sse, .none, .none } },
37435 },
37436 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
37437 .each = .{ .once = &.{
37438 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
37439 .{ ._, .v_pd, .cvtps2, .dst0y, .dst0x, ._, ._ },
37440 } },
37441 }, .{
37442 .required_features = .{ .f16c, null, null, null },
37443 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
37444 .dst_constraints = .{.{ .scalar_float = .{ .of = .zword, .is = .qword } }},
37445 .patterns = &.{
37446 .{ .src = .{ .mem, .none, .none } },
37447 .{ .src = .{ .to_sse, .none, .none } },
37448 },
37449 .extra_temps = .{
37450 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
37451 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
37452 .unused,
37453 .unused,
37454 .unused,
37455 .unused,
37456 .unused,
37457 .unused,
37458 .unused,
37459 },
37460 .dst_temps = .{.mem},
37461 .each = .{ .once = &.{
37462 .{ ._, .v_ps, .cvtph2, .tmp0y, .src0x, ._, ._ },
37463 .{ ._, .v_pd, .cvtps2, .tmp1y, .tmp0x, ._, ._ },
37464 .{ ._, .v_f128, .extract, .tmp0x, .tmp0y, .ui(1), ._ },
37465 .{ ._, .v_pd, .mova, .mem(.dst0y), .tmp1y, ._, ._ },
37466 .{ ._, .v_pd, .cvtps2, .tmp1y, .tmp0x, ._, ._ },
37467 .{ ._, .v_pd, .mova, .memd(.dst0y, 32), .tmp1y, ._, ._ },
37468 } },
37469 }, .{
37470 .required_features = .{ .sse, null, null, null },
37471 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
37472 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
37473 .patterns = &.{
37474 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
37475 },
37476 .call_frame = .{ .alignment = .@"16" },
37477 .extra_temps = .{
37478 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
37479 .unused,
37480 .unused,
37481 .unused,
37482 .unused,
37483 .unused,
37484 .unused,
37485 .unused,
37486 .unused,
37487 },
37488 .dst_temps = .{.{ .ref = .src0 }},
37489 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37490 .each = .{ .once = &.{
37491 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
37492 } },
37493 }, .{
37494 .required_features = .{ .f16c, null, null, null },
37495 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
37496 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }},
37497 .patterns = &.{
37498 .{ .src = .{ .to_mem, .none, .none } },
37499 },
37500 .extra_temps = .{
37501 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37502 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
37503 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
37504 .unused,
37505 .unused,
37506 .unused,
37507 .unused,
37508 .unused,
37509 .unused,
37510 },
37511 .dst_temps = .{.mem},
37512 .clobbers = .{ .eflags = true },
37513 .each = .{ .once = &.{
37514 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
37515 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
37516 .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ },
37517 .{ ._, .v_f128, .extract, .tmp1x, .tmp1y, .ui(1), ._ },
37518 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },
37519 .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ },
37520 .{ ._, .v_pd, .mova, .memsiad(.dst0y, .@"4", .tmp0, .add_unaligned_size, 32), .tmp2y, ._, ._ },
37521 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
37522 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37523 } },
37524 }, .{
37525 .required_features = .{ .avx, null, null, null },
37526 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
37527 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
37528 .patterns = &.{
37529 .{ .src = .{ .to_mem, .none, .none } },
37530 },
37531 .call_frame = .{ .alignment = .@"16" },
37532 .extra_temps = .{
37533 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37534 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
37535 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
37536 .unused,
37537 .unused,
37538 .unused,
37539 .unused,
37540 .unused,
37541 .unused,
37542 },
37543 .dst_temps = .{.mem},
37544 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37545 .each = .{ .once = &.{
37546 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
37547 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
37548 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
37549 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
37550 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
37551 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
37552 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37553 } },
37554 }, .{
37555 .required_features = .{ .sse2, null, null, null },
37556 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
37557 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
37558 .patterns = &.{
37559 .{ .src = .{ .to_mem, .none, .none } },
37560 },
37561 .call_frame = .{ .alignment = .@"16" },
37562 .extra_temps = .{
37563 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37564 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
37565 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
37566 .unused,
37567 .unused,
37568 .unused,
37569 .unused,
37570 .unused,
37571 .unused,
37572 },
37573 .dst_temps = .{.mem},
37574 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37575 .each = .{ .once = &.{
37576 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
37577 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
37578 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
37579 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
37580 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
37581 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
37582 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37583 } },
37584 }, .{
37585 .required_features = .{ .sse, null, null, null },
37586 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
37587 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
37588 .patterns = &.{
37589 .{ .src = .{ .to_mem, .none, .none } },
37590 },
37591 .call_frame = .{ .alignment = .@"16" },
37592 .extra_temps = .{
37593 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37594 .{ .type = .f16, .kind = .{ .reg = .ax } },
37595 .{ .type = .f32, .kind = .mem },
37596 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
37597 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
37598 .unused,
37599 .unused,
37600 .unused,
37601 .unused,
37602 },
37603 .dst_temps = .{.mem},
37604 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37605 .each = .{ .once = &.{
37606 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
37607 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
37608 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
37609 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
37610 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
37611 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
37612 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
37613 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37614 } },
37615 }, .{
37616 .required_features = .{ .f16c, .x87, null, null },
37617 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
37618 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
37619 .patterns = &.{
37620 .{ .src = .{ .to_sse, .none, .none } },
37621 },
37622 .extra_temps = .{
37623 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
37624 .{ .type = .f32, .kind = .mem },
37625 .{ .type = .f32, .kind = .{ .reg = .st7 } },
37626 .unused,
37627 .unused,
37628 .unused,
37629 .unused,
37630 .unused,
37631 .unused,
37632 },
37633 .dst_temps = .{.{ .rc = .x87 }},
37634 .each = .{ .once = &.{
37635 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
37636 .{ ._, .v_ss, .mov, .mem(.tmp1d), .tmp0x, ._, ._ },
37637 .{ ._, .f_, .ld, .mem(.tmp1d), ._, ._, ._ },
37638 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
37639 } },
37640 }, .{
37641 .required_features = .{ .sse, .x87, null, null },
37642 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
37643 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
37644 .patterns = &.{
37645 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
37646 },
37647 .call_frame = .{ .alignment = .@"16" },
37648 .extra_temps = .{
37649 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
37650 .unused,
37651 .unused,
37652 .unused,
37653 .unused,
37654 .unused,
37655 .unused,
37656 .unused,
37657 .unused,
37658 },
37659 .dst_temps = .{.{ .reg = .st0 }},
37660 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37661 .each = .{ .once = &.{
37662 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
37663 } },
37664 }, .{
37665 .required_features = .{ .avx, null, null, null },
37666 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
37667 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
37668 .patterns = &.{
37669 .{ .src = .{ .to_mem, .none, .none } },
37670 },
37671 .call_frame = .{ .alignment = .@"16" },
37672 .extra_temps = .{
37673 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37674 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
37675 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
37676 .unused,
37677 .unused,
37678 .unused,
37679 .unused,
37680 .unused,
37681 .unused,
37682 },
37683 .dst_temps = .{.mem},
37684 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37685 .each = .{ .once = &.{
37686 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
37687 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
37688 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
37689 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
37690 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
37691 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
37692 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
37693 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37694 } },
37695 }, .{
37696 .required_features = .{ .sse2, null, null, null },
37697 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
37698 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
37699 .patterns = &.{
37700 .{ .src = .{ .to_mem, .none, .none } },
37701 },
37702 .call_frame = .{ .alignment = .@"16" },
37703 .extra_temps = .{
37704 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37705 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
37706 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
37707 .unused,
37708 .unused,
37709 .unused,
37710 .unused,
37711 .unused,
37712 .unused,
37713 },
37714 .dst_temps = .{.mem},
37715 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37716 .each = .{ .once = &.{
37717 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
37718 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
37719 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
37720 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
37721 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
37722 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
37723 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
37724 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37725 } },
37726 }, .{
37727 .required_features = .{ .sse, null, null, null },
37728 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
37729 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
37730 .patterns = &.{
37731 .{ .src = .{ .to_mem, .none, .none } },
37732 },
37733 .call_frame = .{ .alignment = .@"16" },
37734 .extra_temps = .{
37735 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37736 .{ .type = .f16, .kind = .{ .reg = .ax } },
37737 .{ .type = .f32, .kind = .mem },
37738 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
37739 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
37740 .unused,
37741 .unused,
37742 .unused,
37743 .unused,
37744 },
37745 .dst_temps = .{.mem},
37746 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37747 .each = .{ .once = &.{
37748 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
37749 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
37750 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
37751 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
37752 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
37753 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
37754 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
37755 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
37756 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37757 } },
37758 }, .{
37759 .required_features = .{ .sse, null, null, null },
37760 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
37761 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
37762 .patterns = &.{
37763 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
37764 },
37765 .call_frame = .{ .alignment = .@"16" },
37766 .extra_temps = .{
37767 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
37768 .unused,
37769 .unused,
37770 .unused,
37771 .unused,
37772 .unused,
37773 .unused,
37774 .unused,
37775 .unused,
37776 },
37777 .dst_temps = .{.{ .ref = .src0 }},
37778 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37779 .each = .{ .once = &.{
37780 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
37781 } },
37782 }, .{
37783 .required_features = .{ .avx, null, null, null },
37784 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
37785 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
37786 .patterns = &.{
37787 .{ .src = .{ .to_mem, .none, .none } },
37788 },
37789 .call_frame = .{ .alignment = .@"16" },
37790 .extra_temps = .{
37791 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37792 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
37793 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
37794 .unused,
37795 .unused,
37796 .unused,
37797 .unused,
37798 .unused,
37799 .unused,
37800 },
37801 .dst_temps = .{.mem},
37802 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37803 .each = .{ .once = &.{
37804 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
37805 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
37806 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
37807 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
37808 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
37809 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
37810 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37811 } },
37812 }, .{
37813 .required_features = .{ .sse2, null, null, null },
37814 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
37815 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
37816 .patterns = &.{
37817 .{ .src = .{ .to_mem, .none, .none } },
37818 },
37819 .call_frame = .{ .alignment = .@"16" },
37820 .extra_temps = .{
37821 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37822 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
37823 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
37824 .unused,
37825 .unused,
37826 .unused,
37827 .unused,
37828 .unused,
37829 .unused,
37830 },
37831 .dst_temps = .{.mem},
37832 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37833 .each = .{ .once = &.{
37834 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
37835 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
37836 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
37837 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
37838 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
37839 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
37840 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37841 } },
37842 }, .{
37843 .required_features = .{ .sse, null, null, null },
37844 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
37845 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
37846 .patterns = &.{
37847 .{ .src = .{ .to_mem, .none, .none } },
37848 },
37849 .call_frame = .{ .alignment = .@"16" },
37850 .extra_temps = .{
37851 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37852 .{ .type = .f16, .kind = .{ .reg = .ax } },
37853 .{ .type = .f32, .kind = .mem },
37854 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
37855 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
37856 .unused,
37857 .unused,
37858 .unused,
37859 .unused,
37860 },
37861 .dst_temps = .{.mem},
37862 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37863 .each = .{ .once = &.{
37864 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
37865 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
37866 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
37867 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
37868 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
37869 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
37870 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
37871 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37872 } },
37873 }, .{
37874 .required_features = .{ .avx, null, null, null },
37875 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
37876 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
37877 .patterns = &.{
37878 .{ .src = .{ .mem, .none, .none } },
37879 },
37880 .dst_temps = .{.{ .rc = .sse }},
37881 .each = .{ .once = &.{
37882 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
37883 .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .src0d, ._ },
37884 } },
37885 }, .{
37886 .required_features = .{ .avx, null, null, null },
37887 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
37888 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
37889 .patterns = &.{
37890 .{ .src = .{ .to_sse, .none, .none } },
37891 },
37892 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
37893 .each = .{ .once = &.{
37894 .{ ._, .v_sd, .cvtss2, .dst0x, .src0x, .src0d, ._ },
37895 } },
37896 }, .{
37897 .required_features = .{ .sse2, null, null, null },
37898 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
37899 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
37900 .patterns = &.{
37901 .{ .src = .{ .mem, .none, .none } },
37902 .{ .src = .{ .to_sse, .none, .none } },
37903 },
37904 .dst_temps = .{.{ .rc = .sse }},
37905 .each = .{ .once = &.{
37906 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
37907 .{ ._, ._sd, .cvtss2, .dst0x, .src0d, ._, ._ },
37908 } },
37909 }, .{
37910 .required_features = .{ .x87, null, null, null },
37911 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
37912 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
37913 .patterns = &.{
37914 .{ .src = .{ .to_mem, .none, .none } },
37915 },
37916 .extra_temps = .{
37917 .{ .type = .f32, .kind = .{ .reg = .st7 } },
37918 .unused,
37919 .unused,
37920 .unused,
37921 .unused,
37922 .unused,
37923 .unused,
37924 .unused,
37925 .unused,
37926 },
37927 .dst_temps = .{.mem},
37928 .each = .{ .once = &.{
37929 .{ ._, .f_, .ld, .src0d, ._, ._, ._ },
37930 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
37931 } },
37932 }, .{
37933 .required_features = .{ .avx, null, null, null },
37934 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any },
37935 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }},
37936 .patterns = &.{
37937 .{ .src = .{ .mem, .none, .none } },
37938 .{ .src = .{ .to_sse, .none, .none } },
37939 },
37940 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
37941 .each = .{ .once = &.{
37942 .{ ._, .v_pd, .cvtps2, .dst0x, .src0q, ._, ._ },
37943 } },
37944 }, .{
37945 .required_features = .{ .sse2, null, null, null },
37946 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any },
37947 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }},
37948 .patterns = &.{
37949 .{ .src = .{ .mem, .none, .none } },
37950 .{ .src = .{ .to_sse, .none, .none } },
37951 },
37952 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
37953 .each = .{ .once = &.{
37954 .{ ._, ._pd, .cvtps2, .dst0x, .src0q, ._, ._ },
37955 } },
37956 }, .{
37957 .required_features = .{ .avx, null, null, null },
37958 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
37959 .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }},
37960 .patterns = &.{
37961 .{ .src = .{ .mem, .none, .none } },
37962 .{ .src = .{ .to_sse, .none, .none } },
37963 },
37964 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
37965 .each = .{ .once = &.{
37966 .{ ._, .v_pd, .cvtps2, .dst0y, .src0x, ._, ._ },
37967 } },
37968 }, .{
37969 .required_features = .{ .avx, null, null, null },
37970 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
37971 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }},
37972 .patterns = &.{
37973 .{ .src = .{ .to_mem, .none, .none } },
37974 },
37975 .extra_temps = .{
37976 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37977 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
37978 .unused,
37979 .unused,
37980 .unused,
37981 .unused,
37982 .unused,
37983 .unused,
37984 .unused,
37985 },
37986 .dst_temps = .{.mem},
37987 .clobbers = .{ .eflags = true },
37988 .each = .{ .once = &.{
37989 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
37990 .{ .@"0:", .v_pd, .cvtps2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
37991 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
37992 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
37993 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37994 } },
37995 }, .{
37996 .required_features = .{ .sse2, null, null, null },
37997 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any },
37998 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }},
37999 .patterns = &.{
38000 .{ .src = .{ .to_mem, .none, .none } },
38001 },
38002 .extra_temps = .{
38003 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38004 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
38005 .unused,
38006 .unused,
38007 .unused,
38008 .unused,
38009 .unused,
38010 .unused,
38011 .unused,
38012 },
38013 .dst_temps = .{.mem},
38014 .clobbers = .{ .eflags = true },
38015 .each = .{ .once = &.{
38016 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38017 .{ .@"0:", ._pd, .cvtps2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
38018 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
38019 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
38020 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38021 } },
38022 }, .{
38023 .required_features = .{ .x87, null, null, null },
38024 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
38025 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
38026 .patterns = &.{
38027 .{ .src = .{ .to_mem, .none, .none } },
38028 },
38029 .extra_temps = .{
38030 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38031 .{ .type = .f32, .kind = .{ .reg = .st7 } },
38032 .unused,
38033 .unused,
38034 .unused,
38035 .unused,
38036 .unused,
38037 .unused,
38038 .unused,
38039 },
38040 .dst_temps = .{.mem},
38041 .clobbers = .{ .eflags = true },
38042 .each = .{ .once = &.{
38043 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38044 .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
38045 .{ ._, .f_p, .st, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
38046 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
38047 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38048 } },
38049 }, .{
38050 .required_features = .{ .x87, null, null, null },
38051 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
38052 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
38053 .patterns = &.{
38054 .{ .src = .{ .to_mem, .none, .none } },
38055 },
38056 .extra_temps = .{
38057 .{ .type = .f32, .kind = .{ .reg = .st7 } },
38058 .unused,
38059 .unused,
38060 .unused,
38061 .unused,
38062 .unused,
38063 .unused,
38064 .unused,
38065 .unused,
38066 },
38067 .dst_temps = .{.mem},
38068 .each = .{ .once = &.{
38069 .{ ._, .f_, .ld, .src0d, ._, ._, ._ },
38070 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
38071 } },
38072 }, .{
38073 .required_features = .{ .x87, null, null, null },
38074 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
38075 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
38076 .patterns = &.{
38077 .{ .src = .{ .to_mem, .none, .none } },
38078 },
38079 .extra_temps = .{
38080 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38081 .{ .type = .f32, .kind = .{ .reg = .st7 } },
38082 .unused,
38083 .unused,
38084 .unused,
38085 .unused,
38086 .unused,
38087 .unused,
38088 .unused,
38089 },
38090 .dst_temps = .{.mem},
38091 .clobbers = .{ .eflags = true },
38092 .each = .{ .once = &.{
38093 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38094 .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
38095 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
38096 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
38097 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38098 } },
38099 }, .{
38100 .required_features = .{ .sse, null, null, null },
38101 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
38102 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
38103 .patterns = &.{
38104 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
38105 },
38106 .call_frame = .{ .alignment = .@"16" },
38107 .extra_temps = .{
38108 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
38109 .unused,
38110 .unused,
38111 .unused,
38112 .unused,
38113 .unused,
38114 .unused,
38115 .unused,
38116 .unused,
38117 },
38118 .dst_temps = .{.{ .ref = .src0 }},
38119 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
38120 .each = .{ .once = &.{
38121 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
38122 } },
38123 }, .{
38124 .required_features = .{ .avx, null, null, null },
38125 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
38126 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
38127 .patterns = &.{
38128 .{ .src = .{ .to_mem, .none, .none } },
38129 },
38130 .call_frame = .{ .alignment = .@"16" },
38131 .extra_temps = .{
38132 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38133 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
38134 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
38135 .unused,
38136 .unused,
38137 .unused,
38138 .unused,
38139 .unused,
38140 .unused,
38141 },
38142 .dst_temps = .{.mem},
38143 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
38144 .each = .{ .once = &.{
38145 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38146 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
38147 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
38148 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
38149 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
38150 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38151 } },
38152 }, .{
38153 .required_features = .{ .sse2, null, null, null },
38154 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
38155 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
38156 .patterns = &.{
38157 .{ .src = .{ .to_mem, .none, .none } },
38158 },
38159 .call_frame = .{ .alignment = .@"16" },
38160 .extra_temps = .{
38161 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38162 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
38163 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
38164 .unused,
38165 .unused,
38166 .unused,
38167 .unused,
38168 .unused,
38169 .unused,
38170 },
38171 .dst_temps = .{.mem},
38172 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
38173 .each = .{ .once = &.{
38174 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38175 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
38176 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
38177 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
38178 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
38179 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38180 } },
38181 }, .{
38182 .required_features = .{ .sse, null, null, null },
38183 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
38184 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
38185 .patterns = &.{
38186 .{ .src = .{ .to_mem, .none, .none } },
38187 },
38188 .call_frame = .{ .alignment = .@"16" },
38189 .extra_temps = .{
38190 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38191 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
38192 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
38193 .unused,
38194 .unused,
38195 .unused,
38196 .unused,
38197 .unused,
38198 .unused,
38199 },
38200 .dst_temps = .{.mem},
38201 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
38202 .each = .{ .once = &.{
38203 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38204 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
38205 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
38206 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
38207 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
38208 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38209 } },
38210 }, .{
38211 .required_features = .{ .x87, null, null, null },
38212 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
38213 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
38214 .patterns = &.{
38215 .{ .src = .{ .to_mem, .none, .none } },
38216 },
38217 .extra_temps = .{
38218 .{ .type = .f64, .kind = .{ .reg = .st7 } },
38219 .unused,
38220 .unused,
38221 .unused,
38222 .unused,
38223 .unused,
38224 .unused,
38225 .unused,
38226 .unused,
38227 },
38228 .dst_temps = .{.mem},
38229 .each = .{ .once = &.{
38230 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
38231 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
38232 } },
38233 }, .{
38234 .required_features = .{ .x87, null, null, null },
38235 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
38236 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
38237 .patterns = &.{
38238 .{ .src = .{ .to_mem, .none, .none } },
38239 },
38240 .extra_temps = .{
38241 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38242 .{ .type = .f64, .kind = .{ .reg = .st7 } },
38243 .unused,
38244 .unused,
38245 .unused,
38246 .unused,
38247 .unused,
38248 .unused,
38249 .unused,
38250 },
38251 .dst_temps = .{.mem},
38252 .clobbers = .{ .eflags = true },
38253 .each = .{ .once = &.{
38254 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38255 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
38256 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
38257 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
38258 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38259 } },
38260 }, .{
38261 .required_features = .{ .sse, null, null, null },
38262 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
38263 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
38264 .patterns = &.{
38265 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
38266 },
38267 .call_frame = .{ .alignment = .@"16" },
38268 .extra_temps = .{
38269 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
38270 .unused,
38271 .unused,
38272 .unused,
38273 .unused,
38274 .unused,
38275 .unused,
38276 .unused,
38277 .unused,
38278 },
38279 .dst_temps = .{.{ .ref = .src0 }},
38280 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
38281 .each = .{ .once = &.{
38282 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
38283 } },
38284 }, .{
38285 .required_features = .{ .avx, null, null, null },
38286 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
38287 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
38288 .patterns = &.{
38289 .{ .src = .{ .to_mem, .none, .none } },
38290 },
38291 .call_frame = .{ .alignment = .@"16" },
38292 .extra_temps = .{
38293 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38294 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
38295 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
38296 .unused,
38297 .unused,
38298 .unused,
38299 .unused,
38300 .unused,
38301 .unused,
38302 },
38303 .dst_temps = .{.mem},
38304 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
38305 .each = .{ .once = &.{
38306 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38307 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
38308 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
38309 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
38310 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
38311 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38312 } },
38313 }, .{
38314 .required_features = .{ .sse2, null, null, null },
38315 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
38316 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
38317 .patterns = &.{
38318 .{ .src = .{ .to_mem, .none, .none } },
38319 },
38320 .call_frame = .{ .alignment = .@"16" },
38321 .extra_temps = .{
38322 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38323 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
38324 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
38325 .unused,
38326 .unused,
38327 .unused,
38328 .unused,
38329 .unused,
38330 .unused,
38331 },
38332 .dst_temps = .{.mem},
38333 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
38334 .each = .{ .once = &.{
38335 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38336 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
38337 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
38338 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
38339 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
38340 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38341 } },
38342 }, .{
38343 .required_features = .{ .sse, null, null, null },
38344 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
38345 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
38346 .patterns = &.{
38347 .{ .src = .{ .to_mem, .none, .none } },
38348 },
38349 .call_frame = .{ .alignment = .@"16" },
38350 .extra_temps = .{
38351 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38352 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
38353 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
38354 .unused,
38355 .unused,
38356 .unused,
38357 .unused,
38358 .unused,
38359 .unused,
38360 },
38361 .dst_temps = .{.mem},
38362 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
38363 .each = .{ .once = &.{
38364 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38365 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
38366 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
38367 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
38368 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
38369 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
38370 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38371 } },
38372 }, .{
38373 .required_features = .{ .avx, null, null, null },
38374 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
38375 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
38376 .patterns = &.{
38377 .{ .src = .{ .to_mem, .none, .none } },
38378 },
38379 .call_frame = .{ .size = 16, .alignment = .@"16" },
38380 .extra_temps = .{
38381 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
38382 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
38383 .unused,
38384 .unused,
38385 .unused,
38386 .unused,
38387 .unused,
38388 .unused,
38389 .unused,
38390 },
38391 .dst_temps = .{.{ .reg = .xmm0 }},
38392 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
38393 .each = .{ .once = &.{
38394 .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
38395 .{ ._, .v_dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
38396 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
38397 } },
38398 }, .{
38399 .required_features = .{ .sse2, null, null, null },
38400 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
38401 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
38402 .patterns = &.{
38403 .{ .src = .{ .to_mem, .none, .none } },
38404 },
38405 .call_frame = .{ .size = 16, .alignment = .@"16" },
38406 .extra_temps = .{
38407 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
38408 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
38409 .unused,
38410 .unused,
38411 .unused,
38412 .unused,
38413 .unused,
38414 .unused,
38415 .unused,
38416 },
38417 .dst_temps = .{.{ .reg = .xmm0 }},
38418 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
38419 .each = .{ .once = &.{
38420 .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
38421 .{ ._, ._dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
38422 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
38423 } },
38424 }, .{
38425 .required_features = .{ .sse, null, null, null },
38426 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
38427 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
38428 .patterns = &.{
38429 .{ .src = .{ .to_mem, .none, .none } },
38430 },
38431 .call_frame = .{ .size = 16, .alignment = .@"16" },
38432 .extra_temps = .{
38433 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
38434 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
38435 .unused,
38436 .unused,
38437 .unused,
38438 .unused,
38439 .unused,
38440 .unused,
38441 .unused,
38442 },
38443 .dst_temps = .{.{ .reg = .xmm0 }},
38444 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
38445 .each = .{ .once = &.{
38446 .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ },
38447 .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ },
38448 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
38449 } },
38450 }, .{
38451 .required_features = .{ .avx, null, null, null },
38452 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
38453 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
38454 .patterns = &.{
38455 .{ .src = .{ .to_mem, .none, .none } },
38456 },
38457 .call_frame = .{ .size = 16, .alignment = .@"16" },
38458 .extra_temps = .{
38459 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38460 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
38461 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
38462 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
38463 .unused,
38464 .unused,
38465 .unused,
38466 .unused,
38467 .unused,
38468 },
38469 .dst_temps = .{.mem},
38470 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
38471 .each = .{ .once = &.{
38472 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38473 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
38474 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
38475 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
38476 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
38477 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
38478 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38479 } },
38480 }, .{
38481 .required_features = .{ .sse2, null, null, null },
38482 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
38483 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
38484 .patterns = &.{
38485 .{ .src = .{ .to_mem, .none, .none } },
38486 },
38487 .call_frame = .{ .size = 16, .alignment = .@"16" },
38488 .extra_temps = .{
38489 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38490 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
38491 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
38492 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
38493 .unused,
38494 .unused,
38495 .unused,
38496 .unused,
38497 .unused,
38498 },
38499 .dst_temps = .{.mem},
38500 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
38501 .each = .{ .once = &.{
38502 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38503 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
38504 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
38505 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
38506 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
38507 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
38508 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38509 } },
38510 }, .{
38511 .required_features = .{ .sse, null, null, null },
38512 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
38513 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
38514 .patterns = &.{
38515 .{ .src = .{ .to_mem, .none, .none } },
38516 },
38517 .call_frame = .{ .size = 16, .alignment = .@"16" },
38518 .extra_temps = .{
38519 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38520 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
38521 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
38522 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
38523 .unused,
38524 .unused,
38525 .unused,
38526 .unused,
38527 .unused,
38528 },
38529 .dst_temps = .{.mem},
38530 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
38531 .each = .{ .once = &.{
38532 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38533 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
38534 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
38535 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
38536 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
38537 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
38538 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38539 } },
38540 } }) catch |err| switch (err) {
38541 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
38542 @tagName(air_tag),
38543 ty_op.ty.toType().fmt(pt),
38544 cg.typeOf(ty_op.operand).fmt(pt),
38545 ops[0].tracking(cg),
38546 }),
38547 else => |e| return e,
38548 };
38549 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
38550 },
38551 .intcast => |air_tag| if (use_old) try cg.airIntCast(inst) else {
38552 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
38553 const dst_ty = ty_op.ty.toType();
38554 const src_ty = cg.typeOf(ty_op.operand);
38555 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
38556 var res: [1]Temp = undefined;
38557 cg.select(&res, &.{dst_ty}, &ops, if (dst_ty.scalarType(zcu).abiSize(zcu) <= src_ty.scalarType(zcu).abiSize(zcu)) comptime &.{ .{
38558 .dst_constraints = .{.{ .int = .dword }},
38559 .patterns = &.{
38560 .{ .src = .{ .mut_mem, .none, .none } },
38561 .{ .src = .{ .to_mut_gpr, .none, .none } },
38562 },
38563 .dst_temps = .{.{ .ref = .src0 }},
38564 .each = .{ .once = &.{} },
38565 }, .{
38566 .required_features = .{ .@"64bit", null, null, null },
38567 .dst_constraints = .{.{ .int = .qword }},
38568 .patterns = &.{
38569 .{ .src = .{ .mut_mem, .none, .none } },
38570 .{ .src = .{ .to_mut_gpr, .none, .none } },
38571 },
38572 .dst_temps = .{.{ .ref = .src0 }},
38573 .each = .{ .once = &.{} },
38574 }, .{
38575 .dst_constraints = .{.{ .int = .byte }},
38576 .patterns = &.{
38577 .{ .src = .{ .to_mem, .none, .none } },
38578 },
38579 .dst_temps = .{.{ .rc = .general_purpose }},
38580 .each = .{ .once = &.{
38581 .{ ._, ._, .mov, .dst0b, .mem(.src0b), ._, ._ },
38582 } },
38583 }, .{
38584 .dst_constraints = .{.{ .int = .word }},
38585 .patterns = &.{
38586 .{ .src = .{ .to_mem, .none, .none } },
38587 },
38588 .dst_temps = .{.{ .rc = .general_purpose }},
38589 .each = .{ .once = &.{
38590 .{ ._, ._, .mov, .dst0w, .mem(.src0w), ._, ._ },
38591 } },
38592 }, .{
38593 .dst_constraints = .{.{ .int = .dword }},
38594 .patterns = &.{
38595 .{ .src = .{ .to_mem, .none, .none } },
38596 },
38597 .dst_temps = .{.{ .rc = .general_purpose }},
38598 .each = .{ .once = &.{
38599 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
38600 } },
38601 }, .{
38602 .required_features = .{ .@"64bit", null, null, null },
38603 .dst_constraints = .{.{ .int = .qword }},
38604 .patterns = &.{
38605 .{ .src = .{ .to_mem, .none, .none } },
38606 },
38607 .dst_temps = .{.{ .rc = .general_purpose }},
38608 .each = .{ .once = &.{
38609 .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },
38610 } },
38611 }, .{
38612 .required_features = .{ .@"64bit", null, null, null },
38613 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
38614 .patterns = &.{
38615 .{ .src = .{ .to_mem, .none, .none } },
38616 },
38617 .extra_temps = .{
38618 .{ .type = .usize, .kind = .{ .reg = .rsi } },
38619 .{ .type = .usize, .kind = .{ .reg = .rdi } },
38620 .{ .type = .u32, .kind = .{ .reg = .ecx } },
38621 .unused,
38622 .unused,
38623 .unused,
38624 .unused,
38625 .unused,
38626 .unused,
38627 },
38628 .dst_temps = .{.mem},
38629 .each = .{ .once = &.{
38630 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
38631 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
38632 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ },
38633 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
38634 } },
38635 }, .{
38636 .required_features = .{ .sse, null, null, null },
38637 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any },
38638 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .byte } }},
38639 .patterns = &.{
38640 .{ .src = .{ .mut_mem, .none, .none } },
38641 .{ .src = .{ .to_mut_sse, .none, .none } },
38642 },
38643 .dst_temps = .{.{ .ref = .src0 }},
38644 .each = .{ .once = &.{} },
38645 }, .{
38646 .required_features = .{ .avx, null, null, null },
38647 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .byte } }, .any, .any },
38648 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .byte } }},
38649 .patterns = &.{
38650 .{ .src = .{ .mut_mem, .none, .none } },
38651 .{ .src = .{ .to_mut_sse, .none, .none } },
38652 },
38653 .dst_temps = .{.{ .ref = .src0 }},
38654 .each = .{ .once = &.{} },
38655 }, .{
38656 .required_features = .{ .avx, null, null, null },
38657 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
38658 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }},
38659 .patterns = &.{
38660 .{ .src = .{ .to_sse, .none, .none } },
38661 },
38662 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
38663 .each = .{ .once = &.{
38664 .{ ._, .vp_b, .ackssw, .dst0x, .src0x, .dst0x, ._ },
38665 } },
38666 }, .{
38667 .required_features = .{ .avx, null, null, null },
38668 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
38669 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }},
38670 .patterns = &.{
38671 .{ .src = .{ .to_sse, .none, .none } },
38672 },
38673 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
38674 .each = .{ .once = &.{
38675 .{ ._, .vp_b, .ackusw, .dst0x, .src0x, .dst0x, ._ },
38676 } },
38677 }, .{
38678 .required_features = .{ .sse2, null, null, null },
38679 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
38680 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }},
38681 .patterns = &.{
38682 .{ .src = .{ .to_mut_sse, .none, .none } },
38683 },
38684 .dst_temps = .{.{ .ref = .src0 }},
38685 .each = .{ .once = &.{
38686 .{ ._, .p_b, .ackssw, .dst0x, .dst0x, ._, ._ },
38687 } },
38688 }, .{
38689 .required_features = .{ .sse2, null, null, null },
38690 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
38691 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }},
38692 .patterns = &.{
38693 .{ .src = .{ .to_mut_sse, .none, .none } },
38694 },
38695 .dst_temps = .{.{ .ref = .src0 }},
38696 .each = .{ .once = &.{
38697 .{ ._, .p_b, .ackusw, .dst0x, .dst0x, ._, ._ },
38698 } },
38699 }, .{
38700 .required_features = .{ .avx2, null, null, null },
38701 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any, .any },
38702 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }},
38703 .patterns = &.{
38704 .{ .src = .{ .to_sse, .none, .none } },
38705 },
38706 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
38707 .each = .{ .once = &.{
38708 .{ ._, .vp_b, .ackssw, .dst0y, .src0y, .dst0y, ._ },
38709 } },
38710 }, .{
38711 .required_features = .{ .avx2, null, null, null },
38712 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any, .any },
38713 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .byte } }},
38714 .patterns = &.{
38715 .{ .src = .{ .to_sse, .none, .none } },
38716 },
38717 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
38718 .each = .{ .once = &.{
38719 .{ ._, .vp_b, .ackusw, .dst0y, .src0y, .dst0y, ._ },
38720 } },
38721 }, .{
38722 .required_features = .{ .slow_incdec, null, null, null },
38723 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
38724 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
38725 .patterns = &.{
38726 .{ .src = .{ .to_mem, .none, .none } },
38727 },
38728 .extra_temps = .{
38729 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38730 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
38731 .unused,
38732 .unused,
38733 .unused,
38734 .unused,
38735 .unused,
38736 .unused,
38737 .unused,
38738 },
38739 .dst_temps = .{.mem},
38740 .clobbers = .{ .eflags = true },
38741 .each = .{ .once = &.{
38742 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
38743 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
38744 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
38745 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
38746 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38747 } },
38748 }, .{
38749 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
38750 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
38751 .patterns = &.{
38752 .{ .src = .{ .to_mem, .none, .none } },
38753 },
38754 .extra_temps = .{
38755 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38756 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
38757 .unused,
38758 .unused,
38759 .unused,
38760 .unused,
38761 .unused,
38762 .unused,
38763 .unused,
38764 },
38765 .dst_temps = .{.mem},
38766 .clobbers = .{ .eflags = true },
38767 .each = .{ .once = &.{
38768 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
38769 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
38770 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
38771 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
38772 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
38773 } },
38774 }, .{
38775 .required_features = .{ .avx, null, null, null },
38776 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
38777 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }},
38778 .patterns = &.{
38779 .{ .src = .{ .to_sse, .none, .none } },
38780 },
38781 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
38782 .each = .{ .once = &.{
38783 .{ ._, .vp_w, .ackssd, .dst0x, .src0x, .dst0x, ._ },
38784 .{ ._, .vp_b, .ackssw, .dst0x, .dst0x, .dst0x, ._ },
38785 } },
38786 }, .{
38787 .required_features = .{ .avx, null, null, null },
38788 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
38789 .dst_constraints = .{.{ .scalar_int = .{ .of = .dword, .is = .byte } }},
38790 .patterns = &.{
38791 .{ .src = .{ .to_sse, .none, .none } },
38792 },
38793 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
38794 .each = .{ .once = &.{
38795 .{ ._, .vp_w, .ackusd, .dst0x, .src0x, .dst0x, ._ },
38796 .{ ._, .vp_b, .ackusw, .dst0x, .dst0x, .dst0x, ._ },
38797 } },
38798 }, .{
38799 .required_features = .{ .sse2, null, null, null },
38800 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
38801 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }},
38802 .patterns = &.{
38803 .{ .src = .{ .to_mut_sse, .none, .none } },
38804 },
38805 .dst_temps = .{.{ .ref = .src0 }},
38806 .each = .{ .once = &.{
38807 .{ ._, .p_w, .ackssd, .dst0x, .dst0x, ._, ._ },
38808 .{ ._, .p_b, .ackssw, .dst0x, .dst0x, ._, ._ },
38809 } },
38810 }, .{
38811 .required_features = .{ .sse4_1, null, null, null },
38812 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
38813 .dst_constraints = .{.{ .scalar_int = .{ .of = .dword, .is = .byte } }},
38814 .patterns = &.{
38815 .{ .src = .{ .to_mut_sse, .none, .none } },
38816 },
38817 .dst_temps = .{.{ .ref = .src0 }},
38818 .each = .{ .once = &.{
38819 .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ },
38820 .{ ._, .p_b, .ackusw, .dst0x, .dst0x, ._, ._ },
38821 } },
38822 }, .{
38823 .required_features = .{ .avx2, null, null, null },
38824 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
38825 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }},
38826 .patterns = &.{
38827 .{ .src = .{ .to_sse, .none, .none } },
38828 },
38829 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
38830 .each = .{ .once = &.{
38831 .{ ._, .vp_w, .ackssd, .dst0y, .src0y, .dst0y, ._ },
38832 .{ ._, .vp_b, .ackssw, .dst0y, .dst0y, .dst0y, ._ },
38833 } },
38834 }, .{
38835 .required_features = .{ .avx2, null, null, null },
38836 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
38837 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }},
38838 .patterns = &.{
38839 .{ .src = .{ .to_sse, .none, .none } },
38840 },
38841 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
38842 .each = .{ .once = &.{
38843 .{ ._, .vp_w, .ackusd, .dst0y, .src0y, .dst0y, ._ },
38844 .{ ._, .vp_b, .ackusw, .dst0y, .dst0y, .dst0y, ._ },
38845 } },
38846 }, .{
38847 .required_features = .{ .slow_incdec, null, null, null },
38848 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
38849 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
38850 .patterns = &.{
38851 .{ .src = .{ .to_mem, .none, .none } },
38852 },
38853 .extra_temps = .{
38854 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38855 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
38856 .unused,
38857 .unused,
38858 .unused,
38859 .unused,
38860 .unused,
38861 .unused,
38862 .unused,
38863 },
38864 .dst_temps = .{.mem},
38865 .clobbers = .{ .eflags = true },
38866 .each = .{ .once = &.{
38867 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
38868 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
38869 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
38870 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
38871 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38872 } },
38873 }, .{
38874 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
38875 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
38876 .patterns = &.{
38877 .{ .src = .{ .to_mem, .none, .none } },
38878 },
38879 .extra_temps = .{
38880 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38881 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
38882 .unused,
38883 .unused,
38884 .unused,
38885 .unused,
38886 .unused,
38887 .unused,
38888 .unused,
38889 },
38890 .dst_temps = .{.mem},
38891 .clobbers = .{ .eflags = true },
38892 .each = .{ .once = &.{
38893 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
38894 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
38895 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
38896 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
38897 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
38898 } },
38899 }, .{
38900 .required_features = .{ .slow_incdec, null, null, null },
38901 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
38902 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
38903 .patterns = &.{
38904 .{ .src = .{ .to_mem, .none, .none } },
38905 },
38906 .extra_temps = .{
38907 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38908 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
38909 .unused,
38910 .unused,
38911 .unused,
38912 .unused,
38913 .unused,
38914 .unused,
38915 .unused,
38916 },
38917 .dst_temps = .{.mem},
38918 .clobbers = .{ .eflags = true },
38919 .each = .{ .once = &.{
38920 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
38921 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
38922 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
38923 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
38924 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38925 } },
38926 }, .{
38927 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
38928 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
38929 .patterns = &.{
38930 .{ .src = .{ .to_mem, .none, .none } },
38931 },
38932 .extra_temps = .{
38933 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38934 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
38935 .unused,
38936 .unused,
38937 .unused,
38938 .unused,
38939 .unused,
38940 .unused,
38941 .unused,
38942 },
38943 .dst_temps = .{.mem},
38944 .clobbers = .{ .eflags = true },
38945 .each = .{ .once = &.{
38946 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
38947 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
38948 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
38949 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
38950 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
38951 } },
38952 }, .{
38953 .required_features = .{ .slow_incdec, null, null, null },
38954 .src_constraints = .{ .any_scalar_int, .any, .any },
38955 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
38956 .patterns = &.{
38957 .{ .src = .{ .to_mem, .none, .none } },
38958 },
38959 .extra_temps = .{
38960 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38961 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
38962 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
38963 .unused,
38964 .unused,
38965 .unused,
38966 .unused,
38967 .unused,
38968 .unused,
38969 },
38970 .dst_temps = .{.mem},
38971 .clobbers = .{ .eflags = true },
38972 .each = .{ .once = &.{
38973 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
38974 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
38975 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
38976 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
38977 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
38978 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
38979 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38980 } },
38981 }, .{
38982 .src_constraints = .{ .any_scalar_int, .any, .any },
38983 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
38984 .patterns = &.{
38985 .{ .src = .{ .to_mem, .none, .none } },
38986 },
38987 .extra_temps = .{
38988 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38989 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
38990 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
38991 .unused,
38992 .unused,
38993 .unused,
38994 .unused,
38995 .unused,
38996 .unused,
38997 },
38998 .dst_temps = .{.mem},
38999 .clobbers = .{ .eflags = true },
39000 .each = .{ .once = &.{
39001 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
39002 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
39003 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
39004 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
39005 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
39006 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
39007 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
39008 } },
39009 }, .{
39010 .required_features = .{ .sse, null, null, null },
39011 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
39012 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
39013 .patterns = &.{
39014 .{ .src = .{ .mut_mem, .none, .none } },
39015 .{ .src = .{ .to_mut_sse, .none, .none } },
39016 },
39017 .dst_temps = .{.{ .ref = .src0 }},
39018 .each = .{ .once = &.{} },
39019 }, .{
39020 .required_features = .{ .avx, null, null, null },
39021 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any, .any },
39022 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .word } }},
39023 .patterns = &.{
39024 .{ .src = .{ .mut_mem, .none, .none } },
39025 .{ .src = .{ .to_mut_sse, .none, .none } },
39026 },
39027 .dst_temps = .{.{ .ref = .src0 }},
39028 .each = .{ .once = &.{} },
39029 }, .{
39030 .required_features = .{ .avx, null, null, null },
39031 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
39032 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .word } }},
39033 .patterns = &.{
39034 .{ .src = .{ .to_sse, .none, .none } },
39035 },
39036 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
39037 .each = .{ .once = &.{
39038 .{ ._, .vp_w, .ackssd, .dst0x, .src0x, .dst0x, ._ },
39039 } },
39040 }, .{
39041 .required_features = .{ .avx, null, null, null },
39042 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
39043 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .word } }},
39044 .patterns = &.{
39045 .{ .src = .{ .to_sse, .none, .none } },
39046 },
39047 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
39048 .each = .{ .once = &.{
39049 .{ ._, .vp_w, .ackusd, .dst0x, .src0x, .dst0x, ._ },
39050 } },
39051 }, .{
39052 .required_features = .{ .sse2, null, null, null },
39053 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
39054 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .word } }},
39055 .patterns = &.{
39056 .{ .src = .{ .to_mut_sse, .none, .none } },
39057 },
39058 .dst_temps = .{.{ .ref = .src0 }},
39059 .each = .{ .once = &.{
39060 .{ ._, .p_w, .ackssd, .dst0x, .dst0x, ._, ._ },
39061 } },
39062 }, .{
39063 .required_features = .{ .sse4_1, null, null, null },
39064 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
39065 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .word } }},
39066 .patterns = &.{
39067 .{ .src = .{ .to_mut_sse, .none, .none } },
39068 },
39069 .dst_temps = .{.{ .ref = .src0 }},
39070 .each = .{ .once = &.{
39071 .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ },
39072 } },
39073 }, .{
39074 .required_features = .{ .avx2, null, null, null },
39075 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
39076 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
39077 .patterns = &.{
39078 .{ .src = .{ .to_sse, .none, .none } },
39079 },
39080 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
39081 .each = .{ .once = &.{
39082 .{ ._, .vp_w, .ackssd, .dst0y, .src0y, .dst0y, ._ },
39083 } },
39084 }, .{
39085 .required_features = .{ .avx2, null, null, null },
39086 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
39087 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
39088 .patterns = &.{
39089 .{ .src = .{ .to_sse, .none, .none } },
39090 },
39091 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
39092 .each = .{ .once = &.{
39093 .{ ._, .vp_w, .ackusd, .dst0y, .src0y, .dst0y, ._ },
39094 } },
39095 }, .{
39096 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
39097 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
39098 .patterns = &.{
39099 .{ .src = .{ .to_mem, .none, .none } },
39100 },
39101 .extra_temps = .{
39102 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39103 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
39104 .unused,
39105 .unused,
39106 .unused,
39107 .unused,
39108 .unused,
39109 .unused,
39110 .unused,
39111 },
39112 .dst_temps = .{.mem},
39113 .clobbers = .{ .eflags = true },
39114 .each = .{ .once = &.{
39115 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
39116 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
39117 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
39118 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
39119 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
39120 } },
39121 }, .{
39122 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
39123 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
39124 .patterns = &.{
39125 .{ .src = .{ .to_mem, .none, .none } },
39126 },
39127 .extra_temps = .{
39128 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39129 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
39130 .unused,
39131 .unused,
39132 .unused,
39133 .unused,
39134 .unused,
39135 .unused,
39136 .unused,
39137 },
39138 .dst_temps = .{.mem},
39139 .clobbers = .{ .eflags = true },
39140 .each = .{ .once = &.{
39141 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
39142 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
39143 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
39144 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
39145 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
39146 } },
39147 }, .{
39148 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
39149 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
39150 .patterns = &.{
39151 .{ .src = .{ .to_mem, .none, .none } },
39152 },
39153 .extra_temps = .{
39154 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39155 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
39156 .unused,
39157 .unused,
39158 .unused,
39159 .unused,
39160 .unused,
39161 .unused,
39162 .unused,
39163 },
39164 .dst_temps = .{.mem},
39165 .clobbers = .{ .eflags = true },
39166 .each = .{ .once = &.{
39167 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
39168 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
39169 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
39170 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
39171 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
39172 } },
39173 }, .{
39174 .src_constraints = .{ .any_scalar_int, .any, .any },
39175 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
39176 .patterns = &.{
39177 .{ .src = .{ .to_mem, .none, .none } },
39178 },
39179 .extra_temps = .{
39180 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39181 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
39182 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
39183 .unused,
39184 .unused,
39185 .unused,
39186 .unused,
39187 .unused,
39188 .unused,
39189 },
39190 .dst_temps = .{.mem},
39191 .clobbers = .{ .eflags = true },
39192 .each = .{ .once = &.{
39193 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
39194 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
39195 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
39196 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
39197 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
39198 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
39199 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
39200 } },
39201 }, .{
39202 .required_features = .{ .sse, null, null, null },
39203 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
39204 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
39205 .patterns = &.{
39206 .{ .src = .{ .mut_mem, .none, .none } },
39207 .{ .src = .{ .to_mut_sse, .none, .none } },
39208 },
39209 .dst_temps = .{.{ .ref = .src0 }},
39210 .each = .{ .once = &.{} },
39211 }, .{
39212 .required_features = .{ .avx, null, null, null },
39213 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
39214 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }},
39215 .patterns = &.{
39216 .{ .src = .{ .mut_mem, .none, .none } },
39217 .{ .src = .{ .to_mut_sse, .none, .none } },
39218 },
39219 .dst_temps = .{.{ .ref = .src0 }},
39220 .each = .{ .once = &.{} },
39221 }, .{
39222 .required_features = .{ .avx, null, null, null },
39223 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any, .any },
39224 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .dword } }},
39225 .patterns = &.{
39226 .{ .src = .{ .mem, .none, .none } },
39227 .{ .src = .{ .to_sse, .none, .none } },
39228 },
39229 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
39230 .each = .{ .once = &.{
39231 .{ ._, .vp_d, .shuf, .dst0x, .src0x, .ui(0b10_00_10_00), ._ },
39232 } },
39233 }, .{
39234 .required_features = .{ .sse2, null, null, null },
39235 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any, .any },
39236 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .dword } }},
39237 .patterns = &.{
39238 .{ .src = .{ .mem, .none, .none } },
39239 .{ .src = .{ .to_sse, .none, .none } },
39240 },
39241 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
39242 .each = .{ .once = &.{
39243 .{ ._, .p_d, .shuf, .dst0x, .src0x, .ui(0b10_00_10_00), ._ },
39244 } },
39245 }, .{
39246 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
39247 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
39248 .patterns = &.{
39249 .{ .src = .{ .to_mem, .none, .none } },
39250 },
39251 .extra_temps = .{
39252 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39253 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
39254 .unused,
39255 .unused,
39256 .unused,
39257 .unused,
39258 .unused,
39259 .unused,
39260 .unused,
39261 },
39262 .dst_temps = .{.mem},
39263 .clobbers = .{ .eflags = true },
39264 .each = .{ .once = &.{
39265 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
39266 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
39267 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
39268 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
39269 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
39270 } },
39271 }, .{
39272 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
39273 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
39274 .patterns = &.{
39275 .{ .src = .{ .to_mem, .none, .none } },
39276 },
39277 .extra_temps = .{
39278 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39279 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
39280 .unused,
39281 .unused,
39282 .unused,
39283 .unused,
39284 .unused,
39285 .unused,
39286 .unused,
39287 },
39288 .dst_temps = .{.mem},
39289 .clobbers = .{ .eflags = true },
39290 .each = .{ .once = &.{
39291 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
39292 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
39293 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
39294 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
39295 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
39296 } },
39297 }, .{
39298 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },
39299 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
39300 .patterns = &.{
39301 .{ .src = .{ .to_mem, .none, .none } },
39302 },
39303 .extra_temps = .{
39304 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39305 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
39306 .unused,
39307 .unused,
39308 .unused,
39309 .unused,
39310 .unused,
39311 .unused,
39312 .unused,
39313 },
39314 .dst_temps = .{.mem},
39315 .clobbers = .{ .eflags = true },
39316 .each = .{ .once = &.{
39317 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
39318 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
39319 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
39320 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
39321 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
39322 } },
39323 }, .{
39324 .src_constraints = .{ .any_scalar_int, .any, .any },
39325 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
39326 .patterns = &.{
39327 .{ .src = .{ .to_mem, .none, .none } },
39328 },
39329 .extra_temps = .{
39330 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39331 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
39332 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
39333 .unused,
39334 .unused,
39335 .unused,
39336 .unused,
39337 .unused,
39338 .unused,
39339 },
39340 .dst_temps = .{.mem},
39341 .clobbers = .{ .eflags = true },
39342 .each = .{ .once = &.{
39343 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
39344 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
39345 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
39346 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
39347 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
39348 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
39349 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
39350 } },
39351 }, .{
39352 .required_features = .{ .sse, null, null, null },
39353 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any, .any },
39354 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
39355 .patterns = &.{
39356 .{ .src = .{ .mut_mem, .none, .none } },
39357 .{ .src = .{ .to_mut_sse, .none, .none } },
39358 },
39359 .dst_temps = .{.{ .ref = .src0 }},
39360 .each = .{ .once = &.{} },
39361 }, .{
39362 .required_features = .{ .avx, null, null, null },
39363 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .qword } }, .any, .any },
39364 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
39365 .patterns = &.{
39366 .{ .src = .{ .mut_mem, .none, .none } },
39367 .{ .src = .{ .to_mut_sse, .none, .none } },
39368 },
39369 .dst_temps = .{.{ .ref = .src0 }},
39370 .each = .{ .once = &.{} },
39371 }, .{
39372 .required_features = .{ .@"64bit", null, null, null },
39373 .src_constraints = .{ .any_scalar_int, .any, .any },
39374 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
39375 .patterns = &.{
39376 .{ .src = .{ .to_mem, .none, .none } },
39377 },
39378 .extra_temps = .{
39379 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39380 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
39381 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
39382 .unused,
39383 .unused,
39384 .unused,
39385 .unused,
39386 .unused,
39387 .unused,
39388 },
39389 .dst_temps = .{.mem},
39390 .clobbers = .{ .eflags = true },
39391 .each = .{ .once = &.{
39392 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
39393 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
39394 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
39395 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
39396 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
39397 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
39398 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
39399 } },
39400 }, .{
39401 .required_features = .{ .sse, null, null, null },
39402 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
39403 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
39404 .patterns = &.{
39405 .{ .src = .{ .mut_mem, .none, .none } },
39406 .{ .src = .{ .to_mut_sse, .none, .none } },
39407 },
39408 .dst_temps = .{.{ .ref = .src0 }},
39409 .each = .{ .once = &.{} },
39410 }, .{
39411 .required_features = .{ .avx, null, null, null },
39412 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .xword } }, .any, .any },
39413 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .xword } }},
39414 .patterns = &.{
39415 .{ .src = .{ .mut_mem, .none, .none } },
39416 .{ .src = .{ .to_mut_sse, .none, .none } },
39417 },
39418 .dst_temps = .{.{ .ref = .src0 }},
39419 .each = .{ .once = &.{} },
39420 }, .{
39421 .required_features = .{ .avx, null, null, null },
39422 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },
39423 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .yword } }},
39424 .patterns = &.{
39425 .{ .src = .{ .mut_mem, .none, .none } },
39426 .{ .src = .{ .to_mut_sse, .none, .none } },
39427 },
39428 .dst_temps = .{.{ .ref = .src0 }},
39429 .each = .{ .once = &.{} },
39430 }, .{
39431 .required_features = .{ .@"64bit", .slow_incdec, null, null },
39432 .src_constraints = .{ .any_scalar_int, .any, .any },
39433 .dst_constraints = .{.any_scalar_int},
39434 .patterns = &.{
39435 .{ .src = .{ .to_mem, .none, .none } },
39436 },
39437 .extra_temps = .{
39438 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
39439 .{ .type = .usize, .kind = .{ .reg = .rsi } },
39440 .{ .type = .usize, .kind = .{ .reg = .rdi } },
39441 .{ .type = .u32, .kind = .{ .reg = .ecx } },
39442 .unused,
39443 .unused,
39444 .unused,
39445 .unused,
39446 .unused,
39447 },
39448 .dst_temps = .{.mem},
39449 .clobbers = .{ .eflags = true },
39450 .each = .{ .once = &.{
39451 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
39452 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
39453 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
39454 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
39455 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
39456 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
39457 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
39458 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
39459 } },
39460 }, .{
39461 .required_features = .{ .@"64bit", null, null, null },
39462 .src_constraints = .{ .any_scalar_int, .any, .any },
39463 .dst_constraints = .{.any_scalar_int},
39464 .patterns = &.{
39465 .{ .src = .{ .to_mem, .none, .none } },
39466 },
39467 .extra_temps = .{
39468 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
39469 .{ .type = .usize, .kind = .{ .reg = .rsi } },
39470 .{ .type = .usize, .kind = .{ .reg = .rdi } },
39471 .{ .type = .u32, .kind = .{ .reg = .ecx } },
39472 .unused,
39473 .unused,
39474 .unused,
39475 .unused,
39476 .unused,
39477 },
39478 .dst_temps = .{.mem},
39479 .clobbers = .{ .eflags = true },
39480 .each = .{ .once = &.{
39481 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
39482 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
39483 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
39484 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
39485 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
39486 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
39487 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
39488 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
39489 } },
39490 } } else comptime &.{ .{
39491 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
39492 .dst_constraints = .{.{ .signed_int = .dword }},
39493 .patterns = &.{
39494 .{ .src = .{ .mem, .none, .none } },
39495 .{ .src = .{ .to_gpr, .none, .none } },
39496 },
39497 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
39498 .each = .{ .once = &.{
39499 .{ ._, ._, .movsx, .dst0d, .src0b, ._, ._ },
39500 } },
39501 }, .{
39502 .src_constraints = .{ .{ .int = .byte }, .any, .any },
39503 .dst_constraints = .{.{ .int = .dword }},
39504 .patterns = &.{
39505 .{ .src = .{ .mem, .none, .none } },
39506 .{ .src = .{ .to_gpr, .none, .none } },
39507 },
39508 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
39509 .each = .{ .once = &.{
39510 .{ ._, ._, .movzx, .dst0d, .src0b, ._, ._ },
39511 } },
39512 }, .{
39513 .required_features = .{ .@"64bit", null, null, null },
39514 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
39515 .dst_constraints = .{.{ .signed_int = .qword }},
39516 .patterns = &.{
39517 .{ .src = .{ .mem, .none, .none } },
39518 .{ .src = .{ .to_gpr, .none, .none } },
39519 },
39520 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
39521 .each = .{ .once = &.{
39522 .{ ._, ._, .movsx, .dst0q, .src0b, ._, ._ },
39523 } },
39524 }, .{
39525 .required_features = .{ .@"64bit", null, null, null },
39526 .src_constraints = .{ .{ .int = .byte }, .any, .any },
39527 .dst_constraints = .{.{ .int = .qword }},
39528 .patterns = &.{
39529 .{ .src = .{ .mem, .none, .none } },
39530 .{ .src = .{ .to_gpr, .none, .none } },
39531 },
39532 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
39533 .each = .{ .once = &.{
39534 .{ ._, ._, .movzx, .dst0d, .src0b, ._, ._ },
39535 } },
39536 }, .{
39537 .required_features = .{ .@"64bit", null, null, null },
39538 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
39539 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }},
39540 .patterns = &.{
39541 .{ .src = .{ .mem, .none, .none } },
39542 .{ .src = .{ .to_gpr, .none, .none } },
39543 },
39544 .extra_temps = .{
39545 .{ .type = .i64, .kind = .{ .reg = .rax } },
39546 .{ .type = .usize, .kind = .{ .reg = .rdi } },
39547 .{ .type = .u32, .kind = .{ .reg = .ecx } },
39548 .unused,
39549 .unused,
39550 .unused,
39551 .unused,
39552 .unused,
39553 .unused,
39554 },
39555 .dst_temps = .{.mem},
39556 .clobbers = .{ .eflags = true },
39557 .each = .{ .once = &.{
39558 .{ ._, ._, .movsx, .tmp0q, .src0b, ._, ._ },
39559 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
39560 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
39561 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
39562 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
39563 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
39564 } },
39565 }, .{
39566 .required_features = .{ .@"64bit", null, null, null },
39567 .src_constraints = .{ .{ .int = .byte }, .any, .any },
39568 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
39569 .patterns = &.{
39570 .{ .src = .{ .mem, .none, .none } },
39571 .{ .src = .{ .to_gpr, .none, .none } },
39572 },
39573 .extra_temps = .{
39574 .{ .type = .u64, .kind = .{ .reg = .rax } },
39575 .{ .type = .usize, .kind = .{ .reg = .rdi } },
39576 .{ .type = .u32, .kind = .{ .reg = .ecx } },
39577 .unused,
39578 .unused,
39579 .unused,
39580 .unused,
39581 .unused,
39582 .unused,
39583 },
39584 .dst_temps = .{.mem},
39585 .clobbers = .{ .eflags = true },
39586 .each = .{ .once = &.{
39587 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
39588 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
39589 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
39590 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
39591 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
39592 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
39593 } },
39594 }, .{
39595 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
39596 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }},
39597 .patterns = &.{
39598 .{ .src = .{ .mem, .none, .none } },
39599 .{ .src = .{ .to_gpr, .none, .none } },
39600 },
39601 .extra_temps = .{
39602 .{ .type = .i32, .kind = .{ .reg = .eax } },
39603 .{ .type = .usize, .kind = .{ .reg = .edi } },
39604 .{ .type = .u32, .kind = .{ .reg = .ecx } },
39605 .unused,
39606 .unused,
39607 .unused,
39608 .unused,
39609 .unused,
39610 .unused,
39611 },
39612 .dst_temps = .{.mem},
39613 .clobbers = .{ .eflags = true },
39614 .each = .{ .once = &.{
39615 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
39616 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
39617 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
39618 .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
39619 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
39620 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
39621 } },
39622 }, .{
39623 .src_constraints = .{ .{ .int = .byte }, .any, .any },
39624 .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},
39625 .patterns = &.{
39626 .{ .src = .{ .mem, .none, .none } },
39627 .{ .src = .{ .to_gpr, .none, .none } },
39628 },
39629 .extra_temps = .{
39630 .{ .type = .u32, .kind = .{ .reg = .eax } },
39631 .{ .type = .usize, .kind = .{ .reg = .edi } },
39632 .{ .type = .u32, .kind = .{ .reg = .ecx } },
39633 .unused,
39634 .unused,
39635 .unused,
39636 .unused,
39637 .unused,
39638 .unused,
39639 },
39640 .dst_temps = .{.mem},
39641 .clobbers = .{ .eflags = true },
39642 .each = .{ .once = &.{
39643 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
39644 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
39645 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
39646 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
39647 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
39648 .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },
39649 } },
39650 }, .{
39651 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
39652 .dst_constraints = .{.{ .signed_int = .dword }},
39653 .patterns = &.{
39654 .{ .src = .{ .mem, .none, .none } },
39655 .{ .src = .{ .to_gpr, .none, .none } },
39656 },
39657 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
39658 .each = .{ .once = &.{
39659 .{ ._, ._, .movsx, .dst0d, .src0w, ._, ._ },
39660 } },
39661 }, .{
39662 .src_constraints = .{ .{ .int = .word }, .any, .any },
39663 .dst_constraints = .{.{ .int = .dword }},
39664 .patterns = &.{
39665 .{ .src = .{ .mem, .none, .none } },
39666 .{ .src = .{ .to_gpr, .none, .none } },
39667 },
39668 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
39669 .each = .{ .once = &.{
39670 .{ ._, ._, .movzx, .dst0d, .src0w, ._, ._ },
39671 } },
39672 }, .{
39673 .required_features = .{ .@"64bit", null, null, null },
39674 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
39675 .dst_constraints = .{.{ .signed_int = .qword }},
39676 .patterns = &.{
39677 .{ .src = .{ .mem, .none, .none } },
39678 .{ .src = .{ .to_gpr, .none, .none } },
39679 },
39680 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
39681 .each = .{ .once = &.{
39682 .{ ._, ._, .movsx, .dst0q, .src0w, ._, ._ },
39683 } },
39684 }, .{
39685 .required_features = .{ .@"64bit", null, null, null },
39686 .src_constraints = .{ .{ .int = .word }, .any, .any },
39687 .dst_constraints = .{.{ .int = .qword }},
39688 .patterns = &.{
39689 .{ .src = .{ .mem, .none, .none } },
39690 .{ .src = .{ .to_gpr, .none, .none } },
39691 },
39692 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
39693 .each = .{ .once = &.{
39694 .{ ._, ._, .movzx, .dst0d, .src0w, ._, ._ },
39695 } },
39696 }, .{
39697 .required_features = .{ .@"64bit", null, null, null },
39698 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
39699 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }},
39700 .patterns = &.{
39701 .{ .src = .{ .mem, .none, .none } },
39702 .{ .src = .{ .to_gpr, .none, .none } },
39703 },
39704 .extra_temps = .{
39705 .{ .type = .i64, .kind = .{ .reg = .rax } },
39706 .{ .type = .usize, .kind = .{ .reg = .rdi } },
39707 .{ .type = .u32, .kind = .{ .reg = .ecx } },
39708 .unused,
39709 .unused,
39710 .unused,
39711 .unused,
39712 .unused,
39713 .unused,
39714 },
39715 .dst_temps = .{.mem},
39716 .clobbers = .{ .eflags = true },
39717 .each = .{ .once = &.{
39718 .{ ._, ._, .movsx, .tmp0q, .src0w, ._, ._ },
39719 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
39720 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
39721 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
39722 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
39723 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
39724 } },
39725 }, .{
39726 .required_features = .{ .@"64bit", null, null, null },
39727 .src_constraints = .{ .{ .int = .word }, .any, .any },
39728 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
39729 .patterns = &.{
39730 .{ .src = .{ .mem, .none, .none } },
39731 .{ .src = .{ .to_gpr, .none, .none } },
39732 },
39733 .extra_temps = .{
39734 .{ .type = .u64, .kind = .{ .reg = .rax } },
39735 .{ .type = .usize, .kind = .{ .reg = .rdi } },
39736 .{ .type = .u32, .kind = .{ .reg = .ecx } },
39737 .unused,
39738 .unused,
39739 .unused,
39740 .unused,
39741 .unused,
39742 .unused,
39743 },
39744 .dst_temps = .{.mem},
39745 .clobbers = .{ .eflags = true },
39746 .each = .{ .once = &.{
39747 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
39748 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
39749 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
39750 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
39751 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
39752 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
39753 } },
39754 }, .{
39755 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
39756 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }},
39757 .patterns = &.{
39758 .{ .src = .{ .mem, .none, .none } },
39759 .{ .src = .{ .to_gpr, .none, .none } },
39760 },
39761 .extra_temps = .{
39762 .{ .type = .i32, .kind = .{ .reg = .eax } },
39763 .{ .type = .usize, .kind = .{ .reg = .edi } },
39764 .{ .type = .u32, .kind = .{ .reg = .ecx } },
39765 .unused,
39766 .unused,
39767 .unused,
39768 .unused,
39769 .unused,
39770 .unused,
39771 },
39772 .dst_temps = .{.mem},
39773 .clobbers = .{ .eflags = true },
39774 .each = .{ .once = &.{
39775 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
39776 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
39777 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
39778 .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
39779 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
39780 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
39781 } },
39782 }, .{
39783 .src_constraints = .{ .{ .int = .word }, .any, .any },
39784 .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},
39785 .patterns = &.{
39786 .{ .src = .{ .mem, .none, .none } },
39787 .{ .src = .{ .to_gpr, .none, .none } },
39788 },
39789 .extra_temps = .{
39790 .{ .type = .u32, .kind = .{ .reg = .eax } },
39791 .{ .type = .usize, .kind = .{ .reg = .edi } },
39792 .{ .type = .u32, .kind = .{ .reg = .ecx } },
39793 .unused,
39794 .unused,
39795 .unused,
39796 .unused,
39797 .unused,
39798 .unused,
39799 },
39800 .dst_temps = .{.mem},
39801 .clobbers = .{ .eflags = true },
39802 .each = .{ .once = &.{
39803 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
39804 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
39805 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
39806 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
39807 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
39808 .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },
39809 } },
39810 }, .{
39811 .required_features = .{ .@"64bit", null, null, null },
39812 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
39813 .dst_constraints = .{.{ .signed_int = .qword }},
39814 .patterns = &.{
39815 .{ .src = .{ .mem, .none, .none } },
39816 .{ .src = .{ .to_gpr, .none, .none } },
39817 },
39818 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
39819 .each = .{ .once = &.{
39820 .{ ._, ._d, .movsx, .dst0q, .src0d, ._, ._ },
39821 } },
39822 }, .{
39823 .required_features = .{ .@"64bit", null, null, null },
39824 .src_constraints = .{ .{ .int = .dword }, .any, .any },
39825 .dst_constraints = .{.{ .int = .qword }},
39826 .patterns = &.{
39827 .{ .src = .{ .mem, .none, .none } },
39828 .{ .src = .{ .to_gpr, .none, .none } },
39829 },
39830 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
39831 .each = .{ .once = &.{
39832 .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ },
39833 } },
39834 }, .{
39835 .required_features = .{ .@"64bit", null, null, null },
39836 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
39837 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }},
39838 .patterns = &.{
39839 .{ .src = .{ .mem, .none, .none } },
39840 .{ .src = .{ .to_gpr, .none, .none } },
39841 },
39842 .extra_temps = .{
39843 .{ .type = .i64, .kind = .{ .reg = .rax } },
39844 .{ .type = .usize, .kind = .{ .reg = .rdi } },
39845 .{ .type = .u32, .kind = .{ .reg = .ecx } },
39846 .unused,
39847 .unused,
39848 .unused,
39849 .unused,
39850 .unused,
39851 .unused,
39852 },
39853 .dst_temps = .{.mem},
39854 .clobbers = .{ .eflags = true },
39855 .each = .{ .once = &.{
39856 .{ ._, ._d, .movsx, .tmp0q, .src0d, ._, ._ },
39857 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
39858 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
39859 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
39860 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
39861 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
39862 } },
39863 }, .{
39864 .required_features = .{ .@"64bit", null, null, null },
39865 .src_constraints = .{ .{ .int = .dword }, .any, .any },
39866 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
39867 .patterns = &.{
39868 .{ .src = .{ .mem, .none, .none } },
39869 .{ .src = .{ .to_gpr, .none, .none } },
39870 },
39871 .extra_temps = .{
39872 .{ .type = .u64, .kind = .{ .reg = .rax } },
39873 .{ .type = .usize, .kind = .{ .reg = .rdi } },
39874 .{ .type = .u32, .kind = .{ .reg = .ecx } },
39875 .unused,
39876 .unused,
39877 .unused,
39878 .unused,
39879 .unused,
39880 .unused,
39881 },
39882 .dst_temps = .{.mem},
39883 .clobbers = .{ .eflags = true },
39884 .each = .{ .once = &.{
39885 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
39886 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
39887 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
39888 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
39889 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
39890 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
39891 } },
39892 }, .{
39893 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
39894 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }},
39895 .patterns = &.{
39896 .{ .src = .{ .mem, .none, .none } },
39897 .{ .src = .{ .to_gpr, .none, .none } },
39898 },
39899 .extra_temps = .{
39900 .{ .type = .i32, .kind = .{ .reg = .eax } },
39901 .{ .type = .usize, .kind = .{ .reg = .edi } },
39902 .{ .type = .u32, .kind = .{ .reg = .ecx } },
39903 .unused,
39904 .unused,
39905 .unused,
39906 .unused,
39907 .unused,
39908 .unused,
39909 },
39910 .dst_temps = .{.mem},
39911 .clobbers = .{ .eflags = true },
39912 .each = .{ .once = &.{
39913 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
39914 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
39915 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
39916 .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
39917 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
39918 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
39919 } },
39920 }, .{
39921 .src_constraints = .{ .{ .int = .dword }, .any, .any },
39922 .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},
39923 .patterns = &.{
39924 .{ .src = .{ .mem, .none, .none } },
39925 .{ .src = .{ .to_gpr, .none, .none } },
39926 },
39927 .extra_temps = .{
39928 .{ .type = .u32, .kind = .{ .reg = .eax } },
39929 .{ .type = .usize, .kind = .{ .reg = .edi } },
39930 .{ .type = .u32, .kind = .{ .reg = .ecx } },
39931 .unused,
39932 .unused,
39933 .unused,
39934 .unused,
39935 .unused,
39936 .unused,
39937 },
39938 .dst_temps = .{.mem},
39939 .clobbers = .{ .eflags = true },
39940 .each = .{ .once = &.{
39941 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
39942 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
39943 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
39944 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
39945 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
39946 .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },
39947 } },
39948 }, .{
39949 .required_features = .{ .@"64bit", null, null, null },
39950 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
39951 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }},
39952 .patterns = &.{
39953 .{ .src = .{ .mem, .none, .none } },
39954 .{ .src = .{ .to_gpr, .none, .none } },
39955 },
39956 .extra_temps = .{
39957 .{ .type = .i64, .kind = .{ .reg = .rax } },
39958 .{ .type = .usize, .kind = .{ .reg = .rdi } },
39959 .{ .type = .u32, .kind = .{ .reg = .ecx } },
39960 .unused,
39961 .unused,
39962 .unused,
39963 .unused,
39964 .unused,
39965 .unused,
39966 },
39967 .dst_temps = .{.mem},
39968 .clobbers = .{ .eflags = true },
39969 .each = .{ .once = &.{
39970 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
39971 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
39972 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
39973 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
39974 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
39975 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
39976 } },
39977 }, .{
39978 .required_features = .{ .@"64bit", null, null, null },
39979 .src_constraints = .{ .{ .int = .qword }, .any, .any },
39980 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
39981 .patterns = &.{
39982 .{ .src = .{ .mem, .none, .none } },
39983 .{ .src = .{ .to_gpr, .none, .none } },
39984 },
39985 .extra_temps = .{
39986 .{ .type = .u64, .kind = .{ .reg = .rax } },
39987 .{ .type = .usize, .kind = .{ .reg = .rdi } },
39988 .{ .type = .u32, .kind = .{ .reg = .ecx } },
39989 .unused,
39990 .unused,
39991 .unused,
39992 .unused,
39993 .unused,
39994 .unused,
39995 },
39996 .dst_temps = .{.mem},
39997 .clobbers = .{ .eflags = true },
39998 .each = .{ .once = &.{
39999 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
40000 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
40001 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
40002 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
40003 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
40004 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
40005 } },
40006 }, .{
40007 .required_features = .{ .@"64bit", null, null, null },
40008 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
40009 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }},
40010 .patterns = &.{
40011 .{ .src = .{ .to_mem, .none, .none } },
40012 },
40013 .extra_temps = .{
40014 .{ .type = .usize, .kind = .{ .reg = .rsi } },
40015 .{ .type = .usize, .kind = .{ .reg = .rdi } },
40016 .{ .type = .u32, .kind = .{ .reg = .ecx } },
40017 .{ .type = .i64, .kind = .{ .reg = .rax } },
40018 .unused,
40019 .unused,
40020 .unused,
40021 .unused,
40022 .unused,
40023 },
40024 .dst_temps = .{.mem},
40025 .clobbers = .{ .eflags = true },
40026 .each = .{ .once = &.{
40027 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
40028 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
40029 .{ ._, ._, .mov, .tmp2d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
40030 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
40031 .{ ._, ._sq, .lod, ._, ._, ._, ._ },
40032 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
40033 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
40034 .{ ._, ._, .mov, .tmp2d, .sa2(.dst0, .src0, .add_delta_size_div_8), ._, ._ },
40035 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
40036 } },
40037 }, .{
40038 .required_features = .{ .@"64bit", null, null, null },
40039 .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any, .any },
40040 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
40041 .patterns = &.{
40042 .{ .src = .{ .to_mem, .none, .none } },
40043 },
40044 .extra_temps = .{
40045 .{ .type = .usize, .kind = .{ .reg = .rsi } },
40046 .{ .type = .usize, .kind = .{ .reg = .rdi } },
40047 .{ .type = .u32, .kind = .{ .reg = .ecx } },
40048 .{ .type = .u64, .kind = .{ .reg = .rax } },
40049 .unused,
40050 .unused,
40051 .unused,
40052 .unused,
40053 .unused,
40054 },
40055 .dst_temps = .{.mem},
40056 .clobbers = .{ .eflags = true },
40057 .each = .{ .once = &.{
40058 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
40059 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
40060 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
40061 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
40062 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
40063 .{ ._, ._, .mov, .tmp2d, .sa2(.dst0, .src0, .add_delta_size_div_8), ._, ._ },
40064 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
40065 } },
40066 }, .{
40067 .required_features = .{ .avx, null, null, null },
40068 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
40069 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
40070 .patterns = &.{
40071 .{ .src = .{ .mem, .none, .none } },
40072 .{ .src = .{ .to_sse, .none, .none } },
40073 },
40074 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
40075 .each = .{ .once = &.{
40076 .{ ._, .vp_w, .movsxb, .dst0x, .src0q, ._, ._ },
40077 } },
40078 }, .{
40079 .required_features = .{ .avx, null, null, null },
40080 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any },
40081 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
40082 .patterns = &.{
40083 .{ .src = .{ .mem, .none, .none } },
40084 .{ .src = .{ .to_sse, .none, .none } },
40085 },
40086 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
40087 .each = .{ .once = &.{
40088 .{ ._, .vp_w, .movzxb, .dst0x, .src0q, ._, ._ },
40089 } },
40090 }, .{
40091 .required_features = .{ .sse4_1, null, null, null },
40092 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
40093 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
40094 .patterns = &.{
40095 .{ .src = .{ .mem, .none, .none } },
40096 .{ .src = .{ .to_sse, .none, .none } },
40097 },
40098 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
40099 .each = .{ .once = &.{
40100 .{ ._, .p_w, .movsxb, .dst0x, .src0q, ._, ._ },
40101 } },
40102 }, .{
40103 .required_features = .{ .sse4_1, null, null, null },
40104 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any },
40105 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
40106 .patterns = &.{
40107 .{ .src = .{ .mem, .none, .none } },
40108 .{ .src = .{ .to_sse, .none, .none } },
40109 },
40110 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
40111 .each = .{ .once = &.{
40112 .{ ._, .p_w, .movzxb, .dst0x, .src0q, ._, ._ },
40113 } },
40114 }, .{
40115 .required_features = .{ .sse2, null, null, null },
40116 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
40117 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
40118 .patterns = &.{
40119 .{ .src = .{ .to_mut_sse, .none, .none } },
40120 },
40121 .extra_temps = .{
40122 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
40123 .unused,
40124 .unused,
40125 .unused,
40126 .unused,
40127 .unused,
40128 .unused,
40129 .unused,
40130 .unused,
40131 },
40132 .dst_temps = .{.{ .ref = .src0 }},
40133 .each = .{ .once = &.{
40134 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
40135 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },
40136 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
40137 } },
40138 }, .{
40139 .required_features = .{ .sse2, null, null, null },
40140 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any },
40141 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
40142 .patterns = &.{
40143 .{ .src = .{ .to_mut_sse, .none, .none } },
40144 },
40145 .extra_temps = .{
40146 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
40147 .unused,
40148 .unused,
40149 .unused,
40150 .unused,
40151 .unused,
40152 .unused,
40153 .unused,
40154 .unused,
40155 },
40156 .dst_temps = .{.{ .ref = .src0 }},
40157 .each = .{ .once = &.{
40158 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
40159 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
40160 } },
40161 }, .{
40162 .required_features = .{ .avx2, null, null, null },
40163 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
40164 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .word } }},
40165 .patterns = &.{
40166 .{ .src = .{ .mem, .none, .none } },
40167 .{ .src = .{ .to_sse, .none, .none } },
40168 },
40169 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
40170 .each = .{ .once = &.{
40171 .{ ._, .vp_w, .movsxb, .dst0y, .src0x, ._, ._ },
40172 } },
40173 }, .{
40174 .required_features = .{ .avx2, null, null, null },
40175 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any },
40176 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .word } }},
40177 .patterns = &.{
40178 .{ .src = .{ .mem, .none, .none } },
40179 .{ .src = .{ .to_sse, .none, .none } },
40180 },
40181 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
40182 .each = .{ .once = &.{
40183 .{ ._, .vp_w, .movzxb, .dst0y, .src0x, ._, ._ },
40184 } },
40185 }, .{
40186 .required_features = .{ .avx2, null, null, null },
40187 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
40188 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }},
40189 .patterns = &.{
40190 .{ .src = .{ .to_mem, .none, .none } },
40191 },
40192 .extra_temps = .{
40193 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40194 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
40195 .unused,
40196 .unused,
40197 .unused,
40198 .unused,
40199 .unused,
40200 .unused,
40201 .unused,
40202 },
40203 .dst_temps = .{.mem},
40204 .clobbers = .{ .eflags = true },
40205 .each = .{ .once = &.{
40206 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
40207 .{ .@"0:", .vp_w, .movsxb, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
40208 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
40209 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
40210 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40211 } },
40212 }, .{
40213 .required_features = .{ .avx2, null, null, null },
40214 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any },
40215 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .word } }},
40216 .patterns = &.{
40217 .{ .src = .{ .to_mem, .none, .none } },
40218 },
40219 .extra_temps = .{
40220 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40221 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
40222 .unused,
40223 .unused,
40224 .unused,
40225 .unused,
40226 .unused,
40227 .unused,
40228 .unused,
40229 },
40230 .dst_temps = .{.mem},
40231 .clobbers = .{ .eflags = true },
40232 .each = .{ .once = &.{
40233 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
40234 .{ .@"0:", .vp_w, .movzxb, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
40235 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
40236 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
40237 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40238 } },
40239 }, .{
40240 .required_features = .{ .avx, null, null, null },
40241 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
40242 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},
40243 .patterns = &.{
40244 .{ .src = .{ .to_mem, .none, .none } },
40245 },
40246 .extra_temps = .{
40247 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40248 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
40249 .unused,
40250 .unused,
40251 .unused,
40252 .unused,
40253 .unused,
40254 .unused,
40255 .unused,
40256 },
40257 .dst_temps = .{.mem},
40258 .clobbers = .{ .eflags = true },
40259 .each = .{ .once = &.{
40260 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
40261 .{ .@"0:", .vp_w, .movsxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
40262 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
40263 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
40264 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40265 } },
40266 }, .{
40267 .required_features = .{ .avx, null, null, null },
40268 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any },
40269 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }},
40270 .patterns = &.{
40271 .{ .src = .{ .to_mem, .none, .none } },
40272 },
40273 .extra_temps = .{
40274 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40275 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
40276 .unused,
40277 .unused,
40278 .unused,
40279 .unused,
40280 .unused,
40281 .unused,
40282 .unused,
40283 },
40284 .dst_temps = .{.mem},
40285 .clobbers = .{ .eflags = true },
40286 .each = .{ .once = &.{
40287 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
40288 .{ .@"0:", .vp_w, .movzxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
40289 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
40290 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
40291 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40292 } },
40293 }, .{
40294 .required_features = .{ .sse4_1, null, null, null },
40295 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
40296 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},
40297 .patterns = &.{
40298 .{ .src = .{ .to_mem, .none, .none } },
40299 },
40300 .extra_temps = .{
40301 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40302 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
40303 .unused,
40304 .unused,
40305 .unused,
40306 .unused,
40307 .unused,
40308 .unused,
40309 .unused,
40310 },
40311 .dst_temps = .{.mem},
40312 .clobbers = .{ .eflags = true },
40313 .each = .{ .once = &.{
40314 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
40315 .{ .@"0:", .p_w, .movsxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
40316 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
40317 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
40318 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40319 } },
40320 }, .{
40321 .required_features = .{ .sse4_1, null, null, null },
40322 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any },
40323 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }},
40324 .patterns = &.{
40325 .{ .src = .{ .to_mem, .none, .none } },
40326 },
40327 .extra_temps = .{
40328 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40329 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
40330 .unused,
40331 .unused,
40332 .unused,
40333 .unused,
40334 .unused,
40335 .unused,
40336 .unused,
40337 },
40338 .dst_temps = .{.mem},
40339 .clobbers = .{ .eflags = true },
40340 .each = .{ .once = &.{
40341 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
40342 .{ .@"0:", .p_w, .movzxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
40343 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
40344 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
40345 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40346 } },
40347 }, .{
40348 .required_features = .{ .slow_incdec, null, null, null },
40349 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
40350 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
40351 .patterns = &.{
40352 .{ .src = .{ .to_mem, .none, .none } },
40353 },
40354 .extra_temps = .{
40355 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40356 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
40357 .unused,
40358 .unused,
40359 .unused,
40360 .unused,
40361 .unused,
40362 .unused,
40363 .unused,
40364 },
40365 .dst_temps = .{.mem},
40366 .clobbers = .{ .eflags = true },
40367 .each = .{ .once = &.{
40368 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
40369 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
40370 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
40371 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
40372 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40373 } },
40374 }, .{
40375 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
40376 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
40377 .patterns = &.{
40378 .{ .src = .{ .to_mem, .none, .none } },
40379 },
40380 .extra_temps = .{
40381 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40382 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
40383 .unused,
40384 .unused,
40385 .unused,
40386 .unused,
40387 .unused,
40388 .unused,
40389 .unused,
40390 },
40391 .dst_temps = .{.mem},
40392 .clobbers = .{ .eflags = true },
40393 .each = .{ .once = &.{
40394 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
40395 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
40396 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
40397 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
40398 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
40399 } },
40400 }, .{
40401 .required_features = .{ .slow_incdec, null, null, null },
40402 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
40403 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
40404 .patterns = &.{
40405 .{ .src = .{ .to_mem, .none, .none } },
40406 },
40407 .extra_temps = .{
40408 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40409 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
40410 .unused,
40411 .unused,
40412 .unused,
40413 .unused,
40414 .unused,
40415 .unused,
40416 .unused,
40417 },
40418 .dst_temps = .{.mem},
40419 .clobbers = .{ .eflags = true },
40420 .each = .{ .once = &.{
40421 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
40422 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
40423 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
40424 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
40425 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40426 } },
40427 }, .{
40428 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
40429 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
40430 .patterns = &.{
40431 .{ .src = .{ .to_mem, .none, .none } },
40432 },
40433 .extra_temps = .{
40434 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40435 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
40436 .unused,
40437 .unused,
40438 .unused,
40439 .unused,
40440 .unused,
40441 .unused,
40442 .unused,
40443 },
40444 .dst_temps = .{.mem},
40445 .clobbers = .{ .eflags = true },
40446 .each = .{ .once = &.{
40447 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
40448 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
40449 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
40450 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
40451 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
40452 } },
40453 }, .{
40454 .required_features = .{ .avx, null, null, null },
40455 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
40456 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
40457 .patterns = &.{
40458 .{ .src = .{ .mem, .none, .none } },
40459 .{ .src = .{ .to_sse, .none, .none } },
40460 },
40461 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
40462 .each = .{ .once = &.{
40463 .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ },
40464 } },
40465 }, .{
40466 .required_features = .{ .avx, null, null, null },
40467 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
40468 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
40469 .patterns = &.{
40470 .{ .src = .{ .mem, .none, .none } },
40471 .{ .src = .{ .to_sse, .none, .none } },
40472 },
40473 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
40474 .each = .{ .once = &.{
40475 .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ },
40476 } },
40477 }, .{
40478 .required_features = .{ .sse4_1, null, null, null },
40479 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
40480 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
40481 .patterns = &.{
40482 .{ .src = .{ .mem, .none, .none } },
40483 .{ .src = .{ .to_sse, .none, .none } },
40484 },
40485 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
40486 .each = .{ .once = &.{
40487 .{ ._, .p_d, .movsxb, .dst0x, .src0d, ._, ._ },
40488 } },
40489 }, .{
40490 .required_features = .{ .sse4_1, null, null, null },
40491 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
40492 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
40493 .patterns = &.{
40494 .{ .src = .{ .mem, .none, .none } },
40495 .{ .src = .{ .to_sse, .none, .none } },
40496 },
40497 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
40498 .each = .{ .once = &.{
40499 .{ ._, .p_d, .movzxb, .dst0x, .src0d, ._, ._ },
40500 } },
40501 }, .{
40502 .required_features = .{ .sse2, null, null, null },
40503 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
40504 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
40505 .patterns = &.{
40506 .{ .src = .{ .to_mut_sse, .none, .none } },
40507 },
40508 .extra_temps = .{
40509 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
40510 .unused,
40511 .unused,
40512 .unused,
40513 .unused,
40514 .unused,
40515 .unused,
40516 .unused,
40517 .unused,
40518 },
40519 .dst_temps = .{.{ .ref = .src0 }},
40520 .each = .{ .once = &.{
40521 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
40522 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },
40523 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
40524 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
40525 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
40526 } },
40527 }, .{
40528 .required_features = .{ .sse2, null, null, null },
40529 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
40530 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
40531 .patterns = &.{
40532 .{ .src = .{ .to_mut_sse, .none, .none } },
40533 },
40534 .extra_temps = .{
40535 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
40536 .unused,
40537 .unused,
40538 .unused,
40539 .unused,
40540 .unused,
40541 .unused,
40542 .unused,
40543 .unused,
40544 },
40545 .dst_temps = .{.{ .ref = .src0 }},
40546 .each = .{ .once = &.{
40547 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
40548 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
40549 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
40550 } },
40551 }, .{
40552 .required_features = .{ .avx2, null, null, null },
40553 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
40554 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }},
40555 .patterns = &.{
40556 .{ .src = .{ .mem, .none, .none } },
40557 .{ .src = .{ .to_sse, .none, .none } },
40558 },
40559 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
40560 .each = .{ .once = &.{
40561 .{ ._, .vp_d, .movsxb, .dst0y, .src0q, ._, ._ },
40562 } },
40563 }, .{
40564 .required_features = .{ .avx2, null, null, null },
40565 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any },
40566 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }},
40567 .patterns = &.{
40568 .{ .src = .{ .mem, .none, .none } },
40569 .{ .src = .{ .to_sse, .none, .none } },
40570 },
40571 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
40572 .each = .{ .once = &.{
40573 .{ ._, .vp_d, .movzxb, .dst0y, .src0q, ._, ._ },
40574 } },
40575 }, .{
40576 .required_features = .{ .avx2, null, null, null },
40577 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
40578 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }},
40579 .patterns = &.{
40580 .{ .src = .{ .to_mem, .none, .none } },
40581 },
40582 .extra_temps = .{
40583 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40584 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
40585 .unused,
40586 .unused,
40587 .unused,
40588 .unused,
40589 .unused,
40590 .unused,
40591 .unused,
40592 },
40593 .dst_temps = .{.mem},
40594 .clobbers = .{ .eflags = true },
40595 .each = .{ .once = &.{
40596 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
40597 .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
40598 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
40599 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
40600 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40601 } },
40602 }, .{
40603 .required_features = .{ .avx2, null, null, null },
40604 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any },
40605 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }},
40606 .patterns = &.{
40607 .{ .src = .{ .to_mem, .none, .none } },
40608 },
40609 .extra_temps = .{
40610 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40611 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
40612 .unused,
40613 .unused,
40614 .unused,
40615 .unused,
40616 .unused,
40617 .unused,
40618 .unused,
40619 },
40620 .dst_temps = .{.mem},
40621 .clobbers = .{ .eflags = true },
40622 .each = .{ .once = &.{
40623 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
40624 .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
40625 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
40626 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
40627 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40628 } },
40629 }, .{
40630 .required_features = .{ .avx, null, null, null },
40631 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
40632 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
40633 .patterns = &.{
40634 .{ .src = .{ .to_mem, .none, .none } },
40635 },
40636 .extra_temps = .{
40637 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40638 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
40639 .unused,
40640 .unused,
40641 .unused,
40642 .unused,
40643 .unused,
40644 .unused,
40645 .unused,
40646 },
40647 .dst_temps = .{.mem},
40648 .clobbers = .{ .eflags = true },
40649 .each = .{ .once = &.{
40650 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
40651 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
40652 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
40653 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
40654 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40655 } },
40656 }, .{
40657 .required_features = .{ .avx, null, null, null },
40658 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
40659 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},
40660 .patterns = &.{
40661 .{ .src = .{ .to_mem, .none, .none } },
40662 },
40663 .extra_temps = .{
40664 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40665 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
40666 .unused,
40667 .unused,
40668 .unused,
40669 .unused,
40670 .unused,
40671 .unused,
40672 .unused,
40673 },
40674 .dst_temps = .{.mem},
40675 .clobbers = .{ .eflags = true },
40676 .each = .{ .once = &.{
40677 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
40678 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
40679 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
40680 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
40681 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40682 } },
40683 }, .{
40684 .required_features = .{ .sse4_1, null, null, null },
40685 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
40686 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
40687 .patterns = &.{
40688 .{ .src = .{ .to_mem, .none, .none } },
40689 },
40690 .extra_temps = .{
40691 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40692 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
40693 .unused,
40694 .unused,
40695 .unused,
40696 .unused,
40697 .unused,
40698 .unused,
40699 .unused,
40700 },
40701 .dst_temps = .{.mem},
40702 .clobbers = .{ .eflags = true },
40703 .each = .{ .once = &.{
40704 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
40705 .{ .@"0:", .p_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
40706 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
40707 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
40708 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40709 } },
40710 }, .{
40711 .required_features = .{ .sse4_1, null, null, null },
40712 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
40713 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},
40714 .patterns = &.{
40715 .{ .src = .{ .to_mem, .none, .none } },
40716 },
40717 .extra_temps = .{
40718 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40719 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
40720 .unused,
40721 .unused,
40722 .unused,
40723 .unused,
40724 .unused,
40725 .unused,
40726 .unused,
40727 },
40728 .dst_temps = .{.mem},
40729 .clobbers = .{ .eflags = true },
40730 .each = .{ .once = &.{
40731 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
40732 .{ .@"0:", .p_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
40733 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
40734 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
40735 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40736 } },
40737 }, .{
40738 .required_features = .{ .slow_incdec, null, null, null },
40739 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
40740 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
40741 .patterns = &.{
40742 .{ .src = .{ .to_mem, .none, .none } },
40743 },
40744 .extra_temps = .{
40745 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40746 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
40747 .unused,
40748 .unused,
40749 .unused,
40750 .unused,
40751 .unused,
40752 .unused,
40753 .unused,
40754 },
40755 .dst_temps = .{.mem},
40756 .clobbers = .{ .eflags = true },
40757 .each = .{ .once = &.{
40758 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
40759 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
40760 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
40761 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
40762 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40763 } },
40764 }, .{
40765 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
40766 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
40767 .patterns = &.{
40768 .{ .src = .{ .to_mem, .none, .none } },
40769 },
40770 .extra_temps = .{
40771 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40772 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
40773 .unused,
40774 .unused,
40775 .unused,
40776 .unused,
40777 .unused,
40778 .unused,
40779 .unused,
40780 },
40781 .dst_temps = .{.mem},
40782 .clobbers = .{ .eflags = true },
40783 .each = .{ .once = &.{
40784 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
40785 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
40786 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
40787 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
40788 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
40789 } },
40790 }, .{
40791 .required_features = .{ .slow_incdec, null, null, null },
40792 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
40793 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
40794 .patterns = &.{
40795 .{ .src = .{ .to_mem, .none, .none } },
40796 },
40797 .extra_temps = .{
40798 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40799 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
40800 .unused,
40801 .unused,
40802 .unused,
40803 .unused,
40804 .unused,
40805 .unused,
40806 .unused,
40807 },
40808 .dst_temps = .{.mem},
40809 .clobbers = .{ .eflags = true },
40810 .each = .{ .once = &.{
40811 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
40812 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
40813 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
40814 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
40815 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40816 } },
40817 }, .{
40818 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
40819 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
40820 .patterns = &.{
40821 .{ .src = .{ .to_mem, .none, .none } },
40822 },
40823 .extra_temps = .{
40824 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40825 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
40826 .unused,
40827 .unused,
40828 .unused,
40829 .unused,
40830 .unused,
40831 .unused,
40832 .unused,
40833 },
40834 .dst_temps = .{.mem},
40835 .clobbers = .{ .eflags = true },
40836 .each = .{ .once = &.{
40837 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
40838 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
40839 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
40840 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
40841 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
40842 } },
40843 }, .{
40844 .required_features = .{ .avx, null, null, null },
40845 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
40846 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
40847 .patterns = &.{
40848 .{ .src = .{ .mem, .none, .none } },
40849 .{ .src = .{ .to_sse, .none, .none } },
40850 },
40851 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
40852 .each = .{ .once = &.{
40853 .{ ._, .vp_q, .movsxb, .dst0x, .src0w, ._, ._ },
40854 } },
40855 }, .{
40856 .required_features = .{ .avx, null, null, null },
40857 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
40858 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
40859 .patterns = &.{
40860 .{ .src = .{ .mem, .none, .none } },
40861 .{ .src = .{ .to_sse, .none, .none } },
40862 },
40863 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
40864 .each = .{ .once = &.{
40865 .{ ._, .vp_q, .movzxb, .dst0x, .src0w, ._, ._ },
40866 } },
40867 }, .{
40868 .required_features = .{ .sse4_1, null, null, null },
40869 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
40870 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
40871 .patterns = &.{
40872 .{ .src = .{ .mem, .none, .none } },
40873 .{ .src = .{ .to_sse, .none, .none } },
40874 },
40875 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
40876 .each = .{ .once = &.{
40877 .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ },
40878 } },
40879 }, .{
40880 .required_features = .{ .sse4_1, null, null, null },
40881 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
40882 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
40883 .patterns = &.{
40884 .{ .src = .{ .mem, .none, .none } },
40885 .{ .src = .{ .to_sse, .none, .none } },
40886 },
40887 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
40888 .each = .{ .once = &.{
40889 .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ },
40890 } },
40891 }, .{
40892 .required_features = .{ .sse2, null, null, null },
40893 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
40894 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
40895 .patterns = &.{
40896 .{ .src = .{ .to_mut_sse, .none, .none } },
40897 },
40898 .extra_temps = .{
40899 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
40900 .unused,
40901 .unused,
40902 .unused,
40903 .unused,
40904 .unused,
40905 .unused,
40906 .unused,
40907 .unused,
40908 },
40909 .dst_temps = .{.{ .ref = .src0 }},
40910 .each = .{ .once = &.{
40911 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
40912 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },
40913 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
40914 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
40915 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
40916 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
40917 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
40918 } },
40919 }, .{
40920 .required_features = .{ .sse2, null, null, null },
40921 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
40922 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
40923 .patterns = &.{
40924 .{ .src = .{ .to_mut_sse, .none, .none } },
40925 },
40926 .extra_temps = .{
40927 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
40928 .unused,
40929 .unused,
40930 .unused,
40931 .unused,
40932 .unused,
40933 .unused,
40934 .unused,
40935 .unused,
40936 },
40937 .dst_temps = .{.{ .ref = .src0 }},
40938 .each = .{ .once = &.{
40939 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
40940 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
40941 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
40942 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
40943 } },
40944 }, .{
40945 .required_features = .{ .avx2, null, null, null },
40946 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
40947 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},
40948 .patterns = &.{
40949 .{ .src = .{ .mem, .none, .none } },
40950 .{ .src = .{ .to_sse, .none, .none } },
40951 },
40952 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
40953 .each = .{ .once = &.{
40954 .{ ._, .vp_q, .movsxb, .dst0y, .src0d, ._, ._ },
40955 } },
40956 }, .{
40957 .required_features = .{ .avx2, null, null, null },
40958 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
40959 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
40960 .patterns = &.{
40961 .{ .src = .{ .mem, .none, .none } },
40962 .{ .src = .{ .to_sse, .none, .none } },
40963 },
40964 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
40965 .each = .{ .once = &.{
40966 .{ ._, .vp_q, .movzxb, .dst0y, .src0d, ._, ._ },
40967 } },
40968 }, .{
40969 .required_features = .{ .avx2, null, null, null },
40970 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
40971 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},
40972 .patterns = &.{
40973 .{ .src = .{ .to_mem, .none, .none } },
40974 },
40975 .extra_temps = .{
40976 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40977 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
40978 .unused,
40979 .unused,
40980 .unused,
40981 .unused,
40982 .unused,
40983 .unused,
40984 .unused,
40985 },
40986 .dst_temps = .{.mem},
40987 .clobbers = .{ .eflags = true },
40988 .each = .{ .once = &.{
40989 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
40990 .{ .@"0:", .vp_q, .movsxb, .tmp1y, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
40991 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
40992 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
40993 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40994 } },
40995 }, .{
40996 .required_features = .{ .avx2, null, null, null },
40997 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
40998 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }},
40999 .patterns = &.{
41000 .{ .src = .{ .to_mem, .none, .none } },
41001 },
41002 .extra_temps = .{
41003 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41004 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
41005 .unused,
41006 .unused,
41007 .unused,
41008 .unused,
41009 .unused,
41010 .unused,
41011 .unused,
41012 },
41013 .dst_temps = .{.mem},
41014 .clobbers = .{ .eflags = true },
41015 .each = .{ .once = &.{
41016 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
41017 .{ .@"0:", .vp_q, .movzxb, .tmp1y, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
41018 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
41019 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
41020 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41021 } },
41022 }, .{
41023 .required_features = .{ .avx, null, null, null },
41024 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
41025 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
41026 .patterns = &.{
41027 .{ .src = .{ .to_mem, .none, .none } },
41028 },
41029 .extra_temps = .{
41030 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41031 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
41032 .unused,
41033 .unused,
41034 .unused,
41035 .unused,
41036 .unused,
41037 .unused,
41038 .unused,
41039 },
41040 .dst_temps = .{.mem},
41041 .clobbers = .{ .eflags = true },
41042 .each = .{ .once = &.{
41043 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
41044 .{ .@"0:", .vp_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
41045 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
41046 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
41047 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41048 } },
41049 }, .{
41050 .required_features = .{ .avx, null, null, null },
41051 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
41052 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
41053 .patterns = &.{
41054 .{ .src = .{ .to_mem, .none, .none } },
41055 },
41056 .extra_temps = .{
41057 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41058 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
41059 .unused,
41060 .unused,
41061 .unused,
41062 .unused,
41063 .unused,
41064 .unused,
41065 .unused,
41066 },
41067 .dst_temps = .{.mem},
41068 .clobbers = .{ .eflags = true },
41069 .each = .{ .once = &.{
41070 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
41071 .{ .@"0:", .vp_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
41072 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
41073 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
41074 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41075 } },
41076 }, .{
41077 .required_features = .{ .sse4_1, null, null, null },
41078 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
41079 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
41080 .patterns = &.{
41081 .{ .src = .{ .to_mem, .none, .none } },
41082 },
41083 .extra_temps = .{
41084 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41085 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
41086 .unused,
41087 .unused,
41088 .unused,
41089 .unused,
41090 .unused,
41091 .unused,
41092 .unused,
41093 },
41094 .dst_temps = .{.mem},
41095 .clobbers = .{ .eflags = true },
41096 .each = .{ .once = &.{
41097 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
41098 .{ .@"0:", .p_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
41099 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
41100 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
41101 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41102 } },
41103 }, .{
41104 .required_features = .{ .sse4_1, null, null, null },
41105 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
41106 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
41107 .patterns = &.{
41108 .{ .src = .{ .to_mem, .none, .none } },
41109 },
41110 .extra_temps = .{
41111 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41112 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
41113 .unused,
41114 .unused,
41115 .unused,
41116 .unused,
41117 .unused,
41118 .unused,
41119 .unused,
41120 },
41121 .dst_temps = .{.mem},
41122 .clobbers = .{ .eflags = true },
41123 .each = .{ .once = &.{
41124 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
41125 .{ .@"0:", .p_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
41126 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
41127 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
41128 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41129 } },
41130 }, .{
41131 .required_features = .{ .@"64bit", .slow_incdec, null, null },
41132 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
41133 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
41134 .patterns = &.{
41135 .{ .src = .{ .to_mem, .none, .none } },
41136 },
41137 .extra_temps = .{
41138 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41139 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
41140 .unused,
41141 .unused,
41142 .unused,
41143 .unused,
41144 .unused,
41145 .unused,
41146 .unused,
41147 },
41148 .dst_temps = .{.mem},
41149 .clobbers = .{ .eflags = true },
41150 .each = .{ .once = &.{
41151 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
41152 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
41153 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
41154 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
41155 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41156 } },
41157 }, .{
41158 .required_features = .{ .@"64bit", null, null, null },
41159 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
41160 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
41161 .patterns = &.{
41162 .{ .src = .{ .to_mem, .none, .none } },
41163 },
41164 .extra_temps = .{
41165 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41166 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
41167 .unused,
41168 .unused,
41169 .unused,
41170 .unused,
41171 .unused,
41172 .unused,
41173 .unused,
41174 },
41175 .dst_temps = .{.mem},
41176 .clobbers = .{ .eflags = true },
41177 .each = .{ .once = &.{
41178 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
41179 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
41180 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
41181 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
41182 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
41183 } },
41184 }, .{
41185 .required_features = .{ .slow_incdec, null, null, null },
41186 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
41187 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
41188 .patterns = &.{
41189 .{ .src = .{ .to_mem, .none, .none } },
41190 },
41191 .extra_temps = .{
41192 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41193 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
41194 .unused,
41195 .unused,
41196 .unused,
41197 .unused,
41198 .unused,
41199 .unused,
41200 .unused,
41201 },
41202 .dst_temps = .{.mem},
41203 .clobbers = .{ .eflags = true },
41204 .each = .{ .once = &.{
41205 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
41206 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
41207 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
41208 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
41209 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41210 } },
41211 }, .{
41212 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
41213 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
41214 .patterns = &.{
41215 .{ .src = .{ .to_mem, .none, .none } },
41216 },
41217 .extra_temps = .{
41218 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41219 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
41220 .unused,
41221 .unused,
41222 .unused,
41223 .unused,
41224 .unused,
41225 .unused,
41226 .unused,
41227 },
41228 .dst_temps = .{.mem},
41229 .clobbers = .{ .eflags = true },
41230 .each = .{ .once = &.{
41231 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
41232 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
41233 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
41234 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
41235 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
41236 } },
41237 }, .{
41238 .required_features = .{ .avx, null, null, null },
41239 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
41240 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
41241 .patterns = &.{
41242 .{ .src = .{ .mem, .none, .none } },
41243 .{ .src = .{ .to_sse, .none, .none } },
41244 },
41245 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41246 .each = .{ .once = &.{
41247 .{ ._, .vp_q, .movsxb, .dst0x, .src0w, ._, ._ },
41248 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
41249 } },
41250 }, .{
41251 .required_features = .{ .avx, null, null, null },
41252 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
41253 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
41254 .patterns = &.{
41255 .{ .src = .{ .mem, .none, .none } },
41256 .{ .src = .{ .to_sse, .none, .none } },
41257 },
41258 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41259 .each = .{ .once = &.{
41260 .{ ._, .vp_q, .movzxb, .dst0x, .src0w, ._, ._ },
41261 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
41262 } },
41263 }, .{
41264 .required_features = .{ .sse4_1, null, null, null },
41265 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
41266 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
41267 .patterns = &.{
41268 .{ .src = .{ .mem, .none, .none } },
41269 .{ .src = .{ .to_sse, .none, .none } },
41270 },
41271 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41272 .each = .{ .once = &.{
41273 .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ },
41274 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
41275 } },
41276 }, .{
41277 .required_features = .{ .sse4_1, null, null, null },
41278 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
41279 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
41280 .patterns = &.{
41281 .{ .src = .{ .mem, .none, .none } },
41282 .{ .src = .{ .to_sse, .none, .none } },
41283 },
41284 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41285 .each = .{ .once = &.{
41286 .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ },
41287 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
41288 } },
41289 }, .{
41290 .required_features = .{ .sse2, null, null, null },
41291 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
41292 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
41293 .patterns = &.{
41294 .{ .src = .{ .to_mut_sse, .none, .none } },
41295 },
41296 .extra_temps = .{
41297 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
41298 .unused,
41299 .unused,
41300 .unused,
41301 .unused,
41302 .unused,
41303 .unused,
41304 .unused,
41305 .unused,
41306 },
41307 .dst_temps = .{.{ .ref = .src0 }},
41308 .each = .{ .once = &.{
41309 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
41310 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },
41311 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
41312 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
41313 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
41314 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
41315 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
41316 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },
41317 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
41318 } },
41319 }, .{
41320 .required_features = .{ .sse2, null, null, null },
41321 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
41322 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
41323 .patterns = &.{
41324 .{ .src = .{ .to_mut_sse, .none, .none } },
41325 },
41326 .extra_temps = .{
41327 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
41328 .unused,
41329 .unused,
41330 .unused,
41331 .unused,
41332 .unused,
41333 .unused,
41334 .unused,
41335 .unused,
41336 },
41337 .dst_temps = .{.{ .ref = .src0 }},
41338 .each = .{ .once = &.{
41339 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
41340 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
41341 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
41342 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
41343 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
41344 } },
41345 }, .{
41346 .required_features = .{ .@"64bit", .slow_incdec, null, null },
41347 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
41348 .dst_constraints = .{.any_scalar_signed_int},
41349 .patterns = &.{
41350 .{ .src = .{ .to_mem, .none, .none } },
41351 },
41352 .extra_temps = .{
41353 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41354 .{ .type = .usize, .kind = .{ .reg = .rdi } },
41355 .{ .type = .i64, .kind = .{ .reg = .rax } },
41356 .{ .type = .u32, .kind = .{ .reg = .ecx } },
41357 .unused,
41358 .unused,
41359 .unused,
41360 .unused,
41361 .unused,
41362 },
41363 .dst_temps = .{.mem},
41364 .clobbers = .{ .eflags = true },
41365 .each = .{ .once = &.{
41366 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
41367 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
41368 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
41369 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
41370 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
41371 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
41372 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
41373 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
41374 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41375 } },
41376 }, .{
41377 .required_features = .{ .@"64bit", null, null, null },
41378 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
41379 .dst_constraints = .{.any_scalar_signed_int},
41380 .patterns = &.{
41381 .{ .src = .{ .to_mem, .none, .none } },
41382 },
41383 .extra_temps = .{
41384 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41385 .{ .type = .usize, .kind = .{ .reg = .rdi } },
41386 .{ .type = .i64, .kind = .{ .reg = .rax } },
41387 .{ .type = .u32, .kind = .{ .reg = .ecx } },
41388 .unused,
41389 .unused,
41390 .unused,
41391 .unused,
41392 .unused,
41393 },
41394 .dst_temps = .{.mem},
41395 .clobbers = .{ .eflags = true },
41396 .each = .{ .once = &.{
41397 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
41398 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
41399 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
41400 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
41401 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
41402 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
41403 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
41404 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
41405 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
41406 } },
41407 }, .{
41408 .required_features = .{ .@"64bit", .slow_incdec, null, null },
41409 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
41410 .dst_constraints = .{.any_scalar_int},
41411 .patterns = &.{
41412 .{ .src = .{ .to_mem, .none, .none } },
41413 },
41414 .extra_temps = .{
41415 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41416 .{ .type = .usize, .kind = .{ .reg = .rdi } },
41417 .{ .type = .u64, .kind = .{ .reg = .rax } },
41418 .{ .type = .u32, .kind = .{ .reg = .ecx } },
41419 .unused,
41420 .unused,
41421 .unused,
41422 .unused,
41423 .unused,
41424 },
41425 .dst_temps = .{.mem},
41426 .clobbers = .{ .eflags = true },
41427 .each = .{ .once = &.{
41428 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
41429 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
41430 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
41431 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
41432 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
41433 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
41434 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
41435 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
41436 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41437 } },
41438 }, .{
41439 .required_features = .{ .@"64bit", null, null, null },
41440 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
41441 .dst_constraints = .{.any_scalar_int},
41442 .patterns = &.{
41443 .{ .src = .{ .to_mem, .none, .none } },
41444 },
41445 .extra_temps = .{
41446 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41447 .{ .type = .usize, .kind = .{ .reg = .rdi } },
41448 .{ .type = .u64, .kind = .{ .reg = .rax } },
41449 .{ .type = .u32, .kind = .{ .reg = .ecx } },
41450 .unused,
41451 .unused,
41452 .unused,
41453 .unused,
41454 .unused,
41455 },
41456 .dst_temps = .{.mem},
41457 .clobbers = .{ .eflags = true },
41458 .each = .{ .once = &.{
41459 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
41460 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
41461 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
41462 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
41463 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
41464 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
41465 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
41466 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
41467 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
41468 } },
41469 }, .{
41470 .required_features = .{ .avx, null, null, null },
41471 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
41472 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
41473 .patterns = &.{
41474 .{ .src = .{ .mem, .none, .none } },
41475 .{ .src = .{ .to_sse, .none, .none } },
41476 },
41477 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41478 .each = .{ .once = &.{
41479 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },
41480 } },
41481 }, .{
41482 .required_features = .{ .avx, null, null, null },
41483 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
41484 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
41485 .patterns = &.{
41486 .{ .src = .{ .mem, .none, .none } },
41487 .{ .src = .{ .to_sse, .none, .none } },
41488 },
41489 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41490 .each = .{ .once = &.{
41491 .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ },
41492 } },
41493 }, .{
41494 .required_features = .{ .sse4_1, null, null, null },
41495 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
41496 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
41497 .patterns = &.{
41498 .{ .src = .{ .mem, .none, .none } },
41499 .{ .src = .{ .to_sse, .none, .none } },
41500 },
41501 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41502 .each = .{ .once = &.{
41503 .{ ._, .p_d, .movsxw, .dst0x, .src0q, ._, ._ },
41504 } },
41505 }, .{
41506 .required_features = .{ .sse4_1, null, null, null },
41507 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
41508 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
41509 .patterns = &.{
41510 .{ .src = .{ .mem, .none, .none } },
41511 .{ .src = .{ .to_sse, .none, .none } },
41512 },
41513 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41514 .each = .{ .once = &.{
41515 .{ ._, .p_d, .movzxw, .dst0x, .src0q, ._, ._ },
41516 } },
41517 }, .{
41518 .required_features = .{ .sse2, null, null, null },
41519 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
41520 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
41521 .patterns = &.{
41522 .{ .src = .{ .to_mut_sse, .none, .none } },
41523 },
41524 .extra_temps = .{
41525 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
41526 .unused,
41527 .unused,
41528 .unused,
41529 .unused,
41530 .unused,
41531 .unused,
41532 .unused,
41533 .unused,
41534 },
41535 .dst_temps = .{.{ .ref = .src0 }},
41536 .each = .{ .once = &.{
41537 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
41538 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
41539 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
41540 } },
41541 }, .{
41542 .required_features = .{ .sse2, null, null, null },
41543 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
41544 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
41545 .patterns = &.{
41546 .{ .src = .{ .to_mut_sse, .none, .none } },
41547 },
41548 .extra_temps = .{
41549 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
41550 .unused,
41551 .unused,
41552 .unused,
41553 .unused,
41554 .unused,
41555 .unused,
41556 .unused,
41557 .unused,
41558 },
41559 .dst_temps = .{.{ .ref = .src0 }},
41560 .each = .{ .once = &.{
41561 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
41562 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
41563 } },
41564 }, .{
41565 .required_features = .{ .avx2, null, null, null },
41566 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
41567 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }},
41568 .patterns = &.{
41569 .{ .src = .{ .mem, .none, .none } },
41570 .{ .src = .{ .to_sse, .none, .none } },
41571 },
41572 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41573 .each = .{ .once = &.{
41574 .{ ._, .vp_d, .movsxw, .dst0y, .src0x, ._, ._ },
41575 } },
41576 }, .{
41577 .required_features = .{ .avx2, null, null, null },
41578 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
41579 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }},
41580 .patterns = &.{
41581 .{ .src = .{ .mem, .none, .none } },
41582 .{ .src = .{ .to_sse, .none, .none } },
41583 },
41584 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41585 .each = .{ .once = &.{
41586 .{ ._, .vp_d, .movzxw, .dst0y, .src0x, ._, ._ },
41587 } },
41588 }, .{
41589 .required_features = .{ .avx2, null, null, null },
41590 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
41591 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }},
41592 .patterns = &.{
41593 .{ .src = .{ .to_mem, .none, .none } },
41594 },
41595 .extra_temps = .{
41596 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41597 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
41598 .unused,
41599 .unused,
41600 .unused,
41601 .unused,
41602 .unused,
41603 .unused,
41604 .unused,
41605 },
41606 .dst_temps = .{.mem},
41607 .clobbers = .{ .eflags = true },
41608 .each = .{ .once = &.{
41609 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
41610 .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
41611 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
41612 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
41613 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41614 } },
41615 }, .{
41616 .required_features = .{ .avx2, null, null, null },
41617 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
41618 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }},
41619 .patterns = &.{
41620 .{ .src = .{ .to_mem, .none, .none } },
41621 },
41622 .extra_temps = .{
41623 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41624 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
41625 .unused,
41626 .unused,
41627 .unused,
41628 .unused,
41629 .unused,
41630 .unused,
41631 .unused,
41632 },
41633 .dst_temps = .{.mem},
41634 .clobbers = .{ .eflags = true },
41635 .each = .{ .once = &.{
41636 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
41637 .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
41638 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
41639 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
41640 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41641 } },
41642 }, .{
41643 .required_features = .{ .avx, null, null, null },
41644 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
41645 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
41646 .patterns = &.{
41647 .{ .src = .{ .to_mem, .none, .none } },
41648 },
41649 .extra_temps = .{
41650 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41651 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
41652 .unused,
41653 .unused,
41654 .unused,
41655 .unused,
41656 .unused,
41657 .unused,
41658 .unused,
41659 },
41660 .dst_temps = .{.mem},
41661 .clobbers = .{ .eflags = true },
41662 .each = .{ .once = &.{
41663 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
41664 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
41665 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
41666 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
41667 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41668 } },
41669 }, .{
41670 .required_features = .{ .avx, null, null, null },
41671 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
41672 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},
41673 .patterns = &.{
41674 .{ .src = .{ .to_mem, .none, .none } },
41675 },
41676 .extra_temps = .{
41677 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41678 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
41679 .unused,
41680 .unused,
41681 .unused,
41682 .unused,
41683 .unused,
41684 .unused,
41685 .unused,
41686 },
41687 .dst_temps = .{.mem},
41688 .clobbers = .{ .eflags = true },
41689 .each = .{ .once = &.{
41690 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
41691 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
41692 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
41693 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
41694 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41695 } },
41696 }, .{
41697 .required_features = .{ .sse4_1, null, null, null },
41698 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
41699 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
41700 .patterns = &.{
41701 .{ .src = .{ .to_mem, .none, .none } },
41702 },
41703 .extra_temps = .{
41704 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41705 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
41706 .unused,
41707 .unused,
41708 .unused,
41709 .unused,
41710 .unused,
41711 .unused,
41712 .unused,
41713 },
41714 .dst_temps = .{.mem},
41715 .clobbers = .{ .eflags = true },
41716 .each = .{ .once = &.{
41717 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
41718 .{ .@"0:", .p_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
41719 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
41720 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
41721 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41722 } },
41723 }, .{
41724 .required_features = .{ .sse4_1, null, null, null },
41725 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
41726 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},
41727 .patterns = &.{
41728 .{ .src = .{ .to_mem, .none, .none } },
41729 },
41730 .extra_temps = .{
41731 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41732 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
41733 .unused,
41734 .unused,
41735 .unused,
41736 .unused,
41737 .unused,
41738 .unused,
41739 .unused,
41740 },
41741 .dst_temps = .{.mem},
41742 .clobbers = .{ .eflags = true },
41743 .each = .{ .once = &.{
41744 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
41745 .{ .@"0:", .p_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
41746 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
41747 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
41748 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41749 } },
41750 }, .{
41751 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
41752 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
41753 .patterns = &.{
41754 .{ .src = .{ .to_mem, .none, .none } },
41755 },
41756 .extra_temps = .{
41757 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41758 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
41759 .unused,
41760 .unused,
41761 .unused,
41762 .unused,
41763 .unused,
41764 .unused,
41765 .unused,
41766 },
41767 .dst_temps = .{.mem},
41768 .clobbers = .{ .eflags = true },
41769 .each = .{ .once = &.{
41770 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
41771 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
41772 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
41773 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
41774 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41775 } },
41776 }, .{
41777 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
41778 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
41779 .patterns = &.{
41780 .{ .src = .{ .to_mem, .none, .none } },
41781 },
41782 .extra_temps = .{
41783 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41784 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
41785 .unused,
41786 .unused,
41787 .unused,
41788 .unused,
41789 .unused,
41790 .unused,
41791 .unused,
41792 },
41793 .dst_temps = .{.mem},
41794 .clobbers = .{ .eflags = true },
41795 .each = .{ .once = &.{
41796 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
41797 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
41798 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
41799 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
41800 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41801 } },
41802 }, .{
41803 .required_features = .{ .avx, null, null, null },
41804 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
41805 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
41806 .patterns = &.{
41807 .{ .src = .{ .mem, .none, .none } },
41808 .{ .src = .{ .to_sse, .none, .none } },
41809 },
41810 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41811 .each = .{ .once = &.{
41812 .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ },
41813 } },
41814 }, .{
41815 .required_features = .{ .avx, null, null, null },
41816 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
41817 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
41818 .patterns = &.{
41819 .{ .src = .{ .mem, .none, .none } },
41820 .{ .src = .{ .to_sse, .none, .none } },
41821 },
41822 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41823 .each = .{ .once = &.{
41824 .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ },
41825 } },
41826 }, .{
41827 .required_features = .{ .sse4_1, null, null, null },
41828 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
41829 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
41830 .patterns = &.{
41831 .{ .src = .{ .mem, .none, .none } },
41832 .{ .src = .{ .to_sse, .none, .none } },
41833 },
41834 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41835 .each = .{ .once = &.{
41836 .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ },
41837 } },
41838 }, .{
41839 .required_features = .{ .sse4_1, null, null, null },
41840 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
41841 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
41842 .patterns = &.{
41843 .{ .src = .{ .mem, .none, .none } },
41844 .{ .src = .{ .to_sse, .none, .none } },
41845 },
41846 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41847 .each = .{ .once = &.{
41848 .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ },
41849 } },
41850 }, .{
41851 .required_features = .{ .sse2, null, null, null },
41852 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
41853 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
41854 .patterns = &.{
41855 .{ .src = .{ .to_mut_sse, .none, .none } },
41856 },
41857 .extra_temps = .{
41858 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
41859 .unused,
41860 .unused,
41861 .unused,
41862 .unused,
41863 .unused,
41864 .unused,
41865 .unused,
41866 .unused,
41867 },
41868 .dst_temps = .{.{ .ref = .src0 }},
41869 .each = .{ .once = &.{
41870 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
41871 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
41872 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
41873 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
41874 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
41875 } },
41876 }, .{
41877 .required_features = .{ .sse2, null, null, null },
41878 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
41879 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
41880 .patterns = &.{
41881 .{ .src = .{ .to_mut_sse, .none, .none } },
41882 },
41883 .extra_temps = .{
41884 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
41885 .unused,
41886 .unused,
41887 .unused,
41888 .unused,
41889 .unused,
41890 .unused,
41891 .unused,
41892 .unused,
41893 },
41894 .dst_temps = .{.{ .ref = .src0 }},
41895 .each = .{ .once = &.{
41896 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
41897 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
41898 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
41899 } },
41900 }, .{
41901 .required_features = .{ .avx2, null, null, null },
41902 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
41903 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},
41904 .patterns = &.{
41905 .{ .src = .{ .mem, .none, .none } },
41906 .{ .src = .{ .to_sse, .none, .none } },
41907 },
41908 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41909 .each = .{ .once = &.{
41910 .{ ._, .vp_q, .movsxw, .dst0y, .src0q, ._, ._ },
41911 } },
41912 }, .{
41913 .required_features = .{ .avx2, null, null, null },
41914 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
41915 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
41916 .patterns = &.{
41917 .{ .src = .{ .mem, .none, .none } },
41918 .{ .src = .{ .to_sse, .none, .none } },
41919 },
41920 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41921 .each = .{ .once = &.{
41922 .{ ._, .vp_q, .movzxw, .dst0y, .src0q, ._, ._ },
41923 } },
41924 }, .{
41925 .required_features = .{ .avx2, null, null, null },
41926 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
41927 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},
41928 .patterns = &.{
41929 .{ .src = .{ .to_mem, .none, .none } },
41930 },
41931 .extra_temps = .{
41932 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41933 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
41934 .unused,
41935 .unused,
41936 .unused,
41937 .unused,
41938 .unused,
41939 .unused,
41940 .unused,
41941 },
41942 .dst_temps = .{.mem},
41943 .clobbers = .{ .eflags = true },
41944 .each = .{ .once = &.{
41945 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
41946 .{ .@"0:", .vp_q, .movsxw, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
41947 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
41948 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
41949 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41950 } },
41951 }, .{
41952 .required_features = .{ .avx2, null, null, null },
41953 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
41954 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }},
41955 .patterns = &.{
41956 .{ .src = .{ .to_mem, .none, .none } },
41957 },
41958 .extra_temps = .{
41959 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41960 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
41961 .unused,
41962 .unused,
41963 .unused,
41964 .unused,
41965 .unused,
41966 .unused,
41967 .unused,
41968 },
41969 .dst_temps = .{.mem},
41970 .clobbers = .{ .eflags = true },
41971 .each = .{ .once = &.{
41972 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
41973 .{ .@"0:", .vp_q, .movzxw, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
41974 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
41975 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
41976 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41977 } },
41978 }, .{
41979 .required_features = .{ .avx, null, null, null },
41980 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
41981 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
41982 .patterns = &.{
41983 .{ .src = .{ .to_mem, .none, .none } },
41984 },
41985 .extra_temps = .{
41986 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41987 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
41988 .unused,
41989 .unused,
41990 .unused,
41991 .unused,
41992 .unused,
41993 .unused,
41994 .unused,
41995 },
41996 .dst_temps = .{.mem},
41997 .clobbers = .{ .eflags = true },
41998 .each = .{ .once = &.{
41999 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
42000 .{ .@"0:", .vp_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
42001 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
42002 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
42003 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
42004 } },
42005 }, .{
42006 .required_features = .{ .avx, null, null, null },
42007 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
42008 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
42009 .patterns = &.{
42010 .{ .src = .{ .to_mem, .none, .none } },
42011 },
42012 .extra_temps = .{
42013 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42014 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
42015 .unused,
42016 .unused,
42017 .unused,
42018 .unused,
42019 .unused,
42020 .unused,
42021 .unused,
42022 },
42023 .dst_temps = .{.mem},
42024 .clobbers = .{ .eflags = true },
42025 .each = .{ .once = &.{
42026 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
42027 .{ .@"0:", .vp_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
42028 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
42029 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
42030 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
42031 } },
42032 }, .{
42033 .required_features = .{ .sse4_1, null, null, null },
42034 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
42035 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
42036 .patterns = &.{
42037 .{ .src = .{ .to_mem, .none, .none } },
42038 },
42039 .extra_temps = .{
42040 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42041 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
42042 .unused,
42043 .unused,
42044 .unused,
42045 .unused,
42046 .unused,
42047 .unused,
42048 .unused,
42049 },
42050 .dst_temps = .{.mem},
42051 .clobbers = .{ .eflags = true },
42052 .each = .{ .once = &.{
42053 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
42054 .{ .@"0:", .p_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
42055 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
42056 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
42057 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
21710 } },42058 } },
21711 });42059 }, .{
21712 },42060 .required_features = .{ .sse4_1, null, null, null },
21713 .dbg_empty_stmt => if (cg.debug_output != .none) {42061 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
21714 if (cg.mir_instructions.len > 0) {42062 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
21715 const prev_mir_op = &cg.mir_instructions.items(.ops)[cg.mir_instructions.len - 1];42063 .patterns = &.{
21716 if (prev_mir_op.* == .pseudo_dbg_line_line_column)42064 .{ .src = .{ .to_mem, .none, .none } },
21717 prev_mir_op.* = .pseudo_dbg_line_stmt_line_column;
21718 }
21719 try cg.asmOpOnly(.{ ._, .nop });
21720 },
21721 .dbg_inline_block => {
21722 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
21723 const extra = cg.air.extraData(Air.DbgInlineBlock, ty_pl.payload);
21724 const old_inline_func = cg.inline_func;
21725 defer cg.inline_func = old_inline_func;
21726 cg.inline_func = extra.data.func;
21727 if (cg.debug_output != .none) _ = try cg.addInst(.{
21728 .tag = .pseudo,
21729 .ops = .pseudo_dbg_enter_inline_func,
21730 .data = .{ .func = extra.data.func },
21731 });
21732 try cg.lowerBlock(inst, @ptrCast(cg.air.extra[extra.end..][0..extra.data.body_len]));
21733 if (cg.debug_output != .none) _ = try cg.addInst(.{
21734 .tag = .pseudo,
21735 .ops = .pseudo_dbg_leave_inline_func,
21736 .data = .{ .func = old_inline_func },
21737 });
21738 },
21739 .dbg_var_ptr,
21740 .dbg_var_val,
21741 .dbg_arg_inline,
21742 => if (use_old) try cg.airDbgVar(inst) else if (cg.debug_output != .none) {
21743 const pl_op = air_datas[@intFromEnum(inst)].pl_op;
21744 var ops = try cg.tempsFromOperands(inst, .{pl_op.operand});
21745 var mcv = ops[0].tracking(cg).short;
21746 switch (mcv) {
21747 else => {},
21748 .eflags => |cc| switch (cc) {
21749 else => {},
21750 // These values would self destruct. Maybe we make them use their
21751 // turing complete dwarf expression interpreters for once?
21752 .z_and_np, .nz_or_p => {
21753 try cg.spillEflagsIfOccupied();
21754 mcv = ops[0].tracking(cg).short;
21755 },
21756 },42065 },
21757 }42066 .extra_temps = .{
21758 try cg.genLocalDebugInfo(inst, ops[0].tracking(cg).short);42067 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
21759 try ops[0].die(cg);42068 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
21760 },42069 .unused,
21761 .is_null_ptr => if (use_old) try cg.airIsNullPtr(inst) else {42070 .unused,
21762 const un_op = air_datas[@intFromEnum(inst)].un_op;42071 .unused,
21763 const opt_ty = cg.typeOf(un_op).childType(zcu);42072 .unused,
21764 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);42073 .unused,
21765 const opt_child_ty = opt_ty.optionalChild(zcu);42074 .unused,
21766 const opt_child_abi_size: u31 = @intCast(opt_child_ty.abiSize(zcu));42075 .unused,
21767 var ops = try cg.tempsFromOperands(inst, .{un_op});
21768 if (!opt_repr_is_pl) try ops[0].toOffset(opt_child_abi_size, cg);
21769 while (try ops[0].toLea(cg)) {}
21770 try cg.asmMemoryImmediate(
21771 .{ ._, .cmp },
21772 try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = if (!opt_repr_is_pl)
21773 .byte
21774 else if (opt_child_ty.isSlice(zcu))
21775 .qword
21776 else
21777 .fromSize(opt_child_abi_size) }),
21778 .u(0),
21779 );
21780 const is_null = try cg.tempInit(.bool, .{ .eflags = .e });
21781 try is_null.finish(inst, &.{un_op}, &ops, cg);
21782 },
21783 .is_non_null_ptr => if (use_old) try cg.airIsNonNullPtr(inst) else {
21784 const un_op = air_datas[@intFromEnum(inst)].un_op;
21785 const opt_ty = cg.typeOf(un_op).childType(zcu);
21786 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);
21787 const opt_child_ty = opt_ty.optionalChild(zcu);
21788 const opt_child_abi_size: u31 = @intCast(opt_child_ty.abiSize(zcu));
21789 var ops = try cg.tempsFromOperands(inst, .{un_op});
21790 if (!opt_repr_is_pl) try ops[0].toOffset(opt_child_abi_size, cg);
21791 while (try ops[0].toLea(cg)) {}
21792 try cg.asmMemoryImmediate(
21793 .{ ._, .cmp },
21794 try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = if (!opt_repr_is_pl)
21795 .byte
21796 else if (opt_child_ty.isSlice(zcu))
21797 .qword
21798 else
21799 .fromSize(opt_child_abi_size) }),
21800 .u(0),
21801 );
21802 const is_non_null = try cg.tempInit(.bool, .{ .eflags = .ne });
21803 try is_non_null.finish(inst, &.{un_op}, &ops, cg);
21804 },
21805 .is_err_ptr => if (use_old) try cg.airIsErrPtr(inst) else {
21806 const un_op = air_datas[@intFromEnum(inst)].un_op;
21807 const eu_ty = cg.typeOf(un_op).childType(zcu);
21808 const eu_err_ty = eu_ty.errorUnionSet(zcu);
21809 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
21810 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
21811 var ops = try cg.tempsFromOperands(inst, .{un_op});
21812 try ops[0].toOffset(eu_err_off, cg);
21813 while (try ops[0].toLea(cg)) {}
21814 try cg.asmMemoryImmediate(
21815 .{ ._, .cmp },
21816 try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = cg.memSize(eu_err_ty) }),
21817 .u(0),
21818 );
21819 const is_err = try cg.tempInit(.bool, .{ .eflags = .ne });
21820 try is_err.finish(inst, &.{un_op}, &ops, cg);
21821 },
21822 .is_non_err_ptr => if (use_old) try cg.airIsNonErrPtr(inst) else {
21823 const un_op = air_datas[@intFromEnum(inst)].un_op;
21824 const eu_ty = cg.typeOf(un_op).childType(zcu);
21825 const eu_err_ty = eu_ty.errorUnionSet(zcu);
21826 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
21827 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
21828 var ops = try cg.tempsFromOperands(inst, .{un_op});
21829 try ops[0].toOffset(eu_err_off, cg);
21830 while (try ops[0].toLea(cg)) {}
21831 try cg.asmMemoryImmediate(
21832 .{ ._, .cmp },
21833 try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = cg.memSize(eu_err_ty) }),
21834 .u(0),
21835 );
21836 const is_non_err = try cg.tempInit(.bool, .{ .eflags = .e });
21837 try is_non_err.finish(inst, &.{un_op}, &ops, cg);
21838 },
21839 .load => if (use_old) try cg.airLoad(inst) else fallback: {
21840 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
21841 const val_ty = ty_op.ty.toType();
21842 const ptr_ty = cg.typeOf(ty_op.operand);
21843 const ptr_info = ptr_ty.ptrInfo(zcu);
21844 if (ptr_info.packed_offset.host_size > 0 and
21845 (ptr_info.flags.vector_index == .none or val_ty.toIntern() == .bool_type))
21846 break :fallback try cg.airLoad(inst);
21847 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
21848 const res = try ops[0].load(val_ty, .{
21849 .disp = switch (ptr_info.flags.vector_index) {
21850 .none => 0,
21851 .runtime => unreachable,
21852 else => |vector_index| @intCast(val_ty.abiSize(zcu) * @intFromEnum(vector_index)),
21853 },42076 },
21854 }, cg);42077 .dst_temps = .{.mem},
21855 try res.finish(inst, &.{ty_op.operand}, &ops, cg);42078 .clobbers = .{ .eflags = true },
21856 },42079 .each = .{ .once = &.{
21857 .ret => try cg.airRet(inst, false),42080 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
21858 .ret_safe => try cg.airRet(inst, true),42081 .{ .@"0:", .p_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
21859 .ret_load => try cg.airRetLoad(inst),42082 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
21860 .store, .store_safe => |air_tag| if (use_old) try cg.airStore(inst, switch (air_tag) {42083 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
21861 else => unreachable,42084 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
21862 .store => false,42085 } },
21863 .store_safe => true,42086 }, .{
21864 }) else fallback: {42087 .required_features = .{ .@"64bit", null, null, null },
21865 const bin_op = air_datas[@intFromEnum(inst)].bin_op;42088 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
21866 const ptr_ty = cg.typeOf(bin_op.lhs);42089 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
21867 const ptr_info = ptr_ty.ptrInfo(zcu);42090 .patterns = &.{
21868 const val_ty = cg.typeOf(bin_op.rhs);42091 .{ .src = .{ .to_mem, .none, .none } },
21869 if (ptr_info.packed_offset.host_size > 0 and
21870 (ptr_info.flags.vector_index == .none or val_ty.toIntern() == .bool_type))
21871 break :fallback try cg.airStore(inst, switch (air_tag) {
21872 else => unreachable,
21873 .store => false,
21874 .store_safe => true,
21875 });
21876 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
21877 try ops[0].store(&ops[1], .{
21878 .disp = switch (ptr_info.flags.vector_index) {
21879 .none => 0,
21880 .runtime => unreachable,
21881 else => |vector_index| @intCast(val_ty.abiSize(zcu) * @intFromEnum(vector_index)),
21882 },42092 },
21883 .safe = switch (air_tag) {42093 .extra_temps = .{
21884 else => unreachable,42094 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
21885 .store => false,42095 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
21886 .store_safe => true,42096 .unused,
42097 .unused,
42098 .unused,
42099 .unused,
42100 .unused,
42101 .unused,
42102 .unused,
21887 },42103 },
21888 }, cg);42104 .dst_temps = .{.mem},
21889 for (ops) |op| try op.die(cg);42105 .clobbers = .{ .eflags = true },
21890 },42106 .each = .{ .once = &.{
21891 .unreach => {},42107 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
21892 .fptrunc => |air_tag| if (use_old) try cg.airFptrunc(inst) else {42108 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
21893 const ty_op = air_datas[@intFromEnum(inst)].ty_op;42109 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
21894 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});42110 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
21895 var res: [1]Temp = undefined;42111 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
21896 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{42112 } },
21897 .required_features = .{ .f16c, null, null, null },42113 }, .{
21898 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },42114 .required_features = .{ .@"64bit", null, null, null },
21899 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},42115 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
42116 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
42117 .patterns = &.{
42118 .{ .src = .{ .to_mem, .none, .none } },
42119 },
42120 .extra_temps = .{
42121 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42122 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
42123 .unused,
42124 .unused,
42125 .unused,
42126 .unused,
42127 .unused,
42128 .unused,
42129 .unused,
42130 },
42131 .dst_temps = .{.mem},
42132 .clobbers = .{ .eflags = true },
42133 .each = .{ .once = &.{
42134 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
42135 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
42136 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
42137 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
42138 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
42139 } },
42140 }, .{
42141 .required_features = .{ .avx, null, null, null },
42142 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
42143 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
42144 .patterns = &.{
42145 .{ .src = .{ .mem, .none, .none } },
42146 .{ .src = .{ .to_sse, .none, .none } },
42147 },
42148 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
42149 .each = .{ .once = &.{
42150 .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ },
42151 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
42152 } },
42153 }, .{
42154 .required_features = .{ .avx, null, null, null },
42155 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
42156 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
42157 .patterns = &.{
42158 .{ .src = .{ .mem, .none, .none } },
42159 .{ .src = .{ .to_sse, .none, .none } },
42160 },
42161 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
42162 .each = .{ .once = &.{
42163 .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ },
42164 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
42165 } },
42166 }, .{
42167 .required_features = .{ .sse4_1, null, null, null },
42168 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
42169 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
42170 .patterns = &.{
42171 .{ .src = .{ .mem, .none, .none } },
42172 .{ .src = .{ .to_sse, .none, .none } },
42173 },
42174 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
42175 .each = .{ .once = &.{
42176 .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ },
42177 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
42178 } },
42179 }, .{
42180 .required_features = .{ .sse4_1, null, null, null },
42181 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
42182 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
42183 .patterns = &.{
42184 .{ .src = .{ .mem, .none, .none } },
42185 .{ .src = .{ .to_sse, .none, .none } },
42186 },
42187 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
42188 .each = .{ .once = &.{
42189 .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ },
42190 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
42191 } },
42192 }, .{
42193 .required_features = .{ .sse2, null, null, null },
42194 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
42195 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
42196 .patterns = &.{
42197 .{ .src = .{ .to_mut_sse, .none, .none } },
42198 },
42199 .extra_temps = .{
42200 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
42201 .unused,
42202 .unused,
42203 .unused,
42204 .unused,
42205 .unused,
42206 .unused,
42207 .unused,
42208 .unused,
42209 },
42210 .dst_temps = .{.{ .ref = .src0 }},
42211 .each = .{ .once = &.{
42212 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
42213 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
42214 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
42215 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
42216 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
42217 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },
42218 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
42219 } },
42220 }, .{
42221 .required_features = .{ .sse2, null, null, null },
42222 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
42223 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
42224 .patterns = &.{
42225 .{ .src = .{ .to_mut_sse, .none, .none } },
42226 },
42227 .extra_temps = .{
42228 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
42229 .unused,
42230 .unused,
42231 .unused,
42232 .unused,
42233 .unused,
42234 .unused,
42235 .unused,
42236 .unused,
42237 },
42238 .dst_temps = .{.{ .ref = .src0 }},
42239 .each = .{ .once = &.{
42240 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
42241 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
42242 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
42243 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
42244 } },
42245 }, .{
42246 .required_features = .{ .@"64bit", null, null, null },
42247 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
42248 .dst_constraints = .{.any_scalar_signed_int},
42249 .patterns = &.{
42250 .{ .src = .{ .to_mem, .none, .none } },
42251 },
42252 .extra_temps = .{
42253 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42254 .{ .type = .usize, .kind = .{ .reg = .rdi } },
42255 .{ .type = .i64, .kind = .{ .reg = .rax } },
42256 .{ .type = .u32, .kind = .{ .reg = .ecx } },
42257 .unused,
42258 .unused,
42259 .unused,
42260 .unused,
42261 .unused,
42262 },
42263 .dst_temps = .{.mem},
42264 .clobbers = .{ .eflags = true },
42265 .each = .{ .once = &.{
42266 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
42267 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
42268 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
42269 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
42270 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
42271 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
42272 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
42273 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
42274 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
42275 } },
42276 }, .{
42277 .required_features = .{ .@"64bit", null, null, null },
42278 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
42279 .dst_constraints = .{.any_scalar_int},
42280 .patterns = &.{
42281 .{ .src = .{ .to_mem, .none, .none } },
42282 },
42283 .extra_temps = .{
42284 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42285 .{ .type = .usize, .kind = .{ .reg = .rdi } },
42286 .{ .type = .u64, .kind = .{ .reg = .rax } },
42287 .{ .type = .u32, .kind = .{ .reg = .ecx } },
42288 .unused,
42289 .unused,
42290 .unused,
42291 .unused,
42292 .unused,
42293 },
42294 .dst_temps = .{.mem},
42295 .clobbers = .{ .eflags = true },
42296 .each = .{ .once = &.{
42297 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
42298 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
42299 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
42300 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
42301 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
42302 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
42303 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
42304 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
42305 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
42306 } },
42307 }, .{
42308 .required_features = .{ .avx, null, null, null },
42309 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
42310 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
42311 .patterns = &.{
42312 .{ .src = .{ .mem, .none, .none } },
42313 .{ .src = .{ .to_sse, .none, .none } },
42314 },
42315 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
42316 .each = .{ .once = &.{
42317 .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ },
42318 } },
42319 }, .{
42320 .required_features = .{ .avx, null, null, null },
42321 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
42322 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
42323 .patterns = &.{
42324 .{ .src = .{ .mem, .none, .none } },
42325 .{ .src = .{ .to_sse, .none, .none } },
42326 },
42327 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
42328 .each = .{ .once = &.{
42329 .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ },
42330 } },
42331 }, .{
42332 .required_features = .{ .sse4_1, null, null, null },
42333 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
42334 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
42335 .patterns = &.{
42336 .{ .src = .{ .mem, .none, .none } },
42337 .{ .src = .{ .to_sse, .none, .none } },
42338 },
42339 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
42340 .each = .{ .once = &.{
42341 .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ },
42342 } },
42343 }, .{
42344 .required_features = .{ .sse4_1, null, null, null },
42345 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
42346 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
42347 .patterns = &.{
42348 .{ .src = .{ .mem, .none, .none } },
42349 .{ .src = .{ .to_sse, .none, .none } },
42350 },
42351 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
42352 .each = .{ .once = &.{
42353 .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ },
42354 } },
42355 }, .{
42356 .required_features = .{ .sse2, null, null, null },
42357 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
42358 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
42359 .patterns = &.{
42360 .{ .src = .{ .to_mut_sse, .none, .none } },
42361 },
42362 .extra_temps = .{
42363 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
42364 .unused,
42365 .unused,
42366 .unused,
42367 .unused,
42368 .unused,
42369 .unused,
42370 .unused,
42371 .unused,
42372 },
42373 .dst_temps = .{.{ .ref = .src0 }},
42374 .each = .{ .once = &.{
42375 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
42376 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },
42377 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
42378 } },
42379 }, .{
42380 .required_features = .{ .sse2, null, null, null },
42381 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
42382 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
21900 .patterns = &.{42383 .patterns = &.{
21901 .{ .src = .{ .to_sse, .none } },42384 .{ .src = .{ .to_mut_sse, .none, .none } },
21902 },42385 },
21903 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},42386 .extra_temps = .{
42387 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
42388 .unused,
42389 .unused,
42390 .unused,
42391 .unused,
42392 .unused,
42393 .unused,
42394 .unused,
42395 .unused,
42396 },
42397 .dst_temps = .{.{ .ref = .src0 }},
21904 .each = .{ .once = &.{42398 .each = .{ .once = &.{
21905 .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ },42399 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
42400 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
21906 } },42401 } },
21907 }, .{42402 }, .{
21908 .required_features = .{ .f16c, null, null, null },42403 .required_features = .{ .avx2, null, null, null },
21909 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },42404 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
21910 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .word } }},42405 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},
21911 .patterns = &.{42406 .patterns = &.{
21912 .{ .src = .{ .to_sse, .none } },42407 .{ .src = .{ .mem, .none, .none } },
42408 .{ .src = .{ .to_sse, .none, .none } },
21913 },42409 },
21914 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},42410 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
21915 .each = .{ .once = &.{42411 .each = .{ .once = &.{
21916 .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ },42412 .{ ._, .vp_q, .movsxd, .dst0y, .src0x, ._, ._ },
21917 } },42413 } },
21918 }, .{42414 }, .{
21919 .required_features = .{ .f16c, null, null, null },42415 .required_features = .{ .avx2, null, null, null },
21920 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any },42416 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
21921 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .word } }},42417 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
21922 .patterns = &.{42418 .patterns = &.{
21923 .{ .src = .{ .to_sse, .none } },42419 .{ .src = .{ .mem, .none, .none } },
42420 .{ .src = .{ .to_sse, .none, .none } },
21924 },42421 },
21925 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},42422 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
21926 .each = .{ .once = &.{42423 .each = .{ .once = &.{
21927 .{ ._, .v_, .cvtps2ph, .dst0x, .src0y, .rm(.{}), ._ },42424 .{ ._, .vp_q, .movzxd, .dst0y, .src0x, ._, ._ },
21928 } },42425 } },
21929 }, .{42426 }, .{
21930 .required_features = .{ .sse, null, null, null },42427 .required_features = .{ .avx2, null, null, null },
21931 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },42428 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
21932 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},42429 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},
21933 .patterns = &.{42430 .patterns = &.{
21934 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },42431 .{ .src = .{ .to_mem, .none, .none } },
21935 },42432 },
21936 .call_frame = .{ .alignment = .@"16" },
21937 .extra_temps = .{42433 .extra_temps = .{
21938 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },42434 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
21939 .unused,42435 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
21940 .unused,42436 .unused,
21941 .unused,42437 .unused,
21942 .unused,42438 .unused,
...@@ -21945,21 +42441,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21945,21 +42441,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21945 .unused,42441 .unused,
21946 .unused,42442 .unused,
21947 },42443 },
21948 .dst_temps = .{.{ .ref = .src0 }},42444 .dst_temps = .{.mem},
21949 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },42445 .clobbers = .{ .eflags = true },
21950 .each = .{ .once = &.{42446 .each = .{ .once = &.{
21951 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },42447 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
42448 .{ .@"0:", .vp_q, .movsxd, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
42449 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
42450 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
42451 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
21952 } },42452 } },
21953 }, .{42453 }, .{
21954 .required_features = .{ .f16c, null, null, null },42454 .required_features = .{ .avx2, null, null, null },
21955 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },42455 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
21956 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }},42456 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }},
21957 .patterns = &.{42457 .patterns = &.{
21958 .{ .src = .{ .to_mem, .none } },42458 .{ .src = .{ .to_mem, .none, .none } },
21959 },42459 },
21960 .extra_temps = .{42460 .extra_temps = .{
21961 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },42461 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
21962 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },42462 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
21963 .unused,42463 .unused,
21964 .unused,42464 .unused,
21965 .unused,42465 .unused,
...@@ -21971,24 +42471,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21971,24 +42471,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21971 .dst_temps = .{.mem},42471 .dst_temps = .{.mem},
21972 .clobbers = .{ .eflags = true },42472 .clobbers = .{ .eflags = true },
21973 .each = .{ .once = &.{42473 .each = .{ .once = &.{
21974 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_size), ._, ._ },42474 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
21975 .{ .@"0:", .v_ps, .mova, .tmp1y, .memsia(.src0y, .@"2", .tmp0, .add_size), ._, ._ },42475 .{ .@"0:", .vp_q, .movzxd, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
21976 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_size), .tmp1y, .rm(.{}), ._ },42476 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
21977 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },42477 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
21978 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },42478 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
21979 } },42479 } },
21980 }, .{42480 }, .{
21981 .required_features = .{ .avx, null, null, null },42481 .required_features = .{ .avx, null, null, null },
21982 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },42482 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
21983 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},42483 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
21984 .patterns = &.{42484 .patterns = &.{
21985 .{ .src = .{ .to_mem, .none } },42485 .{ .src = .{ .to_mem, .none, .none } },
21986 },42486 },
21987 .call_frame = .{ .alignment = .@"16" },
21988 .extra_temps = .{42487 .extra_temps = .{
21989 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },42488 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
21990 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },42489 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
21991 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },42490 .unused,
21992 .unused,42491 .unused,
21993 .unused,42492 .unused,
21994 .unused,42493 .unused,
...@@ -21997,27 +42496,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21997,27 +42496,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21997 .unused,42496 .unused,
21998 },42497 },
21999 .dst_temps = .{.mem},42498 .dst_temps = .{.mem},
22000 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },42499 .clobbers = .{ .eflags = true },
22001 .each = .{ .once = &.{42500 .each = .{ .once = &.{
22002 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },42501 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
22003 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },42502 .{ .@"0:", .vp_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
22004 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },42503 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
22005 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },42504 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
22006 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22007 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },42505 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22008 } },42506 } },
22009 }, .{42507 }, .{
22010 .required_features = .{ .sse4_1, null, null, null },42508 .required_features = .{ .avx, null, null, null },
22011 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },42509 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
22012 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},42510 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
22013 .patterns = &.{42511 .patterns = &.{
22014 .{ .src = .{ .to_mem, .none } },42512 .{ .src = .{ .to_mem, .none, .none } },
22015 },42513 },
22016 .call_frame = .{ .alignment = .@"16" },
22017 .extra_temps = .{42514 .extra_temps = .{
22018 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },42515 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22019 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },42516 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
22020 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },42517 .unused,
22021 .unused,42518 .unused,
22022 .unused,42519 .unused,
22023 .unused,42520 .unused,
...@@ -22026,28 +42523,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22026,28 +42523,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22026 .unused,42523 .unused,
22027 },42524 },
22028 .dst_temps = .{.mem},42525 .dst_temps = .{.mem},
22029 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },42526 .clobbers = .{ .eflags = true },
22030 .each = .{ .once = &.{42527 .each = .{ .once = &.{
22031 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },42528 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
22032 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },42529 .{ .@"0:", .vp_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
22033 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },42530 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
22034 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },42531 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
22035 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22036 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },42532 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22037 } },42533 } },
22038 }, .{42534 }, .{
22039 .required_features = .{ .sse2, null, null, null },42535 .required_features = .{ .sse4_1, null, null, null },
22040 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },42536 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
22041 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},42537 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
22042 .patterns = &.{42538 .patterns = &.{
22043 .{ .src = .{ .to_mem, .none } },42539 .{ .src = .{ .to_mem, .none, .none } },
22044 },42540 },
22045 .call_frame = .{ .alignment = .@"16" },
22046 .extra_temps = .{42541 .extra_temps = .{
22047 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },42542 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22048 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },42543 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
22049 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },42544 .unused,
22050 .{ .type = .f16, .kind = .{ .reg = .ax } },42545 .unused,
22051 .unused,42546 .unused,
22052 .unused,42547 .unused,
22053 .unused,42548 .unused,
...@@ -22055,58 +42550,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22055,58 +42550,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22055 .unused,42550 .unused,
22056 },42551 },
22057 .dst_temps = .{.mem},42552 .dst_temps = .{.mem},
22058 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },42553 .clobbers = .{ .eflags = true },
22059 .each = .{ .once = &.{42554 .each = .{ .once = &.{
22060 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },42555 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
22061 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },42556 .{ .@"0:", .p_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
22062 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },42557 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
22063 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },42558 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
22064 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
22065 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22066 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },42559 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22067 } },42560 } },
22068 }, .{42561 }, .{
22069 .required_features = .{ .sse, null, null, null },42562 .required_features = .{ .sse4_1, null, null, null },
22070 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },42563 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
22071 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},42564 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
22072 .patterns = &.{42565 .patterns = &.{
22073 .{ .src = .{ .to_mem, .none } },42566 .{ .src = .{ .to_mem, .none, .none } },
22074 },42567 },
22075 .call_frame = .{ .alignment = .@"16" },
22076 .extra_temps = .{42568 .extra_temps = .{
22077 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },42569 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22078 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },42570 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
22079 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },42571 .unused,
22080 .{ .type = .f32, .kind = .mem },42572 .unused,
22081 .{ .type = .f16, .kind = .{ .reg = .ax } },42573 .unused,
22082 .unused,42574 .unused,
22083 .unused,42575 .unused,
22084 .unused,42576 .unused,
22085 .unused,42577 .unused,
22086 },42578 },
22087 .dst_temps = .{.mem},42579 .dst_temps = .{.mem},
22088 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },42580 .clobbers = .{ .eflags = true },
22089 .each = .{ .once = &.{42581 .each = .{ .once = &.{
22090 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },42582 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
22091 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },42583 .{ .@"0:", .p_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
22092 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },42584 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
22093 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },42585 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
22094 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },
22095 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
22096 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22097 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },42586 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22098 } },42587 } },
22099 }, .{42588 }, .{
22100 .required_features = .{ .sse, null, null, null },42589 .required_features = .{ .@"64bit", null, null, null },
22101 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },42590 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
22102 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},42591 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
22103 .patterns = &.{42592 .patterns = &.{
22104 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },42593 .{ .src = .{ .to_mem, .none, .none } },
22105 },42594 },
22106 .call_frame = .{ .alignment = .@"16" },
22107 .extra_temps = .{42595 .extra_temps = .{
22108 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },42596 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22109 .unused,42597 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
22110 .unused,42598 .unused,
22111 .unused,42599 .unused,
22112 .unused,42600 .unused,
...@@ -22115,23 +42603,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22115,23 +42603,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22115 .unused,42603 .unused,
22116 .unused,42604 .unused,
22117 },42605 },
22118 .dst_temps = .{.{ .ref = .src0 }},42606 .dst_temps = .{.mem},
22119 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },42607 .clobbers = .{ .eflags = true },
22120 .each = .{ .once = &.{42608 .each = .{ .once = &.{
22121 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },42609 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
42610 .{ .@"0:", ._, .movsxd, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
42611 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
42612 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
42613 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22122 } },42614 } },
22123 }, .{42615 }, .{
22124 .required_features = .{ .avx, null, null, null },42616 .required_features = .{ .@"64bit", null, null, null },
22125 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },42617 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
22126 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},42618 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
22127 .patterns = &.{42619 .patterns = &.{
22128 .{ .src = .{ .to_mem, .none } },42620 .{ .src = .{ .to_mem, .none, .none } },
22129 },42621 },
22130 .call_frame = .{ .alignment = .@"16" },
22131 .extra_temps = .{42622 .extra_temps = .{
22132 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },42623 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22133 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },42624 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
22134 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },42625 .unused,
22135 .unused,42626 .unused,
22136 .unused,42627 .unused,
22137 .unused,42628 .unused,
...@@ -22140,27 +42631,77 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22140,27 +42631,77 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22140 .unused,42631 .unused,
22141 },42632 },
22142 .dst_temps = .{.mem},42633 .dst_temps = .{.mem},
22143 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },42634 .clobbers = .{ .eflags = true },
22144 .each = .{ .once = &.{42635 .each = .{ .once = &.{
22145 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },42636 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
22146 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },42637 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
22147 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },42638 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
22148 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },42639 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
22149 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22150 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },42640 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22151 } },42641 } },
42642 }, .{
42643 .required_features = .{ .avx, null, null, null },
42644 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
42645 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
42646 .patterns = &.{
42647 .{ .src = .{ .mem, .none, .none } },
42648 .{ .src = .{ .to_sse, .none, .none } },
42649 },
42650 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
42651 .each = .{ .once = &.{
42652 .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ },
42653 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
42654 } },
42655 }, .{
42656 .required_features = .{ .avx, null, null, null },
42657 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
42658 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
42659 .patterns = &.{
42660 .{ .src = .{ .mem, .none, .none } },
42661 .{ .src = .{ .to_sse, .none, .none } },
42662 },
42663 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
42664 .each = .{ .once = &.{
42665 .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ },
42666 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
42667 } },
22152 }, .{42668 }, .{
22153 .required_features = .{ .sse4_1, null, null, null },42669 .required_features = .{ .sse4_1, null, null, null },
22154 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },42670 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
22155 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},42671 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
22156 .patterns = &.{42672 .patterns = &.{
22157 .{ .src = .{ .to_mem, .none } },42673 .{ .src = .{ .mem, .none, .none } },
42674 .{ .src = .{ .to_sse, .none, .none } },
42675 },
42676 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
42677 .each = .{ .once = &.{
42678 .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ },
42679 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
42680 } },
42681 }, .{
42682 .required_features = .{ .sse4_1, null, null, null },
42683 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
42684 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
42685 .patterns = &.{
42686 .{ .src = .{ .mem, .none, .none } },
42687 .{ .src = .{ .to_sse, .none, .none } },
42688 },
42689 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
42690 .each = .{ .once = &.{
42691 .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ },
42692 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
42693 } },
42694 }, .{
42695 .required_features = .{ .sse2, null, null, null },
42696 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
42697 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
42698 .patterns = &.{
42699 .{ .src = .{ .to_mut_sse, .none, .none } },
22158 },42700 },
22159 .call_frame = .{ .alignment = .@"16" },
22160 .extra_temps = .{42701 .extra_temps = .{
22161 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },42702 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
22162 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },42703 .unused,
22163 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },42704 .unused,
22164 .unused,42705 .unused,
22165 .unused,42706 .unused,
22166 .unused,42707 .unused,
...@@ -22168,29 +42709,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22168,29 +42709,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22168 .unused,42709 .unused,
22169 .unused,42710 .unused,
22170 },42711 },
22171 .dst_temps = .{.mem},42712 .dst_temps = .{.{ .ref = .src0 }},
22172 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22173 .each = .{ .once = &.{42713 .each = .{ .once = &.{
22174 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },42714 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
22175 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },42715 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },
22176 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },42716 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
22177 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },42717 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },
22178 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },42718 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
22179 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22180 } },42719 } },
22181 }, .{42720 }, .{
22182 .required_features = .{ .sse2, null, null, null },42721 .required_features = .{ .sse2, null, null, null },
22183 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },42722 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
22184 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},42723 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
22185 .patterns = &.{42724 .patterns = &.{
22186 .{ .src = .{ .to_mem, .none } },42725 .{ .src = .{ .to_mut_sse, .none, .none } },
42726 },
42727 .extra_temps = .{
42728 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
42729 .unused,
42730 .unused,
42731 .unused,
42732 .unused,
42733 .unused,
42734 .unused,
42735 .unused,
42736 .unused,
42737 },
42738 .dst_temps = .{.{ .ref = .src0 }},
42739 .each = .{ .once = &.{
42740 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
42741 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
42742 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
42743 } },
42744 }, .{
42745 .required_features = .{ .@"64bit", null, null, null },
42746 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
42747 .dst_constraints = .{.any_scalar_signed_int},
42748 .patterns = &.{
42749 .{ .src = .{ .to_mem, .none, .none } },
22187 },42750 },
22188 .call_frame = .{ .alignment = .@"16" },
22189 .extra_temps = .{42751 .extra_temps = .{
22190 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },42752 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22191 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },42753 .{ .type = .usize, .kind = .{ .reg = .rdi } },
22192 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },42754 .{ .type = .i64, .kind = .{ .reg = .rax } },
22193 .{ .type = .f16, .kind = .{ .reg = .ax } },42755 .{ .type = .u32, .kind = .{ .reg = .ecx } },
22194 .unused,42756 .unused,
22195 .unused,42757 .unused,
22196 .unused,42758 .unused,
...@@ -22198,288 +42760,506 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22198,288 +42760,506 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22198 .unused,42760 .unused,
22199 },42761 },
22200 .dst_temps = .{.mem},42762 .dst_temps = .{.mem},
22201 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },42763 .clobbers = .{ .eflags = true },
22202 .each = .{ .once = &.{42764 .each = .{ .once = &.{
22203 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },42765 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
22204 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },42766 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
22205 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },42767 .{ .@"0:", ._, .movsxd, .tmp2q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
22206 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },42768 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
22207 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },42769 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
22208 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },42770 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
42771 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
42772 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
22209 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },42773 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22210 } },42774 } },
22211 }, .{42775 }, .{
22212 .required_features = .{ .sse, null, null, null },42776 .required_features = .{ .@"64bit", null, null, null },
22213 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },42777 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
22214 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},42778 .dst_constraints = .{.any_scalar_int},
22215 .patterns = &.{42779 .patterns = &.{
22216 .{ .src = .{ .to_mem, .none } },42780 .{ .src = .{ .to_mem, .none, .none } },
22217 },42781 },
22218 .call_frame = .{ .alignment = .@"16" },
22219 .extra_temps = .{42782 .extra_temps = .{
22220 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },42783 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22221 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },42784 .{ .type = .usize, .kind = .{ .reg = .rdi } },
22222 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },42785 .{ .type = .u64, .kind = .{ .reg = .rax } },
22223 .{ .type = .f32, .kind = .mem },42786 .{ .type = .u32, .kind = .{ .reg = .ecx } },
22224 .{ .type = .f16, .kind = .{ .reg = .ax } },42787 .unused,
42788 .unused,
42789 .unused,
42790 .unused,
42791 .unused,
42792 },
42793 .dst_temps = .{.mem},
42794 .clobbers = .{ .eflags = true },
42795 .each = .{ .once = &.{
42796 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
42797 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
42798 .{ .@"0:", ._, .mov, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
42799 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
42800 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
42801 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
42802 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
42803 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
42804 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
42805 } },
42806 }, .{
42807 .required_features = .{ .@"64bit", .slow_incdec, null, null },
42808 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
42809 .dst_constraints = .{.any_scalar_signed_int},
42810 .patterns = &.{
42811 .{ .src = .{ .to_mem, .none, .none } },
42812 },
42813 .extra_temps = .{
42814 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
42815 .{ .type = .usize, .kind = .{ .reg = .rsi } },
42816 .{ .type = .usize, .kind = .{ .reg = .rdi } },
42817 .{ .type = .u32, .kind = .{ .reg = .ecx } },
42818 .{ .type = .i64, .kind = .{ .reg = .rax } },
42819 .unused,
42820 .unused,
42821 .unused,
42822 .unused,
42823 },
42824 .dst_temps = .{.mem},
42825 .clobbers = .{ .eflags = true },
42826 .each = .{ .once = &.{
42827 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
42828 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
42829 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
42830 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ },
42831 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
42832 .{ ._, ._sq, .lod, ._, ._, ._, ._ },
42833 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
42834 .{ ._, ._r, .sa, .tmp4q, .ui(63), ._, ._ },
42835 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
42836 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
42837 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
42838 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
42839 } },
42840 }, .{
42841 .required_features = .{ .@"64bit", null, null, null },
42842 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
42843 .dst_constraints = .{.any_scalar_signed_int},
42844 .patterns = &.{
42845 .{ .src = .{ .to_mem, .none, .none } },
42846 },
42847 .extra_temps = .{
42848 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
42849 .{ .type = .usize, .kind = .{ .reg = .rsi } },
42850 .{ .type = .usize, .kind = .{ .reg = .rdi } },
42851 .{ .type = .u32, .kind = .{ .reg = .ecx } },
42852 .{ .type = .i64, .kind = .{ .reg = .rax } },
42853 .unused,
42854 .unused,
42855 .unused,
42856 .unused,
42857 },
42858 .dst_temps = .{.mem},
42859 .clobbers = .{ .eflags = true },
42860 .each = .{ .once = &.{
42861 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
42862 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
42863 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
42864 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ },
42865 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
42866 .{ ._, ._sq, .lod, ._, ._, ._, ._ },
42867 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
42868 .{ ._, ._r, .sa, .tmp4q, .ui(63), ._, ._ },
42869 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
42870 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
42871 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
42872 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
42873 } },
42874 }, .{
42875 .required_features = .{ .@"64bit", .slow_incdec, null, null },
42876 .src_constraints = .{ .any_scalar_int, .any, .any },
42877 .dst_constraints = .{.any_scalar_int},
42878 .patterns = &.{
42879 .{ .src = .{ .to_mem, .none, .none } },
42880 },
42881 .extra_temps = .{
42882 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
42883 .{ .type = .usize, .kind = .{ .reg = .rsi } },
42884 .{ .type = .usize, .kind = .{ .reg = .rdi } },
42885 .{ .type = .u32, .kind = .{ .reg = .ecx } },
42886 .{ .type = .u64, .kind = .{ .reg = .rax } },
42887 .unused,
42888 .unused,
42889 .unused,
42890 .unused,
42891 },
42892 .dst_temps = .{.mem},
42893 .clobbers = .{ .eflags = true },
42894 .each = .{ .once = &.{
42895 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
42896 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
42897 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
42898 .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ },
42899 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
42900 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
42901 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
42902 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
42903 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
42904 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
42905 } },
42906 }, .{
42907 .required_features = .{ .@"64bit", null, null, null },
42908 .src_constraints = .{ .any_scalar_int, .any, .any },
42909 .dst_constraints = .{.any_scalar_int},
42910 .patterns = &.{
42911 .{ .src = .{ .to_mem, .none, .none } },
42912 },
42913 .extra_temps = .{
42914 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
42915 .{ .type = .usize, .kind = .{ .reg = .rsi } },
42916 .{ .type = .usize, .kind = .{ .reg = .rdi } },
42917 .{ .type = .u32, .kind = .{ .reg = .ecx } },
42918 .{ .type = .u64, .kind = .{ .reg = .rax } },
22225 .unused,42919 .unused,
22226 .unused,42920 .unused,
22227 .unused,42921 .unused,
22228 .unused,42922 .unused,
22229 },42923 },
22230 .dst_temps = .{.mem},42924 .dst_temps = .{.mem},
22231 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },42925 .clobbers = .{ .eflags = true },
42926 .each = .{ .once = &.{
42927 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
42928 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
42929 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
42930 .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ },
42931 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
42932 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
42933 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
42934 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
42935 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
42936 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
42937 } },
42938 } }) catch |err| switch (err) {
42939 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
42940 @tagName(air_tag),
42941 dst_ty.fmt(pt),
42942 src_ty.fmt(pt),
42943 ops[0].tracking(cg),
42944 }),
42945 else => |e| return e,
42946 };
42947 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
42948 },
42949 .trunc => |air_tag| if (use_old) try cg.airTrunc(inst) else {
42950 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
42951 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
42952 var res: [1]Temp = undefined;
42953 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
42954 .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any },
42955 .dst_constraints = .{.{ .exact_signed_int = 1 }},
42956 .patterns = &.{
42957 .{ .src = .{ .to_mut_gpr, .none, .none } },
42958 },
42959 .dst_temps = .{.{ .ref = .src0 }},
42960 .clobbers = .{ .eflags = true },
42961 .each = .{ .once = &.{
42962 .{ ._, ._, .@"and", .dst0d, .si(1), ._, ._ },
42963 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
42964 } },
42965 }, .{
42966 .src_constraints = .{ .any_signed_int, .any, .any },
42967 .dst_constraints = .{.{ .exact_signed_int = 1 }},
42968 .patterns = &.{
42969 .{ .src = .{ .to_mem, .none, .none } },
42970 },
42971 .dst_temps = .{.{ .rc = .general_purpose }},
42972 .clobbers = .{ .eflags = true },
42973 .each = .{ .once = &.{
42974 .{ ._, ._, .movzx, .dst0d, .mem(.src0b), ._, ._ },
42975 .{ ._, ._, .@"and", .dst0d, .si(1), ._, ._ },
42976 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
42977 } },
42978 }, .{
42979 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
42980 .dst_constraints = .{.{ .exact_int = 8 }},
42981 .patterns = &.{
42982 .{ .src = .{ .to_mut_gpr, .none, .none } },
42983 },
42984 .dst_temps = .{.{ .ref = .src0 }},
42985 .each = .{ .once = &.{} },
42986 }, .{
42987 .src_constraints = .{ .any_signed_int, .any, .any },
42988 .dst_constraints = .{.{ .exact_signed_int = 8 }},
42989 .patterns = &.{
42990 .{ .src = .{ .to_mem, .none, .none } },
42991 },
42992 .dst_temps = .{.{ .rc = .general_purpose }},
42993 .each = .{ .once = &.{
42994 .{ ._, ._, .movsx, .dst0d, .mem(.src0b), ._, ._ },
42995 } },
42996 }, .{
42997 .src_constraints = .{ .any_unsigned_int, .any, .any },
42998 .dst_constraints = .{.{ .exact_unsigned_int = 8 }},
42999 .patterns = &.{
43000 .{ .src = .{ .to_mem, .none, .none } },
43001 },
43002 .dst_temps = .{.{ .rc = .general_purpose }},
43003 .each = .{ .once = &.{
43004 .{ ._, ._, .movzx, .dst0d, .mem(.src0b), ._, ._ },
43005 } },
43006 }, .{
43007 .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any },
43008 .dst_constraints = .{.{ .signed_int = .byte }},
43009 .patterns = &.{
43010 .{ .src = .{ .to_mut_gpr, .none, .none } },
43011 },
43012 .dst_temps = .{.{ .ref = .src0 }},
43013 .clobbers = .{ .eflags = true },
43014 .each = .{ .once = &.{
43015 .{ ._, ._l, .sa, .dst0b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
43016 .{ ._, ._r, .sa, .dst0b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
43017 } },
43018 }, .{
43019 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
43020 .dst_constraints = .{.{ .unsigned_int = .byte }},
43021 .patterns = &.{
43022 .{ .src = .{ .to_mut_gpr, .none, .none } },
43023 },
43024 .dst_temps = .{.{ .ref = .src0 }},
43025 .clobbers = .{ .eflags = true },
43026 .each = .{ .once = &.{
43027 .{ ._, ._, .@"and", .dst0b, .sa(.dst0, .add_umax), ._, ._ },
43028 } },
43029 }, .{
43030 .src_constraints = .{ .any_int, .any, .any },
43031 .dst_constraints = .{.{ .unsigned_int = .byte }},
43032 .patterns = &.{
43033 .{ .src = .{ .to_mem, .none, .none } },
43034 },
43035 .dst_temps = .{.{ .rc = .general_purpose }},
43036 .clobbers = .{ .eflags = true },
43037 .each = .{ .once = &.{
43038 .{ ._, ._, .movzx, .dst0d, .mem(.src0b), ._, ._ },
43039 .{ ._, ._, .@"and", .dst0b, .sa(.dst0, .add_umax), ._, ._ },
43040 } },
43041 }, .{
43042 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
43043 .dst_constraints = .{.{ .exact_int = 16 }},
43044 .patterns = &.{
43045 .{ .src = .{ .to_mut_gpr, .none, .none } },
43046 },
43047 .dst_temps = .{.{ .ref = .src0 }},
43048 .each = .{ .once = &.{} },
43049 }, .{
43050 .src_constraints = .{ .any_signed_int, .any, .any },
43051 .dst_constraints = .{.{ .exact_signed_int = 16 }},
43052 .patterns = &.{
43053 .{ .src = .{ .to_mem, .none, .none } },
43054 },
43055 .dst_temps = .{.{ .rc = .general_purpose }},
22232 .each = .{ .once = &.{43056 .each = .{ .once = &.{
22233 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43057 .{ ._, ._, .movsx, .dst0d, .mem(.src0w), ._, ._ },
22234 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
22235 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
22236 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22237 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },
22238 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },
22239 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
22240 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22241 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22242 } },43058 } },
22243 }, .{43059 }, .{
22244 .required_features = .{ .avx, null, null, null },43060 .src_constraints = .{ .any_unsigned_int, .any, .any },
22245 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },43061 .dst_constraints = .{.{ .exact_unsigned_int = 16 }},
22246 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
22247 .patterns = &.{43062 .patterns = &.{
22248 .{ .src = .{ .mem, .none } },43063 .{ .src = .{ .to_mem, .none, .none } },
22249 },43064 },
22250 .dst_temps = .{.{ .rc = .sse }},43065 .dst_temps = .{.{ .rc = .general_purpose }},
22251 .each = .{ .once = &.{43066 .each = .{ .once = &.{
22252 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },43067 .{ ._, ._, .movzx, .dst0d, .mem(.src0w), ._, ._ },
22253 .{ ._, .v_ss, .cvtsd2, .dst0x, .dst0x, .src0q, ._ },
22254 } },43068 } },
22255 }, .{43069 }, .{
22256 .required_features = .{ .avx, null, null, null },43070 .required_features = .{ .fast_imm16, null, null, null },
22257 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },43071 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
22258 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},43072 .dst_constraints = .{.{ .unsigned_int = .word }},
22259 .patterns = &.{43073 .patterns = &.{
22260 .{ .src = .{ .to_sse, .none } },43074 .{ .src = .{ .to_mut_gpr, .none, .none } },
22261 },43075 },
22262 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},43076 .dst_temps = .{.{ .ref = .src0 }},
43077 .clobbers = .{ .eflags = true },
22263 .each = .{ .once = &.{43078 .each = .{ .once = &.{
22264 .{ ._, .v_ss, .cvtsd2, .dst0x, .src0x, .src0q, ._ },43079 .{ ._, ._, .@"and", .dst0w, .sa(.dst0, .add_umax), ._, ._ },
22265 } },43080 } },
22266 }, .{43081 }, .{
22267 .required_features = .{ .sse2, null, null, null },43082 .required_features = .{ .fast_imm16, null, null, null },
22268 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },43083 .src_constraints = .{ .any_unsigned_int, .any, .any },
22269 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},43084 .dst_constraints = .{.{ .unsigned_int = .word }},
22270 .patterns = &.{43085 .patterns = &.{
22271 .{ .src = .{ .mem, .none } },43086 .{ .src = .{ .to_mem, .none, .none } },
22272 .{ .src = .{ .to_sse, .none } },
22273 },43087 },
22274 .dst_temps = .{.{ .rc = .sse }},43088 .dst_temps = .{.{ .rc = .general_purpose }},
43089 .clobbers = .{ .eflags = true },
22275 .each = .{ .once = &.{43090 .each = .{ .once = &.{
22276 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },43091 .{ ._, ._, .movzx, .dst0d, .mem(.src0w), ._, ._ },
22277 .{ ._, ._ss, .cvtsd2, .dst0x, .src0q, ._, ._ },43092 .{ ._, ._, .@"and", .dst0w, .sa(.dst0, .add_umax), ._, ._ },
22278 } },43093 } },
22279 }, .{43094 }, .{
22280 .required_features = .{ .x87, null, null, null },43095 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
22281 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },43096 .dst_constraints = .{.{ .exact_int = 32 }},
22282 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
22283 .patterns = &.{43097 .patterns = &.{
22284 .{ .src = .{ .to_mem, .none } },43098 .{ .src = .{ .to_mut_gpr, .none, .none } },
22285 },43099 },
22286 .extra_temps = .{43100 .dst_temps = .{.{ .ref = .src0 }},
22287 .{ .type = .f80, .kind = .{ .reg = .st7 } },43101 .each = .{ .once = &.{} },
22288 .unused,43102 }, .{
22289 .unused,43103 .src_constraints = .{ .any_int, .any, .any },
22290 .unused,43104 .dst_constraints = .{.{ .exact_int = 32 }},
22291 .unused,43105 .patterns = &.{
22292 .unused,43106 .{ .src = .{ .to_mem, .none, .none } },
22293 .unused,
22294 .unused,
22295 .unused,
22296 },43107 },
22297 .dst_temps = .{.mem},43108 .dst_temps = .{.{ .rc = .general_purpose }},
22298 .each = .{ .once = &.{43109 .each = .{ .once = &.{
22299 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },43110 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
22300 .{ ._, .f_p, .st, .dst0d, ._, ._, ._ },
22301 } },43111 } },
22302 }, .{43112 }, .{
22303 .required_features = .{ .avx, null, null, null },43113 .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any },
22304 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },43114 .dst_constraints = .{.{ .signed_int = .dword }},
22305 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .dword } }},
22306 .patterns = &.{43115 .patterns = &.{
22307 .{ .src = .{ .mem, .none } },43116 .{ .src = .{ .to_mut_gpr, .none, .none } },
22308 .{ .src = .{ .to_sse, .none } },
22309 },43117 },
22310 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},43118 .dst_temps = .{.{ .ref = .src0 }},
43119 .clobbers = .{ .eflags = true },
22311 .each = .{ .once = &.{43120 .each = .{ .once = &.{
22312 .{ ._, .v_ps, .cvtpd2, .dst0x, .src0x, ._, ._ },43121 .{ ._, ._l, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
43122 .{ ._, ._r, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
22313 } },43123 } },
22314 }, .{43124 }, .{
22315 .required_features = .{ .sse2, null, null, null },43125 .src_constraints = .{ .any_signed_int, .any, .any },
22316 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },43126 .dst_constraints = .{.{ .signed_int = .dword }},
22317 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .dword } }},
22318 .patterns = &.{43127 .patterns = &.{
22319 .{ .src = .{ .mem, .none } },43128 .{ .src = .{ .to_mem, .none, .none } },
22320 .{ .src = .{ .to_sse, .none } },
22321 },43129 },
22322 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},43130 .dst_temps = .{.{ .rc = .general_purpose }},
43131 .clobbers = .{ .eflags = true },
22323 .each = .{ .once = &.{43132 .each = .{ .once = &.{
22324 .{ ._, ._ps, .cvtpd2, .dst0x, .src0x, ._, ._ },43133 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
43134 .{ ._, ._l, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
43135 .{ ._, ._r, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
22325 } },43136 } },
22326 }, .{43137 }, .{
22327 .required_features = .{ .avx, null, null, null },43138 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
22328 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },43139 .dst_constraints = .{.{ .unsigned_int = .dword }},
22329 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }},
22330 .patterns = &.{43140 .patterns = &.{
22331 .{ .src = .{ .mem, .none } },43141 .{ .src = .{ .to_mut_gpr, .none, .none } },
22332 .{ .src = .{ .to_sse, .none } },
22333 },43142 },
22334 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},43143 .dst_temps = .{.{ .ref = .src0 }},
43144 .clobbers = .{ .eflags = true },
22335 .each = .{ .once = &.{43145 .each = .{ .once = &.{
22336 .{ ._, .v_ps, .cvtpd2, .dst0x, .src0y, ._, ._ },43146 .{ ._, ._, .@"and", .dst0d, .sa(.dst0, .add_umax), ._, ._ },
22337 } },43147 } },
22338 }, .{43148 }, .{
22339 .required_features = .{ .avx, null, null, null },43149 .src_constraints = .{ .any_unsigned_int, .any, .any },
22340 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },43150 .dst_constraints = .{.{ .unsigned_int = .dword }},
22341 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }},
22342 .patterns = &.{43151 .patterns = &.{
22343 .{ .src = .{ .to_mem, .none } },43152 .{ .src = .{ .to_mem, .none, .none } },
22344 },43153 },
22345 .extra_temps = .{43154 .dst_temps = .{.{ .rc = .general_purpose }},
22346 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22347 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
22348 .unused,
22349 .unused,
22350 .unused,
22351 .unused,
22352 .unused,
22353 .unused,
22354 .unused,
22355 },
22356 .dst_temps = .{.mem},
22357 .clobbers = .{ .eflags = true },43155 .clobbers = .{ .eflags = true },
22358 .each = .{ .once = &.{43156 .each = .{ .once = &.{
22359 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_size), ._, ._ },43157 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
22360 .{ .@"0:", .v_ps, .cvtpd2, .tmp1x, .memsia(.src0y, .@"2", .tmp0, .add_size), ._, ._ },43158 .{ ._, ._, .@"and", .dst0d, .sa(.dst0, .add_umax), ._, ._ },
22361 .{ ._, .v_ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
22362 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
22363 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22364 } },43159 } },
22365 }, .{43160 }, .{
22366 .required_features = .{ .sse2, null, null, null },43161 .required_features = .{ .@"64bit", null, null, null },
22367 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },43162 .src_constraints = .{ .any_int, .any, .any },
22368 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }},43163 .dst_constraints = .{.{ .exact_int = 64 }},
22369 .patterns = &.{43164 .patterns = &.{
22370 .{ .src = .{ .to_mem, .none } },43165 .{ .src = .{ .to_mem, .none, .none } },
22371 },43166 },
22372 .extra_temps = .{43167 .dst_temps = .{.{ .rc = .general_purpose }},
22373 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43168 .each = .{ .once = &.{
22374 .{ .type = .vector_2_f32, .kind = .{ .rc = .sse } },43169 .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },
22375 .unused,43170 } },
22376 .unused,43171 }, .{
22377 .unused,43172 .required_features = .{ .@"64bit", null, null, null },
22378 .unused,43173 .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any },
22379 .unused,43174 .dst_constraints = .{.{ .signed_int = .qword }},
22380 .unused,43175 .patterns = &.{
22381 .unused,43176 .{ .src = .{ .to_mut_gpr, .none, .none } },
22382 },43177 },
22383 .dst_temps = .{.mem},43178 .dst_temps = .{.{ .ref = .src0 }},
22384 .clobbers = .{ .eflags = true },43179 .clobbers = .{ .eflags = true },
22385 .each = .{ .once = &.{43180 .each = .{ .once = &.{
22386 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_size), ._, ._ },43181 .{ ._, ._l, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
22387 .{ .@"0:", ._ps, .cvtpd2, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_size), ._, ._ },43182 .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
22388 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1x, ._, ._ },
22389 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
22390 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22391 } },43183 } },
22392 }, .{43184 }, .{
22393 .required_features = .{ .x87, null, null, null },43185 .required_features = .{ .@"64bit", null, null, null },
22394 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },43186 .src_constraints = .{ .any_signed_int, .any, .any },
22395 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},43187 .dst_constraints = .{.{ .signed_int = .qword }},
22396 .patterns = &.{43188 .patterns = &.{
22397 .{ .src = .{ .to_mem, .none } },43189 .{ .src = .{ .to_mem, .none, .none } },
22398 },
22399 .extra_temps = .{
22400 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22401 .{ .type = .f80, .kind = .{ .reg = .st7 } },
22402 .unused,
22403 .unused,
22404 .unused,
22405 .unused,
22406 .unused,
22407 .unused,
22408 .unused,
22409 },43190 },
22410 .dst_temps = .{.mem},43191 .dst_temps = .{.{ .rc = .general_purpose }},
22411 .clobbers = .{ .eflags = true },43192 .clobbers = .{ .eflags = true },
22412 .each = .{ .once = &.{43193 .each = .{ .once = &.{
22413 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43194 .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },
22414 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },43195 .{ ._, ._l, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
22415 .{ ._, .f_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },43196 .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
22416 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
22417 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22418 } },43197 } },
22419 }, .{43198 }, .{
22420 .required_features = .{ .avx, null, null, null },43199 .required_features = .{ .@"64bit", .bmi2, null, null },
22421 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },43200 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
22422 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},43201 .dst_constraints = .{.{ .unsigned_int = .qword }},
22423 .patterns = &.{43202 .patterns = &.{
22424 .{ .src = .{ .to_mem, .none } },43203 .{ .src = .{ .mem, .none, .none } },
43204 .{ .src = .{ .to_gpr, .none, .none } },
22425 },43205 },
22426 .call_frame = .{ .size = 16, .alignment = .@"16" },43206 .dst_temps = .{.{ .rc = .general_purpose }},
22427 .extra_temps = .{43207 .clobbers = .{ .eflags = true },
22428 .{ .type = .f80, .kind = .{ .frame = .call_frame } },43208 .each = .{ .once = &.{
22429 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },43209 .{ ._, ._, .mov, .dst0d, .sa(.dst0, .add_bit_size), ._, ._ },
22430 .unused,43210 .{ ._, ._, .bzhi, .dst0q, .src0q, .dst0q, ._ },
22431 .unused,43211 } },
22432 .unused,43212 }, .{
22433 .unused,43213 .required_features = .{ .@"64bit", .bmi2, null, null },
22434 .unused,43214 .src_constraints = .{ .any_unsigned_int, .any, .any },
22435 .unused,43215 .dst_constraints = .{.{ .unsigned_int = .qword }},
22436 .unused,43216 .patterns = &.{
43217 .{ .src = .{ .to_mem, .none, .none } },
22437 },43218 },
22438 .dst_temps = .{.{ .reg = .xmm0 }},43219 .dst_temps = .{.{ .rc = .general_purpose }},
22439 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },43220 .clobbers = .{ .eflags = true },
22440 .each = .{ .once = &.{43221 .each = .{ .once = &.{
22441 .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },43222 .{ ._, ._, .mov, .dst0d, .sa(.dst0, .add_bit_size), ._, ._ },
22442 .{ ._, .v_dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },43223 .{ ._, ._, .bzhi, .dst0q, .mem(.src0q), .dst0q, ._ },
22443 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
22444 } },43224 } },
22445 }, .{43225 }, .{
22446 .required_features = .{ .sse2, null, null, null },43226 .required_features = .{ .@"64bit", null, null, null },
22447 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },43227 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
22448 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},43228 .dst_constraints = .{.{ .unsigned_int = .qword }},
22449 .patterns = &.{43229 .patterns = &.{
22450 .{ .src = .{ .to_mem, .none } },43230 .{ .src = .{ .mem, .none, .none } },
43231 .{ .src = .{ .to_gpr, .none, .none } },
22451 },43232 },
22452 .call_frame = .{ .size = 16, .alignment = .@"16" },43233 .dst_temps = .{.{ .rc = .general_purpose }},
22453 .extra_temps = .{43234 .clobbers = .{ .eflags = true },
22454 .{ .type = .f80, .kind = .{ .frame = .call_frame } },43235 .each = .{ .once = &.{
22455 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },43236 .{ ._, ._, .mov, .dst0q, .ua(.dst0, .add_umax), ._, ._ },
22456 .unused,43237 .{ ._, ._, .@"and", .dst0q, .src0q, ._, ._ },
22457 .unused,43238 } },
22458 .unused,43239 }, .{
22459 .unused,43240 .required_features = .{ .@"64bit", null, null, null },
22460 .unused,43241 .src_constraints = .{ .any_unsigned_int, .any, .any },
22461 .unused,43242 .dst_constraints = .{.{ .unsigned_int = .qword }},
22462 .unused,43243 .patterns = &.{
43244 .{ .src = .{ .to_mem, .none, .none } },
22463 },43245 },
22464 .dst_temps = .{.{ .reg = .xmm0 }},43246 .dst_temps = .{.{ .rc = .general_purpose }},
22465 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },43247 .clobbers = .{ .eflags = true },
22466 .each = .{ .once = &.{43248 .each = .{ .once = &.{
22467 .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },43249 .{ ._, ._, .mov, .dst0q, .ua(.dst0, .add_umax), ._, ._ },
22468 .{ ._, ._dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },43250 .{ ._, ._, .@"and", .dst0q, .mem(.src0q), ._, ._ },
22469 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
22470 } },43251 } },
22471 }, .{43252 }, .{
22472 .required_features = .{ .sse, null, null, null },43253 .required_features = .{ .@"64bit", null, null, null },
22473 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },43254 .src_constraints = .{ .any_int, .any, .any },
22474 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},43255 .dst_constraints = .{.{ .exact_remainder_int = .{ .of = .xword, .is = .xword } }},
22475 .patterns = &.{43256 .patterns = &.{
22476 .{ .src = .{ .to_mem, .none } },43257 .{ .src = .{ .to_mem, .none, .none } },
22477 },43258 },
22478 .call_frame = .{ .size = 16, .alignment = .@"16" },
22479 .extra_temps = .{43259 .extra_temps = .{
22480 .{ .type = .f80, .kind = .{ .frame = .call_frame } },43260 .{ .type = .usize, .kind = .{ .reg = .rsi } },
22481 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },43261 .{ .type = .usize, .kind = .{ .reg = .rdi } },
22482 .unused,43262 .{ .type = .u32, .kind = .{ .reg = .ecx } },
22483 .unused,43263 .unused,
22484 .unused,43264 .unused,
22485 .unused,43265 .unused,
...@@ -22487,26 +43267,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22487,26 +43267,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22487 .unused,43267 .unused,
22488 .unused,43268 .unused,
22489 },43269 },
22490 .dst_temps = .{.{ .reg = .xmm0 }},43270 .dst_temps = .{.mem},
22491 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22492 .each = .{ .once = &.{43271 .each = .{ .once = &.{
22493 .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ },43272 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
22494 .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ },43273 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
22495 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },43274 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ },
43275 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
22496 } },43276 } },
22497 }, .{43277 }, .{
22498 .required_features = .{ .avx, null, null, null },43278 .required_features = .{ .@"64bit", null, null, null },
22499 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },43279 .src_constraints = .{ .any_signed_int, .any, .any },
22500 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},43280 .dst_constraints = .{.{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
22501 .patterns = &.{43281 .patterns = &.{
22502 .{ .src = .{ .to_mem, .none } },43282 .{ .src = .{ .to_mem, .none, .none } },
22503 },43283 },
22504 .call_frame = .{ .size = 16, .alignment = .@"16" },
22505 .extra_temps = .{43284 .extra_temps = .{
22506 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43285 .{ .type = .usize, .kind = .{ .reg = .rsi } },
22507 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },43286 .{ .type = .usize, .kind = .{ .reg = .rdi } },
22508 .{ .type = .f80, .kind = .{ .frame = .call_frame } },43287 .{ .type = .u32, .kind = .{ .reg = .ecx } },
22509 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },43288 .unused,
22510 .unused,43289 .unused,
22511 .unused,43290 .unused,
22512 .unused,43291 .unused,
...@@ -22514,29 +43293,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22514,29 +43293,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22514 .unused,43293 .unused,
22515 },43294 },
22516 .dst_temps = .{.mem},43295 .dst_temps = .{.mem},
22517 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },43296 .clobbers = .{ .eflags = true },
22518 .each = .{ .once = &.{43297 .each = .{ .once = &.{
22519 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43298 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
22520 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },43299 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
22521 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },43300 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
22522 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },43301 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
22523 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },43302 .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },
22524 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },43303 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
22525 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43304 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
43305 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
22526 } },43306 } },
22527 }, .{43307 }, .{
22528 .required_features = .{ .sse4_1, null, null, null },43308 .required_features = .{ .@"64bit", null, null, null },
22529 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },43309 .src_constraints = .{ .any_signed_int, .any, .any },
22530 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},43310 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .xword, .is = .qword } }},
22531 .patterns = &.{43311 .patterns = &.{
22532 .{ .src = .{ .to_mem, .none } },43312 .{ .src = .{ .to_mem, .none, .none } },
22533 },43313 },
22534 .call_frame = .{ .size = 16, .alignment = .@"16" },
22535 .extra_temps = .{43314 .extra_temps = .{
22536 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43315 .{ .type = .usize, .kind = .{ .reg = .rsi } },
22537 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },43316 .{ .type = .usize, .kind = .{ .reg = .rdi } },
22538 .{ .type = .f80, .kind = .{ .frame = .call_frame } },43317 .{ .type = .u32, .kind = .{ .reg = .ecx } },
22539 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },43318 .unused,
22540 .unused,43319 .unused,
22541 .unused,43320 .unused,
22542 .unused,43321 .unused,
...@@ -22544,91 +43323,86 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22544,91 +43323,86 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22544 .unused,43323 .unused,
22545 },43324 },
22546 .dst_temps = .{.mem},43325 .dst_temps = .{.mem},
22547 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },43326 .clobbers = .{ .eflags = true },
22548 .each = .{ .once = &.{43327 .each = .{ .once = &.{
22549 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43328 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
22550 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },43329 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
22551 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },43330 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
22552 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },43331 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
22553 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },43332 .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },
22554 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },43333 .{ ._, ._l, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
22555 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43334 .{ ._, ._r, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
43335 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
43336 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
43337 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
22556 } },43338 } },
22557 }, .{43339 }, .{
22558 .required_features = .{ .sse2, null, null, null },43340 .required_features = .{ .@"64bit", null, null, null },
22559 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },43341 .src_constraints = .{ .any_signed_int, .any, .any },
22560 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},43342 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .xword, .is = .xword } }},
22561 .patterns = &.{43343 .patterns = &.{
22562 .{ .src = .{ .to_mem, .none } },43344 .{ .src = .{ .to_mem, .none, .none } },
22563 },43345 },
22564 .call_frame = .{ .size = 16, .alignment = .@"16" },
22565 .extra_temps = .{43346 .extra_temps = .{
22566 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43347 .{ .type = .usize, .kind = .{ .reg = .rsi } },
22567 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },43348 .{ .type = .usize, .kind = .{ .reg = .rdi } },
22568 .{ .type = .f80, .kind = .{ .frame = .call_frame } },43349 .{ .type = .u32, .kind = .{ .reg = .ecx } },
22569 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },43350 .unused,
22570 .{ .type = .f16, .kind = .{ .reg = .ax } },43351 .unused,
22571 .unused,43352 .unused,
22572 .unused,43353 .unused,
22573 .unused,43354 .unused,
22574 .unused,43355 .unused,
22575 },43356 },
22576 .dst_temps = .{.mem},43357 .dst_temps = .{.mem},
22577 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },43358 .clobbers = .{ .eflags = true },
22578 .each = .{ .once = &.{43359 .each = .{ .once = &.{
22579 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43360 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
22580 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },43361 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
22581 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },43362 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
22582 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },43363 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
22583 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },43364 .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ },
22584 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },43365 .{ ._, ._l, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
22585 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },43366 .{ ._, ._r, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
22586 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43367 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
22587 } },43368 } },
22588 }, .{43369 }, .{
22589 .required_features = .{ .sse, null, null, null },43370 .required_features = .{ .@"64bit", null, null, null },
22590 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },43371 .src_constraints = .{ .any_unsigned_int, .any, .any },
22591 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},43372 .dst_constraints = .{.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
22592 .patterns = &.{43373 .patterns = &.{
22593 .{ .src = .{ .to_mem, .none } },43374 .{ .src = .{ .to_mem, .none, .none } },
22594 },43375 },
22595 .call_frame = .{ .size = 16, .alignment = .@"16" },
22596 .extra_temps = .{43376 .extra_temps = .{
22597 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43377 .{ .type = .usize, .kind = .{ .reg = .rsi } },
22598 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },43378 .{ .type = .usize, .kind = .{ .reg = .rdi } },
22599 .{ .type = .f80, .kind = .{ .frame = .call_frame } },43379 .{ .type = .u32, .kind = .{ .reg = .ecx } },
22600 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },43380 .unused,
22601 .{ .type = .f16, .kind = .{ .reg = .ax } },43381 .unused,
22602 .unused,43382 .unused,
22603 .unused,43383 .unused,
22604 .unused,43384 .unused,
22605 .unused,43385 .unused,
22606 },43386 },
22607 .dst_temps = .{.mem},43387 .dst_temps = .{.mem},
22608 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22609 .each = .{ .once = &.{43388 .each = .{ .once = &.{
22610 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43389 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
22611 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },43390 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
22612 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },43391 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
22613 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },43392 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
22614 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp1x, ._, ._ },43393 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
22615 .{ ._, ._, .mov, .tmp4d, .mem(.tmp2d), ._, ._ },
22616 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
22617 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22618 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22619 } },43394 } },
22620 }, .{43395 }, .{
22621 .required_features = .{ .x87, null, null, null },43396 .required_features = .{ .@"64bit", .bmi2, null, null },
22622 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },43397 .src_constraints = .{ .any_unsigned_int, .any, .any },
22623 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},43398 .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
22624 .patterns = &.{43399 .patterns = &.{
22625 .{ .src = .{ .mem, .none } },43400 .{ .src = .{ .to_mem, .none, .none } },
22626 .{ .src = .{ .to_x87, .none } },
22627 },43401 },
22628 .extra_temps = .{43402 .extra_temps = .{
22629 .{ .type = .f80, .kind = .{ .reg = .st7 } },43403 .{ .type = .usize, .kind = .{ .reg = .rsi } },
22630 .unused,43404 .{ .type = .usize, .kind = .{ .reg = .rdi } },
22631 .unused,43405 .{ .type = .u32, .kind = .{ .reg = .ecx } },
22632 .unused,43406 .unused,
22633 .unused,43407 .unused,
22634 .unused,43408 .unused,
...@@ -22637,21 +43411,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22637,21 +43411,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22637 .unused,43411 .unused,
22638 },43412 },
22639 .dst_temps = .{.mem},43413 .dst_temps = .{.mem},
43414 .clobbers = .{ .eflags = true },
22640 .each = .{ .once = &.{43415 .each = .{ .once = &.{
22641 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },43416 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
22642 .{ ._, .f_p, .st, .dst0d, ._, ._, ._ },43417 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
43418 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
43419 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
43420 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
43421 .{ ._, ._, .bzhi, .tmp2q, .memad(.src0q, .add_size, -16), .tmp2q, ._ },
43422 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp2q, ._, ._ },
43423 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
22643 } },43424 } },
22644 }, .{43425 }, .{
22645 .required_features = .{ .x87, null, null, null },43426 .required_features = .{ .@"64bit", .bmi2, null, null },
22646 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },43427 .src_constraints = .{ .any_unsigned_int, .any, .any },
22647 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},43428 .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
22648 .patterns = &.{43429 .patterns = &.{
22649 .{ .src = .{ .to_mem, .none } },43430 .{ .src = .{ .to_mem, .none, .none } },
22650 },43431 },
22651 .extra_temps = .{43432 .extra_temps = .{
22652 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43433 .{ .type = .usize, .kind = .{ .reg = .rsi } },
22653 .{ .type = .f80, .kind = .{ .reg = .st7 } },43434 .{ .type = .usize, .kind = .{ .reg = .rdi } },
22654 .unused,43435 .{ .type = .u32, .kind = .{ .reg = .ecx } },
22655 .unused,43436 .unused,
22656 .unused,43437 .unused,
22657 .unused,43438 .unused,
...@@ -22662,24 +43443,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22662,24 +43443,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22662 .dst_temps = .{.mem},43443 .dst_temps = .{.mem},
22663 .clobbers = .{ .eflags = true },43444 .clobbers = .{ .eflags = true },
22664 .each = .{ .once = &.{43445 .each = .{ .once = &.{
22665 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43446 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
22666 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },43447 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
22667 .{ ._, .f_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },43448 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
22668 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },43449 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
22669 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43450 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
43451 .{ ._, ._, .bzhi, .tmp2q, .memad(.src0q, .add_size, -8), .tmp2q, ._ },
43452 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },
22670 } },43453 } },
22671 }, .{43454 }, .{
22672 .required_features = .{ .x87, null, null, null },43455 .required_features = .{ .@"64bit", null, null, null },
22673 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },43456 .src_constraints = .{ .any_unsigned_int, .any, .any },
22674 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},43457 .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
22675 .patterns = &.{43458 .patterns = &.{
22676 .{ .src = .{ .mem, .none } },43459 .{ .src = .{ .to_mem, .none, .none } },
22677 .{ .src = .{ .to_x87, .none } },
22678 },43460 },
22679 .extra_temps = .{43461 .extra_temps = .{
22680 .{ .type = .f80, .kind = .{ .reg = .st7 } },43462 .{ .type = .usize, .kind = .{ .reg = .rsi } },
22681 .unused,43463 .{ .type = .usize, .kind = .{ .reg = .rdi } },
22682 .unused,43464 .{ .type = .u32, .kind = .{ .reg = .ecx } },
22683 .unused,43465 .unused,
22684 .unused,43466 .unused,
22685 .unused,43467 .unused,
...@@ -22688,21 +43470,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22688,21 +43470,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22688 .unused,43470 .unused,
22689 },43471 },
22690 .dst_temps = .{.mem},43472 .dst_temps = .{.mem},
43473 .clobbers = .{ .eflags = true },
22691 .each = .{ .once = &.{43474 .each = .{ .once = &.{
22692 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },43475 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
22693 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },43476 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
43477 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
43478 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
43479 .{ ._, ._, .mov, .tmp0q, .ua(.dst0, .add_umax), ._, ._ },
43480 .{ ._, ._, .@"and", .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },
43481 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
43482 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
22694 } },43483 } },
22695 }, .{43484 }, .{
22696 .required_features = .{ .x87, null, null, null },43485 .required_features = .{ .@"64bit", null, null, null },
22697 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },43486 .src_constraints = .{ .any_unsigned_int, .any, .any },
22698 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},43487 .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
22699 .patterns = &.{43488 .patterns = &.{
22700 .{ .src = .{ .to_mem, .none } },43489 .{ .src = .{ .to_mem, .none, .none } },
22701 },43490 },
22702 .extra_temps = .{43491 .extra_temps = .{
22703 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43492 .{ .type = .usize, .kind = .{ .reg = .rsi } },
22704 .{ .type = .f80, .kind = .{ .reg = .st7 } },43493 .{ .type = .usize, .kind = .{ .reg = .rdi } },
22705 .unused,43494 .{ .type = .u32, .kind = .{ .reg = .ecx } },
22706 .unused,43495 .unused,
22707 .unused,43496 .unused,
22708 .unused,43497 .unused,
...@@ -22713,24 +43502,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22713,24 +43502,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22713 .dst_temps = .{.mem},43502 .dst_temps = .{.mem},
22714 .clobbers = .{ .eflags = true },43503 .clobbers = .{ .eflags = true },
22715 .each = .{ .once = &.{43504 .each = .{ .once = &.{
22716 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43505 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
22717 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },43506 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
22718 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },43507 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
22719 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },43508 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
22720 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43509 .{ ._, ._, .mov, .tmp0q, .ua(.dst0, .add_umax), ._, ._ },
43510 .{ ._, ._, .@"and", .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ },
43511 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
22721 } },43512 } },
22722 }, .{43513 }, .{
22723 .required_features = .{ .sse, null, null, null },43514 .required_features = .{ .avx, null, null, null },
22724 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },43515 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
22725 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},43516 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }},
22726 .patterns = &.{43517 .patterns = &.{
22727 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },43518 .{ .src = .{ .to_sse, .none, .none } },
22728 },43519 },
22729 .call_frame = .{ .alignment = .@"16" },
22730 .extra_temps = .{43520 .extra_temps = .{
22731 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },43521 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
22732 .unused,43522 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
22733 .unused,43523 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
22734 .unused,43524 .unused,
22735 .unused,43525 .unused,
22736 .unused,43526 .unused,
...@@ -22738,23 +43528,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22738,23 +43528,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22738 .unused,43528 .unused,
22739 .unused,43529 .unused,
22740 },43530 },
22741 .dst_temps = .{.{ .ref = .src0 }},43531 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
22742 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22743 .each = .{ .once = &.{43532 .each = .{ .once = &.{
22744 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },43533 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
43534 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
43535 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
43536 .{ ._, .vp_b, .add, .dst0x, .dst0x, .lea(.tmp0x), ._ },
43537 .{ ._, .vp_, .xor, .dst0x, .dst0x, .lea(.tmp0x), ._ },
22745 } },43538 } },
22746 }, .{43539 }, .{
22747 .required_features = .{ .avx, null, null, null },43540 .required_features = .{ .avx, null, null, null },
22748 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },43541 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
22749 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},43542 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
22750 .patterns = &.{43543 .patterns = &.{
22751 .{ .src = .{ .to_mem, .none } },43544 .{ .src = .{ .to_sse, .none, .none } },
22752 },43545 },
22753 .call_frame = .{ .alignment = .@"16" },
22754 .extra_temps = .{43546 .extra_temps = .{
22755 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43547 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
22756 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },43548 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
22757 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },43549 .unused,
22758 .unused,43550 .unused,
22759 .unused,43551 .unused,
22760 .unused,43552 .unused,
...@@ -22762,28 +43554,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22762,28 +43554,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22762 .unused,43554 .unused,
22763 .unused,43555 .unused,
22764 },43556 },
22765 .dst_temps = .{.mem},43557 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
22766 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22767 .each = .{ .once = &.{43558 .each = .{ .once = &.{
22768 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43559 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
22769 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },43560 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
22770 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22771 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
22772 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22773 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22774 } },43561 } },
22775 }, .{43562 }, .{
22776 .required_features = .{ .sse4_1, null, null, null },43563 .required_features = .{ .sse2, null, null, null },
22777 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },43564 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
22778 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},43565 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }},
22779 .patterns = &.{43566 .patterns = &.{
22780 .{ .src = .{ .to_mem, .none } },43567 .{ .src = .{ .to_mut_sse, .none, .none } },
22781 },43568 },
22782 .call_frame = .{ .alignment = .@"16" },
22783 .extra_temps = .{43569 .extra_temps = .{
22784 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43570 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
22785 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },43571 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
22786 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },43572 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
22787 .unused,43573 .unused,
22788 .unused,43574 .unused,
22789 .unused,43575 .unused,
...@@ -22791,89 +43577,71 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22791,89 +43577,71 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22791 .unused,43577 .unused,
22792 .unused,43578 .unused,
22793 },43579 },
22794 .dst_temps = .{.mem},43580 .dst_temps = .{.{ .ref = .src0 }},
22795 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22796 .each = .{ .once = &.{43581 .each = .{ .once = &.{
22797 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43582 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
22798 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },43583 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
22799 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },43584 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
22800 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },43585 .{ ._, .p_b, .add, .dst0x, .lea(.tmp0x), ._, ._ },
22801 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },43586 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
22802 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22803 } },43587 } },
22804 }, .{43588 }, .{
22805 .required_features = .{ .sse2, null, null, null },43589 .required_features = .{ .sse2, null, null, null },
22806 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },43590 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
22807 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},43591 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
22808 .patterns = &.{43592 .patterns = &.{
22809 .{ .src = .{ .to_mem, .none } },43593 .{ .src = .{ .to_mut_sse, .none, .none } },
22810 },43594 },
22811 .call_frame = .{ .alignment = .@"16" },
22812 .extra_temps = .{43595 .extra_temps = .{
22813 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43596 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
22814 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },43597 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
22815 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },43598 .unused,
22816 .{ .type = .f16, .kind = .{ .reg = .ax } },43599 .unused,
22817 .unused,43600 .unused,
22818 .unused,43601 .unused,
22819 .unused,43602 .unused,
22820 .unused,43603 .unused,
22821 .unused,43604 .unused,
22822 },43605 },
22823 .dst_temps = .{.mem},43606 .dst_temps = .{.{ .ref = .src0 }},
22824 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22825 .each = .{ .once = &.{43607 .each = .{ .once = &.{
22826 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43608 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
22827 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },43609 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
22828 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22829 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
22830 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
22831 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22832 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22833 } },43610 } },
22834 }, .{43611 }, .{
22835 .required_features = .{ .sse, null, null, null },43612 .required_features = .{ .sse, null, null, null },
22836 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },43613 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
22837 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},43614 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
22838 .patterns = &.{43615 .patterns = &.{
22839 .{ .src = .{ .to_mem, .none } },43616 .{ .src = .{ .to_mut_sse, .none, .none } },
22840 },43617 },
22841 .call_frame = .{ .alignment = .@"16" },
22842 .extra_temps = .{43618 .extra_temps = .{
22843 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43619 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
22844 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },43620 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
22845 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },43621 .unused,
22846 .{ .type = .f32, .kind = .mem },43622 .unused,
22847 .{ .type = .f16, .kind = .{ .reg = .ax } },43623 .unused,
22848 .unused,43624 .unused,
22849 .unused,43625 .unused,
22850 .unused,43626 .unused,
22851 .unused,43627 .unused,
22852 },43628 },
22853 .dst_temps = .{.mem},43629 .dst_temps = .{.{ .ref = .src0 }},
22854 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22855 .each = .{ .once = &.{43630 .each = .{ .once = &.{
22856 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43631 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
22857 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },43632 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
22858 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22859 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },
22860 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },
22861 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
22862 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22863 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22864 } },43633 } },
22865 }, .{43634 }, .{
22866 .required_features = .{ .sse, null, null, null },43635 .required_features = .{ .avx2, null, null, null },
22867 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },43636 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any },
22868 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},43637 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }},
22869 .patterns = &.{43638 .patterns = &.{
22870 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },43639 .{ .src = .{ .to_sse, .none, .none } },
22871 },43640 },
22872 .call_frame = .{ .alignment = .@"16" },
22873 .extra_temps = .{43641 .extra_temps = .{
22874 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },43642 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
22875 .unused,43643 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
22876 .unused,43644 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
22877 .unused,43645 .unused,
22878 .unused,43646 .unused,
22879 .unused,43647 .unused,
...@@ -22881,23 +43649,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22881,23 +43649,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22881 .unused,43649 .unused,
22882 .unused,43650 .unused,
22883 },43651 },
22884 .dst_temps = .{.{ .ref = .src0 }},43652 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
22885 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22886 .each = .{ .once = &.{43653 .each = .{ .once = &.{
22887 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },43654 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
43655 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
43656 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
43657 .{ ._, .vp_b, .add, .dst0y, .dst0y, .lea(.tmp0y), ._ },
43658 .{ ._, .vp_, .xor, .dst0y, .dst0y, .lea(.tmp0y), ._ },
22888 } },43659 } },
22889 }, .{43660 }, .{
22890 .required_features = .{ .avx, null, null, null },43661 .required_features = .{ .avx2, null, null, null },
22891 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },43662 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any },
22892 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},43663 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }},
22893 .patterns = &.{43664 .patterns = &.{
22894 .{ .src = .{ .to_mem, .none } },43665 .{ .src = .{ .to_sse, .none, .none } },
22895 },43666 },
22896 .call_frame = .{ .alignment = .@"16" },
22897 .extra_temps = .{43667 .extra_temps = .{
22898 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43668 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
22899 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },43669 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
22900 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },43670 .unused,
22901 .unused,43671 .unused,
22902 .unused,43672 .unused,
22903 .unused,43673 .unused,
...@@ -22905,58 +43675,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22905,58 +43675,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22905 .unused,43675 .unused,
22906 .unused,43676 .unused,
22907 },43677 },
22908 .dst_temps = .{.mem},43678 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
22909 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22910 .each = .{ .once = &.{43679 .each = .{ .once = &.{
22911 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43680 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
22912 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },43681 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
22913 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22914 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
22915 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
22916 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22917 } },43682 } },
22918 }, .{43683 }, .{
22919 .required_features = .{ .sse2, null, null, null },43684 .required_features = .{ .avx2, null, null, null },
22920 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },43685 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any },
22921 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},43686 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }},
22922 .patterns = &.{43687 .patterns = &.{
22923 .{ .src = .{ .to_mem, .none } },43688 .{ .src = .{ .to_mem, .none, .none } },
22924 },43689 },
22925 .call_frame = .{ .alignment = .@"16" },
22926 .extra_temps = .{43690 .extra_temps = .{
22927 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43691 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22928 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },43692 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
22929 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },43693 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
22930 .unused,43694 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
22931 .unused,43695 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
22932 .unused,43696 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
22933 .unused,43697 .unused,
22934 .unused,43698 .unused,
22935 .unused,43699 .unused,
22936 },43700 },
22937 .dst_temps = .{.mem},43701 .dst_temps = .{.mem},
22938 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },43702 .clobbers = .{ .eflags = true },
22939 .each = .{ .once = &.{43703 .each = .{ .once = &.{
43704 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
43705 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
43706 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
43707 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
22940 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43708 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22941 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },43709 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
22942 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },43710 .{ ._, .vp_b, .add, .tmp3y, .tmp3y, .tmp2y, ._ },
22943 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },43711 .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp2y, ._ },
22944 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },43712 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp3y, ._, ._ },
43713 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
22945 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43714 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22946 } },43715 } },
22947 }, .{43716 }, .{
22948 .required_features = .{ .sse, null, null, null },43717 .required_features = .{ .avx2, null, null, null },
22949 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },43718 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any },
22950 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},43719 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }},
22951 .patterns = &.{43720 .patterns = &.{
22952 .{ .src = .{ .to_mem, .none } },43721 .{ .src = .{ .to_mem, .none, .none } },
22953 },43722 },
22954 .call_frame = .{ .alignment = .@"16" },
22955 .extra_temps = .{43723 .extra_temps = .{
22956 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43724 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22957 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },43725 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },
22958 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },43726 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },
22959 .unused,43727 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
22960 .unused,43728 .unused,
22961 .unused,43729 .unused,
22962 .unused,43730 .unused,
...@@ -22964,52 +43732,61 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22964,52 +43732,61 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22964 .unused,43732 .unused,
22965 },43733 },
22966 .dst_temps = .{.mem},43734 .dst_temps = .{.mem},
22967 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },43735 .clobbers = .{ .eflags = true },
22968 .each = .{ .once = &.{43736 .each = .{ .once = &.{
43737 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
43738 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
22969 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43739 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22970 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },43740 .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
22971 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },43741 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },
22972 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },43742 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
22973 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
22974 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43743 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22975 } },43744 } },
22976 }, .{43745 }, .{
22977 .required_features = .{ .sse, null, null, null },43746 .required_features = .{ .avx, null, null, null },
22978 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },43747 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
22979 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},43748 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }},
22980 .patterns = &.{43749 .patterns = &.{
22981 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },43750 .{ .src = .{ .to_mem, .none, .none } },
22982 },43751 },
22983 .call_frame = .{ .alignment = .@"16" },
22984 .extra_temps = .{43752 .extra_temps = .{
22985 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },43753 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22986 .unused,43754 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
22987 .unused,43755 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
22988 .unused,43756 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
22989 .unused,43757 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
22990 .unused,43758 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
22991 .unused,43759 .unused,
22992 .unused,43760 .unused,
22993 .unused,43761 .unused,
22994 },43762 },
22995 .dst_temps = .{.{ .ref = .src0 }},43763 .dst_temps = .{.mem},
22996 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },43764 .clobbers = .{ .eflags = true },
22997 .each = .{ .once = &.{43765 .each = .{ .once = &.{
22998 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },43766 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
43767 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
43768 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
43769 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
43770 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
43771 .{ .@"0:", .vp_, .@"and", .tmp3x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
43772 .{ ._, .vp_b, .add, .tmp3x, .tmp3x, .tmp2x, ._ },
43773 .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp2x, ._ },
43774 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
43775 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
43776 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22999 } },43777 } },
23000 }, .{43778 }, .{
23001 .required_features = .{ .avx, null, null, null },43779 .required_features = .{ .avx, null, null, null },
23002 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },43780 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
23003 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},43781 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
23004 .patterns = &.{43782 .patterns = &.{
23005 .{ .src = .{ .to_mem, .none } },43783 .{ .src = .{ .to_mem, .none, .none } },
23006 },43784 },
23007 .call_frame = .{ .alignment = .@"16" },
23008 .extra_temps = .{43785 .extra_temps = .{
23009 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43786 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23010 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },43787 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
23011 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },43788 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
23012 .unused,43789 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
23013 .unused,43790 .unused,
23014 .unused,43791 .unused,
23015 .unused,43792 .unused,
...@@ -23017,57 +43794,62 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23017,57 +43794,62 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23017 .unused,43794 .unused,
23018 },43795 },
23019 .dst_temps = .{.mem},43796 .dst_temps = .{.mem},
23020 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },43797 .clobbers = .{ .eflags = true },
23021 .each = .{ .once = &.{43798 .each = .{ .once = &.{
43799 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
43800 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
23022 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43801 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23023 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },43802 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
23024 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },43803 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
23025 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },43804 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
23026 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
23027 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43805 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23028 } },43806 } },
23029 }, .{43807 }, .{
23030 .required_features = .{ .sse2, null, null, null },43808 .required_features = .{ .sse2, null, null, null },
23031 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },43809 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
23032 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},43810 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }},
23033 .patterns = &.{43811 .patterns = &.{
23034 .{ .src = .{ .to_mem, .none } },43812 .{ .src = .{ .to_mem, .none, .none } },
23035 },43813 },
23036 .call_frame = .{ .alignment = .@"16" },
23037 .extra_temps = .{43814 .extra_temps = .{
23038 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43815 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23039 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },43816 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
23040 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },43817 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
23041 .unused,43818 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
23042 .unused,43819 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
23043 .unused,43820 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
23044 .unused,43821 .unused,
23045 .unused,43822 .unused,
23046 .unused,43823 .unused,
23047 },43824 },
23048 .dst_temps = .{.mem},43825 .dst_temps = .{.mem},
23049 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },43826 .clobbers = .{ .eflags = true },
23050 .each = .{ .once = &.{43827 .each = .{ .once = &.{
43828 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
43829 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
43830 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
43831 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
23051 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43832 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23052 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },43833 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp1x, ._, ._ },
23053 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },43834 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
23054 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },43835 .{ ._, .p_b, .add, .tmp3x, .tmp2x, ._, ._ },
23055 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },43836 .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ },
43837 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
43838 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
23056 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43839 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23057 } },43840 } },
23058 }, .{43841 }, .{
23059 .required_features = .{ .sse, null, null, null },43842 .required_features = .{ .sse2, null, null, null },
23060 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },43843 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
23061 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},43844 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
23062 .patterns = &.{43845 .patterns = &.{
23063 .{ .src = .{ .to_mem, .none } },43846 .{ .src = .{ .to_mem, .none, .none } },
23064 },43847 },
23065 .call_frame = .{ .alignment = .@"16" },
23066 .extra_temps = .{43848 .extra_temps = .{
23067 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43849 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23068 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },43850 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
23069 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },43851 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
23070 .unused,43852 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
23071 .unused,43853 .unused,
23072 .unused,43854 .unused,
23073 .unused,43855 .unused,
...@@ -23075,51 +43857,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23075,51 +43857,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23075 .unused,43857 .unused,
23076 },43858 },
23077 .dst_temps = .{.mem},43859 .dst_temps = .{.mem},
23078 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },43860 .clobbers = .{ .eflags = true },
23079 .each = .{ .once = &.{43861 .each = .{ .once = &.{
43862 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
43863 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
23080 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43864 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23081 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },43865 .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
23082 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },43866 .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
23083 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },43867 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
23084 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },43868 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
23085 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43869 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23086 } },43870 } },
23087 }, .{43871 }, .{
23088 .required_features = .{ .sse, null, null, null },43872 .required_features = .{ .sse, null, null, null },
23089 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },43873 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
23090 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},43874 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
23091 .patterns = &.{43875 .patterns = &.{
23092 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },43876 .{ .src = .{ .to_mem, .none, .none } },
23093 },43877 },
23094 .call_frame = .{ .alignment = .@"16" },
23095 .extra_temps = .{43878 .extra_temps = .{
23096 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },43879 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23097 .unused,43880 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
23098 .unused,43881 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
23099 .unused,43882 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
23100 .unused,43883 .unused,
23101 .unused,43884 .unused,
23102 .unused,43885 .unused,
23103 .unused,43886 .unused,
23104 .unused,43887 .unused,
23105 },43888 },
23106 .dst_temps = .{.{ .reg = .st0 }},43889 .dst_temps = .{.mem},
23107 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },43890 .clobbers = .{ .eflags = true },
23108 .each = .{ .once = &.{43891 .each = .{ .once = &.{
23109 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },43892 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
43893 .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ },
43894 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
43895 .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
43896 .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
43897 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
43898 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
43899 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23110 } },43900 } },
23111 }, .{43901 }, .{
23112 .required_features = .{ .avx, null, null, null },43902 .required_features = .{ .slow_incdec, null, null, null },
23113 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },43903 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
23114 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},43904 .dst_constraints = .{.{ .multiple_scalar_exact_signed_int = .{ .of = .byte, .is = 1 } }},
23115 .patterns = &.{43905 .patterns = &.{
23116 .{ .src = .{ .to_mem, .none } },43906 .{ .src = .{ .to_mem, .none, .none } },
23117 },43907 },
23118 .call_frame = .{ .alignment = .@"16" },
23119 .extra_temps = .{43908 .extra_temps = .{
23120 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43909 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23121 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },43910 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
23122 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },43911 .unused,
23123 .unused,43912 .unused,
23124 .unused,43913 .unused,
23125 .unused,43914 .unused,
...@@ -23128,28 +43917,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23128,28 +43917,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23128 .unused,43917 .unused,
23129 },43918 },
23130 .dst_temps = .{.mem},43919 .dst_temps = .{.mem},
23131 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },43920 .clobbers = .{ .eflags = true },
23132 .each = .{ .once = &.{43921 .each = .{ .once = &.{
23133 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43922 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23134 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },43923 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
23135 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },43924 .{ ._, ._, .@"and", .tmp1b, .si(1), ._, ._ },
23136 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },43925 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },
23137 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },43926 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
23138 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },43927 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
23139 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43928 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23140 } },43929 } },
23141 }, .{43930 }, .{
23142 .required_features = .{ .sse2, null, null, null },43931 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
23143 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },43932 .dst_constraints = .{.{ .multiple_scalar_exact_signed_int = .{ .of = .byte, .is = 1 } }},
23144 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
23145 .patterns = &.{43933 .patterns = &.{
23146 .{ .src = .{ .to_mem, .none } },43934 .{ .src = .{ .to_mem, .none, .none } },
23147 },43935 },
23148 .call_frame = .{ .alignment = .@"16" },
23149 .extra_temps = .{43936 .extra_temps = .{
23150 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43937 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23151 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },43938 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
23152 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },43939 .unused,
23153 .unused,43940 .unused,
23154 .unused,43941 .unused,
23155 .unused,43942 .unused,
...@@ -23158,28 +43945,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23158,28 +43945,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23158 .unused,43945 .unused,
23159 },43946 },
23160 .dst_temps = .{.mem},43947 .dst_temps = .{.mem},
23161 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },43948 .clobbers = .{ .eflags = true },
23162 .each = .{ .once = &.{43949 .each = .{ .once = &.{
23163 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43950 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23164 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },43951 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
23165 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },43952 .{ ._, ._, .@"and", .tmp1b, .si(1), ._, ._ },
23166 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },43953 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },
23167 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },43954 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
23168 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },43955 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
23169 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43956 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
23170 } },43957 } },
23171 }, .{43958 }, .{
23172 .required_features = .{ .sse, null, null, null },43959 .required_features = .{ .slow_incdec, null, null, null },
23173 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },43960 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
23174 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},43961 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
23175 .patterns = &.{43962 .patterns = &.{
23176 .{ .src = .{ .to_mem, .none } },43963 .{ .src = .{ .to_mem, .none, .none } },
23177 },43964 },
23178 .call_frame = .{ .alignment = .@"16" },
23179 .extra_temps = .{43965 .extra_temps = .{
23180 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43966 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23181 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },43967 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
23182 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },43968 .unused,
23183 .unused,43969 .unused,
23184 .unused,43970 .unused,
23185 .unused,43971 .unused,
...@@ -23188,77 +43974,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23188,77 +43974,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23188 .unused,43974 .unused,
23189 },43975 },
23190 .dst_temps = .{.mem},43976 .dst_temps = .{.mem},
23191 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },43977 .clobbers = .{ .eflags = true },
23192 .each = .{ .once = &.{43978 .each = .{ .once = &.{
23193 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43979 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23194 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },43980 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
23195 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },43981 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
23196 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },43982 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
23197 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },43983 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
23198 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },43984 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
23199 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43985 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23200 } },43986 } },
23201 } }) catch |err| switch (err) {
23202 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
23203 @tagName(air_tag),
23204 ty_op.ty.toType().fmt(pt),
23205 cg.typeOf(ty_op.operand).fmt(pt),
23206 ops[0].tracking(cg),
23207 }),
23208 else => |e| return e,
23209 };
23210 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
23211 },
23212 .fpext => |air_tag| if (use_old) try cg.airFpext(inst) else {
23213 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
23214 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
23215 var res: [1]Temp = undefined;
23216 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
23217 .required_features = .{ .f16c, null, null, null },
23218 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
23219 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
23220 .patterns = &.{
23221 .{ .src = .{ .to_sse, .none } },
23222 },
23223 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23224 .each = .{ .once = &.{
23225 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
23226 } },
23227 }, .{43987 }, .{
23228 .required_features = .{ .f16c, null, null, null },43988 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
23229 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },43989 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
23230 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }},
23231 .patterns = &.{
23232 .{ .src = .{ .mem, .none } },
23233 .{ .src = .{ .to_sse, .none } },
23234 },
23235 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23236 .each = .{ .once = &.{
23237 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
23238 } },
23239 }, .{
23240 .required_features = .{ .f16c, null, null, null },
23241 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },
23242 .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .dword } }},
23243 .patterns = &.{
23244 .{ .src = .{ .mem, .none } },
23245 .{ .src = .{ .to_sse, .none } },
23246 },
23247 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23248 .each = .{ .once = &.{
23249 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
23250 } },
23251 }, .{
23252 .required_features = .{ .sse, null, null, null },
23253 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
23254 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
23255 .patterns = &.{43990 .patterns = &.{
23256 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },43991 .{ .src = .{ .to_mem, .none, .none } },
23257 },43992 },
23258 .call_frame = .{ .alignment = .@"16" },
23259 .extra_temps = .{43993 .extra_temps = .{
23260 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },43994 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23261 .unused,43995 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
23262 .unused,43996 .unused,
23263 .unused,43997 .unused,
23264 .unused,43998 .unused,
...@@ -23267,21 +44001,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23267,21 +44001,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23267 .unused,44001 .unused,
23268 .unused,44002 .unused,
23269 },44003 },
23270 .dst_temps = .{.{ .ref = .src0 }},44004 .dst_temps = .{.mem},
23271 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },44005 .clobbers = .{ .eflags = true },
23272 .each = .{ .once = &.{44006 .each = .{ .once = &.{
23273 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },44007 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44008 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
44009 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
44010 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
44011 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
44012 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
44013 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
23274 } },44014 } },
23275 }, .{44015 }, .{
23276 .required_features = .{ .f16c, null, null, null },44016 .required_features = .{ .slow_incdec, null, null, null },
23277 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },44017 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
23278 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }},44018 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
23279 .patterns = &.{44019 .patterns = &.{
23280 .{ .src = .{ .to_mem, .none } },44020 .{ .src = .{ .to_mem, .none, .none } },
23281 },44021 },
23282 .extra_temps = .{44022 .extra_temps = .{
23283 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44023 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23284 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },44024 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23285 .unused,44025 .unused,
23286 .unused,44026 .unused,
23287 .unused,44027 .unused,
...@@ -23293,24 +44033,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23293,24 +44033,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23293 .dst_temps = .{.mem},44033 .dst_temps = .{.mem},
23294 .clobbers = .{ .eflags = true },44034 .clobbers = .{ .eflags = true },
23295 .each = .{ .once = &.{44035 .each = .{ .once = &.{
23296 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },44036 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23297 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },44037 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
23298 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ },44038 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
23299 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },44039 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
44040 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
23300 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44041 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23301 } },44042 } },
23302 }, .{44043 }, .{
23303 .required_features = .{ .avx, null, null, null },44044 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
23304 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },44045 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
23305 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
23306 .patterns = &.{44046 .patterns = &.{
23307 .{ .src = .{ .to_mem, .none } },44047 .{ .src = .{ .to_mem, .none, .none } },
23308 },44048 },
23309 .call_frame = .{ .alignment = .@"16" },
23310 .extra_temps = .{44049 .extra_temps = .{
23311 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44050 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23312 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },44051 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23313 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },44052 .unused,
23314 .unused,44053 .unused,
23315 .unused,44054 .unused,
23316 .unused,44055 .unused,
...@@ -23319,28 +44058,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23319,28 +44058,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23319 .unused,44058 .unused,
23320 },44059 },
23321 .dst_temps = .{.mem},44060 .dst_temps = .{.mem},
23322 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },44061 .clobbers = .{ .eflags = true },
23323 .each = .{ .once = &.{44062 .each = .{ .once = &.{
23324 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },44063 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23325 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },44064 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
23326 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },44065 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
23327 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },44066 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
23328 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },44067 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
23329 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },44068 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
23330 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23331 } },44069 } },
23332 }, .{44070 }, .{
23333 .required_features = .{ .sse2, null, null, null },44071 .required_features = .{ .slow_incdec, null, null, null },
23334 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },44072 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
23335 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},44073 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
23336 .patterns = &.{44074 .patterns = &.{
23337 .{ .src = .{ .to_mem, .none } },44075 .{ .src = .{ .to_mem, .none, .none } },
23338 },44076 },
23339 .call_frame = .{ .alignment = .@"16" },
23340 .extra_temps = .{44077 .extra_temps = .{
23341 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44078 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23342 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },44079 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23343 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },44080 .unused,
23344 .unused,44081 .unused,
23345 .unused,44082 .unused,
23346 .unused,44083 .unused,
...@@ -23349,96 +44086,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23349,96 +44086,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23349 .unused,44086 .unused,
23350 },44087 },
23351 .dst_temps = .{.mem},44088 .dst_temps = .{.mem},
23352 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },44089 .clobbers = .{ .eflags = true },
23353 .each = .{ .once = &.{44090 .each = .{ .once = &.{
23354 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },44091 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23355 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },44092 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
23356 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },44093 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
23357 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },44094 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
23358 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23359 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23360 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44095 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23361 } },44096 } },
23362 }, .{44097 }, .{
23363 .required_features = .{ .sse, null, null, null },44098 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
23364 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },44099 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
23365 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
23366 .patterns = &.{44100 .patterns = &.{
23367 .{ .src = .{ .to_mem, .none } },44101 .{ .src = .{ .to_mem, .none, .none } },
23368 },44102 },
23369 .call_frame = .{ .alignment = .@"16" },
23370 .extra_temps = .{44103 .extra_temps = .{
23371 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44104 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23372 .{ .type = .f16, .kind = .{ .reg = .ax } },44105 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23373 .{ .type = .f32, .kind = .mem },44106 .unused,
23374 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },44107 .unused,
23375 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },44108 .unused,
23376 .unused,44109 .unused,
23377 .unused,44110 .unused,
23378 .unused,44111 .unused,
23379 .unused,44112 .unused,
23380 },44113 },
23381 .dst_temps = .{.mem},44114 .dst_temps = .{.mem},
23382 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },44115 .clobbers = .{ .eflags = true },
23383 .each = .{ .once = &.{
23384 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23385 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
23386 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
23387 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
23388 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
23389 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
23390 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23391 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23392 } },
23393 }, .{
23394 .required_features = .{ .f16c, null, null, null },
23395 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
23396 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
23397 .patterns = &.{
23398 .{ .src = .{ .to_sse, .none } },
23399 },
23400 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23401 .each = .{ .once = &.{
23402 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
23403 .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .dst0d, ._ },
23404 } },
23405 }, .{
23406 .required_features = .{ .f16c, null, null, null },
23407 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .word } }, .any },
23408 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }},
23409 .patterns = &.{
23410 .{ .src = .{ .mem, .none } },
23411 .{ .src = .{ .to_sse, .none } },
23412 },
23413 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23414 .each = .{ .once = &.{
23415 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
23416 .{ ._, .v_pd, .cvtps2, .dst0x, .dst0q, ._, ._ },
23417 } },
23418 }, .{
23419 .required_features = .{ .f16c, null, null, null },
23420 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },
23421 .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }},
23422 .patterns = &.{
23423 .{ .src = .{ .mem, .none } },
23424 .{ .src = .{ .to_sse, .none } },
23425 },
23426 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23427 .each = .{ .once = &.{44116 .each = .{ .once = &.{
23428 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },44117 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23429 .{ ._, .v_pd, .cvtps2, .dst0y, .dst0x, ._, ._ },44118 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
44119 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
44120 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
44121 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
23430 } },44122 } },
23431 }, .{44123 }, .{
23432 .required_features = .{ .f16c, null, null, null },44124 .required_features = .{ .slow_incdec, null, null, null },
23433 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },44125 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
23434 .dst_constraints = .{.{ .scalar_float = .{ .of = .zword, .is = .qword } }},44126 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
23435 .patterns = &.{44127 .patterns = &.{
23436 .{ .src = .{ .mem, .none } },44128 .{ .src = .{ .to_mem, .none, .none } },
23437 .{ .src = .{ .to_sse, .none } },
23438 },44129 },
23439 .extra_temps = .{44130 .extra_temps = .{
23440 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },44131 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23441 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },44132 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
23442 .unused,44133 .unused,
23443 .unused,44134 .unused,
23444 .unused,44135 .unused,
...@@ -23448,25 +44139,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23448,25 +44139,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23448 .unused,44139 .unused,
23449 },44140 },
23450 .dst_temps = .{.mem},44141 .dst_temps = .{.mem},
44142 .clobbers = .{ .eflags = true },
23451 .each = .{ .once = &.{44143 .each = .{ .once = &.{
23452 .{ ._, .v_ps, .cvtph2, .tmp0y, .src0x, ._, ._ },44144 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23453 .{ ._, .v_pd, .cvtps2, .tmp1y, .tmp0x, ._, ._ },44145 .{ .@"0:", ._, .movsx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
23454 .{ ._, .v_f128, .extract, .tmp0x, .tmp0y, .ui(1), ._ },44146 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
23455 .{ ._, .v_pd, .mova, .mem(.dst0y), .tmp1y, ._, ._ },44147 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
23456 .{ ._, .v_pd, .cvtps2, .tmp1y, .tmp0x, ._, ._ },44148 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
23457 .{ ._, .v_pd, .mova, .memd(.dst0y, 32), .tmp1y, ._, ._ },44149 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
44150 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23458 } },44151 } },
23459 }, .{44152 }, .{
23460 .required_features = .{ .sse, null, null, null },44153 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
23461 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },44154 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
23462 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
23463 .patterns = &.{44155 .patterns = &.{
23464 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },44156 .{ .src = .{ .to_mem, .none, .none } },
23465 },44157 },
23466 .call_frame = .{ .alignment = .@"16" },
23467 .extra_temps = .{44158 .extra_temps = .{
23468 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },44159 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23469 .unused,44160 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
23470 .unused,44161 .unused,
23471 .unused,44162 .unused,
23472 .unused,44163 .unused,
...@@ -23475,22 +44166,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23475,22 +44166,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23475 .unused,44166 .unused,
23476 .unused,44167 .unused,
23477 },44168 },
23478 .dst_temps = .{.{ .ref = .src0 }},44169 .dst_temps = .{.mem},
23479 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },44170 .clobbers = .{ .eflags = true },
23480 .each = .{ .once = &.{44171 .each = .{ .once = &.{
23481 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },44172 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44173 .{ .@"0:", ._, .movsx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
44174 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
44175 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
44176 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
44177 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
44178 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
23482 } },44179 } },
23483 }, .{44180 }, .{
23484 .required_features = .{ .f16c, null, null, null },44181 .required_features = .{ .slow_incdec, null, null, null },
23485 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },44182 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
23486 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }},44183 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
23487 .patterns = &.{44184 .patterns = &.{
23488 .{ .src = .{ .to_mem, .none } },44185 .{ .src = .{ .to_mem, .none, .none } },
23489 },44186 },
23490 .extra_temps = .{44187 .extra_temps = .{
23491 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44188 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23492 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },44189 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23493 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },44190 .unused,
23494 .unused,44191 .unused,
23495 .unused,44192 .unused,
23496 .unused,44193 .unused,
...@@ -23501,28 +44198,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23501,28 +44198,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23501 .dst_temps = .{.mem},44198 .dst_temps = .{.mem},
23502 .clobbers = .{ .eflags = true },44199 .clobbers = .{ .eflags = true },
23503 .each = .{ .once = &.{44200 .each = .{ .once = &.{
23504 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },44201 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23505 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },44202 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
23506 .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ },44203 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
23507 .{ ._, .v_f128, .extract, .tmp1x, .tmp1y, .ui(1), ._ },44204 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
23508 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp2y, ._, ._ },44205 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
23509 .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ },
23510 .{ ._, .v_pd, .mova, .memsiad(.dst0y, .@"4", .tmp0, .add_size, 32), .tmp2y, ._, ._ },
23511 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
23512 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44206 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23513 } },44207 } },
23514 }, .{44208 }, .{
23515 .required_features = .{ .avx, null, null, null },44209 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
23516 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },44210 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
23517 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
23518 .patterns = &.{44211 .patterns = &.{
23519 .{ .src = .{ .to_mem, .none } },44212 .{ .src = .{ .to_mem, .none, .none } },
23520 },44213 },
23521 .call_frame = .{ .alignment = .@"16" },
23522 .extra_temps = .{44214 .extra_temps = .{
23523 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44215 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23524 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },44216 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23525 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },44217 .unused,
23526 .unused,44218 .unused,
23527 .unused,44219 .unused,
23528 .unused,44220 .unused,
...@@ -23531,28 +44223,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23531,28 +44223,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23531 .unused,44223 .unused,
23532 },44224 },
23533 .dst_temps = .{.mem},44225 .dst_temps = .{.mem},
23534 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },44226 .clobbers = .{ .eflags = true },
23535 .each = .{ .once = &.{44227 .each = .{ .once = &.{
23536 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },44228 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23537 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },44229 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
23538 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },44230 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
23539 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },44231 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
23540 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },44232 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
23541 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },44233 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
23542 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23543 } },44234 } },
23544 }, .{44235 }, .{
23545 .required_features = .{ .sse2, null, null, null },44236 .required_features = .{ .slow_incdec, null, null, null },
23546 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },44237 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
23547 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},44238 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
23548 .patterns = &.{44239 .patterns = &.{
23549 .{ .src = .{ .to_mem, .none } },44240 .{ .src = .{ .to_mem, .none, .none } },
23550 },44241 },
23551 .call_frame = .{ .alignment = .@"16" },
23552 .extra_temps = .{44242 .extra_temps = .{
23553 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44243 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23554 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },44244 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23555 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },44245 .unused,
23556 .unused,44246 .unused,
23557 .unused,44247 .unused,
23558 .unused,44248 .unused,
...@@ -23561,58 +44251,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23561,58 +44251,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23561 .unused,44251 .unused,
23562 },44252 },
23563 .dst_temps = .{.mem},44253 .dst_temps = .{.mem},
23564 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },44254 .clobbers = .{ .eflags = true },
23565 .each = .{ .once = &.{44255 .each = .{ .once = &.{
23566 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },44256 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23567 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },44257 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
23568 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },44258 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
23569 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },44259 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
23570 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23571 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23572 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44260 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23573 } },44261 } },
23574 }, .{44262 }, .{
23575 .required_features = .{ .sse, null, null, null },44263 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
23576 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },44264 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
23577 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
23578 .patterns = &.{44265 .patterns = &.{
23579 .{ .src = .{ .to_mem, .none } },44266 .{ .src = .{ .to_mem, .none, .none } },
23580 },44267 },
23581 .call_frame = .{ .alignment = .@"16" },
23582 .extra_temps = .{44268 .extra_temps = .{
23583 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44269 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23584 .{ .type = .f16, .kind = .{ .reg = .ax } },44270 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23585 .{ .type = .f32, .kind = .mem },44271 .unused,
23586 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },44272 .unused,
23587 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },44273 .unused,
23588 .unused,44274 .unused,
23589 .unused,44275 .unused,
23590 .unused,44276 .unused,
23591 .unused,44277 .unused,
23592 },44278 },
23593 .dst_temps = .{.mem},44279 .dst_temps = .{.mem},
23594 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },44280 .clobbers = .{ .eflags = true },
23595 .each = .{ .once = &.{44281 .each = .{ .once = &.{
23596 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },44282 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23597 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },44283 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
23598 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },44284 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
23599 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },44285 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
23600 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },44286 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
23601 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
23602 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23603 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23604 } },44287 } },
23605 }, .{44288 }, .{
23606 .required_features = .{ .f16c, .x87, null, null },44289 .required_features = .{ .slow_incdec, null, null, null },
23607 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },44290 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
23608 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},44291 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
23609 .patterns = &.{44292 .patterns = &.{
23610 .{ .src = .{ .to_sse, .none } },44293 .{ .src = .{ .to_mem, .none, .none } },
23611 },44294 },
23612 .extra_temps = .{44295 .extra_temps = .{
23613 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },44296 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23614 .{ .type = .f32, .kind = .mem },44297 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
23615 .{ .type = .f80, .kind = .{ .reg = .st7 } },44298 .unused,
23616 .unused,44299 .unused,
23617 .unused,44300 .unused,
23618 .unused,44301 .unused,
...@@ -23620,24 +44303,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23620,24 +44303,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23620 .unused,44303 .unused,
23621 .unused,44304 .unused,
23622 },44305 },
23623 .dst_temps = .{.{ .rc = .x87 }},44306 .dst_temps = .{.mem},
44307 .clobbers = .{ .eflags = true },
23624 .each = .{ .once = &.{44308 .each = .{ .once = &.{
23625 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },44309 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23626 .{ ._, .v_ss, .mov, .mem(.tmp1d), .tmp0x, ._, ._ },44310 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
23627 .{ ._, .f_, .ld, .mem(.tmp1d), ._, ._, ._ },44311 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
23628 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },44312 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
44313 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
44314 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
44315 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23629 } },44316 } },
23630 }, .{44317 }, .{
23631 .required_features = .{ .sse, null, null, null },44318 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
23632 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },44319 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
23633 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
23634 .patterns = &.{44320 .patterns = &.{
23635 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },44321 .{ .src = .{ .to_mem, .none, .none } },
23636 },44322 },
23637 .call_frame = .{ .alignment = .@"16" },
23638 .extra_temps = .{44323 .extra_temps = .{
23639 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },44324 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23640 .unused,44325 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
23641 .unused,44326 .unused,
23642 .unused,44327 .unused,
23643 .unused,44328 .unused,
...@@ -23646,23 +44331,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23646,23 +44331,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23646 .unused,44331 .unused,
23647 .unused,44332 .unused,
23648 },44333 },
23649 .dst_temps = .{.{ .reg = .st0 }},44334 .dst_temps = .{.mem},
23650 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },44335 .clobbers = .{ .eflags = true },
23651 .each = .{ .once = &.{44336 .each = .{ .once = &.{
23652 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },44337 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44338 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
44339 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
44340 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
44341 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
44342 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
44343 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
23653 } },44344 } },
23654 }, .{44345 }, .{
23655 .required_features = .{ .avx, null, null, null },44346 .required_features = .{ .bmi2, .slow_incdec, null, null },
23656 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },44347 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
23657 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},44348 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
23658 .patterns = &.{44349 .patterns = &.{
23659 .{ .src = .{ .to_mem, .none } },44350 .{ .src = .{ .to_mem, .none, .none } },
23660 },44351 },
23661 .call_frame = .{ .alignment = .@"16" },
23662 .extra_temps = .{44352 .extra_temps = .{
23663 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44353 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23664 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },44354 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23665 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },44355 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23666 .unused,44356 .unused,
23667 .unused,44357 .unused,
23668 .unused,44358 .unused,
...@@ -23671,29 +44361,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23671,29 +44361,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23671 .unused,44361 .unused,
23672 },44362 },
23673 .dst_temps = .{.mem},44363 .dst_temps = .{.mem},
23674 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },44364 .clobbers = .{ .eflags = true },
23675 .each = .{ .once = &.{44365 .each = .{ .once = &.{
23676 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },44366 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23677 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },44367 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
23678 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },44368 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
23679 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },44369 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
23680 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },44370 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
23681 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
23682 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23683 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44371 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23684 } },44372 } },
23685 }, .{44373 }, .{
23686 .required_features = .{ .sse2, null, null, null },44374 .required_features = .{ .bmi2, null, null, null },
23687 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },44375 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
23688 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},44376 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
23689 .patterns = &.{44377 .patterns = &.{
23690 .{ .src = .{ .to_mem, .none } },44378 .{ .src = .{ .to_mem, .none, .none } },
23691 },44379 },
23692 .call_frame = .{ .alignment = .@"16" },
23693 .extra_temps = .{44380 .extra_temps = .{
23694 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44381 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23695 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },44382 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23696 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },44383 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23697 .unused,44384 .unused,
23698 .unused,44385 .unused,
23699 .unused,44386 .unused,
...@@ -23702,60 +44389,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23702,60 +44389,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23702 .unused,44389 .unused,
23703 },44390 },
23704 .dst_temps = .{.mem},44391 .dst_temps = .{.mem},
23705 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },44392 .clobbers = .{ .eflags = true },
23706 .each = .{ .once = &.{44393 .each = .{ .once = &.{
23707 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },44394 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23708 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },44395 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
23709 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },44396 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
23710 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },44397 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
23711 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },44398 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
23712 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },44399 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
23713 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23714 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23715 } },44400 } },
23716 }, .{44401 }, .{
23717 .required_features = .{ .sse, null, null, null },44402 .required_features = .{ .slow_incdec, null, null, null },
23718 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },44403 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
23719 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},44404 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
23720 .patterns = &.{44405 .patterns = &.{
23721 .{ .src = .{ .to_mem, .none } },44406 .{ .src = .{ .to_mem, .none, .none } },
23722 },44407 },
23723 .call_frame = .{ .alignment = .@"16" },
23724 .extra_temps = .{44408 .extra_temps = .{
23725 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44409 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23726 .{ .type = .f16, .kind = .{ .reg = .ax } },44410 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23727 .{ .type = .f32, .kind = .mem },44411 .unused,
23728 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },44412 .unused,
23729 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },44413 .unused,
23730 .unused,44414 .unused,
23731 .unused,44415 .unused,
23732 .unused,44416 .unused,
23733 .unused,44417 .unused,
23734 },44418 },
23735 .dst_temps = .{.mem},44419 .dst_temps = .{.mem},
23736 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },44420 .clobbers = .{ .eflags = true },
23737 .each = .{ .once = &.{44421 .each = .{ .once = &.{
23738 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },44422 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23739 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },44423 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
23740 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },44424 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
23741 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },44425 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
23742 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },44426 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
23743 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
23744 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
23745 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23746 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44427 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23747 } },44428 } },
23748 }, .{44429 }, .{
23749 .required_features = .{ .sse, null, null, null },44430 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
23750 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },44431 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
23751 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
23752 .patterns = &.{44432 .patterns = &.{
23753 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },44433 .{ .src = .{ .to_mem, .none, .none } },
23754 },44434 },
23755 .call_frame = .{ .alignment = .@"16" },
23756 .extra_temps = .{44435 .extra_temps = .{
23757 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },44436 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23758 .unused,44437 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23759 .unused,44438 .unused,
23760 .unused,44439 .unused,
23761 .unused,44440 .unused,
...@@ -23764,23 +44443,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23764,23 +44443,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23764 .unused,44443 .unused,
23765 .unused,44444 .unused,
23766 },44445 },
23767 .dst_temps = .{.{ .ref = .src0 }},44446 .dst_temps = .{.mem},
23768 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },44447 .clobbers = .{ .eflags = true },
23769 .each = .{ .once = &.{44448 .each = .{ .once = &.{
23770 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },44449 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44450 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
44451 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
44452 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
44453 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
44454 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
23771 } },44455 } },
23772 }, .{44456 }, .{
23773 .required_features = .{ .avx, null, null, null },44457 .required_features = .{ .slow_incdec, null, null, null },
23774 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },44458 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
23775 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},44459 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
23776 .patterns = &.{44460 .patterns = &.{
23777 .{ .src = .{ .to_mem, .none } },44461 .{ .src = .{ .to_mem, .none, .none } },
23778 },44462 },
23779 .call_frame = .{ .alignment = .@"16" },
23780 .extra_temps = .{44463 .extra_temps = .{
23781 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44464 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23782 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },44465 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23783 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },44466 .unused,
23784 .unused,44467 .unused,
23785 .unused,44468 .unused,
23786 .unused,44469 .unused,
...@@ -23789,28 +44472,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23789,28 +44472,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23789 .unused,44472 .unused,
23790 },44473 },
23791 .dst_temps = .{.mem},44474 .dst_temps = .{.mem},
23792 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },44475 .clobbers = .{ .eflags = true },
23793 .each = .{ .once = &.{44476 .each = .{ .once = &.{
23794 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },44477 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23795 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },44478 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
23796 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },44479 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
23797 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },44480 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
23798 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23799 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23800 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44481 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23801 } },44482 } },
23802 }, .{44483 }, .{
23803 .required_features = .{ .sse2, null, null, null },44484 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
23804 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },44485 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
23805 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
23806 .patterns = &.{44486 .patterns = &.{
23807 .{ .src = .{ .to_mem, .none } },44487 .{ .src = .{ .to_mem, .none, .none } },
23808 },44488 },
23809 .call_frame = .{ .alignment = .@"16" },
23810 .extra_temps = .{44489 .extra_temps = .{
23811 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44490 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23812 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },44491 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23813 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },44492 .unused,
23814 .unused,44493 .unused,
23815 .unused,44494 .unused,
23816 .unused,44495 .unused,
...@@ -23819,93 +44498,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23819,93 +44498,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23819 .unused,44498 .unused,
23820 },44499 },
23821 .dst_temps = .{.mem},44500 .dst_temps = .{.mem},
23822 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },44501 .clobbers = .{ .eflags = true },
23823 .each = .{ .once = &.{44502 .each = .{ .once = &.{
23824 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },44503 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23825 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },44504 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
23826 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },44505 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
23827 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },44506 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
23828 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },44507 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
23829 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23830 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23831 } },44508 } },
23832 }, .{44509 }, .{
23833 .required_features = .{ .sse, null, null, null },44510 .required_features = .{ .slow_incdec, null, null, null },
23834 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },44511 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
23835 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},44512 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
23836 .patterns = &.{44513 .patterns = &.{
23837 .{ .src = .{ .to_mem, .none } },44514 .{ .src = .{ .to_mem, .none, .none } },
23838 },44515 },
23839 .call_frame = .{ .alignment = .@"16" },
23840 .extra_temps = .{44516 .extra_temps = .{
23841 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44517 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23842 .{ .type = .f16, .kind = .{ .reg = .ax } },44518 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
23843 .{ .type = .f32, .kind = .mem },44519 .unused,
23844 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },44520 .unused,
23845 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },44521 .unused,
23846 .unused,44522 .unused,
23847 .unused,44523 .unused,
23848 .unused,44524 .unused,
23849 .unused,44525 .unused,
23850 },44526 },
23851 .dst_temps = .{.mem},44527 .dst_temps = .{.mem},
23852 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },44528 .clobbers = .{ .eflags = true },
23853 .each = .{ .once = &.{44529 .each = .{ .once = &.{
23854 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },44530 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23855 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },44531 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
23856 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },44532 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
23857 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },44533 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
23858 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },44534 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
23859 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },44535 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
23860 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23861 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44536 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23862 } },44537 } },
23863 }, .{44538 }, .{
23864 .required_features = .{ .avx, null, null, null },44539 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
23865 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },44540 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
23866 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
23867 .patterns = &.{
23868 .{ .src = .{ .mem, .none } },
23869 },
23870 .dst_temps = .{.{ .rc = .sse }},
23871 .each = .{ .once = &.{
23872 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
23873 .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .src0d, ._ },
23874 } },
23875 }, .{
23876 .required_features = .{ .avx, null, null, null },
23877 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
23878 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
23879 .patterns = &.{
23880 .{ .src = .{ .to_sse, .none } },
23881 },
23882 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23883 .each = .{ .once = &.{
23884 .{ ._, .v_sd, .cvtss2, .dst0x, .src0x, .src0d, ._ },
23885 } },
23886 }, .{
23887 .required_features = .{ .sse2, null, null, null },
23888 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
23889 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
23890 .patterns = &.{
23891 .{ .src = .{ .mem, .none } },
23892 .{ .src = .{ .to_sse, .none } },
23893 },
23894 .dst_temps = .{.{ .rc = .sse }},
23895 .each = .{ .once = &.{
23896 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
23897 .{ ._, ._sd, .cvtss2, .dst0x, .src0d, ._, ._ },
23898 } },
23899 }, .{
23900 .required_features = .{ .x87, null, null, null },
23901 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
23902 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
23903 .patterns = &.{44541 .patterns = &.{
23904 .{ .src = .{ .to_mem, .none } },44542 .{ .src = .{ .to_mem, .none, .none } },
23905 },44543 },
23906 .extra_temps = .{44544 .extra_temps = .{
23907 .{ .type = .f80, .kind = .{ .reg = .st7 } },44545 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23908 .unused,44546 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
23909 .unused,44547 .unused,
23910 .unused,44548 .unused,
23911 .unused,44549 .unused,
...@@ -23915,57 +44553,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23915,57 +44553,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23915 .unused,44553 .unused,
23916 },44554 },
23917 .dst_temps = .{.mem},44555 .dst_temps = .{.mem},
44556 .clobbers = .{ .eflags = true },
23918 .each = .{ .once = &.{44557 .each = .{ .once = &.{
23919 .{ ._, .f_, .ld, .src0d, ._, ._, ._ },44558 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23920 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },44559 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
23921 } },44560 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
23922 }, .{44561 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
23923 .required_features = .{ .avx, null, null, null },44562 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
23924 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .dword } }, .any },44563 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
23925 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }},44564 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
23926 .patterns = &.{
23927 .{ .src = .{ .mem, .none } },
23928 .{ .src = .{ .to_sse, .none } },
23929 },
23930 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23931 .each = .{ .once = &.{
23932 .{ ._, .v_pd, .cvtps2, .dst0x, .src0q, ._, ._ },
23933 } },
23934 }, .{
23935 .required_features = .{ .sse2, null, null, null },
23936 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .dword } }, .any },
23937 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }},
23938 .patterns = &.{
23939 .{ .src = .{ .mem, .none } },
23940 .{ .src = .{ .to_sse, .none } },
23941 },
23942 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23943 .each = .{ .once = &.{
23944 .{ ._, ._pd, .cvtps2, .dst0x, .src0q, ._, ._ },
23945 } },
23946 }, .{
23947 .required_features = .{ .avx, null, null, null },
23948 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
23949 .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }},
23950 .patterns = &.{
23951 .{ .src = .{ .mem, .none } },
23952 .{ .src = .{ .to_sse, .none } },
23953 },
23954 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23955 .each = .{ .once = &.{
23956 .{ ._, .v_pd, .cvtps2, .dst0y, .src0x, ._, ._ },
23957 } },44565 } },
23958 }, .{44566 }, .{
23959 .required_features = .{ .avx, null, null, null },44567 .required_features = .{ .bmi2, .slow_incdec, null, null },
23960 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },44568 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
23961 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }},44569 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
23962 .patterns = &.{44570 .patterns = &.{
23963 .{ .src = .{ .to_mem, .none } },44571 .{ .src = .{ .to_mem, .none, .none } },
23964 },44572 },
23965 .extra_temps = .{44573 .extra_temps = .{
23966 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44574 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23967 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },44575 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23968 .unused,44576 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23969 .unused,44577 .unused,
23970 .unused,44578 .unused,
23971 .unused,44579 .unused,
...@@ -23976,23 +44584,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23976,23 +44584,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23976 .dst_temps = .{.mem},44584 .dst_temps = .{.mem},
23977 .clobbers = .{ .eflags = true },44585 .clobbers = .{ .eflags = true },
23978 .each = .{ .once = &.{44586 .each = .{ .once = &.{
23979 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },44587 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23980 .{ .@"0:", .v_pd, .cvtps2, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },44588 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
23981 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ },44589 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
23982 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },44590 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
44591 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
23983 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44592 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23984 } },44593 } },
23985 }, .{44594 }, .{
23986 .required_features = .{ .sse2, null, null, null },44595 .required_features = .{ .bmi2, null, null, null },
23987 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .dword } }, .any },44596 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
23988 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }},44597 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
23989 .patterns = &.{44598 .patterns = &.{
23990 .{ .src = .{ .to_mem, .none } },44599 .{ .src = .{ .to_mem, .none, .none } },
23991 },44600 },
23992 .extra_temps = .{44601 .extra_temps = .{
23993 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44602 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23994 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },44603 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23995 .unused,44604 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23996 .unused,44605 .unused,
23997 .unused,44606 .unused,
23998 .unused,44607 .unused,
...@@ -24003,22 +44612,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24003,22 +44612,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24003 .dst_temps = .{.mem},44612 .dst_temps = .{.mem},
24004 .clobbers = .{ .eflags = true },44613 .clobbers = .{ .eflags = true },
24005 .each = .{ .once = &.{44614 .each = .{ .once = &.{
24006 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },44615 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24007 .{ .@"0:", ._pd, .cvtps2, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },44616 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
24008 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },44617 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
24009 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },44618 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
24010 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44619 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
44620 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
24011 } },44621 } },
24012 }, .{44622 }, .{
24013 .required_features = .{ .x87, null, null, null },44623 .required_features = .{ .slow_incdec, null, null, null },
24014 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },44624 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
24015 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},44625 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
24016 .patterns = &.{44626 .patterns = &.{
24017 .{ .src = .{ .to_mem, .none } },44627 .{ .src = .{ .to_mem, .none, .none } },
24018 },44628 },
24019 .extra_temps = .{44629 .extra_temps = .{
24020 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44630 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24021 .{ .type = .f80, .kind = .{ .reg = .st7 } },44631 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24022 .unused,44632 .unused,
24023 .unused,44633 .unused,
24024 .unused,44634 .unused,
...@@ -24030,22 +44640,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24030,22 +44640,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24030 .dst_temps = .{.mem},44640 .dst_temps = .{.mem},
24031 .clobbers = .{ .eflags = true },44641 .clobbers = .{ .eflags = true },
24032 .each = .{ .once = &.{44642 .each = .{ .once = &.{
24033 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },44643 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24034 .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },44644 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
24035 .{ ._, .f_p, .st, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },44645 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
24036 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },44646 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
44647 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
24037 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44648 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24038 } },44649 } },
24039 }, .{44650 }, .{
24040 .required_features = .{ .x87, null, null, null },44651 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
24041 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },44652 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
24042 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
24043 .patterns = &.{44653 .patterns = &.{
24044 .{ .src = .{ .to_mem, .none } },44654 .{ .src = .{ .to_mem, .none, .none } },
24045 },44655 },
24046 .extra_temps = .{44656 .extra_temps = .{
24047 .{ .type = .f80, .kind = .{ .reg = .st7 } },44657 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24048 .unused,44658 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24049 .unused,44659 .unused,
24050 .unused,44660 .unused,
24051 .unused,44661 .unused,
...@@ -24055,21 +44665,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24055,21 +44665,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24055 .unused,44665 .unused,
24056 },44666 },
24057 .dst_temps = .{.mem},44667 .dst_temps = .{.mem},
44668 .clobbers = .{ .eflags = true },
24058 .each = .{ .once = &.{44669 .each = .{ .once = &.{
24059 .{ ._, .f_, .ld, .src0d, ._, ._, ._ },44670 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24060 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },44671 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
44672 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
44673 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
44674 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
44675 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
24061 } },44676 } },
24062 }, .{44677 }, .{
24063 .required_features = .{ .x87, null, null, null },44678 .required_features = .{ .slow_incdec, null, null, null },
24064 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },44679 .src_constraints = .{ .any_scalar_int, .any, .any },
24065 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},44680 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
24066 .patterns = &.{44681 .patterns = &.{
24067 .{ .src = .{ .to_mem, .none } },44682 .{ .src = .{ .to_mem, .none, .none } },
24068 },44683 },
24069 .extra_temps = .{44684 .extra_temps = .{
24070 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44685 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24071 .{ .type = .f80, .kind = .{ .reg = .st7 } },44686 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24072 .unused,44687 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24073 .unused,44688 .unused,
24074 .unused,44689 .unused,
24075 .unused,44690 .unused,
...@@ -24078,25 +44693,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24078,25 +44693,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24078 .unused,44693 .unused,
24079 },44694 },
24080 .dst_temps = .{.mem},44695 .dst_temps = .{.mem},
44696 .clobbers = .{ .eflags = true },
24081 .each = .{ .once = &.{44697 .each = .{ .once = &.{
24082 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },44698 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24083 .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },44699 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24084 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },44700 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
24085 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },44701 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
44702 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
44703 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
24086 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44704 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24087 } },44705 } },
24088 }, .{44706 }, .{
24089 .required_features = .{ .sse, null, null, null },44707 .src_constraints = .{ .any_scalar_int, .any, .any },
24090 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },44708 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
24091 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
24092 .patterns = &.{44709 .patterns = &.{
24093 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },44710 .{ .src = .{ .to_mem, .none, .none } },
24094 },44711 },
24095 .call_frame = .{ .alignment = .@"16" },
24096 .extra_temps = .{44712 .extra_temps = .{
24097 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },44713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24098 .unused,44714 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24099 .unused,44715 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24100 .unused,44716 .unused,
24101 .unused,44717 .unused,
24102 .unused,44718 .unused,
...@@ -24104,23 +44720,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24104,23 +44720,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24104 .unused,44720 .unused,
24105 .unused,44721 .unused,
24106 },44722 },
24107 .dst_temps = .{.{ .ref = .src0 }},44723 .dst_temps = .{.mem},
24108 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },44724 .clobbers = .{ .eflags = true },
24109 .each = .{ .once = &.{44725 .each = .{ .once = &.{
24110 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },44726 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44727 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
44728 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
44729 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
44730 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
44731 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
44732 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
24111 } },44733 } },
24112 }, .{44734 }, .{
24113 .required_features = .{ .avx, null, null, null },44735 .required_features = .{ .slow_incdec, null, null, null },
24114 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },44736 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
24115 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},44737 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
24116 .patterns = &.{44738 .patterns = &.{
24117 .{ .src = .{ .to_mem, .none } },44739 .{ .src = .{ .to_mem, .none, .none } },
24118 },44740 },
24119 .call_frame = .{ .alignment = .@"16" },
24120 .extra_temps = .{44741 .extra_temps = .{
24121 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44742 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24122 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },44743 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24123 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },44744 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
24124 .unused,44745 .unused,
24125 .unused,44746 .unused,
24126 .unused,44747 .unused,
...@@ -24129,27 +44750,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24129,27 +44750,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24129 .unused,44750 .unused,
24130 },44751 },
24131 .dst_temps = .{.mem},44752 .dst_temps = .{.mem},
24132 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },44753 .clobbers = .{ .eflags = true },
24133 .each = .{ .once = &.{44754 .each = .{ .once = &.{
24134 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },44755 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24135 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },44756 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24136 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },44757 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
24137 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },44758 .{ ._, ._l, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
24138 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },44759 .{ ._, ._r, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
44760 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
44761 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
44762 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
24139 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44763 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24140 } },44764 } },
24141 }, .{44765 }, .{
24142 .required_features = .{ .sse2, null, null, null },44766 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
24143 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },44767 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
24144 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
24145 .patterns = &.{44768 .patterns = &.{
24146 .{ .src = .{ .to_mem, .none } },44769 .{ .src = .{ .to_mem, .none, .none } },
24147 },44770 },
24148 .call_frame = .{ .alignment = .@"16" },
24149 .extra_temps = .{44771 .extra_temps = .{
24150 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44772 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24151 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },44773 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24152 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },44774 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
24153 .unused,44775 .unused,
24154 .unused,44776 .unused,
24155 .unused,44777 .unused,
...@@ -24158,28 +44780,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24158,28 +44780,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24158 .unused,44780 .unused,
24159 },44781 },
24160 .dst_temps = .{.mem},44782 .dst_temps = .{.mem},
24161 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },44783 .clobbers = .{ .eflags = true },
24162 .each = .{ .once = &.{44784 .each = .{ .once = &.{
24163 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },44785 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24164 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },44786 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24165 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },44787 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
24166 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },44788 .{ ._, ._l, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
24167 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },44789 .{ ._, ._r, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
24168 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44790 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
44791 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
44792 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
44793 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
24169 } },44794 } },
24170 }, .{44795 }, .{
24171 .required_features = .{ .sse, null, null, null },44796 .required_features = .{ .bmi2, .slow_incdec, null, null },
24172 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },44797 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
24173 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},44798 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
24174 .patterns = &.{44799 .patterns = &.{
24175 .{ .src = .{ .to_mem, .none } },44800 .{ .src = .{ .to_mem, .none, .none } },
24176 },44801 },
24177 .call_frame = .{ .alignment = .@"16" },
24178 .extra_temps = .{44802 .extra_temps = .{
24179 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44803 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24180 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },44804 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24181 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },44805 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24182 .unused,44806 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24183 .unused,44807 .unused,
24184 .unused,44808 .unused,
24185 .unused,44809 .unused,
...@@ -24187,27 +44811,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24187,27 +44811,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24187 .unused,44811 .unused,
24188 },44812 },
24189 .dst_temps = .{.mem},44813 .dst_temps = .{.mem},
24190 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },44814 .clobbers = .{ .eflags = true },
24191 .each = .{ .once = &.{44815 .each = .{ .once = &.{
24192 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },44816 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24193 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },44817 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24194 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },44818 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
24195 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },44819 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },
24196 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },44820 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
44821 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
44822 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
24197 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44823 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24198 } },44824 } },
24199 }, .{44825 }, .{
24200 .required_features = .{ .x87, null, null, null },44826 .required_features = .{ .bmi2, null, null, null },
24201 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },44827 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
24202 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},44828 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
24203 .patterns = &.{44829 .patterns = &.{
24204 .{ .src = .{ .to_mem, .none } },44830 .{ .src = .{ .to_mem, .none, .none } },
24205 },44831 },
24206 .extra_temps = .{44832 .extra_temps = .{
24207 .{ .type = .f80, .kind = .{ .reg = .st7 } },44833 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24208 .unused,44834 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24209 .unused,44835 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24210 .unused,44836 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24211 .unused,44837 .unused,
24212 .unused,44838 .unused,
24213 .unused,44839 .unused,
...@@ -24215,21 +44841,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24215,21 +44841,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24215 .unused,44841 .unused,
24216 },44842 },
24217 .dst_temps = .{.mem},44843 .dst_temps = .{.mem},
44844 .clobbers = .{ .eflags = true },
24218 .each = .{ .once = &.{44845 .each = .{ .once = &.{
24219 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },44846 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24220 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },44847 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
44848 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
44849 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },
44850 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
44851 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
44852 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
44853 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
24221 } },44854 } },
24222 }, .{44855 }, .{
24223 .required_features = .{ .x87, null, null, null },44856 .required_features = .{ .slow_incdec, null, null, null },
24224 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },44857 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
24225 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},44858 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
24226 .patterns = &.{44859 .patterns = &.{
24227 .{ .src = .{ .to_mem, .none } },44860 .{ .src = .{ .to_mem, .none, .none } },
24228 },44861 },
24229 .extra_temps = .{44862 .extra_temps = .{
24230 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44863 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24231 .{ .type = .f80, .kind = .{ .reg = .st7 } },44864 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24232 .unused,44865 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24233 .unused,44866 .unused,
24234 .unused,44867 .unused,
24235 .unused,44868 .unused,
...@@ -24238,25 +44871,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24238,25 +44871,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24238 .unused,44871 .unused,
24239 },44872 },
24240 .dst_temps = .{.mem},44873 .dst_temps = .{.mem},
44874 .clobbers = .{ .eflags = true },
24241 .each = .{ .once = &.{44875 .each = .{ .once = &.{
24242 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },44876 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24243 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },44877 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24244 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },44878 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
24245 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },44879 .{ ._, ._, .@"and", .tmp2b, .sa(.dst0, .add_umax), ._, ._ },
44880 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
44881 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
44882 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
24246 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44883 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24247 } },44884 } },
24248 }, .{44885 }, .{
24249 .required_features = .{ .sse, null, null, null },44886 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
24250 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },44887 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
24251 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
24252 .patterns = &.{44888 .patterns = &.{
24253 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },44889 .{ .src = .{ .to_mem, .none, .none } },
24254 },44890 },
24255 .call_frame = .{ .alignment = .@"16" },
24256 .extra_temps = .{44891 .extra_temps = .{
24257 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },44892 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24258 .unused,44893 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24259 .unused,44894 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24260 .unused,44895 .unused,
24261 .unused,44896 .unused,
24262 .unused,44897 .unused,
...@@ -24264,23 +44899,41 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24264,23 +44899,41 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24264 .unused,44899 .unused,
24265 .unused,44900 .unused,
24266 },44901 },
24267 .dst_temps = .{.{ .ref = .src0 }},44902 .dst_temps = .{.mem},
24268 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },44903 .clobbers = .{ .eflags = true },
24269 .each = .{ .once = &.{44904 .each = .{ .once = &.{
24270 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },44905 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44906 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
44907 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
44908 .{ ._, ._, .@"and", .tmp2b, .sa(.dst0, .add_umax), ._, ._ },
44909 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
44910 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
44911 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
44912 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
24271 } },44913 } },
24272 }, .{44914 }, .{
24273 .required_features = .{ .avx, null, null, null },44915 .required_features = .{ .avx, null, null, null },
24274 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },44916 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
24275 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},44917 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
24276 .patterns = &.{44918 .patterns = &.{
24277 .{ .src = .{ .to_mem, .none } },44919 .{ .src = .{ .to_sse, .none, .none } },
44920 },
44921 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
44922 .each = .{ .once = &.{
44923 .{ ._, .vp_w, .sll, .dst0x, .src0x, .uia(16, .dst0, .sub_bit_size), ._ },
44924 .{ ._, .vp_w, .sra, .dst0x, .dst0x, .uia(16, .dst0, .sub_bit_size), ._ },
44925 } },
44926 }, .{
44927 .required_features = .{ .avx, null, null, null },
44928 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
44929 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
44930 .patterns = &.{
44931 .{ .src = .{ .to_sse, .none, .none } },
24278 },44932 },
24279 .call_frame = .{ .alignment = .@"16" },
24280 .extra_temps = .{44933 .extra_temps = .{
24281 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44934 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
24282 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },44935 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
24283 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },44936 .unused,
24284 .unused,44937 .unused,
24285 .unused,44938 .unused,
24286 .unused,44939 .unused,
...@@ -24288,28 +44941,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24288,28 +44941,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24288 .unused,44941 .unused,
24289 .unused,44942 .unused,
24290 },44943 },
24291 .dst_temps = .{.mem},44944 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
24292 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24293 .each = .{ .once = &.{44945 .each = .{ .once = &.{
24294 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },44946 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
24295 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },44947 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
24296 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
24297 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24298 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
24299 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24300 } },44948 } },
24301 }, .{44949 }, .{
24302 .required_features = .{ .sse2, null, null, null },44950 .required_features = .{ .sse2, null, null, null },
24303 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },44951 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
24304 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},44952 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
24305 .patterns = &.{44953 .patterns = &.{
24306 .{ .src = .{ .to_mem, .none } },44954 .{ .src = .{ .to_mut_sse, .none, .none } },
44955 },
44956 .dst_temps = .{.{ .ref = .src0 }},
44957 .each = .{ .once = &.{
44958 .{ ._, .p_w, .sll, .dst0x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
44959 .{ ._, .p_w, .sra, .dst0x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
44960 } },
44961 }, .{
44962 .required_features = .{ .sse2, null, null, null },
44963 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
44964 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
44965 .patterns = &.{
44966 .{ .src = .{ .to_mut_sse, .none, .none } },
24307 },44967 },
24308 .call_frame = .{ .alignment = .@"16" },
24309 .extra_temps = .{44968 .extra_temps = .{
24310 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44969 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
24311 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },44970 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
24312 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },44971 .unused,
24313 .unused,44972 .unused,
24314 .unused,44973 .unused,
24315 .unused,44974 .unused,
...@@ -24317,28 +44976,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24317,28 +44976,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24317 .unused,44976 .unused,
24318 .unused,44977 .unused,
24319 },44978 },
24320 .dst_temps = .{.mem},44979 .dst_temps = .{.{ .ref = .src0 }},
24321 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24322 .each = .{ .once = &.{44980 .each = .{ .once = &.{
24323 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },44981 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
24324 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },44982 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
24325 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
24326 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24327 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
24328 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24329 } },44983 } },
24330 }, .{44984 }, .{
24331 .required_features = .{ .sse, null, null, null },44985 .required_features = .{ .sse, null, null, null },
24332 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },44986 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
24333 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},44987 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
24334 .patterns = &.{44988 .patterns = &.{
24335 .{ .src = .{ .to_mem, .none } },44989 .{ .src = .{ .to_mut_sse, .none, .none } },
24336 },44990 },
24337 .call_frame = .{ .alignment = .@"16" },
24338 .extra_temps = .{44991 .extra_temps = .{
24339 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44992 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
24340 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },44993 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
24341 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },44994 .unused,
24342 .unused,44995 .unused,
24343 .unused,44996 .unused,
24344 .unused,44997 .unused,
...@@ -24346,28 +44999,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24346,28 +44999,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24346 .unused,44999 .unused,
24347 .unused,45000 .unused,
24348 },45001 },
24349 .dst_temps = .{.mem},45002 .dst_temps = .{.{ .ref = .src0 }},
24350 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24351 .each = .{ .once = &.{45003 .each = .{ .once = &.{
24352 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },45004 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
24353 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },45005 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
24354 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },45006 } },
24355 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },45007 }, .{
24356 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },45008 .required_features = .{ .avx2, null, null, null },
24357 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },45009 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any },
24358 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45010 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .word } }},
45011 .patterns = &.{
45012 .{ .src = .{ .to_sse, .none, .none } },
45013 },
45014 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
45015 .each = .{ .once = &.{
45016 .{ ._, .vp_w, .sll, .dst0y, .src0y, .uia(16, .dst0, .sub_bit_size), ._ },
45017 .{ ._, .vp_w, .sra, .dst0y, .dst0y, .uia(16, .dst0, .sub_bit_size), ._ },
24359 } },45018 } },
24360 }, .{45019 }, .{
24361 .required_features = .{ .avx, null, null, null },45020 .required_features = .{ .avx2, null, null, null },
24362 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },45021 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any },
24363 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},45022 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }},
24364 .patterns = &.{45023 .patterns = &.{
24365 .{ .src = .{ .to_mem, .none } },45024 .{ .src = .{ .to_sse, .none, .none } },
24366 },45025 },
24367 .call_frame = .{ .size = 16, .alignment = .@"16" },
24368 .extra_temps = .{45026 .extra_temps = .{
24369 .{ .type = .f80, .kind = .{ .frame = .call_frame } },45027 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
24370 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },45028 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
24371 .unused,45029 .unused,
24372 .unused,45030 .unused,
24373 .unused,45031 .unused,
...@@ -24376,24 +45034,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24376,24 +45034,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24376 .unused,45034 .unused,
24377 .unused,45035 .unused,
24378 },45036 },
24379 .dst_temps = .{.{ .reg = .xmm0 }},45037 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
24380 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24381 .each = .{ .once = &.{45038 .each = .{ .once = &.{
24382 .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },45039 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
24383 .{ ._, .v_dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },45040 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
24384 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
24385 } },45041 } },
24386 }, .{45042 }, .{
24387 .required_features = .{ .sse2, null, null, null },45043 .required_features = .{ .avx2, null, null, null },
24388 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },45044 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any },
24389 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},45045 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }},
24390 .patterns = &.{45046 .patterns = &.{
24391 .{ .src = .{ .to_mem, .none } },45047 .{ .src = .{ .to_mem, .none, .none } },
24392 },45048 },
24393 .call_frame = .{ .size = 16, .alignment = .@"16" },
24394 .extra_temps = .{45049 .extra_temps = .{
24395 .{ .type = .f80, .kind = .{ .frame = .call_frame } },45050 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24396 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },45051 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
24397 .unused,45052 .unused,
24398 .unused,45053 .unused,
24399 .unused,45054 .unused,
...@@ -24402,52 +45057,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24402,52 +45057,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24402 .unused,45057 .unused,
24403 .unused,45058 .unused,
24404 },45059 },
24405 .dst_temps = .{.{ .reg = .xmm0 }},45060 .dst_temps = .{.mem},
24406 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },45061 .clobbers = .{ .eflags = true },
24407 .each = .{ .once = &.{45062 .each = .{ .once = &.{
24408 .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },45063 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24409 .{ ._, ._dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },45064 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
24410 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },45065 .{ ._, .vp_w, .sll, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },
45066 .{ ._, .vp_w, .sra, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },
45067 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
45068 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
45069 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24411 } },45070 } },
24412 }, .{45071 }, .{
24413 .required_features = .{ .sse, null, null, null },45072 .required_features = .{ .avx2, null, null, null },
24414 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },45073 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any },
24415 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},45074 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }},
24416 .patterns = &.{45075 .patterns = &.{
24417 .{ .src = .{ .to_mem, .none } },45076 .{ .src = .{ .to_mem, .none, .none } },
24418 },45077 },
24419 .call_frame = .{ .size = 16, .alignment = .@"16" },
24420 .extra_temps = .{45078 .extra_temps = .{
24421 .{ .type = .f80, .kind = .{ .frame = .call_frame } },45079 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24422 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },45080 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
24423 .unused,45081 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
24424 .unused,45082 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
24425 .unused,45083 .unused,
24426 .unused,45084 .unused,
24427 .unused,45085 .unused,
24428 .unused,45086 .unused,
24429 .unused,45087 .unused,
24430 },45088 },
24431 .dst_temps = .{.{ .reg = .xmm0 }},45089 .dst_temps = .{.mem},
24432 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },45090 .clobbers = .{ .eflags = true },
24433 .each = .{ .once = &.{45091 .each = .{ .once = &.{
24434 .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ },45092 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
24435 .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ },45093 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
24436 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },45094 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
45095 .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
45096 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },
45097 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
45098 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24437 } },45099 } },
24438 }, .{45100 }, .{
24439 .required_features = .{ .avx, null, null, null },45101 .required_features = .{ .avx, null, null, null },
24440 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },45102 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
24441 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},45103 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},
24442 .patterns = &.{45104 .patterns = &.{
24443 .{ .src = .{ .to_mem, .none } },45105 .{ .src = .{ .to_mem, .none, .none } },
24444 },45106 },
24445 .call_frame = .{ .size = 16, .alignment = .@"16" },
24446 .extra_temps = .{45107 .extra_temps = .{
24447 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45108 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24448 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },45109 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
24449 .{ .type = .f80, .kind = .{ .frame = .call_frame } },45110 .unused,
24450 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },45111 .unused,
24451 .unused,45112 .unused,
24452 .unused,45113 .unused,
24453 .unused,45114 .unused,
...@@ -24455,29 +45116,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24455,29 +45116,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24455 .unused,45116 .unused,
24456 },45117 },
24457 .dst_temps = .{.mem},45118 .dst_temps = .{.mem},
24458 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },45119 .clobbers = .{ .eflags = true },
24459 .each = .{ .once = &.{45120 .each = .{ .once = &.{
24460 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },45121 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24461 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },45122 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
24462 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },45123 .{ ._, .vp_w, .sll, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
24463 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },45124 .{ ._, .vp_w, .sra, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
24464 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },45125 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24465 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },45126 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
24466 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45127 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24467 } },45128 } },
24468 }, .{45129 }, .{
24469 .required_features = .{ .sse2, null, null, null },45130 .required_features = .{ .avx, null, null, null },
24470 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },45131 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
24471 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},45132 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
24472 .patterns = &.{45133 .patterns = &.{
24473 .{ .src = .{ .to_mem, .none } },45134 .{ .src = .{ .to_mem, .none, .none } },
24474 },45135 },
24475 .call_frame = .{ .size = 16, .alignment = .@"16" },
24476 .extra_temps = .{45136 .extra_temps = .{
24477 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45137 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24478 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },45138 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
24479 .{ .type = .f80, .kind = .{ .frame = .call_frame } },45139 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
24480 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },45140 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
24481 .unused,45141 .unused,
24482 .unused,45142 .unused,
24483 .unused,45143 .unused,
...@@ -24485,29 +45145,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24485,29 +45145,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24485 .unused,45145 .unused,
24486 },45146 },
24487 .dst_temps = .{.mem},45147 .dst_temps = .{.mem},
24488 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },45148 .clobbers = .{ .eflags = true },
24489 .each = .{ .once = &.{45149 .each = .{ .once = &.{
24490 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },45150 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
24491 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },45151 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
24492 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },45152 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24493 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },45153 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
24494 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },45154 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
24495 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },45155 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
24496 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45156 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24497 } },45157 } },
24498 }, .{45158 }, .{
24499 .required_features = .{ .sse, null, null, null },45159 .required_features = .{ .sse2, null, null, null },
24500 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },45160 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
24501 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},45161 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},
24502 .patterns = &.{45162 .patterns = &.{
24503 .{ .src = .{ .to_mem, .none } },45163 .{ .src = .{ .to_mem, .none, .none } },
24504 },45164 },
24505 .call_frame = .{ .size = 16, .alignment = .@"16" },
24506 .extra_temps = .{45165 .extra_temps = .{
24507 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45166 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24508 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },45167 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
24509 .{ .type = .f80, .kind = .{ .frame = .call_frame } },45168 .unused,
24510 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },45169 .unused,
24511 .unused,45170 .unused,
24512 .unused,45171 .unused,
24513 .unused,45172 .unused,
...@@ -24515,98 +45174,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24515,98 +45174,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24515 .unused,45174 .unused,
24516 },45175 },
24517 .dst_temps = .{.mem},45176 .dst_temps = .{.mem},
24518 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },45177 .clobbers = .{ .eflags = true },
24519 .each = .{ .once = &.{45178 .each = .{ .once = &.{
24520 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },45179 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24521 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },45180 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
24522 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },45181 .{ ._, .p_w, .sll, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
24523 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },45182 .{ ._, .p_w, .sra, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
24524 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },45183 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24525 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },45184 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
24526 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45185 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24527 } },45186 } },
24528 } }) catch |err| switch (err) {
24529 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
24530 @tagName(air_tag),
24531 ty_op.ty.toType().fmt(pt),
24532 cg.typeOf(ty_op.operand).fmt(pt),
24533 ops[0].tracking(cg),
24534 }),
24535 else => |e| return e,
24536 };
24537 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
24538 },
24539 .intcast => |air_tag| if (use_old) try cg.airIntCast(inst) else {
24540 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
24541 const dst_ty = ty_op.ty.toType();
24542 const src_ty = cg.typeOf(ty_op.operand);
24543 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
24544 var res: [1]Temp = undefined;
24545 cg.select(&res, &.{dst_ty}, &ops, if (dst_ty.scalarType(zcu).abiSize(zcu) <= src_ty.scalarType(zcu).abiSize(zcu)) comptime &.{ .{
24546 .dst_constraints = .{.{ .int = .dword }},
24547 .patterns = &.{
24548 .{ .src = .{ .mut_mem, .none } },
24549 .{ .src = .{ .to_mut_gpr, .none } },
24550 },
24551 .dst_temps = .{.{ .ref = .src0 }},
24552 .each = .{ .once = &.{} },
24553 }, .{
24554 .required_features = .{ .@"64bit", null, null, null },
24555 .dst_constraints = .{.{ .int = .qword }},
24556 .patterns = &.{
24557 .{ .src = .{ .mut_mem, .none } },
24558 .{ .src = .{ .to_mut_gpr, .none } },
24559 },
24560 .dst_temps = .{.{ .ref = .src0 }},
24561 .each = .{ .once = &.{} },
24562 }, .{
24563 .dst_constraints = .{.{ .int = .byte }},
24564 .patterns = &.{
24565 .{ .src = .{ .to_mem, .none } },
24566 },
24567 .dst_temps = .{.{ .rc = .general_purpose }},
24568 .each = .{ .once = &.{
24569 .{ ._, ._, .mov, .dst0b, .mem(.src0b), ._, ._ },
24570 } },
24571 }, .{
24572 .dst_constraints = .{.{ .int = .word }},
24573 .patterns = &.{
24574 .{ .src = .{ .to_mem, .none } },
24575 },
24576 .dst_temps = .{.{ .rc = .general_purpose }},
24577 .each = .{ .once = &.{
24578 .{ ._, ._, .mov, .dst0w, .mem(.src0w), ._, ._ },
24579 } },
24580 }, .{
24581 .dst_constraints = .{.{ .int = .dword }},
24582 .patterns = &.{
24583 .{ .src = .{ .to_mem, .none } },
24584 },
24585 .dst_temps = .{.{ .rc = .general_purpose }},
24586 .each = .{ .once = &.{
24587 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
24588 } },
24589 }, .{
24590 .required_features = .{ .@"64bit", null, null, null },
24591 .dst_constraints = .{.{ .int = .qword }},
24592 .patterns = &.{
24593 .{ .src = .{ .to_mem, .none } },
24594 },
24595 .dst_temps = .{.{ .rc = .general_purpose }},
24596 .each = .{ .once = &.{
24597 .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },
24598 } },
24599 }, .{45187 }, .{
24600 .required_features = .{ .@"64bit", null, null, null },45188 .required_features = .{ .sse2, null, null, null },
24601 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},45189 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
45190 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
24602 .patterns = &.{45191 .patterns = &.{
24603 .{ .src = .{ .to_mem, .none } },45192 .{ .src = .{ .to_mem, .none, .none } },
24604 },45193 },
24605 .extra_temps = .{45194 .extra_temps = .{
24606 .{ .type = .usize, .kind = .{ .reg = .rsi } },45195 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24607 .{ .type = .usize, .kind = .{ .reg = .rdi } },45196 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
24608 .{ .type = .u32, .kind = .{ .reg = .ecx } },45197 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
24609 .unused,45198 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
24610 .unused,45199 .unused,
24611 .unused,45200 .unused,
24612 .unused,45201 .unused,
...@@ -24614,108 +45203,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24614,108 +45203,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24614 .unused,45203 .unused,
24615 },45204 },
24616 .dst_temps = .{.mem},45205 .dst_temps = .{.mem},
45206 .clobbers = .{ .eflags = true },
24617 .each = .{ .once = &.{45207 .each = .{ .once = &.{
24618 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },45208 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
24619 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },45209 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
24620 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ },45210 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24621 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },45211 .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
45212 .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
45213 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
45214 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
45215 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24622 } },45216 } },
24623 }, .{45217 }, .{
24624 .required_features = .{ .sse, null, null, null },45218 .required_features = .{ .sse, null, null, null },
24625 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any },45219 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
24626 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .byte } }},45220 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
24627 .patterns = &.{
24628 .{ .src = .{ .mut_mem, .none } },
24629 .{ .src = .{ .to_mut_sse, .none } },
24630 },
24631 .dst_temps = .{.{ .ref = .src0 }},
24632 .each = .{ .once = &.{} },
24633 }, .{
24634 .required_features = .{ .avx, null, null, null },
24635 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .byte } }, .any },
24636 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .byte } }},
24637 .patterns = &.{
24638 .{ .src = .{ .mut_mem, .none } },
24639 .{ .src = .{ .to_mut_sse, .none } },
24640 },
24641 .dst_temps = .{.{ .ref = .src0 }},
24642 .each = .{ .once = &.{} },
24643 }, .{
24644 .required_features = .{ .avx, null, null, null },
24645 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any },
24646 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }},
24647 .patterns = &.{
24648 .{ .src = .{ .to_sse, .none } },
24649 },
24650 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
24651 .each = .{ .once = &.{
24652 .{ ._, .vp_b, .ackssw, .dst0x, .src0x, .dst0x, ._ },
24653 } },
24654 }, .{
24655 .required_features = .{ .avx, null, null, null },
24656 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any },
24657 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }},
24658 .patterns = &.{
24659 .{ .src = .{ .to_sse, .none } },
24660 },
24661 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
24662 .each = .{ .once = &.{
24663 .{ ._, .vp_b, .ackusw, .dst0x, .src0x, .dst0x, ._ },
24664 } },
24665 }, .{
24666 .required_features = .{ .sse2, null, null, null },
24667 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any },
24668 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }},
24669 .patterns = &.{
24670 .{ .src = .{ .to_mut_sse, .none } },
24671 },
24672 .dst_temps = .{.{ .ref = .src0 }},
24673 .each = .{ .once = &.{
24674 .{ ._, .p_b, .ackssw, .dst0x, .dst0x, ._, ._ },
24675 } },
24676 }, .{
24677 .required_features = .{ .sse2, null, null, null },
24678 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any },
24679 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }},
24680 .patterns = &.{
24681 .{ .src = .{ .to_mut_sse, .none } },
24682 },
24683 .dst_temps = .{.{ .ref = .src0 }},
24684 .each = .{ .once = &.{
24685 .{ ._, .p_b, .ackusw, .dst0x, .dst0x, ._, ._ },
24686 } },
24687 }, .{
24688 .required_features = .{ .avx2, null, null, null },
24689 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any },
24690 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }},
24691 .patterns = &.{45221 .patterns = &.{
24692 .{ .src = .{ .to_sse, .none } },45222 .{ .src = .{ .to_mem, .none, .none } },
24693 },45223 },
24694 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},45224 .extra_temps = .{
24695 .each = .{ .once = &.{45225 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24696 .{ ._, .vp_b, .ackssw, .dst0y, .src0y, .dst0y, ._ },45226 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
24697 } },45227 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
24698 }, .{45228 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
24699 .required_features = .{ .avx2, null, null, null },45229 .unused,
24700 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any },45230 .unused,
24701 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .byte } }},45231 .unused,
24702 .patterns = &.{45232 .unused,
24703 .{ .src = .{ .to_sse, .none } },45233 .unused,
24704 },45234 },
24705 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},45235 .dst_temps = .{.mem},
45236 .clobbers = .{ .eflags = true },
24706 .each = .{ .once = &.{45237 .each = .{ .once = &.{
24707 .{ ._, .vp_b, .ackusw, .dst0y, .src0y, .dst0y, ._ },45238 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
45239 .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ },
45240 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
45241 .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
45242 .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
45243 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
45244 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
45245 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24708 } },45246 } },
24709 }, .{45247 }, .{
24710 .required_features = .{ .slow_incdec, null, null, null },45248 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
24711 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },45249 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
24712 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
24713 .patterns = &.{45250 .patterns = &.{
24714 .{ .src = .{ .to_mem, .none } },45251 .{ .src = .{ .to_mem, .none, .none } },
24715 },45252 },
24716 .extra_temps = .{45253 .extra_temps = .{
24717 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45254 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24718 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },45255 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
24719 .unused,45256 .unused,
24720 .unused,45257 .unused,
24721 .unused,45258 .unused,
...@@ -24725,22 +45262,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24725,22 +45262,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24725 .unused,45262 .unused,
24726 },45263 },
24727 .dst_temps = .{.mem},45264 .dst_temps = .{.mem},
45265 .clobbers = .{ .eflags = true },
24728 .each = .{ .once = &.{45266 .each = .{ .once = &.{
24729 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45267 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24730 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },45268 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
24731 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },45269 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
24732 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },45270 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
24733 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45271 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24734 } },45272 } },
24735 }, .{45273 }, .{
24736 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },45274 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
24737 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},45275 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
24738 .patterns = &.{45276 .patterns = &.{
24739 .{ .src = .{ .to_mem, .none } },45277 .{ .src = .{ .to_mem, .none, .none } },
24740 },45278 },
24741 .extra_temps = .{45279 .extra_temps = .{
24742 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45280 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24743 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },45281 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
24744 .unused,45282 .unused,
24745 .unused,45283 .unused,
24746 .unused,45284 .unused,
...@@ -24750,95 +45288,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24750,95 +45288,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24750 .unused,45288 .unused,
24751 },45289 },
24752 .dst_temps = .{.mem},45290 .dst_temps = .{.mem},
45291 .clobbers = .{ .eflags = true },
24753 .each = .{ .once = &.{45292 .each = .{ .once = &.{
24754 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45293 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24755 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },45294 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
24756 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },45295 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
24757 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },45296 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
24758 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },45297 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
24759 } },45298 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
24760 }, .{45299 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24761 .required_features = .{ .avx, null, null, null },
24762 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
24763 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }},
24764 .patterns = &.{
24765 .{ .src = .{ .to_sse, .none } },
24766 },
24767 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
24768 .each = .{ .once = &.{
24769 .{ ._, .vp_w, .ackssd, .dst0x, .src0x, .dst0x, ._ },
24770 .{ ._, .vp_b, .ackssw, .dst0x, .dst0x, .dst0x, ._ },
24771 } },
24772 }, .{
24773 .required_features = .{ .avx, null, null, null },
24774 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
24775 .dst_constraints = .{.{ .scalar_int = .{ .of = .dword, .is = .byte } }},
24776 .patterns = &.{
24777 .{ .src = .{ .to_sse, .none } },
24778 },
24779 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
24780 .each = .{ .once = &.{
24781 .{ ._, .vp_w, .ackusd, .dst0x, .src0x, .dst0x, ._ },
24782 .{ ._, .vp_b, .ackusw, .dst0x, .dst0x, .dst0x, ._ },
24783 } },
24784 }, .{
24785 .required_features = .{ .sse2, null, null, null },
24786 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
24787 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }},
24788 .patterns = &.{
24789 .{ .src = .{ .to_mut_sse, .none } },
24790 },
24791 .dst_temps = .{.{ .ref = .src0 }},
24792 .each = .{ .once = &.{
24793 .{ ._, .p_w, .ackssd, .dst0x, .dst0x, ._, ._ },
24794 .{ ._, .p_b, .ackssw, .dst0x, .dst0x, ._, ._ },
24795 } },
24796 }, .{
24797 .required_features = .{ .sse4_1, null, null, null },
24798 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
24799 .dst_constraints = .{.{ .scalar_int = .{ .of = .dword, .is = .byte } }},
24800 .patterns = &.{
24801 .{ .src = .{ .to_mut_sse, .none } },
24802 },
24803 .dst_temps = .{.{ .ref = .src0 }},
24804 .each = .{ .once = &.{
24805 .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ },
24806 .{ ._, .p_b, .ackusw, .dst0x, .dst0x, ._, ._ },
24807 } },
24808 }, .{
24809 .required_features = .{ .avx2, null, null, null },
24810 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },
24811 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }},
24812 .patterns = &.{
24813 .{ .src = .{ .to_sse, .none } },
24814 },
24815 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
24816 .each = .{ .once = &.{
24817 .{ ._, .vp_w, .ackssd, .dst0y, .src0y, .dst0y, ._ },
24818 .{ ._, .vp_b, .ackssw, .dst0y, .dst0y, .dst0y, ._ },
24819 } },
24820 }, .{
24821 .required_features = .{ .avx2, null, null, null },
24822 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },
24823 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }},
24824 .patterns = &.{
24825 .{ .src = .{ .to_sse, .none } },
24826 },
24827 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
24828 .each = .{ .once = &.{
24829 .{ ._, .vp_w, .ackusd, .dst0y, .src0y, .dst0y, ._ },
24830 .{ ._, .vp_b, .ackusw, .dst0y, .dst0y, .dst0y, ._ },
24831 } },45300 } },
24832 }, .{45301 }, .{
24833 .required_features = .{ .slow_incdec, null, null, null },45302 .required_features = .{ .fast_imm16, null, null, null },
24834 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },45303 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
24835 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},45304 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
24836 .patterns = &.{45305 .patterns = &.{
24837 .{ .src = .{ .to_mem, .none } },45306 .{ .src = .{ .to_mem, .none, .none } },
24838 },45307 },
24839 .extra_temps = .{45308 .extra_temps = .{
24840 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45309 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24841 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },45310 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
24842 .unused,45311 .unused,
24843 .unused,45312 .unused,
24844 .unused,45313 .unused,
...@@ -24848,22 +45317,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24848,22 +45317,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24848 .unused,45317 .unused,
24849 },45318 },
24850 .dst_temps = .{.mem},45319 .dst_temps = .{.mem},
45320 .clobbers = .{ .eflags = true },
24851 .each = .{ .once = &.{45321 .each = .{ .once = &.{
24852 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45322 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24853 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },45323 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
24854 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },45324 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
24855 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },45325 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
45326 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
24856 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45327 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24857 } },45328 } },
24858 }, .{45329 }, .{
24859 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },45330 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
24860 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},45331 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
24861 .patterns = &.{45332 .patterns = &.{
24862 .{ .src = .{ .to_mem, .none } },45333 .{ .src = .{ .to_mem, .none, .none } },
24863 },45334 },
24864 .extra_temps = .{45335 .extra_temps = .{
24865 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45336 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24866 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },45337 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
24867 .unused,45338 .unused,
24868 .unused,45339 .unused,
24869 .unused,45340 .unused,
...@@ -24873,23 +45344,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24873,23 +45344,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24873 .unused,45344 .unused,
24874 },45345 },
24875 .dst_temps = .{.mem},45346 .dst_temps = .{.mem},
45347 .clobbers = .{ .eflags = true },
24876 .each = .{ .once = &.{45348 .each = .{ .once = &.{
24877 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45349 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24878 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },45350 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
24879 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },45351 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
24880 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },45352 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
24881 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },45353 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
45354 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24882 } },45355 } },
24883 }, .{45356 }, .{
24884 .required_features = .{ .slow_incdec, null, null, null },45357 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
24885 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },45358 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
24886 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
24887 .patterns = &.{45359 .patterns = &.{
24888 .{ .src = .{ .to_mem, .none } },45360 .{ .src = .{ .to_mem, .none, .none } },
24889 },45361 },
24890 .extra_temps = .{45362 .extra_temps = .{
24891 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45363 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24892 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },45364 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
24893 .unused,45365 .unused,
24894 .unused,45366 .unused,
24895 .unused,45367 .unused,
...@@ -24899,22 +45371,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24899,22 +45371,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24899 .unused,45371 .unused,
24900 },45372 },
24901 .dst_temps = .{.mem},45373 .dst_temps = .{.mem},
45374 .clobbers = .{ .eflags = true },
24902 .each = .{ .once = &.{45375 .each = .{ .once = &.{
24903 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45376 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24904 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },45377 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
24905 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },45378 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
24906 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },45379 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
24907 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45380 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24908 } },45381 } },
24909 }, .{45382 }, .{
24910 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },45383 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
24911 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},45384 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
24912 .patterns = &.{45385 .patterns = &.{
24913 .{ .src = .{ .to_mem, .none } },45386 .{ .src = .{ .to_mem, .none, .none } },
24914 },45387 },
24915 .extra_temps = .{45388 .extra_temps = .{
24916 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45389 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24917 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },45390 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
24918 .unused,45391 .unused,
24919 .unused,45392 .unused,
24920 .unused,45393 .unused,
...@@ -24924,24 +45397,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24924,24 +45397,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24924 .unused,45397 .unused,
24925 },45398 },
24926 .dst_temps = .{.mem},45399 .dst_temps = .{.mem},
45400 .clobbers = .{ .eflags = true },
24927 .each = .{ .once = &.{45401 .each = .{ .once = &.{
24928 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45402 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24929 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },45403 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
24930 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },45404 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
24931 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },45405 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
24932 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },45406 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
45407 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
45408 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24933 } },45409 } },
24934 }, .{45410 }, .{
24935 .required_features = .{ .slow_incdec, null, null, null },45411 .required_features = .{ .bmi2, null, null, null },
24936 .src_constraints = .{ .any_scalar_int, .any },45412 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
24937 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},45413 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
24938 .patterns = &.{45414 .patterns = &.{
24939 .{ .src = .{ .to_mem, .none } },45415 .{ .src = .{ .to_mem, .none, .none } },
24940 },45416 },
24941 .extra_temps = .{45417 .extra_temps = .{
24942 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45418 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24943 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24944 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },45419 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
45420 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
24945 .unused,45421 .unused,
24946 .unused,45422 .unused,
24947 .unused,45423 .unused,
...@@ -24950,25 +45426,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24950,25 +45426,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24950 .unused,45426 .unused,
24951 },45427 },
24952 .dst_temps = .{.mem},45428 .dst_temps = .{.mem},
45429 .clobbers = .{ .eflags = true },
24953 .each = .{ .once = &.{45430 .each = .{ .once = &.{
24954 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45431 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24955 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },45432 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
24956 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },45433 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._ },
24957 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },45434 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
24958 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },45435 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
24959 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
24960 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45436 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24961 } },45437 } },
24962 }, .{45438 }, .{
24963 .src_constraints = .{ .any_scalar_int, .any },45439 .required_features = .{ .fast_imm16, null, null, null },
24964 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},45440 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
45441 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
24965 .patterns = &.{45442 .patterns = &.{
24966 .{ .src = .{ .to_mem, .none } },45443 .{ .src = .{ .to_mem, .none, .none } },
24967 },45444 },
24968 .extra_temps = .{45445 .extra_temps = .{
24969 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45446 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24970 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45447 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
24971 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },45448 .unused,
24972 .unused,45449 .unused,
24973 .unused,45450 .unused,
24974 .unused,45451 .unused,
...@@ -24977,106 +45454,130 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24977,106 +45454,130 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24977 .unused,45454 .unused,
24978 },45455 },
24979 .dst_temps = .{.mem},45456 .dst_temps = .{.mem},
45457 .clobbers = .{ .eflags = true },
24980 .each = .{ .once = &.{45458 .each = .{ .once = &.{
24981 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45459 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24982 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },45460 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
24983 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },45461 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
24984 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },45462 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
24985 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },45463 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
24986 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },45464 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24987 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
24988 } },45465 } },
24989 }, .{45466 }, .{
24990 .required_features = .{ .sse, null, null, null },45467 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
24991 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any },45468 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
24992 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
24993 .patterns = &.{
24994 .{ .src = .{ .mut_mem, .none } },
24995 .{ .src = .{ .to_mut_sse, .none } },
24996 },
24997 .dst_temps = .{.{ .ref = .src0 }},
24998 .each = .{ .once = &.{} },
24999 }, .{
25000 .required_features = .{ .avx, null, null, null },
25001 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any },
25002 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .word } }},
25003 .patterns = &.{45469 .patterns = &.{
25004 .{ .src = .{ .mut_mem, .none } },45470 .{ .src = .{ .to_mem, .none, .none } },
25005 .{ .src = .{ .to_mut_sse, .none } },
25006 },45471 },
25007 .dst_temps = .{.{ .ref = .src0 }},45472 .extra_temps = .{
25008 .each = .{ .once = &.{} },45473 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25009 }, .{45474 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
25010 .required_features = .{ .avx, null, null, null },45475 .unused,
25011 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },45476 .unused,
25012 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .word } }},45477 .unused,
25013 .patterns = &.{45478 .unused,
25014 .{ .src = .{ .to_sse, .none } },45479 .unused,
45480 .unused,
45481 .unused,
25015 },45482 },
25016 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},45483 .dst_temps = .{.mem},
45484 .clobbers = .{ .eflags = true },
25017 .each = .{ .once = &.{45485 .each = .{ .once = &.{
25018 .{ ._, .vp_w, .ackssd, .dst0x, .src0x, .dst0x, ._ },45486 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
45487 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
45488 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
45489 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
45490 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
45491 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25019 } },45492 } },
25020 }, .{45493 }, .{
25021 .required_features = .{ .avx, null, null, null },45494 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
25022 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },45495 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
25023 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .word } }},
25024 .patterns = &.{45496 .patterns = &.{
25025 .{ .src = .{ .to_sse, .none } },45497 .{ .src = .{ .to_mem, .none, .none } },
25026 },45498 },
25027 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},45499 .extra_temps = .{
25028 .each = .{ .once = &.{45500 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25029 .{ ._, .vp_w, .ackusd, .dst0x, .src0x, .dst0x, ._ },45501 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
25030 } },45502 .unused,
25031 }, .{45503 .unused,
25032 .required_features = .{ .sse2, null, null, null },45504 .unused,
25033 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },45505 .unused,
25034 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .word } }},45506 .unused,
25035 .patterns = &.{45507 .unused,
25036 .{ .src = .{ .to_mut_sse, .none } },45508 .unused,
25037 },45509 },
25038 .dst_temps = .{.{ .ref = .src0 }},45510 .dst_temps = .{.mem},
45511 .clobbers = .{ .eflags = true },
25039 .each = .{ .once = &.{45512 .each = .{ .once = &.{
25040 .{ ._, .p_w, .ackssd, .dst0x, .dst0x, ._, ._ },45513 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
45514 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
45515 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
45516 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
45517 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25041 } },45518 } },
25042 }, .{45519 }, .{
25043 .required_features = .{ .sse4_1, null, null, null },45520 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
25044 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },45521 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
25045 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .word } }},
25046 .patterns = &.{45522 .patterns = &.{
25047 .{ .src = .{ .to_mut_sse, .none } },45523 .{ .src = .{ .to_mem, .none, .none } },
25048 },45524 },
25049 .dst_temps = .{.{ .ref = .src0 }},45525 .extra_temps = .{
25050 .each = .{ .once = &.{45526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25051 .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ },45527 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
25052 } },45528 .unused,
25053 }, .{45529 .unused,
25054 .required_features = .{ .avx2, null, null, null },45530 .unused,
25055 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },45531 .unused,
25056 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},45532 .unused,
25057 .patterns = &.{45533 .unused,
25058 .{ .src = .{ .to_sse, .none } },45534 .unused,
25059 },45535 },
25060 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},45536 .dst_temps = .{.mem},
45537 .clobbers = .{ .eflags = true },
25061 .each = .{ .once = &.{45538 .each = .{ .once = &.{
25062 .{ ._, .vp_w, .ackssd, .dst0y, .src0y, .dst0y, ._ },45539 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
45540 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
45541 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
45542 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
45543 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
45544 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
45545 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25063 } },45546 } },
25064 }, .{45547 }, .{
25065 .required_features = .{ .avx2, null, null, null },45548 .required_features = .{ .bmi2, null, null, null },
25066 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },45549 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
25067 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},45550 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
25068 .patterns = &.{45551 .patterns = &.{
25069 .{ .src = .{ .to_sse, .none } },45552 .{ .src = .{ .to_mem, .none, .none } },
25070 },45553 },
25071 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},45554 .extra_temps = .{
45555 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
45556 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
45557 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
45558 .unused,
45559 .unused,
45560 .unused,
45561 .unused,
45562 .unused,
45563 .unused,
45564 },
45565 .dst_temps = .{.mem},
45566 .clobbers = .{ .eflags = true },
25072 .each = .{ .once = &.{45567 .each = .{ .once = &.{
25073 .{ ._, .vp_w, .ackusd, .dst0y, .src0y, .dst0y, ._ },45568 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
45569 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
45570 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
45571 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
45572 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
45573 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25074 } },45574 } },
25075 }, .{45575 }, .{
25076 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },45576 .required_features = .{ .fast_imm16, null, null, null },
25077 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},45577 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
45578 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
25078 .patterns = &.{45579 .patterns = &.{
25079 .{ .src = .{ .to_mem, .none } },45580 .{ .src = .{ .to_mem, .none, .none } },
25080 },45581 },
25081 .extra_temps = .{45582 .extra_temps = .{
25082 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45583 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -25090,18 +45591,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25090,18 +45591,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25090 .unused,45591 .unused,
25091 },45592 },
25092 .dst_temps = .{.mem},45593 .dst_temps = .{.mem},
45594 .clobbers = .{ .eflags = true },
25093 .each = .{ .once = &.{45595 .each = .{ .once = &.{
25094 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45596 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25095 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },45597 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
45598 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
25096 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },45599 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
25097 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },45600 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
25098 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45601 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25099 } },45602 } },
25100 }, .{45603 }, .{
25101 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },45604 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
25102 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},45605 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
25103 .patterns = &.{45606 .patterns = &.{
25104 .{ .src = .{ .to_mem, .none } },45607 .{ .src = .{ .to_mem, .none, .none } },
25105 },45608 },
25106 .extra_temps = .{45609 .extra_temps = .{
25107 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45610 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -25115,18 +45618,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25115,18 +45618,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25115 .unused,45618 .unused,
25116 },45619 },
25117 .dst_temps = .{.mem},45620 .dst_temps = .{.mem},
45621 .clobbers = .{ .eflags = true },
25118 .each = .{ .once = &.{45622 .each = .{ .once = &.{
25119 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45623 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25120 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },45624 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
45625 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
25121 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },45626 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
25122 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },45627 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
25123 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45628 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25124 } },45629 } },
25125 }, .{45630 }, .{
25126 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any },45631 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
25127 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},45632 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
25128 .patterns = &.{45633 .patterns = &.{
25129 .{ .src = .{ .to_mem, .none } },45634 .{ .src = .{ .to_mem, .none, .none } },
25130 },45635 },
25131 .extra_temps = .{45636 .extra_temps = .{
25132 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45637 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -25140,6 +45645,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25140,6 +45645,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25140 .unused,45645 .unused,
25141 },45646 },
25142 .dst_temps = .{.mem},45647 .dst_temps = .{.mem},
45648 .clobbers = .{ .eflags = true },
25143 .each = .{ .once = &.{45649 .each = .{ .once = &.{
25144 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45650 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25145 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },45651 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
...@@ -25148,15 +45654,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25148,15 +45654,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25148 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45654 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25149 } },45655 } },
25150 }, .{45656 }, .{
25151 .src_constraints = .{ .any_scalar_int, .any },45657 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
25152 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},45658 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
25153 .patterns = &.{45659 .patterns = &.{
25154 .{ .src = .{ .to_mem, .none } },45660 .{ .src = .{ .to_mem, .none, .none } },
25155 },45661 },
25156 .extra_temps = .{45662 .extra_temps = .{
25157 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45663 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25158 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45664 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
25159 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },45665 .unused,
25160 .unused,45666 .unused,
25161 .unused,45667 .unused,
25162 .unused,45668 .unused,
...@@ -25165,68 +45671,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25165,68 +45671,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25165 .unused,45671 .unused,
25166 },45672 },
25167 .dst_temps = .{.mem},45673 .dst_temps = .{.mem},
45674 .clobbers = .{ .eflags = true },
25168 .each = .{ .once = &.{45675 .each = .{ .once = &.{
25169 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45676 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25170 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },45677 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
25171 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },45678 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
25172 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },45679 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
25173 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },45680 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
25174 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },45681 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
25175 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45682 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25176 } },45683 } },
25177 }, .{45684 }, .{
25178 .required_features = .{ .sse, null, null, null },45685 .required_features = .{ .bmi2, null, null, null },
25179 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },45686 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
25180 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},45687 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
25181 .patterns = &.{
25182 .{ .src = .{ .mut_mem, .none } },
25183 .{ .src = .{ .to_mut_sse, .none } },
25184 },
25185 .dst_temps = .{.{ .ref = .src0 }},
25186 .each = .{ .once = &.{} },
25187 }, .{
25188 .required_features = .{ .avx, null, null, null },
25189 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },
25190 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }},
25191 .patterns = &.{
25192 .{ .src = .{ .mut_mem, .none } },
25193 .{ .src = .{ .to_mut_sse, .none } },
25194 },
25195 .dst_temps = .{.{ .ref = .src0 }},
25196 .each = .{ .once = &.{} },
25197 }, .{
25198 .required_features = .{ .avx, null, null, null },
25199 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
25200 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .dword } }},
25201 .patterns = &.{45688 .patterns = &.{
25202 .{ .src = .{ .mem, .none } },45689 .{ .src = .{ .to_mem, .none, .none } },
25203 .{ .src = .{ .to_sse, .none } },
25204 },45690 },
25205 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},45691 .extra_temps = .{
25206 .each = .{ .once = &.{45692 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25207 .{ ._, .vp_d, .shuf, .dst0x, .src0x, .ui(0b10_00_10_00), ._ },45693 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
25208 } },45694 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
25209 }, .{45695 .unused,
25210 .required_features = .{ .sse2, null, null, null },45696 .unused,
25211 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },45697 .unused,
25212 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .dword } }},45698 .unused,
25213 .patterns = &.{45699 .unused,
25214 .{ .src = .{ .mem, .none } },45700 .unused,
25215 .{ .src = .{ .to_sse, .none } },
25216 },45701 },
25217 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},45702 .dst_temps = .{.mem},
45703 .clobbers = .{ .eflags = true },
25218 .each = .{ .once = &.{45704 .each = .{ .once = &.{
25219 .{ ._, .p_d, .shuf, .dst0x, .src0x, .ui(0b10_00_10_00), ._ },45705 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
45706 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
45707 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
45708 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
45709 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
45710 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25220 } },45711 } },
25221 }, .{45712 }, .{
25222 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },45713 .required_features = .{ .fast_imm16, null, null, null },
25223 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},45714 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
45715 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
25224 .patterns = &.{45716 .patterns = &.{
25225 .{ .src = .{ .to_mem, .none } },45717 .{ .src = .{ .to_mem, .none, .none } },
25226 },45718 },
25227 .extra_temps = .{45719 .extra_temps = .{
25228 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45720 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25229 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45721 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
25230 .unused,45722 .unused,
25231 .unused,45723 .unused,
25232 .unused,45724 .unused,
...@@ -25236,22 +45728,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25236,22 +45728,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25236 .unused,45728 .unused,
25237 },45729 },
25238 .dst_temps = .{.mem},45730 .dst_temps = .{.mem},
45731 .clobbers = .{ .eflags = true },
25239 .each = .{ .once = &.{45732 .each = .{ .once = &.{
25240 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45733 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25241 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },45734 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
25242 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },45735 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
25243 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },45736 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
45737 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
25244 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45738 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25245 } },45739 } },
25246 }, .{45740 }, .{
25247 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any },45741 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
25248 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},45742 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
25249 .patterns = &.{45743 .patterns = &.{
25250 .{ .src = .{ .to_mem, .none } },45744 .{ .src = .{ .to_mem, .none, .none } },
25251 },45745 },
25252 .extra_temps = .{45746 .extra_temps = .{
25253 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45747 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25254 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45748 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
25255 .unused,45749 .unused,
25256 .unused,45750 .unused,
25257 .unused,45751 .unused,
...@@ -25261,23 +45755,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25261,23 +45755,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25261 .unused,45755 .unused,
25262 },45756 },
25263 .dst_temps = .{.mem},45757 .dst_temps = .{.mem},
45758 .clobbers = .{ .eflags = true },
25264 .each = .{ .once = &.{45759 .each = .{ .once = &.{
25265 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45760 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25266 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },45761 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
25267 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },45762 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
25268 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },45763 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
45764 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
25269 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45765 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25270 } },45766 } },
25271 }, .{45767 }, .{
25272 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any },45768 .src_constraints = .{ .any_scalar_int, .any, .any },
25273 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},45769 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
25274 .patterns = &.{45770 .patterns = &.{
25275 .{ .src = .{ .to_mem, .none } },45771 .{ .src = .{ .to_mem, .none, .none } },
25276 },45772 },
25277 .extra_temps = .{45773 .extra_temps = .{
25278 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45774 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25279 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45775 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25280 .unused,45776 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
25281 .unused,45777 .unused,
25282 .unused,45778 .unused,
25283 .unused,45779 .unused,
...@@ -25286,23 +45782,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25286,23 +45782,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25286 .unused,45782 .unused,
25287 },45783 },
25288 .dst_temps = .{.mem},45784 .dst_temps = .{.mem},
45785 .clobbers = .{ .eflags = true },
25289 .each = .{ .once = &.{45786 .each = .{ .once = &.{
25290 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45787 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25291 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },45788 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25292 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },45789 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
25293 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },45790 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
45791 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
45792 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
25294 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45793 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25295 } },45794 } },
25296 }, .{45795 }, .{
25297 .src_constraints = .{ .any_scalar_int, .any },45796 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
25298 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},45797 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
25299 .patterns = &.{45798 .patterns = &.{
25300 .{ .src = .{ .to_mem, .none } },45799 .{ .src = .{ .to_mem, .none, .none } },
25301 },45800 },
25302 .extra_temps = .{45801 .extra_temps = .{
25303 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45802 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25304 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45803 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25305 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45804 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
25306 .unused,45805 .unused,
25307 .unused,45806 .unused,
25308 .unused,45807 .unused,
...@@ -25311,47 +45810,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25311,47 +45810,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25311 .unused,45810 .unused,
25312 },45811 },
25313 .dst_temps = .{.mem},45812 .dst_temps = .{.mem},
45813 .clobbers = .{ .eflags = true },
25314 .each = .{ .once = &.{45814 .each = .{ .once = &.{
25315 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45815 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25316 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },45816 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25317 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },45817 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
25318 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },45818 .{ ._, ._l, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
45819 .{ ._, ._r, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
45820 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
25319 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },45821 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
25320 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },45822 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
25321 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45823 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25322 } },45824 } },
25323 }, .{45825 }, .{
25324 .required_features = .{ .sse, null, null, null },45826 .required_features = .{ .bmi2, null, null, null },
25325 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },45827 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
25326 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},45828 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
25327 .patterns = &.{
25328 .{ .src = .{ .mut_mem, .none } },
25329 .{ .src = .{ .to_mut_sse, .none } },
25330 },
25331 .dst_temps = .{.{ .ref = .src0 }},
25332 .each = .{ .once = &.{} },
25333 }, .{
25334 .required_features = .{ .avx, null, null, null },
25335 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .qword } }, .any },
25336 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
25337 .patterns = &.{
25338 .{ .src = .{ .mut_mem, .none } },
25339 .{ .src = .{ .to_mut_sse, .none } },
25340 },
25341 .dst_temps = .{.{ .ref = .src0 }},
25342 .each = .{ .once = &.{} },
25343 }, .{
25344 .required_features = .{ .@"64bit", null, null, null },
25345 .src_constraints = .{ .any_scalar_int, .any },
25346 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
25347 .patterns = &.{45829 .patterns = &.{
25348 .{ .src = .{ .to_mem, .none } },45830 .{ .src = .{ .to_mem, .none, .none } },
25349 },45831 },
25350 .extra_temps = .{45832 .extra_temps = .{
25351 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45833 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25352 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45834 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25353 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },45835 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
25354 .unused,45836 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
25355 .unused,45837 .unused,
25356 .unused,45838 .unused,
25357 .unused,45839 .unused,
...@@ -25359,57 +45841,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25359,57 +45841,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25359 .unused,45841 .unused,
25360 },45842 },
25361 .dst_temps = .{.mem},45843 .dst_temps = .{.mem},
45844 .clobbers = .{ .eflags = true },
25362 .each = .{ .once = &.{45845 .each = .{ .once = &.{
25363 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45846 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25364 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },45847 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25365 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ },45848 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
25366 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },45849 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },
45850 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
25367 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },45851 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
25368 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },45852 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
25369 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45853 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25370 } },45854 } },
25371 }, .{45855 }, .{
25372 .required_features = .{ .sse, null, null, null },45856 .required_features = .{ .fast_imm16, null, null, null },
25373 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },45857 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
25374 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},45858 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
25375 .patterns = &.{
25376 .{ .src = .{ .mut_mem, .none } },
25377 .{ .src = .{ .to_mut_sse, .none } },
25378 },
25379 .dst_temps = .{.{ .ref = .src0 }},
25380 .each = .{ .once = &.{} },
25381 }, .{
25382 .required_features = .{ .avx, null, null, null },
25383 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .xword } }, .any },
25384 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .xword } }},
25385 .patterns = &.{
25386 .{ .src = .{ .mut_mem, .none } },
25387 .{ .src = .{ .to_mut_sse, .none } },
25388 },
25389 .dst_temps = .{.{ .ref = .src0 }},
25390 .each = .{ .once = &.{} },
25391 }, .{
25392 .required_features = .{ .avx, null, null, null },
25393 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .yword } }, .any },
25394 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .yword } }},
25395 .patterns = &.{
25396 .{ .src = .{ .mut_mem, .none } },
25397 .{ .src = .{ .to_mut_sse, .none } },
25398 },
25399 .dst_temps = .{.{ .ref = .src0 }},
25400 .each = .{ .once = &.{} },
25401 }, .{
25402 .required_features = .{ .@"64bit", .slow_incdec, null, null },
25403 .src_constraints = .{ .any_scalar_int, .any },
25404 .dst_constraints = .{.any_scalar_int},
25405 .patterns = &.{45859 .patterns = &.{
25406 .{ .src = .{ .to_mem, .none } },45860 .{ .src = .{ .to_mem, .none, .none } },
25407 },45861 },
25408 .extra_temps = .{45862 .extra_temps = .{
45863 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25409 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45864 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25410 .{ .type = .usize, .kind = .{ .reg = .rsi } },45865 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
25411 .{ .type = .usize, .kind = .{ .reg = .rdi } },45866 .unused,
25412 .{ .type = .u32, .kind = .{ .reg = .ecx } },
25413 .unused,45867 .unused,
25414 .unused,45868 .unused,
25415 .unused,45869 .unused,
...@@ -25419,27 +45873,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25419,27 +45873,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25419 .dst_temps = .{.mem},45873 .dst_temps = .{.mem},
25420 .clobbers = .{ .eflags = true },45874 .clobbers = .{ .eflags = true },
25421 .each = .{ .once = &.{45875 .each = .{ .once = &.{
25422 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },45876 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25423 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },45877 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25424 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },45878 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
25425 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },45879 .{ ._, ._, .@"and", .tmp2w, .sa(.dst0, .add_umax), ._, ._ },
25426 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },45880 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
25427 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },45881 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
25428 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },45882 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
25429 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },45883 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25430 } },45884 } },
25431 }, .{45885 }, .{
25432 .required_features = .{ .@"64bit", null, null, null },45886 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
25433 .src_constraints = .{ .any_scalar_int, .any },45887 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
25434 .dst_constraints = .{.any_scalar_int},
25435 .patterns = &.{45888 .patterns = &.{
25436 .{ .src = .{ .to_mem, .none } },45889 .{ .src = .{ .to_mem, .none, .none } },
25437 },45890 },
25438 .extra_temps = .{45891 .extra_temps = .{
45892 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25439 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45893 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25440 .{ .type = .usize, .kind = .{ .reg = .rsi } },45894 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
25441 .{ .type = .usize, .kind = .{ .reg = .rdi } },45895 .unused,
25442 .{ .type = .u32, .kind = .{ .reg = .ecx } },
25443 .unused,45896 .unused,
25444 .unused,45897 .unused,
25445 .unused,45898 .unused,
...@@ -25449,73 +45902,73 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25449,73 +45902,73 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25449 .dst_temps = .{.mem},45902 .dst_temps = .{.mem},
25450 .clobbers = .{ .eflags = true },45903 .clobbers = .{ .eflags = true },
25451 .each = .{ .once = &.{45904 .each = .{ .once = &.{
25452 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },45905 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25453 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },45906 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25454 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },45907 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
25455 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },45908 .{ ._, ._, .@"and", .tmp2d, .sa(.dst0, .add_umax), ._, ._ },
25456 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },45909 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
25457 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },45910 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
25458 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },45911 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
25459 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },45912 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25460 } },
25461 } } else comptime &.{ .{
25462 .src_constraints = .{ .{ .signed_int = .byte }, .any },
25463 .dst_constraints = .{.{ .signed_int = .dword }},
25464 .patterns = &.{
25465 .{ .src = .{ .mem, .none } },
25466 .{ .src = .{ .to_gpr, .none } },
25467 },
25468 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
25469 .each = .{ .once = &.{
25470 .{ ._, ._, .movsx, .dst0d, .src0b, ._, ._ },
25471 } },45913 } },
25472 }, .{45914 }, .{
25473 .src_constraints = .{ .{ .int = .byte }, .any },45915 .required_features = .{ .avx, null, null, null },
25474 .dst_constraints = .{.{ .int = .dword }},45916 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
45917 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
25475 .patterns = &.{45918 .patterns = &.{
25476 .{ .src = .{ .mem, .none } },45919 .{ .src = .{ .to_sse, .none, .none } },
25477 .{ .src = .{ .to_gpr, .none } },
25478 },45920 },
25479 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},45921 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
25480 .each = .{ .once = &.{45922 .each = .{ .once = &.{
25481 .{ ._, ._, .movzx, .dst0d, .src0b, ._, ._ },45923 .{ ._, .vp_d, .sll, .dst0x, .src0x, .uia(32, .dst0, .sub_bit_size), ._ },
45924 .{ ._, .vp_d, .sra, .dst0x, .dst0x, .uia(32, .dst0, .sub_bit_size), ._ },
25482 } },45925 } },
25483 }, .{45926 }, .{
25484 .required_features = .{ .@"64bit", null, null, null },45927 .required_features = .{ .avx, null, null, null },
25485 .src_constraints = .{ .{ .signed_int = .byte }, .any },45928 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
25486 .dst_constraints = .{.{ .signed_int = .qword }},45929 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
25487 .patterns = &.{45930 .patterns = &.{
25488 .{ .src = .{ .mem, .none } },45931 .{ .src = .{ .to_sse, .none, .none } },
25489 .{ .src = .{ .to_gpr, .none } },
25490 },45932 },
25491 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},45933 .extra_temps = .{
45934 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
45935 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
45936 .unused,
45937 .unused,
45938 .unused,
45939 .unused,
45940 .unused,
45941 .unused,
45942 .unused,
45943 },
45944 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
25492 .each = .{ .once = &.{45945 .each = .{ .once = &.{
25493 .{ ._, ._, .movsx, .dst0q, .src0b, ._, ._ },45946 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
45947 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
25494 } },45948 } },
25495 }, .{45949 }, .{
25496 .required_features = .{ .@"64bit", null, null, null },45950 .required_features = .{ .sse2, null, null, null },
25497 .src_constraints = .{ .{ .int = .byte }, .any },45951 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
25498 .dst_constraints = .{.{ .int = .qword }},45952 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
25499 .patterns = &.{45953 .patterns = &.{
25500 .{ .src = .{ .mem, .none } },45954 .{ .src = .{ .to_mut_sse, .none, .none } },
25501 .{ .src = .{ .to_gpr, .none } },
25502 },45955 },
25503 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},45956 .dst_temps = .{.{ .ref = .src0 }},
25504 .each = .{ .once = &.{45957 .each = .{ .once = &.{
25505 .{ ._, ._, .movzx, .dst0d, .src0b, ._, ._ },45958 .{ ._, .p_d, .sll, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ },
45959 .{ ._, .p_d, .sra, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ },
25506 } },45960 } },
25507 }, .{45961 }, .{
25508 .required_features = .{ .@"64bit", null, null, null },45962 .required_features = .{ .sse2, null, null, null },
25509 .src_constraints = .{ .{ .signed_int = .byte }, .any },45963 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
25510 .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }},45964 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
25511 .patterns = &.{45965 .patterns = &.{
25512 .{ .src = .{ .mem, .none } },45966 .{ .src = .{ .to_mut_sse, .none, .none } },
25513 .{ .src = .{ .to_gpr, .none } },
25514 },45967 },
25515 .extra_temps = .{45968 .extra_temps = .{
25516 .{ .type = .i64, .kind = .{ .reg = .rax } },45969 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
25517 .{ .type = .usize, .kind = .{ .reg = .rdi } },45970 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
25518 .{ .type = .u32, .kind = .{ .reg = .ecx } },45971 .unused,
25519 .unused,45972 .unused,
25520 .unused,45973 .unused,
25521 .unused,45974 .unused,
...@@ -25523,28 +45976,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25523,28 +45976,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25523 .unused,45976 .unused,
25524 .unused,45977 .unused,
25525 },45978 },
25526 .dst_temps = .{.mem},45979 .dst_temps = .{.{ .ref = .src0 }},
25527 .clobbers = .{ .eflags = true },
25528 .each = .{ .once = &.{45980 .each = .{ .once = &.{
25529 .{ ._, ._, .movsx, .tmp0q, .src0b, ._, ._ },45981 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
25530 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },45982 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
25531 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25532 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
25533 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25534 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25535 } },45983 } },
25536 }, .{45984 }, .{
25537 .required_features = .{ .@"64bit", null, null, null },45985 .required_features = .{ .sse, null, null, null },
25538 .src_constraints = .{ .{ .int = .byte }, .any },45986 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
25539 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},45987 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
25540 .patterns = &.{45988 .patterns = &.{
25541 .{ .src = .{ .mem, .none } },45989 .{ .src = .{ .to_mut_sse, .none, .none } },
25542 .{ .src = .{ .to_gpr, .none } },
25543 },45990 },
25544 .extra_temps = .{45991 .extra_temps = .{
25545 .{ .type = .u64, .kind = .{ .reg = .rax } },45992 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
25546 .{ .type = .usize, .kind = .{ .reg = .rdi } },45993 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
25547 .{ .type = .u32, .kind = .{ .reg = .ecx } },45994 .unused,
25548 .unused,45995 .unused,
25549 .unused,45996 .unused,
25550 .unused,45997 .unused,
...@@ -25552,27 +45999,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25552,27 +45999,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25552 .unused,45999 .unused,
25553 .unused,46000 .unused,
25554 },46001 },
25555 .dst_temps = .{.mem},46002 .dst_temps = .{.{ .ref = .src0 }},
25556 .clobbers = .{ .eflags = true },
25557 .each = .{ .once = &.{46003 .each = .{ .once = &.{
25558 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },46004 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
25559 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },46005 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
25560 .{ ._, ._sq, .sto, ._, ._, ._, ._ },46006 } },
25561 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },46007 }, .{
25562 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },46008 .required_features = .{ .avx2, null, null, null },
25563 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },46009 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },
46010 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }},
46011 .patterns = &.{
46012 .{ .src = .{ .to_sse, .none, .none } },
46013 },
46014 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
46015 .each = .{ .once = &.{
46016 .{ ._, .vp_d, .sll, .dst0y, .src0y, .uia(32, .dst0, .sub_bit_size), ._ },
46017 .{ ._, .vp_d, .sra, .dst0y, .dst0y, .uia(32, .dst0, .sub_bit_size), ._ },
25564 } },46018 } },
25565 }, .{46019 }, .{
25566 .src_constraints = .{ .{ .signed_int = .byte }, .any },46020 .required_features = .{ .avx2, null, null, null },
25567 .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .dword, .is = .dword } }},46021 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any },
46022 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }},
25568 .patterns = &.{46023 .patterns = &.{
25569 .{ .src = .{ .mem, .none } },46024 .{ .src = .{ .to_sse, .none, .none } },
25570 .{ .src = .{ .to_gpr, .none } },
25571 },46025 },
25572 .extra_temps = .{46026 .extra_temps = .{
25573 .{ .type = .i32, .kind = .{ .reg = .eax } },46027 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
25574 .{ .type = .usize, .kind = .{ .reg = .edi } },46028 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
25575 .{ .type = .u32, .kind = .{ .reg = .ecx } },46029 .unused,
25576 .unused,46030 .unused,
25577 .unused,46031 .unused,
25578 .unused,46032 .unused,
...@@ -25580,27 +46034,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25580,27 +46034,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25580 .unused,46034 .unused,
25581 .unused,46035 .unused,
25582 },46036 },
25583 .dst_temps = .{.mem},46037 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
25584 .clobbers = .{ .eflags = true },
25585 .each = .{ .once = &.{46038 .each = .{ .once = &.{
25586 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },46039 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
25587 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },46040 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
25588 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
25589 .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
25590 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
25591 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25592 } },46041 } },
25593 }, .{46042 }, .{
25594 .src_constraints = .{ .{ .int = .byte }, .any },46043 .required_features = .{ .avx2, null, null, null },
25595 .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},46044 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },
46045 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }},
25596 .patterns = &.{46046 .patterns = &.{
25597 .{ .src = .{ .mem, .none } },46047 .{ .src = .{ .to_mem, .none, .none } },
25598 .{ .src = .{ .to_gpr, .none } },
25599 },46048 },
25600 .extra_temps = .{46049 .extra_temps = .{
25601 .{ .type = .u32, .kind = .{ .reg = .eax } },46050 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25602 .{ .type = .usize, .kind = .{ .reg = .edi } },46051 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
25603 .{ .type = .u32, .kind = .{ .reg = .ecx } },46052 .unused,
25604 .unused,46053 .unused,
25605 .unused,46054 .unused,
25606 .unused,46055 .unused,
...@@ -25611,71 +46060,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25611,71 +46060,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25611 .dst_temps = .{.mem},46060 .dst_temps = .{.mem},
25612 .clobbers = .{ .eflags = true },46061 .clobbers = .{ .eflags = true },
25613 .each = .{ .once = &.{46062 .each = .{ .once = &.{
25614 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },46063 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25615 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },46064 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
25616 .{ ._, ._sd, .sto, ._, ._, ._, ._ },46065 .{ ._, .vp_d, .sll, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },
25617 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },46066 .{ ._, .vp_d, .sra, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },
25618 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },46067 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
25619 .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },46068 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
25620 } },46069 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25621 }, .{
25622 .src_constraints = .{ .{ .signed_int = .word }, .any },
25623 .dst_constraints = .{.{ .signed_int = .dword }},
25624 .patterns = &.{
25625 .{ .src = .{ .mem, .none } },
25626 .{ .src = .{ .to_gpr, .none } },
25627 },
25628 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
25629 .each = .{ .once = &.{
25630 .{ ._, ._, .movsx, .dst0d, .src0w, ._, ._ },
25631 } },
25632 }, .{
25633 .src_constraints = .{ .{ .int = .word }, .any },
25634 .dst_constraints = .{.{ .int = .dword }},
25635 .patterns = &.{
25636 .{ .src = .{ .mem, .none } },
25637 .{ .src = .{ .to_gpr, .none } },
25638 },
25639 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
25640 .each = .{ .once = &.{
25641 .{ ._, ._, .movzx, .dst0d, .src0w, ._, ._ },
25642 } },46070 } },
25643 }, .{46071 }, .{
25644 .required_features = .{ .@"64bit", null, null, null },46072 .required_features = .{ .avx2, null, null, null },
25645 .src_constraints = .{ .{ .signed_int = .word }, .any },46073 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any },
25646 .dst_constraints = .{.{ .signed_int = .qword }},46074 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }},
25647 .patterns = &.{46075 .patterns = &.{
25648 .{ .src = .{ .mem, .none } },46076 .{ .src = .{ .to_mem, .none, .none } },
25649 .{ .src = .{ .to_gpr, .none } },
25650 },46077 },
25651 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},46078 .extra_temps = .{
25652 .each = .{ .once = &.{46079 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25653 .{ ._, ._, .movsx, .dst0q, .src0w, ._, ._ },46080 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
25654 } },46081 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
25655 }, .{46082 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
25656 .required_features = .{ .@"64bit", null, null, null },46083 .unused,
25657 .src_constraints = .{ .{ .int = .word }, .any },46084 .unused,
25658 .dst_constraints = .{.{ .int = .qword }},46085 .unused,
25659 .patterns = &.{46086 .unused,
25660 .{ .src = .{ .mem, .none } },46087 .unused,
25661 .{ .src = .{ .to_gpr, .none } },
25662 },46088 },
25663 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},46089 .dst_temps = .{.mem},
46090 .clobbers = .{ .eflags = true },
25664 .each = .{ .once = &.{46091 .each = .{ .once = &.{
25665 .{ ._, ._, .movzx, .dst0d, .src0w, ._, ._ },46092 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
46093 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
46094 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46095 .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
46096 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },
46097 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
46098 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25666 } },46099 } },
25667 }, .{46100 }, .{
25668 .required_features = .{ .@"64bit", null, null, null },46101 .required_features = .{ .avx, null, null, null },
25669 .src_constraints = .{ .{ .signed_int = .word }, .any },46102 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
25670 .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }},46103 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
25671 .patterns = &.{46104 .patterns = &.{
25672 .{ .src = .{ .mem, .none } },46105 .{ .src = .{ .to_mem, .none, .none } },
25673 .{ .src = .{ .to_gpr, .none } },
25674 },46106 },
25675 .extra_temps = .{46107 .extra_temps = .{
25676 .{ .type = .i64, .kind = .{ .reg = .rax } },46108 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25677 .{ .type = .usize, .kind = .{ .reg = .rdi } },46109 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
25678 .{ .type = .u32, .kind = .{ .reg = .ecx } },46110 .unused,
25679 .unused,46111 .unused,
25680 .unused,46112 .unused,
25681 .unused,46113 .unused,
...@@ -25686,26 +46118,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25686,26 +46118,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25686 .dst_temps = .{.mem},46118 .dst_temps = .{.mem},
25687 .clobbers = .{ .eflags = true },46119 .clobbers = .{ .eflags = true },
25688 .each = .{ .once = &.{46120 .each = .{ .once = &.{
25689 .{ ._, ._, .movsx, .tmp0q, .src0w, ._, ._ },46121 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25690 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },46122 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
25691 .{ ._, ._sq, .sto, ._, ._, ._, ._ },46123 .{ ._, .vp_d, .sll, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
25692 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },46124 .{ ._, .vp_d, .sra, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
25693 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },46125 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
25694 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },46126 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
46127 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25695 } },46128 } },
25696 }, .{46129 }, .{
25697 .required_features = .{ .@"64bit", null, null, null },46130 .required_features = .{ .avx, null, null, null },
25698 .src_constraints = .{ .{ .int = .word }, .any },46131 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
25699 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},46132 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
25700 .patterns = &.{46133 .patterns = &.{
25701 .{ .src = .{ .mem, .none } },46134 .{ .src = .{ .to_mem, .none, .none } },
25702 .{ .src = .{ .to_gpr, .none } },
25703 },46135 },
25704 .extra_temps = .{46136 .extra_temps = .{
25705 .{ .type = .u64, .kind = .{ .reg = .rax } },46137 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25706 .{ .type = .usize, .kind = .{ .reg = .rdi } },46138 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
25707 .{ .type = .u32, .kind = .{ .reg = .ecx } },46139 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
25708 .unused,46140 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
25709 .unused,46141 .unused,
25710 .unused,46142 .unused,
25711 .unused,46143 .unused,
...@@ -25715,24 +46147,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25715,24 +46147,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25715 .dst_temps = .{.mem},46147 .dst_temps = .{.mem},
25716 .clobbers = .{ .eflags = true },46148 .clobbers = .{ .eflags = true },
25717 .each = .{ .once = &.{46149 .each = .{ .once = &.{
25718 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },46150 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
25719 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },46151 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
25720 .{ ._, ._sq, .sto, ._, ._, ._, ._ },46152 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25721 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },46153 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
25722 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },46154 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
25723 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },46155 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
46156 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25724 } },46157 } },
25725 }, .{46158 }, .{
25726 .src_constraints = .{ .{ .signed_int = .word }, .any },46159 .required_features = .{ .sse2, null, null, null },
25727 .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .dword, .is = .dword } }},46160 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
46161 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
25728 .patterns = &.{46162 .patterns = &.{
25729 .{ .src = .{ .mem, .none } },46163 .{ .src = .{ .to_mem, .none, .none } },
25730 .{ .src = .{ .to_gpr, .none } },
25731 },46164 },
25732 .extra_temps = .{46165 .extra_temps = .{
25733 .{ .type = .i32, .kind = .{ .reg = .eax } },46166 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25734 .{ .type = .usize, .kind = .{ .reg = .edi } },46167 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
25735 .{ .type = .u32, .kind = .{ .reg = .ecx } },46168 .unused,
25736 .unused,46169 .unused,
25737 .unused,46170 .unused,
25738 .unused,46171 .unused,
...@@ -25743,25 +46176,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25743,25 +46176,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25743 .dst_temps = .{.mem},46176 .dst_temps = .{.mem},
25744 .clobbers = .{ .eflags = true },46177 .clobbers = .{ .eflags = true },
25745 .each = .{ .once = &.{46178 .each = .{ .once = &.{
25746 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },46179 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25747 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },46180 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
25748 .{ ._, ._sd, .sto, ._, ._, ._, ._ },46181 .{ ._, .p_d, .sll, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
25749 .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },46182 .{ ._, .p_d, .sra, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
25750 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },46183 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
25751 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },46184 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
46185 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25752 } },46186 } },
25753 }, .{46187 }, .{
25754 .src_constraints = .{ .{ .int = .word }, .any },46188 .required_features = .{ .sse2, null, null, null },
25755 .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},46189 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
46190 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
25756 .patterns = &.{46191 .patterns = &.{
25757 .{ .src = .{ .mem, .none } },46192 .{ .src = .{ .to_mem, .none, .none } },
25758 .{ .src = .{ .to_gpr, .none } },
25759 },46193 },
25760 .extra_temps = .{46194 .extra_temps = .{
25761 .{ .type = .u32, .kind = .{ .reg = .eax } },46195 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25762 .{ .type = .usize, .kind = .{ .reg = .edi } },46196 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
25763 .{ .type = .u32, .kind = .{ .reg = .ecx } },46197 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
25764 .unused,46198 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
25765 .unused,46199 .unused,
25766 .unused,46200 .unused,
25767 .unused,46201 .unused,
...@@ -25771,49 +46205,55 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25771,49 +46205,55 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25771 .dst_temps = .{.mem},46205 .dst_temps = .{.mem},
25772 .clobbers = .{ .eflags = true },46206 .clobbers = .{ .eflags = true },
25773 .each = .{ .once = &.{46207 .each = .{ .once = &.{
25774 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },46208 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
25775 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },46209 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
25776 .{ ._, ._sd, .sto, ._, ._, ._, ._ },46210 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25777 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },46211 .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
25778 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },46212 .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
25779 .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },46213 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
46214 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
46215 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25780 } },46216 } },
25781 }, .{46217 }, .{
25782 .required_features = .{ .@"64bit", null, null, null },46218 .required_features = .{ .sse, null, null, null },
25783 .src_constraints = .{ .{ .signed_int = .dword }, .any },46219 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
25784 .dst_constraints = .{.{ .signed_int = .qword }},46220 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
25785 .patterns = &.{46221 .patterns = &.{
25786 .{ .src = .{ .mem, .none } },46222 .{ .src = .{ .to_mem, .none, .none } },
25787 .{ .src = .{ .to_gpr, .none } },
25788 },46223 },
25789 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},46224 .extra_temps = .{
25790 .each = .{ .once = &.{46225 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25791 .{ ._, ._d, .movsx, .dst0q, .src0d, ._, ._ },46226 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
25792 } },46227 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
25793 }, .{46228 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
25794 .required_features = .{ .@"64bit", null, null, null },46229 .unused,
25795 .src_constraints = .{ .{ .int = .dword }, .any },46230 .unused,
25796 .dst_constraints = .{.{ .int = .qword }},46231 .unused,
25797 .patterns = &.{46232 .unused,
25798 .{ .src = .{ .mem, .none } },46233 .unused,
25799 .{ .src = .{ .to_gpr, .none } },
25800 },46234 },
25801 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},46235 .dst_temps = .{.mem},
46236 .clobbers = .{ .eflags = true },
25802 .each = .{ .once = &.{46237 .each = .{ .once = &.{
25803 .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ },46238 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
46239 .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ },
46240 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46241 .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
46242 .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
46243 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
46244 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
46245 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25804 } },46246 } },
25805 }, .{46247 }, .{
25806 .required_features = .{ .@"64bit", null, null, null },46248 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
25807 .src_constraints = .{ .{ .signed_int = .dword }, .any },46249 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
25808 .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }},
25809 .patterns = &.{46250 .patterns = &.{
25810 .{ .src = .{ .mem, .none } },46251 .{ .src = .{ .to_mem, .none, .none } },
25811 .{ .src = .{ .to_gpr, .none } },
25812 },46252 },
25813 .extra_temps = .{46253 .extra_temps = .{
25814 .{ .type = .i64, .kind = .{ .reg = .rax } },46254 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25815 .{ .type = .usize, .kind = .{ .reg = .rdi } },46255 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25816 .{ .type = .u32, .kind = .{ .reg = .ecx } },46256 .unused,
25817 .unused,46257 .unused,
25818 .unused,46258 .unused,
25819 .unused,46259 .unused,
...@@ -25824,25 +46264,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25824,25 +46264,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25824 .dst_temps = .{.mem},46264 .dst_temps = .{.mem},
25825 .clobbers = .{ .eflags = true },46265 .clobbers = .{ .eflags = true },
25826 .each = .{ .once = &.{46266 .each = .{ .once = &.{
25827 .{ ._, ._d, .movsx, .tmp0q, .src0d, ._, ._ },46267 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25828 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },46268 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
25829 .{ ._, ._sq, .sto, ._, ._, ._, ._ },46269 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
25830 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },46270 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
25831 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },46271 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25832 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25833 } },46272 } },
25834 }, .{46273 }, .{
25835 .required_features = .{ .@"64bit", null, null, null },46274 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
25836 .src_constraints = .{ .{ .int = .dword }, .any },46275 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
25837 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
25838 .patterns = &.{46276 .patterns = &.{
25839 .{ .src = .{ .mem, .none } },46277 .{ .src = .{ .to_mem, .none, .none } },
25840 .{ .src = .{ .to_gpr, .none } },
25841 },46278 },
25842 .extra_temps = .{46279 .extra_temps = .{
25843 .{ .type = .u64, .kind = .{ .reg = .rax } },46280 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25844 .{ .type = .usize, .kind = .{ .reg = .rdi } },46281 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
25845 .{ .type = .u32, .kind = .{ .reg = .ecx } },46282 .unused,
25846 .unused,46283 .unused,
25847 .unused,46284 .unused,
25848 .unused,46285 .unused,
...@@ -25853,24 +46290,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25853,24 +46290,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25853 .dst_temps = .{.mem},46290 .dst_temps = .{.mem},
25854 .clobbers = .{ .eflags = true },46291 .clobbers = .{ .eflags = true },
25855 .each = .{ .once = &.{46292 .each = .{ .once = &.{
25856 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },46293 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25857 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },46294 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
25858 .{ ._, ._sq, .sto, ._, ._, ._, ._ },46295 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
25859 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },46296 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
25860 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },46297 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
25861 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },46298 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
46299 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25862 } },46300 } },
25863 }, .{46301 }, .{
25864 .src_constraints = .{ .{ .signed_int = .dword }, .any },46302 .required_features = .{ .bmi2, null, null, null },
25865 .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .dword, .is = .dword } }},46303 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
46304 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
25866 .patterns = &.{46305 .patterns = &.{
25867 .{ .src = .{ .mem, .none } },46306 .{ .src = .{ .to_mem, .none, .none } },
25868 .{ .src = .{ .to_gpr, .none } },
25869 },46307 },
25870 .extra_temps = .{46308 .extra_temps = .{
25871 .{ .type = .i32, .kind = .{ .reg = .eax } },46309 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25872 .{ .type = .usize, .kind = .{ .reg = .edi } },46310 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
25873 .{ .type = .u32, .kind = .{ .reg = .ecx } },46311 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25874 .unused,46312 .unused,
25875 .unused,46313 .unused,
25876 .unused,46314 .unused,
...@@ -25881,24 +46319,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25881,24 +46319,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25881 .dst_temps = .{.mem},46319 .dst_temps = .{.mem},
25882 .clobbers = .{ .eflags = true },46320 .clobbers = .{ .eflags = true },
25883 .each = .{ .once = &.{46321 .each = .{ .once = &.{
25884 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },46322 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25885 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },46323 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
25886 .{ ._, ._sd, .sto, ._, ._, ._, ._ },46324 .{ .@"0:", ._, .bzhi, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), .tmp1d, ._ },
25887 .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },46325 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
25888 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },46326 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
25889 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },46327 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25890 } },46328 } },
25891 }, .{46329 }, .{
25892 .src_constraints = .{ .{ .int = .dword }, .any },46330 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
25893 .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},46331 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
25894 .patterns = &.{46332 .patterns = &.{
25895 .{ .src = .{ .mem, .none } },46333 .{ .src = .{ .to_mem, .none, .none } },
25896 .{ .src = .{ .to_gpr, .none } },
25897 },46334 },
25898 .extra_temps = .{46335 .extra_temps = .{
25899 .{ .type = .u32, .kind = .{ .reg = .eax } },46336 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25900 .{ .type = .usize, .kind = .{ .reg = .edi } },46337 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25901 .{ .type = .u32, .kind = .{ .reg = .ecx } },46338 .unused,
25902 .unused,46339 .unused,
25903 .unused,46340 .unused,
25904 .unused,46341 .unused,
...@@ -25909,25 +46346,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25909,25 +46346,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25909 .dst_temps = .{.mem},46346 .dst_temps = .{.mem},
25910 .clobbers = .{ .eflags = true },46347 .clobbers = .{ .eflags = true },
25911 .each = .{ .once = &.{46348 .each = .{ .once = &.{
25912 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },46349 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25913 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },46350 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
25914 .{ ._, ._sd, .sto, ._, ._, ._, ._ },46351 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
25915 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },46352 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
25916 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },46353 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
25917 .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },46354 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25918 } },46355 } },
25919 }, .{46356 }, .{
25920 .required_features = .{ .@"64bit", null, null, null },46357 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
25921 .src_constraints = .{ .{ .signed_int = .qword }, .any },46358 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
25922 .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }},
25923 .patterns = &.{46359 .patterns = &.{
25924 .{ .src = .{ .mem, .none } },46360 .{ .src = .{ .to_mem, .none, .none } },
25925 .{ .src = .{ .to_gpr, .none } },
25926 },46361 },
25927 .extra_temps = .{46362 .extra_temps = .{
25928 .{ .type = .i64, .kind = .{ .reg = .rax } },46363 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25929 .{ .type = .usize, .kind = .{ .reg = .rdi } },46364 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25930 .{ .type = .u32, .kind = .{ .reg = .ecx } },46365 .unused,
25931 .unused,46366 .unused,
25932 .unused,46367 .unused,
25933 .unused,46368 .unused,
...@@ -25938,25 +46373,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25938,25 +46373,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25938 .dst_temps = .{.mem},46373 .dst_temps = .{.mem},
25939 .clobbers = .{ .eflags = true },46374 .clobbers = .{ .eflags = true },
25940 .each = .{ .once = &.{46375 .each = .{ .once = &.{
25941 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },46376 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25942 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },46377 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
25943 .{ ._, ._sq, .sto, ._, ._, ._, ._ },46378 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
25944 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },46379 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
25945 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },46380 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25946 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25947 } },46381 } },
25948 }, .{46382 }, .{
25949 .required_features = .{ .@"64bit", null, null, null },46383 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
25950 .src_constraints = .{ .{ .int = .qword }, .any },46384 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
25951 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
25952 .patterns = &.{46385 .patterns = &.{
25953 .{ .src = .{ .mem, .none } },46386 .{ .src = .{ .to_mem, .none, .none } },
25954 .{ .src = .{ .to_gpr, .none } },
25955 },46387 },
25956 .extra_temps = .{46388 .extra_temps = .{
25957 .{ .type = .u64, .kind = .{ .reg = .rax } },46389 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25958 .{ .type = .usize, .kind = .{ .reg = .rdi } },46390 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
25959 .{ .type = .u32, .kind = .{ .reg = .ecx } },46391 .unused,
25960 .unused,46392 .unused,
25961 .unused,46393 .unused,
25962 .unused,46394 .unused,
...@@ -25967,25 +46399,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25967,25 +46399,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25967 .dst_temps = .{.mem},46399 .dst_temps = .{.mem},
25968 .clobbers = .{ .eflags = true },46400 .clobbers = .{ .eflags = true },
25969 .each = .{ .once = &.{46401 .each = .{ .once = &.{
25970 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },46402 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25971 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },46403 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
25972 .{ ._, ._sq, .sto, ._, ._, ._, ._ },46404 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
25973 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },46405 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
25974 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },46406 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
25975 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },46407 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
46408 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25976 } },46409 } },
25977 }, .{46410 }, .{
25978 .required_features = .{ .@"64bit", null, null, null },46411 .required_features = .{ .bmi2, null, null, null },
25979 .src_constraints = .{ .{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }, .any },46412 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
25980 .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }},46413 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
25981 .patterns = &.{46414 .patterns = &.{
25982 .{ .src = .{ .to_mem, .none } },46415 .{ .src = .{ .to_mem, .none, .none } },
25983 },46416 },
25984 .extra_temps = .{46417 .extra_temps = .{
25985 .{ .type = .usize, .kind = .{ .reg = .rsi } },46418 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25986 .{ .type = .usize, .kind = .{ .reg = .rdi } },46419 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
25987 .{ .type = .u32, .kind = .{ .reg = .ecx } },46420 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25988 .{ .type = .i64, .kind = .{ .reg = .rax } },46421 .unused,
25989 .unused,46422 .unused,
25990 .unused,46423 .unused,
25991 .unused,46424 .unused,
...@@ -25995,28 +46428,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25995,28 +46428,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25995 .dst_temps = .{.mem},46428 .dst_temps = .{.mem},
25996 .clobbers = .{ .eflags = true },46429 .clobbers = .{ .eflags = true },
25997 .each = .{ .once = &.{46430 .each = .{ .once = &.{
25998 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },46431 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25999 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },46432 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
26000 .{ ._, ._, .mov, .tmp2d, .sia(-1, .src0, .add_size_div_8), ._, ._ },46433 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._ },
26001 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },46434 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
26002 .{ ._, ._sq, .lod, ._, ._, ._, ._ },46435 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
26003 .{ ._, ._sq, .sto, ._, ._, ._, ._ },46436 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26004 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
26005 .{ ._, ._, .mov, .tmp2d, .sa2(.dst0, .src0, .add_delta_size_div_8), ._, ._ },
26006 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
26007 } },46437 } },
26008 }, .{46438 }, .{
26009 .required_features = .{ .@"64bit", null, null, null },46439 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
26010 .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any },46440 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
26011 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
26012 .patterns = &.{46441 .patterns = &.{
26013 .{ .src = .{ .to_mem, .none } },46442 .{ .src = .{ .to_mem, .none, .none } },
26014 },46443 },
26015 .extra_temps = .{46444 .extra_temps = .{
26016 .{ .type = .usize, .kind = .{ .reg = .rsi } },46445 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26017 .{ .type = .usize, .kind = .{ .reg = .rdi } },46446 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
26018 .{ .type = .u32, .kind = .{ .reg = .ecx } },46447 .unused,
26019 .{ .type = .u64, .kind = .{ .reg = .rax } },46448 .unused,
26020 .unused,46449 .unused,
26021 .unused,46450 .unused,
26022 .unused,46451 .unused,
...@@ -26026,72 +46455,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26026,72 +46455,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26026 .dst_temps = .{.mem},46455 .dst_temps = .{.mem},
26027 .clobbers = .{ .eflags = true },46456 .clobbers = .{ .eflags = true },
26028 .each = .{ .once = &.{46457 .each = .{ .once = &.{
26029 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },46458 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
26030 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },46459 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
26031 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },46460 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
26032 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },46461 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
26033 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },46462 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
26034 .{ ._, ._, .mov, .tmp2d, .sa2(.dst0, .src0, .add_delta_size_div_8), ._, ._ },46463 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26035 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
26036 } },
26037 }, .{
26038 .required_features = .{ .avx, null, null, null },
26039 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },
26040 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
26041 .patterns = &.{
26042 .{ .src = .{ .mem, .none } },
26043 .{ .src = .{ .to_sse, .none } },
26044 },
26045 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26046 .each = .{ .once = &.{
26047 .{ ._, .vp_w, .movsxb, .dst0x, .src0q, ._, ._ },
26048 } },
26049 }, .{
26050 .required_features = .{ .avx, null, null, null },
26051 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any },
26052 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
26053 .patterns = &.{
26054 .{ .src = .{ .mem, .none } },
26055 .{ .src = .{ .to_sse, .none } },
26056 },
26057 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26058 .each = .{ .once = &.{
26059 .{ ._, .vp_w, .movzxb, .dst0x, .src0q, ._, ._ },
26060 } },
26061 }, .{
26062 .required_features = .{ .sse4_1, null, null, null },
26063 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },
26064 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
26065 .patterns = &.{
26066 .{ .src = .{ .mem, .none } },
26067 .{ .src = .{ .to_sse, .none } },
26068 },
26069 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26070 .each = .{ .once = &.{
26071 .{ ._, .p_w, .movsxb, .dst0x, .src0q, ._, ._ },
26072 } },
26073 }, .{
26074 .required_features = .{ .sse4_1, null, null, null },
26075 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any },
26076 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
26077 .patterns = &.{
26078 .{ .src = .{ .mem, .none } },
26079 .{ .src = .{ .to_sse, .none } },
26080 },
26081 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26082 .each = .{ .once = &.{
26083 .{ ._, .p_w, .movzxb, .dst0x, .src0q, ._, ._ },
26084 } },46464 } },
26085 }, .{46465 }, .{
26086 .required_features = .{ .sse2, null, null, null },46466 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
26087 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },46467 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
26088 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
26089 .patterns = &.{46468 .patterns = &.{
26090 .{ .src = .{ .to_mut_sse, .none } },46469 .{ .src = .{ .to_mem, .none, .none } },
26091 },46470 },
26092 .extra_temps = .{46471 .extra_temps = .{
26093 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },46472 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26094 .unused,46473 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
26095 .unused,46474 .unused,
26096 .unused,46475 .unused,
26097 .unused,46476 .unused,
...@@ -26100,22 +46479,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26100,22 +46479,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26100 .unused,46479 .unused,
26101 .unused,46480 .unused,
26102 },46481 },
26103 .dst_temps = .{.{ .ref = .src0 }},46482 .dst_temps = .{.mem},
46483 .clobbers = .{ .eflags = true },
26104 .each = .{ .once = &.{46484 .each = .{ .once = &.{
26105 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },46485 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
26106 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },46486 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
26107 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },46487 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
46488 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
46489 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26108 } },46490 } },
26109 }, .{46491 }, .{
26110 .required_features = .{ .sse2, null, null, null },46492 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
26111 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any },46493 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
26112 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
26113 .patterns = &.{46494 .patterns = &.{
26114 .{ .src = .{ .to_mut_sse, .none } },46495 .{ .src = .{ .to_mem, .none, .none } },
26115 },46496 },
26116 .extra_temps = .{46497 .extra_temps = .{
26117 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },46498 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26118 .unused,46499 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
26119 .unused,46500 .unused,
26120 .unused,46501 .unused,
26121 .unused,46502 .unused,
...@@ -26124,46 +46505,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26124,46 +46505,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26124 .unused,46505 .unused,
26125 .unused,46506 .unused,
26126 },46507 },
26127 .dst_temps = .{.{ .ref = .src0 }},46508 .dst_temps = .{.mem},
26128 .each = .{ .once = &.{46509 .clobbers = .{ .eflags = true },
26129 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
26130 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
26131 } },
26132 }, .{
26133 .required_features = .{ .avx2, null, null, null },
26134 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },
26135 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .word } }},
26136 .patterns = &.{
26137 .{ .src = .{ .mem, .none } },
26138 .{ .src = .{ .to_sse, .none } },
26139 },
26140 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26141 .each = .{ .once = &.{
26142 .{ ._, .vp_w, .movsxb, .dst0y, .src0x, ._, ._ },
26143 } },
26144 }, .{
26145 .required_features = .{ .avx2, null, null, null },
26146 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any },
26147 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .word } }},
26148 .patterns = &.{
26149 .{ .src = .{ .mem, .none } },
26150 .{ .src = .{ .to_sse, .none } },
26151 },
26152 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26153 .each = .{ .once = &.{46510 .each = .{ .once = &.{
26154 .{ ._, .vp_w, .movzxb, .dst0y, .src0x, ._, ._ },46511 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46512 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
46513 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
46514 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
46515 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
46516 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
46517 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26155 } },46518 } },
26156 }, .{46519 }, .{
26157 .required_features = .{ .avx2, null, null, null },46520 .required_features = .{ .bmi2, null, null, null },
26158 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },46521 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
26159 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }},46522 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
26160 .patterns = &.{46523 .patterns = &.{
26161 .{ .src = .{ .mem, .none } },46524 .{ .src = .{ .to_mem, .none, .none } },
26162 },46525 },
26163 .extra_temps = .{46526 .extra_temps = .{
26164 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46527 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26165 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },46528 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
26166 .unused,46529 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
26167 .unused,46530 .unused,
26168 .unused,46531 .unused,
26169 .unused,46532 .unused,
...@@ -26172,23 +46535,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26172,23 +46535,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26172 .unused,46535 .unused,
26173 },46536 },
26174 .dst_temps = .{.mem},46537 .dst_temps = .{.mem},
46538 .clobbers = .{ .eflags = true },
26175 .each = .{ .once = &.{46539 .each = .{ .once = &.{
26176 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },46540 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
26177 .{ .@"0:", .vp_w, .movsxb, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },46541 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
26178 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ },46542 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
26179 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },46543 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
46544 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
26180 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },46545 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26181 } },46546 } },
26182 }, .{46547 }, .{
26183 .required_features = .{ .avx2, null, null, null },46548 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
26184 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any },46549 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
26185 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .word } }},
26186 .patterns = &.{46550 .patterns = &.{
26187 .{ .src = .{ .mem, .none } },46551 .{ .src = .{ .to_mem, .none, .none } },
26188 },46552 },
26189 .extra_temps = .{46553 .extra_temps = .{
26190 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46554 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26191 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },46555 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
26192 .unused,46556 .unused,
26193 .unused,46557 .unused,
26194 .unused,46558 .unused,
...@@ -26198,23 +46562,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26198,23 +46562,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26198 .unused,46562 .unused,
26199 },46563 },
26200 .dst_temps = .{.mem},46564 .dst_temps = .{.mem},
46565 .clobbers = .{ .eflags = true },
26201 .each = .{ .once = &.{46566 .each = .{ .once = &.{
26202 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },46567 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
26203 .{ .@"0:", .vp_w, .movzxb, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },46568 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
26204 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ },46569 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
26205 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },46570 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
46571 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
26206 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },46572 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26207 } },46573 } },
26208 }, .{46574 }, .{
26209 .required_features = .{ .avx, null, null, null },46575 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },
26210 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },46576 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
26211 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},
26212 .patterns = &.{46577 .patterns = &.{
26213 .{ .src = .{ .mem, .none } },46578 .{ .src = .{ .to_mem, .none, .none } },
26214 },46579 },
26215 .extra_temps = .{46580 .extra_temps = .{
26216 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46581 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26217 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },46582 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
26218 .unused,46583 .unused,
26219 .unused,46584 .unused,
26220 .unused,46585 .unused,
...@@ -26224,23 +46589,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26224,23 +46589,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26224 .unused,46589 .unused,
26225 },46590 },
26226 .dst_temps = .{.mem},46591 .dst_temps = .{.mem},
46592 .clobbers = .{ .eflags = true },
26227 .each = .{ .once = &.{46593 .each = .{ .once = &.{
26228 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },46594 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
26229 .{ .@"0:", .vp_w, .movsxb, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },46595 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
26230 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },46596 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
26231 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },46597 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
26232 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },46598 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26233 } },46599 } },
26234 }, .{46600 }, .{
26235 .required_features = .{ .avx, null, null, null },46601 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .yword } }, .any, .any },
26236 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any },46602 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
26237 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }},
26238 .patterns = &.{46603 .patterns = &.{
26239 .{ .src = .{ .mem, .none } },46604 .{ .src = .{ .to_mem, .none, .none } },
26240 },46605 },
26241 .extra_temps = .{46606 .extra_temps = .{
26242 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46607 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26243 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },46608 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
26244 .unused,46609 .unused,
26245 .unused,46610 .unused,
26246 .unused,46611 .unused,
...@@ -26250,24 +46615,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26250,24 +46615,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26250 .unused,46615 .unused,
26251 },46616 },
26252 .dst_temps = .{.mem},46617 .dst_temps = .{.mem},
46618 .clobbers = .{ .eflags = true },
26253 .each = .{ .once = &.{46619 .each = .{ .once = &.{
26254 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },46620 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
26255 .{ .@"0:", .vp_w, .movzxb, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },46621 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
26256 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },46622 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
26257 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },46623 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
46624 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
46625 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
26258 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },46626 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26259 } },46627 } },
26260 }, .{46628 }, .{
26261 .required_features = .{ .sse4_1, null, null, null },46629 .required_features = .{ .bmi2, null, null, null },
26262 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },46630 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
26263 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},46631 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
26264 .patterns = &.{46632 .patterns = &.{
26265 .{ .src = .{ .mem, .none } },46633 .{ .src = .{ .to_mem, .none, .none } },
26266 },46634 },
26267 .extra_temps = .{46635 .extra_temps = .{
26268 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46636 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26269 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },46637 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
26270 .unused,46638 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
26271 .unused,46639 .unused,
26272 .unused,46640 .unused,
26273 .unused,46641 .unused,
...@@ -26276,23 +46644,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26276,23 +46644,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26276 .unused,46644 .unused,
26277 },46645 },
26278 .dst_temps = .{.mem},46646 .dst_temps = .{.mem},
46647 .clobbers = .{ .eflags = true },
26279 .each = .{ .once = &.{46648 .each = .{ .once = &.{
26280 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },46649 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
26281 .{ .@"0:", .p_w, .movsxb, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },46650 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
26282 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },46651 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
26283 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },46652 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
46653 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
26284 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },46654 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26285 } },46655 } },
26286 }, .{46656 }, .{
26287 .required_features = .{ .sse4_1, null, null, null },46657 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
26288 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any },46658 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
26289 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }},
26290 .patterns = &.{46659 .patterns = &.{
26291 .{ .src = .{ .mem, .none } },46660 .{ .src = .{ .to_mem, .none, .none } },
26292 },46661 },
26293 .extra_temps = .{46662 .extra_temps = .{
26294 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46663 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26295 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },46664 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
26296 .unused,46665 .unused,
26297 .unused,46666 .unused,
26298 .unused,46667 .unused,
...@@ -26302,24 +46671,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26302,24 +46671,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26302 .unused,46671 .unused,
26303 },46672 },
26304 .dst_temps = .{.mem},46673 .dst_temps = .{.mem},
46674 .clobbers = .{ .eflags = true },
26305 .each = .{ .once = &.{46675 .each = .{ .once = &.{
26306 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },46676 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
26307 .{ .@"0:", .p_w, .movzxb, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },46677 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
26308 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },46678 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
26309 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },46679 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
46680 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
26310 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },46681 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26311 } },46682 } },
26312 }, .{46683 }, .{
26313 .required_features = .{ .slow_incdec, null, null, null },46684 .src_constraints = .{ .any_scalar_int, .any, .any },
26314 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },46685 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
26315 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
26316 .patterns = &.{46686 .patterns = &.{
26317 .{ .src = .{ .to_mem, .none } },46687 .{ .src = .{ .to_mem, .none, .none } },
26318 },46688 },
26319 .extra_temps = .{46689 .extra_temps = .{
26320 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46690 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26321 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },46691 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
26322 .unused,46692 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
26323 .unused,46693 .unused,
26324 .unused,46694 .unused,
26325 .unused,46695 .unused,
...@@ -26328,23 +46698,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26328,23 +46698,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26328 .unused,46698 .unused,
26329 },46699 },
26330 .dst_temps = .{.mem},46700 .dst_temps = .{.mem},
46701 .clobbers = .{ .eflags = true },
26331 .each = .{ .once = &.{46702 .each = .{ .once = &.{
26332 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },46703 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
26333 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },46704 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
26334 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },46705 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
26335 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },46706 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
46707 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
46708 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
26336 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },46709 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26337 } },46710 } },
26338 }, .{46711 }, .{
26339 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },46712 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
26340 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},46713 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
26341 .patterns = &.{46714 .patterns = &.{
26342 .{ .src = .{ .to_mem, .none } },46715 .{ .src = .{ .to_mem, .none, .none } },
26343 },46716 },
26344 .extra_temps = .{46717 .extra_temps = .{
26345 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46718 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26346 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },46719 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
26347 .unused,46720 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
26348 .unused,46721 .unused,
26349 .unused,46722 .unused,
26350 .unused,46723 .unused,
...@@ -26353,25 +46726,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26353,25 +46726,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26353 .unused,46726 .unused,
26354 },46727 },
26355 .dst_temps = .{.mem},46728 .dst_temps = .{.mem},
46729 .clobbers = .{ .eflags = true },
26356 .each = .{ .once = &.{46730 .each = .{ .once = &.{
26357 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },46731 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
26358 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },46732 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
26359 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },46733 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
26360 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },46734 .{ ._, ._l, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
26361 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },46735 .{ ._, ._r, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
46736 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
46737 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
46738 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
46739 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26362 } },46740 } },
26363 }, .{46741 }, .{
26364 .required_features = .{ .slow_incdec, null, null, null },46742 .required_features = .{ .bmi2, null, null, null },
26365 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },46743 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
26366 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},46744 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
26367 .patterns = &.{46745 .patterns = &.{
26368 .{ .src = .{ .to_mem, .none } },46746 .{ .src = .{ .to_mem, .none, .none } },
26369 },46747 },
26370 .extra_temps = .{46748 .extra_temps = .{
26371 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46749 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26372 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },46750 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
26373 .unused,46751 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
26374 .unused,46752 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
26375 .unused,46753 .unused,
26376 .unused,46754 .unused,
26377 .unused,46755 .unused,
...@@ -26379,23 +46757,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26379,23 +46757,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26379 .unused,46757 .unused,
26380 },46758 },
26381 .dst_temps = .{.mem},46759 .dst_temps = .{.mem},
46760 .clobbers = .{ .eflags = true },
26382 .each = .{ .once = &.{46761 .each = .{ .once = &.{
26383 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },46762 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
26384 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },46763 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
26385 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },46764 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
26386 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },46765 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },
46766 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
46767 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
46768 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
26387 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },46769 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26388 } },46770 } },
26389 }, .{46771 }, .{
26390 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },46772 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
26391 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},46773 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
26392 .patterns = &.{46774 .patterns = &.{
26393 .{ .src = .{ .to_mem, .none } },46775 .{ .src = .{ .to_mem, .none, .none } },
26394 },46776 },
26395 .extra_temps = .{46777 .extra_temps = .{
26396 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46778 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26397 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },46779 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
26398 .unused,46780 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
26399 .unused,46781 .unused,
26400 .unused,46782 .unused,
26401 .unused,46783 .unused,
...@@ -26404,71 +46786,102 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26404,71 +46786,102 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26404 .unused,46786 .unused,
26405 },46787 },
26406 .dst_temps = .{.mem},46788 .dst_temps = .{.mem},
46789 .clobbers = .{ .eflags = true },
26407 .each = .{ .once = &.{46790 .each = .{ .once = &.{
26408 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },46791 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
26409 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },46792 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
26410 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },46793 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
26411 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },46794 .{ ._, ._, .@"and", .tmp2d, .sa(.dst0, .add_umax), ._, ._ },
26412 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },46795 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
46796 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
46797 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
46798 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26413 } },46799 } },
26414 }, .{46800 }, .{
26415 .required_features = .{ .avx, null, null, null },46801 .required_features = .{ .avx, null, null, null },
26416 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },46802 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
26417 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},46803 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
26418 .patterns = &.{46804 .patterns = &.{
26419 .{ .src = .{ .mem, .none } },46805 .{ .src = .{ .to_sse, .none, .none } },
26420 .{ .src = .{ .to_sse, .none } },46806 },
46807 .extra_temps = .{
46808 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
46809 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
46810 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
46811 .unused,
46812 .unused,
46813 .unused,
46814 .unused,
46815 .unused,
46816 .unused,
26421 },46817 },
26422 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},46818 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26423 .each = .{ .once = &.{46819 .each = .{ .once = &.{
26424 .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ },46820 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
46821 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
46822 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
46823 .{ ._, .vp_q, .add, .dst0x, .dst0x, .lea(.tmp0x), ._ },
46824 .{ ._, .vp_, .xor, .dst0x, .dst0x, .lea(.tmp0x), ._ },
26425 } },46825 } },
26426 }, .{46826 }, .{
26427 .required_features = .{ .avx, null, null, null },46827 .required_features = .{ .avx, null, null, null },
26428 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },46828 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
26429 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},46829 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
26430 .patterns = &.{46830 .patterns = &.{
26431 .{ .src = .{ .mem, .none } },46831 .{ .src = .{ .to_sse, .none, .none } },
26432 .{ .src = .{ .to_sse, .none } },
26433 },46832 },
26434 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},46833 .extra_temps = .{
26435 .each = .{ .once = &.{46834 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
26436 .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ },46835 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
26437 } },46836 .unused,
26438 }, .{46837 .unused,
26439 .required_features = .{ .sse4_1, null, null, null },46838 .unused,
26440 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },46839 .unused,
26441 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},46840 .unused,
26442 .patterns = &.{46841 .unused,
26443 .{ .src = .{ .mem, .none } },46842 .unused,
26444 .{ .src = .{ .to_sse, .none } },
26445 },46843 },
26446 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},46844 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26447 .each = .{ .once = &.{46845 .each = .{ .once = &.{
26448 .{ ._, .p_d, .movsxb, .dst0x, .src0d, ._, ._ },46846 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
46847 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
26449 } },46848 } },
26450 }, .{46849 }, .{
26451 .required_features = .{ .sse4_1, null, null, null },46850 .required_features = .{ .sse2, null, null, null },
26452 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },46851 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
26453 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},46852 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
26454 .patterns = &.{46853 .patterns = &.{
26455 .{ .src = .{ .mem, .none } },46854 .{ .src = .{ .to_mut_sse, .none, .none } },
26456 .{ .src = .{ .to_sse, .none } },
26457 },46855 },
26458 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},46856 .extra_temps = .{
46857 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
46858 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
46859 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
46860 .unused,
46861 .unused,
46862 .unused,
46863 .unused,
46864 .unused,
46865 .unused,
46866 },
46867 .dst_temps = .{.{ .ref = .src0 }},
26459 .each = .{ .once = &.{46868 .each = .{ .once = &.{
26460 .{ ._, .p_d, .movzxb, .dst0x, .src0d, ._, ._ },46869 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
46870 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
46871 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
46872 .{ ._, .p_q, .add, .dst0x, .lea(.tmp0x), ._, ._ },
46873 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
26461 } },46874 } },
26462 }, .{46875 }, .{
26463 .required_features = .{ .sse2, null, null, null },46876 .required_features = .{ .sse2, null, null, null },
26464 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },46877 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
26465 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},46878 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
26466 .patterns = &.{46879 .patterns = &.{
26467 .{ .src = .{ .to_mut_sse, .none } },46880 .{ .src = .{ .to_mut_sse, .none, .none } },
26468 },46881 },
26469 .extra_temps = .{46882 .extra_temps = .{
26470 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },46883 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
26471 .unused,46884 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
26472 .unused,46885 .unused,
26473 .unused,46886 .unused,
26474 .unused,46887 .unused,
...@@ -26479,22 +46892,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26479,22 +46892,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26479 },46892 },
26480 .dst_temps = .{.{ .ref = .src0 }},46893 .dst_temps = .{.{ .ref = .src0 }},
26481 .each = .{ .once = &.{46894 .each = .{ .once = &.{
26482 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },46895 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
26483 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },46896 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
26484 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
26485 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
26486 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
26487 } },46897 } },
26488 }, .{46898 }, .{
26489 .required_features = .{ .sse2, null, null, null },46899 .required_features = .{ .sse, null, null, null },
26490 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },46900 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
26491 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},46901 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
26492 .patterns = &.{46902 .patterns = &.{
26493 .{ .src = .{ .to_mut_sse, .none } },46903 .{ .src = .{ .to_mut_sse, .none, .none } },
26494 },46904 },
26495 .extra_temps = .{46905 .extra_temps = .{
26496 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },46906 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
26497 .unused,46907 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
26498 .unused,46908 .unused,
26499 .unused,46909 .unused,
26500 .unused,46910 .unused,
...@@ -26505,72 +46915,165 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26505,72 +46915,165 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26505 },46915 },
26506 .dst_temps = .{.{ .ref = .src0 }},46916 .dst_temps = .{.{ .ref = .src0 }},
26507 .each = .{ .once = &.{46917 .each = .{ .once = &.{
26508 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },46918 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
26509 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },46919 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
26510 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
26511 } },46920 } },
26512 }, .{46921 }, .{
26513 .required_features = .{ .avx2, null, null, null },46922 .required_features = .{ .avx2, null, null, null },
26514 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },46923 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any },
26515 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }},46924 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},
26516 .patterns = &.{46925 .patterns = &.{
26517 .{ .src = .{ .mem, .none } },46926 .{ .src = .{ .to_sse, .none, .none } },
26518 .{ .src = .{ .to_sse, .none } },46927 },
46928 .extra_temps = .{
46929 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
46930 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
46931 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
46932 .unused,
46933 .unused,
46934 .unused,
46935 .unused,
46936 .unused,
46937 .unused,
26519 },46938 },
26520 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},46939 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26521 .each = .{ .once = &.{46940 .each = .{ .once = &.{
26522 .{ ._, .vp_d, .movsxb, .dst0y, .src0q, ._, ._ },46941 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
46942 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
46943 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
46944 .{ ._, .vp_q, .add, .dst0y, .dst0y, .lea(.tmp0y), ._ },
46945 .{ ._, .vp_, .xor, .dst0y, .dst0y, .lea(.tmp0y), ._ },
26523 } },46946 } },
26524 }, .{46947 }, .{
26525 .required_features = .{ .avx2, null, null, null },46948 .required_features = .{ .avx2, null, null, null },
26526 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any },46949 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any },
26527 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }},46950 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }},
26528 .patterns = &.{46951 .patterns = &.{
26529 .{ .src = .{ .mem, .none } },46952 .{ .src = .{ .to_sse, .none, .none } },
26530 .{ .src = .{ .to_sse, .none } },46953 },
46954 .extra_temps = .{
46955 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
46956 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
46957 .unused,
46958 .unused,
46959 .unused,
46960 .unused,
46961 .unused,
46962 .unused,
46963 .unused,
26531 },46964 },
26532 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},46965 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26533 .each = .{ .once = &.{46966 .each = .{ .once = &.{
26534 .{ ._, .vp_d, .movzxb, .dst0y, .src0q, ._, ._ },46967 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
46968 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
26535 } },46969 } },
26536 }, .{46970 }, .{
26537 .required_features = .{ .avx2, null, null, null },46971 .required_features = .{ .avx2, null, null, null },
26538 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },46972 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any },
26539 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }},46973 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},
26540 .patterns = &.{46974 .patterns = &.{
26541 .{ .src = .{ .mem, .none } },46975 .{ .src = .{ .to_mem, .none, .none } },
26542 },46976 },
26543 .extra_temps = .{46977 .extra_temps = .{
26544 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46978 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26545 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },46979 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
46980 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
46981 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
46982 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
46983 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
46984 .unused,
46985 .unused,
46986 .unused,
46987 },
46988 .dst_temps = .{.mem},
46989 .clobbers = .{ .eflags = true },
46990 .each = .{ .once = &.{
46991 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
46992 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
46993 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
46994 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
46995 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46996 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
46997 .{ ._, .vp_q, .add, .tmp3y, .tmp3y, .tmp2y, ._ },
46998 .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp2y, ._ },
46999 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp3y, ._, ._ },
47000 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
47001 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
47002 } },
47003 }, .{
47004 .required_features = .{ .avx2, null, null, null },
47005 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any },
47006 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }},
47007 .patterns = &.{
47008 .{ .src = .{ .to_mem, .none, .none } },
47009 },
47010 .extra_temps = .{
47011 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
47012 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
47013 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
47014 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
47015 .unused,
26546 .unused,47016 .unused,
26547 .unused,47017 .unused,
26548 .unused,47018 .unused,
26549 .unused,47019 .unused,
47020 },
47021 .dst_temps = .{.mem},
47022 .clobbers = .{ .eflags = true },
47023 .each = .{ .once = &.{
47024 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
47025 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
47026 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
47027 .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
47028 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },
47029 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
47030 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
47031 } },
47032 }, .{
47033 .required_features = .{ .avx, null, null, null },
47034 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
47035 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
47036 .patterns = &.{
47037 .{ .src = .{ .to_mem, .none, .none } },
47038 },
47039 .extra_temps = .{
47040 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
47041 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
47042 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
47043 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
47044 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
47045 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
26550 .unused,47046 .unused,
26551 .unused,47047 .unused,
26552 .unused,47048 .unused,
26553 },47049 },
26554 .dst_temps = .{.mem},47050 .dst_temps = .{.mem},
47051 .clobbers = .{ .eflags = true },
26555 .each = .{ .once = &.{47052 .each = .{ .once = &.{
26556 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },47053 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
26557 .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_size), ._, ._ },47054 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
26558 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp1y, ._, ._ },47055 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
26559 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },47056 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
47057 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
47058 .{ .@"0:", .vp_, .@"and", .tmp3x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
47059 .{ ._, .vp_q, .add, .tmp3x, .tmp3x, .tmp2x, ._ },
47060 .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp2x, ._ },
47061 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
47062 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
26560 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },47063 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26561 } },47064 } },
26562 }, .{47065 }, .{
26563 .required_features = .{ .avx2, null, null, null },47066 .required_features = .{ .avx, null, null, null },
26564 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any },47067 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
26565 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }},47068 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
26566 .patterns = &.{47069 .patterns = &.{
26567 .{ .src = .{ .mem, .none } },47070 .{ .src = .{ .to_mem, .none, .none } },
26568 },47071 },
26569 .extra_temps = .{47072 .extra_temps = .{
26570 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47073 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26571 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },47074 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
26572 .unused,47075 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
26573 .unused,47076 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
26574 .unused,47077 .unused,
26575 .unused,47078 .unused,
26576 .unused,47079 .unused,
...@@ -26578,51 +47081,62 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26578,51 +47081,62 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26578 .unused,47081 .unused,
26579 },47082 },
26580 .dst_temps = .{.mem},47083 .dst_temps = .{.mem},
47084 .clobbers = .{ .eflags = true },
26581 .each = .{ .once = &.{47085 .each = .{ .once = &.{
26582 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },47086 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
26583 .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },47087 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
26584 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp1y, ._, ._ },47088 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
26585 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },47089 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
47090 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
47091 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
26586 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },47092 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26587 } },47093 } },
26588 }, .{47094 }, .{
26589 .required_features = .{ .avx, null, null, null },47095 .required_features = .{ .sse2, null, null, null },
26590 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },47096 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
26591 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},47097 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
26592 .patterns = &.{47098 .patterns = &.{
26593 .{ .src = .{ .mem, .none } },47099 .{ .src = .{ .to_mem, .none, .none } },
26594 },47100 },
26595 .extra_temps = .{47101 .extra_temps = .{
26596 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47102 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26597 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },47103 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
26598 .unused,47104 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
26599 .unused,47105 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
26600 .unused,47106 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
26601 .unused,47107 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
26602 .unused,47108 .unused,
26603 .unused,47109 .unused,
26604 .unused,47110 .unused,
26605 },47111 },
26606 .dst_temps = .{.mem},47112 .dst_temps = .{.mem},
47113 .clobbers = .{ .eflags = true },
26607 .each = .{ .once = &.{47114 .each = .{ .once = &.{
26608 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },47115 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
26609 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ },47116 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
26610 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ },47117 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
26611 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },47118 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
47119 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
47120 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp1x, ._, ._ },
47121 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
47122 .{ ._, .p_q, .add, .tmp3x, .tmp2x, ._, ._ },
47123 .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ },
47124 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
47125 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
26612 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },47126 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26613 } },47127 } },
26614 }, .{47128 }, .{
26615 .required_features = .{ .avx, null, null, null },47129 .required_features = .{ .sse2, null, null, null },
26616 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },47130 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
26617 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},47131 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
26618 .patterns = &.{47132 .patterns = &.{
26619 .{ .src = .{ .mem, .none } },47133 .{ .src = .{ .to_mem, .none, .none } },
26620 },47134 },
26621 .extra_temps = .{47135 .extra_temps = .{
26622 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47136 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26623 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },47137 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
26624 .unused,47138 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
26625 .unused,47139 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
26626 .unused,47140 .unused,
26627 .unused,47141 .unused,
26628 .unused,47142 .unused,
...@@ -26630,25 +47144,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26630,25 +47144,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26630 .unused,47144 .unused,
26631 },47145 },
26632 .dst_temps = .{.mem},47146 .dst_temps = .{.mem},
47147 .clobbers = .{ .eflags = true },
26633 .each = .{ .once = &.{47148 .each = .{ .once = &.{
26634 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },47149 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
26635 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ },47150 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
26636 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ },47151 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
26637 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },47152 .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
47153 .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
47154 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
47155 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
26638 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },47156 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26639 } },47157 } },
26640 }, .{47158 }, .{
26641 .required_features = .{ .sse4_1, null, null, null },47159 .required_features = .{ .sse, null, null, null },
26642 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },47160 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
26643 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},47161 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
26644 .patterns = &.{47162 .patterns = &.{
26645 .{ .src = .{ .mem, .none } },47163 .{ .src = .{ .to_mem, .none, .none } },
26646 },47164 },
26647 .extra_temps = .{47165 .extra_temps = .{
26648 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47166 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26649 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },47167 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
26650 .unused,47168 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
26651 .unused,47169 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
26652 .unused,47170 .unused,
26653 .unused,47171 .unused,
26654 .unused,47172 .unused,
...@@ -26656,23 +47174,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26656,23 +47174,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26656 .unused,47174 .unused,
26657 },47175 },
26658 .dst_temps = .{.mem},47176 .dst_temps = .{.mem},
47177 .clobbers = .{ .eflags = true },
26659 .each = .{ .once = &.{47178 .each = .{ .once = &.{
26660 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },47179 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
26661 .{ .@"0:", .p_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ },47180 .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ },
26662 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ },47181 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
26663 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },47182 .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
47183 .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
47184 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
47185 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
26664 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },47186 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26665 } },47187 } },
26666 }, .{47188 }, .{
26667 .required_features = .{ .sse4_1, null, null, null },47189 .required_features = .{ .@"64bit", null, null, null },
26668 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },47190 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
26669 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},47191 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }},
26670 .patterns = &.{47192 .patterns = &.{
26671 .{ .src = .{ .mem, .none } },47193 .{ .src = .{ .to_mem, .none, .none } },
26672 },47194 },
26673 .extra_temps = .{47195 .extra_temps = .{
26674 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47196 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26675 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },47197 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
26676 .unused,47198 .unused,
26677 .unused,47199 .unused,
26678 .unused,47200 .unused,
...@@ -26682,23 +47204,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26682,23 +47204,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26682 .unused,47204 .unused,
26683 },47205 },
26684 .dst_temps = .{.mem},47206 .dst_temps = .{.mem},
47207 .clobbers = .{ .eflags = true },
26685 .each = .{ .once = &.{47208 .each = .{ .once = &.{
26686 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },47209 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
26687 .{ .@"0:", .p_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ },47210 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
26688 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ },47211 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
26689 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },47212 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
26690 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },47213 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26691 } },47214 } },
26692 }, .{47215 }, .{
26693 .required_features = .{ .slow_incdec, null, null, null },47216 .required_features = .{ .@"64bit", null, null, null },
26694 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },47217 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
26695 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},47218 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
26696 .patterns = &.{47219 .patterns = &.{
26697 .{ .src = .{ .to_mem, .none } },47220 .{ .src = .{ .to_mem, .none, .none } },
26698 },47221 },
26699 .extra_temps = .{47222 .extra_temps = .{
26700 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47223 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26701 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },47224 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
26702 .unused,47225 .unused,
26703 .unused,47226 .unused,
26704 .unused,47227 .unused,
...@@ -26708,23 +47231,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26708,23 +47231,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26708 .unused,47231 .unused,
26709 },47232 },
26710 .dst_temps = .{.mem},47233 .dst_temps = .{.mem},
47234 .clobbers = .{ .eflags = true },
26711 .each = .{ .once = &.{47235 .each = .{ .once = &.{
26712 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },47236 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
26713 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },47237 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
26714 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },47238 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
26715 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },47239 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
47240 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
47241 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
26716 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },47242 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26717 } },47243 } },
26718 }, .{47244 }, .{
26719 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },47245 .required_features = .{ .@"64bit", .bmi2, null, null },
26720 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},47246 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
47247 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
26721 .patterns = &.{47248 .patterns = &.{
26722 .{ .src = .{ .to_mem, .none } },47249 .{ .src = .{ .to_mem, .none, .none } },
26723 },47250 },
26724 .extra_temps = .{47251 .extra_temps = .{
26725 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47252 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26726 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },47253 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
26727 .unused,47254 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
26728 .unused,47255 .unused,
26729 .unused,47256 .unused,
26730 .unused,47257 .unused,
...@@ -26733,23 +47260,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26733,23 +47260,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26733 .unused,47260 .unused,
26734 },47261 },
26735 .dst_temps = .{.mem},47262 .dst_temps = .{.mem},
47263 .clobbers = .{ .eflags = true },
26736 .each = .{ .once = &.{47264 .each = .{ .once = &.{
26737 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },47265 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
26738 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },47266 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
26739 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },47267 .{ .@"0:", ._, .bzhi, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), .tmp1q, ._ },
26740 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },47268 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
26741 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },47269 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
47270 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26742 } },47271 } },
26743 }, .{47272 }, .{
26744 .required_features = .{ .slow_incdec, null, null, null },47273 .required_features = .{ .@"64bit", null, null, null },
26745 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },47274 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
26746 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},47275 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
26747 .patterns = &.{47276 .patterns = &.{
26748 .{ .src = .{ .to_mem, .none } },47277 .{ .src = .{ .to_mem, .none, .none } },
26749 },47278 },
26750 .extra_temps = .{47279 .extra_temps = .{
26751 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47280 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26752 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47281 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
26753 .unused,47282 .unused,
26754 .unused,47283 .unused,
26755 .unused,47284 .unused,
...@@ -26759,22 +47288,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26759,22 +47288,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26759 .unused,47288 .unused,
26760 },47289 },
26761 .dst_temps = .{.mem},47290 .dst_temps = .{.mem},
47291 .clobbers = .{ .eflags = true },
26762 .each = .{ .once = &.{47292 .each = .{ .once = &.{
26763 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },47293 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
26764 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },47294 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
26765 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },47295 .{ ._, ._, .@"and", .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
26766 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },47296 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
47297 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
26767 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },47298 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26768 } },47299 } },
26769 }, .{47300 }, .{
26770 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },47301 .required_features = .{ .@"64bit", null, null, null },
26771 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},47302 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
47303 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }},
26772 .patterns = &.{47304 .patterns = &.{
26773 .{ .src = .{ .to_mem, .none } },47305 .{ .src = .{ .to_mem, .none, .none } },
26774 },47306 },
26775 .extra_temps = .{47307 .extra_temps = .{
26776 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47308 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26777 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47309 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
26778 .unused,47310 .unused,
26779 .unused,47311 .unused,
26780 .unused,47312 .unused,
...@@ -26784,71 +47316,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26784,71 +47316,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26784 .unused,47316 .unused,
26785 },47317 },
26786 .dst_temps = .{.mem},47318 .dst_temps = .{.mem},
47319 .clobbers = .{ .eflags = true },
26787 .each = .{ .once = &.{47320 .each = .{ .once = &.{
26788 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },47321 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
26789 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },47322 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
26790 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },47323 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
26791 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },47324 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
26792 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },47325 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26793 } },
26794 }, .{
26795 .required_features = .{ .avx, null, null, null },
26796 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any },
26797 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
26798 .patterns = &.{
26799 .{ .src = .{ .mem, .none } },
26800 .{ .src = .{ .to_sse, .none } },
26801 },
26802 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26803 .each = .{ .once = &.{
26804 .{ ._, .vp_q, .movsxb, .dst0x, .src0w, ._, ._ },
26805 } },
26806 }, .{
26807 .required_features = .{ .avx, null, null, null },
26808 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any },
26809 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
26810 .patterns = &.{
26811 .{ .src = .{ .mem, .none } },
26812 .{ .src = .{ .to_sse, .none } },
26813 },
26814 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26815 .each = .{ .once = &.{
26816 .{ ._, .vp_q, .movzxb, .dst0x, .src0w, ._, ._ },
26817 } },
26818 }, .{
26819 .required_features = .{ .sse4_1, null, null, null },
26820 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any },
26821 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
26822 .patterns = &.{
26823 .{ .src = .{ .mem, .none } },
26824 .{ .src = .{ .to_sse, .none } },
26825 },
26826 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26827 .each = .{ .once = &.{
26828 .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ },
26829 } },
26830 }, .{
26831 .required_features = .{ .sse4_1, null, null, null },
26832 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any },
26833 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
26834 .patterns = &.{
26835 .{ .src = .{ .mem, .none } },
26836 .{ .src = .{ .to_sse, .none } },
26837 },
26838 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26839 .each = .{ .once = &.{
26840 .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ },
26841 } },47326 } },
26842 }, .{47327 }, .{
26843 .required_features = .{ .sse2, null, null, null },47328 .required_features = .{ .@"64bit", null, null, null },
26844 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any },47329 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
26845 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},47330 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
26846 .patterns = &.{47331 .patterns = &.{
26847 .{ .src = .{ .to_mut_sse, .none } },47332 .{ .src = .{ .to_mem, .none, .none } },
26848 },47333 },
26849 .extra_temps = .{47334 .extra_temps = .{
26850 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },47335 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26851 .unused,47336 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
26852 .unused,47337 .unused,
26853 .unused,47338 .unused,
26854 .unused,47339 .unused,
...@@ -26857,27 +47342,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26857,27 +47342,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26857 .unused,47342 .unused,
26858 .unused,47343 .unused,
26859 },47344 },
26860 .dst_temps = .{.{ .ref = .src0 }},47345 .dst_temps = .{.mem},
47346 .clobbers = .{ .eflags = true },
26861 .each = .{ .once = &.{47347 .each = .{ .once = &.{
26862 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },47348 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
26863 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },47349 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
26864 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },47350 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
26865 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },47351 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
26866 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },47352 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
26867 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },47353 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
26868 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },47354 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26869 } },47355 } },
26870 }, .{47356 }, .{
26871 .required_features = .{ .sse2, null, null, null },47357 .required_features = .{ .@"64bit", .bmi2, null, null },
26872 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any },47358 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
26873 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},47359 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
26874 .patterns = &.{47360 .patterns = &.{
26875 .{ .src = .{ .to_mut_sse, .none } },47361 .{ .src = .{ .to_mem, .none, .none } },
26876 },47362 },
26877 .extra_temps = .{47363 .extra_temps = .{
26878 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },47364 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26879 .unused,47365 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
26880 .unused,47366 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
26881 .unused,47367 .unused,
26882 .unused,47368 .unused,
26883 .unused,47369 .unused,
...@@ -26885,47 +47371,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26885,47 +47371,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26885 .unused,47371 .unused,
26886 .unused,47372 .unused,
26887 },47373 },
26888 .dst_temps = .{.{ .ref = .src0 }},47374 .dst_temps = .{.mem},
26889 .each = .{ .once = &.{47375 .clobbers = .{ .eflags = true },
26890 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
26891 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
26892 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
26893 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
26894 } },
26895 }, .{
26896 .required_features = .{ .avx2, null, null, null },
26897 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },
26898 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},
26899 .patterns = &.{
26900 .{ .src = .{ .mem, .none } },
26901 .{ .src = .{ .to_sse, .none } },
26902 },
26903 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26904 .each = .{ .once = &.{
26905 .{ ._, .vp_q, .movsxb, .dst0y, .src0d, ._, ._ },
26906 } },
26907 }, .{
26908 .required_features = .{ .avx2, null, null, null },
26909 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },
26910 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
26911 .patterns = &.{
26912 .{ .src = .{ .mem, .none } },
26913 .{ .src = .{ .to_sse, .none } },
26914 },
26915 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26916 .each = .{ .once = &.{47376 .each = .{ .once = &.{
26917 .{ ._, .vp_q, .movzxb, .dst0y, .src0d, ._, ._ },47377 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
47378 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
47379 .{ .@"0:", ._, .bzhi, .tmp2q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._ },
47380 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
47381 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
47382 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26918 } },47383 } },
26919 }, .{47384 }, .{
26920 .required_features = .{ .avx2, null, null, null },47385 .required_features = .{ .@"64bit", null, null, null },
26921 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },47386 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
26922 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},47387 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
26923 .patterns = &.{47388 .patterns = &.{
26924 .{ .src = .{ .mem, .none } },47389 .{ .src = .{ .to_mem, .none, .none } },
26925 },47390 },
26926 .extra_temps = .{47391 .extra_temps = .{
26927 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47392 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26928 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },47393 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
26929 .unused,47394 .unused,
26930 .unused,47395 .unused,
26931 .unused,47396 .unused,
...@@ -26935,23 +47400,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26935,23 +47400,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26935 .unused,47400 .unused,
26936 },47401 },
26937 .dst_temps = .{.mem},47402 .dst_temps = .{.mem},
47403 .clobbers = .{ .eflags = true },
26938 .each = .{ .once = &.{47404 .each = .{ .once = &.{
26939 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },47405 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
26940 .{ .@"0:", .vp_q, .movsxb, .tmp1y, .memia(.src0d, .tmp0, .add_size), ._, ._ },47406 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
26941 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_size), .tmp1y, ._, ._ },47407 .{ ._, ._, .@"and", .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
26942 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },47408 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
47409 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
26943 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },47410 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26944 } },47411 } },
26945 }, .{47412 }, .{
26946 .required_features = .{ .avx2, null, null, null },47413 .required_features = .{ .@"64bit", null, null, null },
26947 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },47414 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },
26948 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }},47415 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }},
26949 .patterns = &.{47416 .patterns = &.{
26950 .{ .src = .{ .mem, .none } },47417 .{ .src = .{ .to_mem, .none, .none } },
26951 },47418 },
26952 .extra_temps = .{47419 .extra_temps = .{
26953 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47420 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26954 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },47421 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
26955 .unused,47422 .unused,
26956 .unused,47423 .unused,
26957 .unused,47424 .unused,
...@@ -26961,23 +47428,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26961,23 +47428,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26961 .unused,47428 .unused,
26962 },47429 },
26963 .dst_temps = .{.mem},47430 .dst_temps = .{.mem},
47431 .clobbers = .{ .eflags = true },
26964 .each = .{ .once = &.{47432 .each = .{ .once = &.{
26965 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },47433 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
26966 .{ .@"0:", .vp_q, .movzxb, .tmp1y, .memia(.src0d, .tmp0, .add_size), ._, ._ },47434 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
26967 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_size), .tmp1y, ._, ._ },47435 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
26968 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },47436 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
26969 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },47437 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26970 } },47438 } },
26971 }, .{47439 }, .{
26972 .required_features = .{ .avx, null, null, null },47440 .required_features = .{ .@"64bit", null, null, null },
26973 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any },47441 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .yword } }, .any, .any },
26974 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},47442 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
26975 .patterns = &.{47443 .patterns = &.{
26976 .{ .src = .{ .mem, .none } },47444 .{ .src = .{ .to_mem, .none, .none } },
26977 },47445 },
26978 .extra_temps = .{47446 .extra_temps = .{
26979 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47447 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26980 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },47448 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
26981 .unused,47449 .unused,
26982 .unused,47450 .unused,
26983 .unused,47451 .unused,
...@@ -26987,24 +47455,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26987,24 +47455,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26987 .unused,47455 .unused,
26988 },47456 },
26989 .dst_temps = .{.mem},47457 .dst_temps = .{.mem},
47458 .clobbers = .{ .eflags = true },
26990 .each = .{ .once = &.{47459 .each = .{ .once = &.{
26991 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },47460 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
26992 .{ .@"0:", .vp_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_size), ._, ._ },47461 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
26993 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_size), .tmp1x, ._, ._ },47462 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
26994 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },47463 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
47464 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
47465 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
26995 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },47466 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26996 } },47467 } },
26997 }, .{47468 }, .{
26998 .required_features = .{ .avx, null, null, null },47469 .required_features = .{ .@"64bit", .bmi2, null, null },
26999 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any },47470 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
27000 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},47471 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
27001 .patterns = &.{47472 .patterns = &.{
27002 .{ .src = .{ .mem, .none } },47473 .{ .src = .{ .to_mem, .none, .none } },
27003 },47474 },
27004 .extra_temps = .{47475 .extra_temps = .{
27005 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47476 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27006 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },47477 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
27007 .unused,47478 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
27008 .unused,47479 .unused,
27009 .unused,47480 .unused,
27010 .unused,47481 .unused,
...@@ -27013,23 +47484,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27013,23 +47484,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27013 .unused,47484 .unused,
27014 },47485 },
27015 .dst_temps = .{.mem},47486 .dst_temps = .{.mem},
47487 .clobbers = .{ .eflags = true },
27016 .each = .{ .once = &.{47488 .each = .{ .once = &.{
27017 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },47489 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
27018 .{ .@"0:", .vp_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_size), ._, ._ },47490 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
27019 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_size), .tmp1x, ._, ._ },47491 .{ .@"0:", ._, .bzhi, .tmp2q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._ },
27020 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },47492 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
47493 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
27021 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },47494 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27022 } },47495 } },
27023 }, .{47496 }, .{
27024 .required_features = .{ .sse4_1, null, null, null },47497 .required_features = .{ .@"64bit", null, null, null },
27025 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any },47498 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
27026 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},47499 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
27027 .patterns = &.{47500 .patterns = &.{
27028 .{ .src = .{ .mem, .none } },47501 .{ .src = .{ .to_mem, .none, .none } },
27029 },47502 },
27030 .extra_temps = .{47503 .extra_temps = .{
27031 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47504 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27032 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },47505 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
27033 .unused,47506 .unused,
27034 .unused,47507 .unused,
27035 .unused,47508 .unused,
...@@ -27039,24 +47512,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27039,24 +47512,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27039 .unused,47512 .unused,
27040 },47513 },
27041 .dst_temps = .{.mem},47514 .dst_temps = .{.mem},
47515 .clobbers = .{ .eflags = true },
27042 .each = .{ .once = &.{47516 .each = .{ .once = &.{
27043 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },47517 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
27044 .{ .@"0:", .p_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_size), ._, ._ },47518 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
27045 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_size), .tmp1x, ._, ._ },47519 .{ ._, ._, .@"and", .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
27046 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },47520 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
47521 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
27047 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },47522 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27048 } },47523 } },
27049 }, .{47524 }, .{
27050 .required_features = .{ .sse4_1, null, null, null },47525 .required_features = .{ .@"64bit", null, null, null },
27051 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any },47526 .src_constraints = .{ .any_scalar_int, .any, .any },
27052 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},47527 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }},
27053 .patterns = &.{47528 .patterns = &.{
27054 .{ .src = .{ .mem, .none } },47529 .{ .src = .{ .to_mem, .none, .none } },
27055 },47530 },
27056 .extra_temps = .{47531 .extra_temps = .{
27057 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47532 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27058 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },47533 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27059 .unused,47534 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
27060 .unused,47535 .unused,
27061 .unused,47536 .unused,
27062 .unused,47537 .unused,
...@@ -27065,22 +47540,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27065,22 +47540,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27065 .unused,47540 .unused,
27066 },47541 },
27067 .dst_temps = .{.mem},47542 .dst_temps = .{.mem},
47543 .clobbers = .{ .eflags = true },
27068 .each = .{ .once = &.{47544 .each = .{ .once = &.{
27069 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },47545 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
27070 .{ .@"0:", .p_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_size), ._, ._ },47546 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
27071 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_size), .tmp1x, ._, ._ },47547 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
27072 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },47548 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
47549 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
47550 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
27073 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },47551 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27074 } },47552 } },
27075 }, .{47553 }, .{
27076 .required_features = .{ .@"64bit", .slow_incdec, null, null },47554 .required_features = .{ .@"64bit", null, null, null },
27077 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },47555 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
27078 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},47556 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
27079 .patterns = &.{47557 .patterns = &.{
27080 .{ .src = .{ .to_mem, .none } },47558 .{ .src = .{ .to_mem, .none, .none } },
27081 },47559 },
27082 .extra_temps = .{47560 .extra_temps = .{
27083 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47561 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
47562 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27084 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },47563 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
27085 .unused,47564 .unused,
27086 .unused,47565 .unused,
...@@ -27088,28 +47567,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27088,28 +47567,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27088 .unused,47567 .unused,
27089 .unused,47568 .unused,
27090 .unused,47569 .unused,
27091 .unused,
27092 },47570 },
27093 .dst_temps = .{.mem},47571 .dst_temps = .{.mem},
47572 .clobbers = .{ .eflags = true },
27094 .each = .{ .once = &.{47573 .each = .{ .once = &.{
27095 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },47574 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
27096 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },47575 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
27097 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },47576 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
27098 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },47577 .{ ._, ._l, .sa, .tmp2q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
47578 .{ ._, ._r, .sa, .tmp2q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
47579 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
47580 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
47581 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
27099 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },47582 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27100 } },47583 } },
27101 }, .{47584 }, .{
27102 .required_features = .{ .@"64bit", null, null, null },47585 .required_features = .{ .@"64bit", .bmi2, null, null },
27103 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },47586 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
27104 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},47587 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
27105 .patterns = &.{47588 .patterns = &.{
27106 .{ .src = .{ .to_mem, .none } },47589 .{ .src = .{ .to_mem, .none, .none } },
27107 },47590 },
27108 .extra_temps = .{47591 .extra_temps = .{
27109 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47592 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27110 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },47593 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27111 .unused,47594 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
27112 .unused,47595 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
27113 .unused,47596 .unused,
27114 .unused,47597 .unused,
27115 .unused,47598 .unused,
...@@ -27117,24 +47600,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27117,24 +47600,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27117 .unused,47600 .unused,
27118 },47601 },
27119 .dst_temps = .{.mem},47602 .dst_temps = .{.mem},
47603 .clobbers = .{ .eflags = true },
27120 .each = .{ .once = &.{47604 .each = .{ .once = &.{
27121 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },47605 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
27122 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },47606 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
27123 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },47607 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
27124 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },47608 .{ .@"0:", ._, .bzhi, .tmp3q, .memi(.src0q, .tmp1), .tmp2q, ._ },
27125 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },47609 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
47610 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
47611 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
47612 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27126 } },47613 } },
27127 }, .{47614 }, .{
27128 .required_features = .{ .slow_incdec, null, null, null },47615 .required_features = .{ .@"64bit", null, null, null },
27129 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },47616 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
27130 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},47617 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
27131 .patterns = &.{47618 .patterns = &.{
27132 .{ .src = .{ .to_mem, .none } },47619 .{ .src = .{ .to_mem, .none, .none } },
27133 },47620 },
27134 .extra_temps = .{47621 .extra_temps = .{
27135 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47622 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27136 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47623 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27137 .unused,47624 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
27138 .unused,47625 .unused,
27139 .unused,47626 .unused,
27140 .unused,47627 .unused,
...@@ -27143,24 +47630,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27143,24 +47630,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27143 .unused,47630 .unused,
27144 },47631 },
27145 .dst_temps = .{.mem},47632 .dst_temps = .{.mem},
47633 .clobbers = .{ .eflags = true },
27146 .each = .{ .once = &.{47634 .each = .{ .once = &.{
27147 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },47635 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
27148 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },47636 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
27149 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },47637 .{ .@"0:", ._, .mov, .tmp2q, .ua(.dst0, .add_umax), ._, ._ },
27150 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },47638 .{ ._, ._, .@"and", .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
47639 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
47640 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
47641 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
27151 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },47642 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27152 } },47643 } },
27153 }, .{47644 }, .{
27154 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },47645 .required_features = .{ .@"64bit", .slow_incdec, null, null },
27155 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},47646 .src_constraints = .{ .any_scalar_int, .any, .any },
47647 .dst_constraints = .{.{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }},
27156 .patterns = &.{47648 .patterns = &.{
27157 .{ .src = .{ .to_mem, .none } },47649 .{ .src = .{ .to_mem, .none, .none } },
27158 },47650 },
27159 .extra_temps = .{47651 .extra_temps = .{
27160 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27161 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47652 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27162 .unused,47653 .{ .type = .usize, .kind = .{ .reg = .rsi } },
27163 .unused,47654 .{ .type = .usize, .kind = .{ .reg = .rdi } },
47655 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27164 .unused,47656 .unused,
27165 .unused,47657 .unused,
27166 .unused,47658 .unused,
...@@ -27168,132 +47660,128 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27168,132 +47660,128 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27168 .unused,47660 .unused,
27169 },47661 },
27170 .dst_temps = .{.mem},47662 .dst_temps = .{.mem},
47663 .clobbers = .{ .eflags = true },
27171 .each = .{ .once = &.{47664 .each = .{ .once = &.{
27172 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },47665 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
27173 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },47666 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
27174 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },47667 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
27175 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },47668 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
27176 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },47669 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
27177 } },47670 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
27178 }, .{47671 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
27179 .required_features = .{ .avx, null, null, null },47672 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
27180 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
27181 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
27182 .patterns = &.{
27183 .{ .src = .{ .mem, .none } },
27184 .{ .src = .{ .to_sse, .none } },
27185 },
27186 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27187 .each = .{ .once = &.{
27188 .{ ._, .vp_q, .movsxb, .dst0x, .src0w, ._, ._ },
27189 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
27190 } },
27191 }, .{
27192 .required_features = .{ .avx, null, null, null },
27193 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any },
27194 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
27195 .patterns = &.{
27196 .{ .src = .{ .mem, .none } },
27197 .{ .src = .{ .to_sse, .none } },
27198 },
27199 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27200 .each = .{ .once = &.{
27201 .{ ._, .vp_q, .movzxb, .dst0x, .src0w, ._, ._ },
27202 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
27203 } },47673 } },
27204 }, .{47674 }, .{
27205 .required_features = .{ .sse4_1, null, null, null },47675 .required_features = .{ .@"64bit", null, null, null },
27206 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },47676 .src_constraints = .{ .any_scalar_int, .any, .any },
27207 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},47677 .dst_constraints = .{.{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }},
27208 .patterns = &.{47678 .patterns = &.{
27209 .{ .src = .{ .mem, .none } },47679 .{ .src = .{ .to_mem, .none, .none } },
27210 .{ .src = .{ .to_sse, .none } },
27211 },47680 },
27212 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},47681 .extra_temps = .{
27213 .each = .{ .once = &.{47682 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27214 .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ },47683 .{ .type = .usize, .kind = .{ .reg = .rsi } },
27215 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },47684 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27216 } },47685 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27217 }, .{47686 .unused,
27218 .required_features = .{ .sse4_1, null, null, null },47687 .unused,
27219 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any },47688 .unused,
27220 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},47689 .unused,
27221 .patterns = &.{47690 .unused,
27222 .{ .src = .{ .mem, .none } },
27223 .{ .src = .{ .to_sse, .none } },
27224 },47691 },
27225 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},47692 .dst_temps = .{.mem},
47693 .clobbers = .{ .eflags = true },
27226 .each = .{ .once = &.{47694 .each = .{ .once = &.{
27227 .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ },47695 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
27228 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },47696 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
47697 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
47698 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
47699 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
47700 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
47701 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
47702 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
27229 } },47703 } },
27230 }, .{47704 }, .{
27231 .required_features = .{ .sse2, null, null, null },47705 .required_features = .{ .@"64bit", .slow_incdec, null, null },
27232 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },47706 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
27233 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},47707 .dst_constraints = .{.{ .scalar_exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
27234 .patterns = &.{47708 .patterns = &.{
27235 .{ .src = .{ .to_mut_sse, .none } },47709 .{ .src = .{ .to_mem, .none, .none } },
27236 },47710 },
27237 .extra_temps = .{47711 .extra_temps = .{
27238 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },47712 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27239 .unused,47713 .{ .type = .usize, .kind = .{ .reg = .rsi } },
27240 .unused,47714 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27241 .unused,47715 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27242 .unused,47716 .unused,
27243 .unused,47717 .unused,
27244 .unused,47718 .unused,
27245 .unused,47719 .unused,
27246 .unused,47720 .unused,
27247 },47721 },
27248 .dst_temps = .{.{ .ref = .src0 }},47722 .dst_temps = .{.mem},
47723 .clobbers = .{ .eflags = true },
27249 .each = .{ .once = &.{47724 .each = .{ .once = &.{
27250 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },47725 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
27251 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },47726 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
27252 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },47727 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
27253 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },47728 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
27254 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },47729 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
27255 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },47730 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
27256 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },47731 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
27257 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },47732 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
27258 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },47733 .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ },
47734 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
47735 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
47736 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
47737 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
27259 } },47738 } },
27260 }, .{47739 }, .{
27261 .required_features = .{ .sse2, null, null, null },47740 .required_features = .{ .@"64bit", null, null, null },
27262 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any },47741 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
27263 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},47742 .dst_constraints = .{.{ .scalar_exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
27264 .patterns = &.{47743 .patterns = &.{
27265 .{ .src = .{ .to_mut_sse, .none } },47744 .{ .src = .{ .to_mem, .none, .none } },
27266 },47745 },
27267 .extra_temps = .{47746 .extra_temps = .{
27268 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },47747 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27269 .unused,47748 .{ .type = .usize, .kind = .{ .reg = .rsi } },
27270 .unused,47749 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27271 .unused,47750 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27272 .unused,47751 .unused,
27273 .unused,47752 .unused,
27274 .unused,47753 .unused,
27275 .unused,47754 .unused,
27276 .unused,47755 .unused,
27277 },47756 },
27278 .dst_temps = .{.{ .ref = .src0 }},47757 .dst_temps = .{.mem},
47758 .clobbers = .{ .eflags = true },
27279 .each = .{ .once = &.{47759 .each = .{ .once = &.{
27280 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },47760 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
27281 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },47761 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
27282 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },47762 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
27283 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },47763 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
27284 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },47764 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
47765 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
47766 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
47767 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
47768 .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ },
47769 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
47770 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
47771 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
47772 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
27285 } },47773 } },
27286 }, .{47774 }, .{
27287 .required_features = .{ .@"64bit", .slow_incdec, null, null },47775 .required_features = .{ .@"64bit", .slow_incdec, null, null },
27288 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },47776 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
27289 .dst_constraints = .{.any_scalar_signed_int},47777 .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
27290 .patterns = &.{47778 .patterns = &.{
27291 .{ .src = .{ .to_mem, .none } },47779 .{ .src = .{ .to_mem, .none, .none } },
27292 },47780 },
27293 .extra_temps = .{47781 .extra_temps = .{
27294 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47782 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
47783 .{ .type = .usize, .kind = .{ .reg = .rsi } },
27295 .{ .type = .usize, .kind = .{ .reg = .rdi } },47784 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27296 .{ .type = .i64, .kind = .{ .reg = .rax } },
27297 .{ .type = .u32, .kind = .{ .reg = .ecx } },47785 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27298 .unused,47786 .unused,
27299 .unused,47787 .unused,
...@@ -27302,28 +47790,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27302,28 +47790,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27302 .unused,47790 .unused,
27303 },47791 },
27304 .dst_temps = .{.mem},47792 .dst_temps = .{.mem},
47793 .clobbers = .{ .eflags = true },
27305 .each = .{ .once = &.{47794 .each = .{ .once = &.{
27306 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },47795 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
27307 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },47796 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
27308 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },47797 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
27309 .{ ._, ._sq, .sto, ._, ._, ._, ._ },47798 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
27310 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },47799 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
27311 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },47800 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
27312 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },47801 .{ ._, ._l, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
27313 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },47802 .{ ._, ._r, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
27314 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },47803 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
47804 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
47805 .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ },
47806 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
47807 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
47808 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
47809 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
27315 } },47810 } },
27316 }, .{47811 }, .{
27317 .required_features = .{ .@"64bit", null, null, null },47812 .required_features = .{ .@"64bit", null, null, null },
27318 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },47813 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
27319 .dst_constraints = .{.any_scalar_signed_int},47814 .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
27320 .patterns = &.{47815 .patterns = &.{
27321 .{ .src = .{ .to_mem, .none } },47816 .{ .src = .{ .to_mem, .none, .none } },
27322 },47817 },
27323 .extra_temps = .{47818 .extra_temps = .{
27324 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47819 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
47820 .{ .type = .usize, .kind = .{ .reg = .rsi } },
27325 .{ .type = .usize, .kind = .{ .reg = .rdi } },47821 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27326 .{ .type = .i64, .kind = .{ .reg = .rax } },
27327 .{ .type = .u32, .kind = .{ .reg = .ecx } },47822 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27328 .unused,47823 .unused,
27329 .unused,47824 .unused,
...@@ -27332,312 +47827,304 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27332,312 +47827,304 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27332 .unused,47827 .unused,
27333 },47828 },
27334 .dst_temps = .{.mem},47829 .dst_temps = .{.mem},
47830 .clobbers = .{ .eflags = true },
27335 .each = .{ .once = &.{47831 .each = .{ .once = &.{
27336 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },47832 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
27337 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },47833 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
27338 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },47834 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
27339 .{ ._, ._sq, .sto, ._, ._, ._, ._ },47835 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
27340 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },47836 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
27341 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },47837 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
27342 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },47838 .{ ._, ._l, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
27343 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },47839 .{ ._, ._r, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
47840 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
47841 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
47842 .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ },
47843 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
47844 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
47845 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
27344 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },47846 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
27345 } },47847 } },
27346 }, .{47848 }, .{
27347 .required_features = .{ .@"64bit", .slow_incdec, null, null },47849 .required_features = .{ .@"64bit", .slow_incdec, null, null },
27348 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },47850 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
27349 .dst_constraints = .{.any_scalar_int},47851 .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }},
27350 .patterns = &.{47852 .patterns = &.{
27351 .{ .src = .{ .to_mem, .none } },47853 .{ .src = .{ .to_mem, .none, .none } },
27352 },47854 },
27353 .extra_temps = .{47855 .extra_temps = .{
27354 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47856 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
47857 .{ .type = .usize, .kind = .{ .reg = .rsi } },
27355 .{ .type = .usize, .kind = .{ .reg = .rdi } },47858 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27356 .{ .type = .u64, .kind = .{ .reg = .rax } },
27357 .{ .type = .u32, .kind = .{ .reg = .ecx } },47859 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27358 .unused,47860 .{ .type = .u64, .kind = .{ .reg = .rax } },
27359 .unused,47861 .unused,
27360 .unused,47862 .unused,
27361 .unused,47863 .unused,
27362 .unused,47864 .unused,
27363 },47865 },
27364 .dst_temps = .{.mem},47866 .dst_temps = .{.mem},
47867 .clobbers = .{ .eflags = true },
27365 .each = .{ .once = &.{47868 .each = .{ .once = &.{
27366 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },47869 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
27367 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },47870 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
27368 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },47871 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
47872 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
47873 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
47874 .{ ._, ._, .mov, .tmp4q, .lea(.tmp1q), ._, ._ },
47875 .{ ._, ._l, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
47876 .{ ._, ._r, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
27369 .{ ._, ._sq, .sto, ._, ._, ._, ._ },47877 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
27370 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },47878 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
27371 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },47879 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
27372 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },47880 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
27373 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
27374 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27375 } },47881 } },
27376 }, .{47882 }, .{
27377 .required_features = .{ .@"64bit", null, null, null },47883 .required_features = .{ .@"64bit", null, null, null },
27378 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },47884 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
27379 .dst_constraints = .{.any_scalar_int},47885 .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }},
27380 .patterns = &.{47886 .patterns = &.{
27381 .{ .src = .{ .to_mem, .none } },47887 .{ .src = .{ .to_mem, .none, .none } },
27382 },47888 },
27383 .extra_temps = .{47889 .extra_temps = .{
27384 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47890 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
47891 .{ .type = .usize, .kind = .{ .reg = .rsi } },
27385 .{ .type = .usize, .kind = .{ .reg = .rdi } },47892 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27386 .{ .type = .u64, .kind = .{ .reg = .rax } },
27387 .{ .type = .u32, .kind = .{ .reg = .ecx } },47893 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27388 .unused,47894 .{ .type = .u64, .kind = .{ .reg = .rax } },
27389 .unused,47895 .unused,
27390 .unused,47896 .unused,
27391 .unused,47897 .unused,
27392 .unused,47898 .unused,
27393 },47899 },
27394 .dst_temps = .{.mem},47900 .dst_temps = .{.mem},
47901 .clobbers = .{ .eflags = true },
27395 .each = .{ .once = &.{47902 .each = .{ .once = &.{
27396 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },47903 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
27397 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },47904 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
27398 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },47905 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
47906 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
47907 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
47908 .{ ._, ._, .mov, .tmp4q, .lea(.tmp1q), ._, ._ },
47909 .{ ._, ._l, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
47910 .{ ._, ._r, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
27399 .{ ._, ._sq, .sto, ._, ._, ._, ._ },47911 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
27400 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },47912 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
27401 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },47913 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
27402 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
27403 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
27404 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },47914 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
27405 } },47915 } },
27406 }, .{47916 }, .{
27407 .required_features = .{ .avx, null, null, null },47917 .required_features = .{ .@"64bit", .slow_incdec, null, null },
27408 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },47918 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
27409 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},47919 .dst_constraints = .{.{ .scalar_exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
27410 .patterns = &.{
27411 .{ .src = .{ .mem, .none } },
27412 .{ .src = .{ .to_sse, .none } },
27413 },
27414 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27415 .each = .{ .once = &.{
27416 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },
27417 } },
27418 }, .{
27419 .required_features = .{ .avx, null, null, null },
27420 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any },
27421 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
27422 .patterns = &.{
27423 .{ .src = .{ .mem, .none } },
27424 .{ .src = .{ .to_sse, .none } },
27425 },
27426 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27427 .each = .{ .once = &.{
27428 .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ },
27429 } },
27430 }, .{
27431 .required_features = .{ .sse4_1, null, null, null },
27432 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
27433 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
27434 .patterns = &.{
27435 .{ .src = .{ .mem, .none } },
27436 .{ .src = .{ .to_sse, .none } },
27437 },
27438 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27439 .each = .{ .once = &.{
27440 .{ ._, .p_d, .movsxw, .dst0x, .src0q, ._, ._ },
27441 } },
27442 }, .{
27443 .required_features = .{ .sse4_1, null, null, null },
27444 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any },
27445 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
27446 .patterns = &.{
27447 .{ .src = .{ .mem, .none } },
27448 .{ .src = .{ .to_sse, .none } },
27449 },
27450 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27451 .each = .{ .once = &.{
27452 .{ ._, .p_d, .movzxw, .dst0x, .src0q, ._, ._ },
27453 } },
27454 }, .{
27455 .required_features = .{ .sse2, null, null, null },
27456 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
27457 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
27458 .patterns = &.{47920 .patterns = &.{
27459 .{ .src = .{ .to_mut_sse, .none } },47921 .{ .src = .{ .to_mem, .none, .none } },
27460 },47922 },
27461 .extra_temps = .{47923 .extra_temps = .{
27462 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },47924 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27463 .unused,47925 .{ .type = .usize, .kind = .{ .reg = .rsi } },
27464 .unused,47926 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27465 .unused,47927 .{ .type = .u64, .kind = .{ .reg = .rax } },
27466 .unused,47928 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27467 .unused,47929 .unused,
27468 .unused,47930 .unused,
27469 .unused,47931 .unused,
27470 .unused,47932 .unused,
27471 },47933 },
27472 .dst_temps = .{.{ .ref = .src0 }},47934 .dst_temps = .{.mem},
47935 .clobbers = .{ .eflags = true },
27473 .each = .{ .once = &.{47936 .each = .{ .once = &.{
27474 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },47937 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
27475 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },47938 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
27476 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },47939 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
47940 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
47941 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
47942 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
47943 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
47944 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
47945 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
47946 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
27477 } },47947 } },
27478 }, .{47948 }, .{
27479 .required_features = .{ .sse2, null, null, null },47949 .required_features = .{ .@"64bit", null, null, null },
27480 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any },47950 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
27481 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},47951 .dst_constraints = .{.{ .scalar_exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
27482 .patterns = &.{47952 .patterns = &.{
27483 .{ .src = .{ .to_mut_sse, .none } },47953 .{ .src = .{ .to_mem, .none, .none } },
27484 },47954 },
27485 .extra_temps = .{47955 .extra_temps = .{
27486 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },47956 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27487 .unused,47957 .{ .type = .usize, .kind = .{ .reg = .rsi } },
27488 .unused,47958 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27489 .unused,47959 .{ .type = .u64, .kind = .{ .reg = .rax } },
27490 .unused,47960 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27491 .unused,47961 .unused,
27492 .unused,47962 .unused,
27493 .unused,47963 .unused,
27494 .unused,47964 .unused,
27495 },47965 },
27496 .dst_temps = .{.{ .ref = .src0 }},47966 .dst_temps = .{.mem},
27497 .each = .{ .once = &.{47967 .clobbers = .{ .eflags = true },
27498 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
27499 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
27500 } },
27501 }, .{
27502 .required_features = .{ .avx2, null, null, null },
27503 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },
27504 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }},
27505 .patterns = &.{
27506 .{ .src = .{ .mem, .none } },
27507 .{ .src = .{ .to_sse, .none } },
27508 },
27509 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27510 .each = .{ .once = &.{
27511 .{ ._, .vp_d, .movsxw, .dst0y, .src0x, ._, ._ },
27512 } },
27513 }, .{
27514 .required_features = .{ .avx2, null, null, null },
27515 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any },
27516 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }},
27517 .patterns = &.{
27518 .{ .src = .{ .mem, .none } },
27519 .{ .src = .{ .to_sse, .none } },
27520 },
27521 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27522 .each = .{ .once = &.{47968 .each = .{ .once = &.{
27523 .{ ._, .vp_d, .movzxw, .dst0y, .src0x, ._, ._ },47969 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
47970 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
47971 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
47972 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
47973 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
47974 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
47975 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
47976 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
47977 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
47978 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
27524 } },47979 } },
27525 }, .{47980 }, .{
27526 .required_features = .{ .avx2, null, null, null },47981 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
27527 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },47982 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
27528 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }},47983 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
27529 .patterns = &.{47984 .patterns = &.{
27530 .{ .src = .{ .mem, .none } },47985 .{ .src = .{ .to_mem, .none, .none } },
27531 },47986 },
27532 .extra_temps = .{47987 .extra_temps = .{
27533 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47988 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27534 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },47989 .{ .type = .usize, .kind = .{ .reg = .rsi } },
27535 .unused,47990 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27536 .unused,47991 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
27537 .unused,47992 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27538 .unused,47993 .unused,
27539 .unused,47994 .unused,
27540 .unused,47995 .unused,
27541 .unused,47996 .unused,
27542 },47997 },
27543 .dst_temps = .{.mem},47998 .dst_temps = .{.mem},
47999 .clobbers = .{ .eflags = true },
27544 .each = .{ .once = &.{48000 .each = .{ .once = &.{
27545 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },48001 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
27546 .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },48002 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
27547 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ },48003 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
27548 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },48004 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
27549 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },48005 .{ .@"0:", ._, .mov, .tmp4d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
48006 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
48007 .{ ._, ._, .bzhi, .tmp4q, .lea(.tmp1q), .tmp3q, ._ },
48008 .{ ._, ._, .mov, .lea(.tmp2q), .tmp4q, ._, ._ },
48009 .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ },
48010 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
48011 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
48012 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
48013 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
27550 } },48014 } },
27551 }, .{48015 }, .{
27552 .required_features = .{ .avx2, null, null, null },48016 .required_features = .{ .@"64bit", .bmi2, null, null },
27553 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any },48017 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
27554 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }},48018 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
27555 .patterns = &.{48019 .patterns = &.{
27556 .{ .src = .{ .mem, .none } },48020 .{ .src = .{ .to_mem, .none, .none } },
27557 },48021 },
27558 .extra_temps = .{48022 .extra_temps = .{
27559 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },48023 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27560 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },48024 .{ .type = .usize, .kind = .{ .reg = .rsi } },
27561 .unused,48025 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27562 .unused,48026 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
27563 .unused,48027 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27564 .unused,48028 .unused,
27565 .unused,48029 .unused,
27566 .unused,48030 .unused,
27567 .unused,48031 .unused,
27568 },48032 },
27569 .dst_temps = .{.mem},48033 .dst_temps = .{.mem},
48034 .clobbers = .{ .eflags = true },
27570 .each = .{ .once = &.{48035 .each = .{ .once = &.{
27571 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },48036 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
27572 .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },48037 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
27573 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ },48038 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
27574 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },48039 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
27575 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },48040 .{ .@"0:", ._, .mov, .tmp4d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
48041 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
48042 .{ ._, ._, .bzhi, .tmp4q, .lea(.tmp1q), .tmp3q, ._ },
48043 .{ ._, ._, .mov, .lea(.tmp2q), .tmp4q, ._, ._ },
48044 .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ },
48045 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
48046 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
48047 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
48048 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
27576 } },48049 } },
27577 }, .{48050 }, .{
27578 .required_features = .{ .avx, null, null, null },48051 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
27579 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },48052 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
27580 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},48053 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
27581 .patterns = &.{48054 .patterns = &.{
27582 .{ .src = .{ .mem, .none } },48055 .{ .src = .{ .to_mem, .none, .none } },
27583 },48056 },
27584 .extra_temps = .{48057 .extra_temps = .{
27585 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },48058 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27586 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },48059 .{ .type = .usize, .kind = .{ .reg = .rsi } },
27587 .unused,48060 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27588 .unused,48061 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
27589 .unused,48062 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27590 .unused,48063 .{ .type = .u64, .kind = .{ .reg = .rax } },
27591 .unused,48064 .unused,
27592 .unused,48065 .unused,
27593 .unused,48066 .unused,
27594 },48067 },
27595 .dst_temps = .{.mem},48068 .dst_temps = .{.mem},
48069 .clobbers = .{ .eflags = true },
27596 .each = .{ .once = &.{48070 .each = .{ .once = &.{
27597 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },48071 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
27598 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },48072 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
27599 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },48073 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
27600 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },48074 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
27601 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },48075 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
48076 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
48077 .{ ._, ._, .bzhi, .tmp5q, .lea(.tmp1q), .tmp3q, ._ },
48078 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
48079 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
48080 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
48081 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
27602 } },48082 } },
27603 }, .{48083 }, .{
27604 .required_features = .{ .avx, null, null, null },48084 .required_features = .{ .@"64bit", .bmi2, null, null },
27605 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any },48085 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
27606 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},48086 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
27607 .patterns = &.{48087 .patterns = &.{
27608 .{ .src = .{ .mem, .none } },48088 .{ .src = .{ .to_mem, .none, .none } },
27609 },48089 },
27610 .extra_temps = .{48090 .extra_temps = .{
27611 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },48091 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27612 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },48092 .{ .type = .usize, .kind = .{ .reg = .rsi } },
27613 .unused,48093 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27614 .unused,48094 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
27615 .unused,48095 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27616 .unused,48096 .{ .type = .u64, .kind = .{ .reg = .rax } },
27617 .unused,48097 .unused,
27618 .unused,48098 .unused,
27619 .unused,48099 .unused,
27620 },48100 },
27621 .dst_temps = .{.mem},48101 .dst_temps = .{.mem},
48102 .clobbers = .{ .eflags = true },
27622 .each = .{ .once = &.{48103 .each = .{ .once = &.{
27623 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },48104 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
27624 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },48105 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
27625 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },48106 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
27626 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },48107 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
27627 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },48108 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
48109 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
48110 .{ ._, ._, .bzhi, .tmp5q, .lea(.tmp1q), .tmp3q, ._ },
48111 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
48112 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
48113 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
48114 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
27628 } },48115 } },
27629 }, .{48116 }, .{
27630 .required_features = .{ .sse4_1, null, null, null },48117 .required_features = .{ .@"64bit", .slow_incdec, null, null },
27631 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },48118 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
27632 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},48119 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
27633 .patterns = &.{48120 .patterns = &.{
27634 .{ .src = .{ .mem, .none } },48121 .{ .src = .{ .to_mem, .none, .none } },
27635 },48122 },
27636 .extra_temps = .{48123 .extra_temps = .{
27637 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },48124 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27638 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },48125 .{ .type = .usize, .kind = .{ .reg = .rsi } },
27639 .unused,48126 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27640 .unused,48127 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27641 .unused,48128 .unused,
27642 .unused,48129 .unused,
27643 .unused,48130 .unused,
...@@ -27645,25 +48132,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27645,25 +48132,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27645 .unused,48132 .unused,
27646 },48133 },
27647 .dst_temps = .{.mem},48134 .dst_temps = .{.mem},
48135 .clobbers = .{ .eflags = true },
27648 .each = .{ .once = &.{48136 .each = .{ .once = &.{
27649 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },48137 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
27650 .{ .@"0:", .p_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },48138 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
27651 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },48139 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
27652 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },48140 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
27653 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },48141 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
48142 .{ ._, ._, .mov, .tmp3q, .ua(.dst0, .add_umax), ._, ._ },
48143 .{ ._, ._, .@"and", .tmp3q, .lea(.tmp1q), ._, ._ },
48144 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
48145 .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ },
48146 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
48147 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
48148 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
48149 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
27654 } },48150 } },
27655 }, .{48151 }, .{
27656 .required_features = .{ .sse4_1, null, null, null },48152 .required_features = .{ .@"64bit", null, null, null },
27657 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any },48153 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
27658 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},48154 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
27659 .patterns = &.{48155 .patterns = &.{
27660 .{ .src = .{ .mem, .none } },48156 .{ .src = .{ .to_mem, .none, .none } },
27661 },48157 },
27662 .extra_temps = .{48158 .extra_temps = .{
27663 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },48159 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27664 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },48160 .{ .type = .usize, .kind = .{ .reg = .rsi } },
27665 .unused,48161 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27666 .unused,48162 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27667 .unused,48163 .unused,
27668 .unused,48164 .unused,
27669 .unused,48165 .unused,
...@@ -27671,221 +48167,497 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27671,221 +48167,497 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27671 .unused,48167 .unused,
27672 },48168 },
27673 .dst_temps = .{.mem},48169 .dst_temps = .{.mem},
48170 .clobbers = .{ .eflags = true },
27674 .each = .{ .once = &.{48171 .each = .{ .once = &.{
27675 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },48172 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
27676 .{ .@"0:", .p_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },48173 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
27677 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },48174 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
27678 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },48175 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
27679 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },48176 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
48177 .{ ._, ._, .mov, .tmp3q, .ua(.dst0, .add_umax), ._, ._ },
48178 .{ ._, ._, .@"and", .tmp3q, .lea(.tmp1q), ._, ._ },
48179 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
48180 .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ },
48181 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
48182 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
48183 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
48184 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
27680 } },48185 } },
27681 }, .{48186 }, .{
27682 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },48187 .required_features = .{ .@"64bit", .slow_incdec, null, null },
27683 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},48188 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
48189 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
27684 .patterns = &.{48190 .patterns = &.{
27685 .{ .src = .{ .to_mem, .none } },48191 .{ .src = .{ .to_mem, .none, .none } },
27686 },48192 },
27687 .extra_temps = .{48193 .extra_temps = .{
27688 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },48194 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27689 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },48195 .{ .type = .usize, .kind = .{ .reg = .rsi } },
27690 .unused,48196 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27691 .unused,48197 .{ .type = .u64, .kind = .{ .reg = .rax } },
27692 .unused,48198 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27693 .unused,48199 .unused,
27694 .unused,48200 .unused,
27695 .unused,48201 .unused,
27696 .unused,48202 .unused,
27697 },48203 },
27698 .dst_temps = .{.mem},48204 .dst_temps = .{.mem},
48205 .clobbers = .{ .eflags = true },
27699 .each = .{ .once = &.{48206 .each = .{ .once = &.{
27700 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },48207 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
27701 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },48208 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
27702 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },48209 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
27703 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },48210 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
27704 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },48211 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
48212 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
48213 .{ ._, ._, .mov, .tmp4q, .ua(.dst0, .add_umax), ._, ._ },
48214 .{ ._, ._, .@"and", .tmp4q, .lea(.tmp1q), ._, ._ },
48215 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
48216 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
48217 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
48218 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
27705 } },48219 } },
27706 }, .{48220 }, .{
27707 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },48221 .required_features = .{ .@"64bit", null, null, null },
27708 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},48222 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
48223 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
27709 .patterns = &.{48224 .patterns = &.{
27710 .{ .src = .{ .to_mem, .none } },48225 .{ .src = .{ .to_mem, .none, .none } },
27711 },48226 },
27712 .extra_temps = .{48227 .extra_temps = .{
27713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27714 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },48228 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27715 .unused,48229 .{ .type = .usize, .kind = .{ .reg = .rsi } },
27716 .unused,48230 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27717 .unused,48231 .{ .type = .u64, .kind = .{ .reg = .rax } },
48232 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27718 .unused,48233 .unused,
27719 .unused,48234 .unused,
27720 .unused,48235 .unused,
27721 .unused,48236 .unused,
27722 },48237 },
27723 .dst_temps = .{.mem},48238 .dst_temps = .{.mem},
48239 .clobbers = .{ .eflags = true },
27724 .each = .{ .once = &.{48240 .each = .{ .once = &.{
27725 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },48241 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
27726 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },48242 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
27727 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },48243 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
27728 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },48244 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
27729 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },48245 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
48246 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
48247 .{ ._, ._, .mov, .tmp4q, .ua(.dst0, .add_umax), ._, ._ },
48248 .{ ._, ._, .@"and", .tmp4q, .lea(.tmp1q), ._, ._ },
48249 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
48250 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
48251 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
48252 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
27730 } },48253 } },
27731 }, .{48254 } }) catch |err| switch (err) {
27732 .required_features = .{ .avx, null, null, null },48255 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
27733 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },48256 @tagName(air_tag),
27734 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},48257 ty_op.ty.toType().fmt(pt),
48258 cg.typeOf(ty_op.operand).fmt(pt),
48259 ops[0].tracking(cg),
48260 }),
48261 else => |e| return e,
48262 };
48263 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
48264 },
48265 .optional_payload_ptr => if (use_old) try cg.airOptionalPayloadPtr(inst) else {
48266 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
48267 const ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
48268 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
48269 },
48270 .optional_payload_ptr_set => if (use_old) try cg.airOptionalPayloadPtrSet(inst) else {
48271 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
48272 const opt_ty = cg.typeOf(ty_op.operand).childType(zcu);
48273 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
48274 if (!opt_ty.optionalReprIsPayload(zcu)) {
48275 const opt_child_ty = opt_ty.optionalChild(zcu);
48276 const opt_child_abi_size: i32 = @intCast(opt_child_ty.abiSize(zcu));
48277 try ops[0].toOffset(opt_child_abi_size, cg);
48278 var has_value = try cg.tempInit(.bool, .{ .immediate = 1 });
48279 try ops[0].store(&has_value, .{}, cg);
48280 try has_value.die(cg);
48281 try ops[0].toOffset(-opt_child_abi_size, cg);
48282 }
48283 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
48284 },
48285 .unwrap_errunion_payload_ptr => if (use_old) try cg.airUnwrapErrUnionPayloadPtr(inst) else {
48286 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
48287 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);
48288 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
48289 const eu_pl_off: i32 = @intCast(codegen.errUnionPayloadOffset(eu_pl_ty, zcu));
48290 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
48291 try ops[0].toOffset(eu_pl_off, cg);
48292 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
48293 },
48294 .unwrap_errunion_err_ptr => if (use_old) try cg.airUnwrapErrUnionErrPtr(inst) else {
48295 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
48296 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);
48297 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
48298 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
48299 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
48300 try ops[0].toOffset(eu_err_off, cg);
48301 const err = try ops[0].load(eu_ty.errorUnionSet(zcu), .{}, cg);
48302 try err.finish(inst, &.{ty_op.operand}, &ops, cg);
48303 },
48304 .errunion_payload_ptr_set => if (use_old) try cg.airErrUnionPayloadPtrSet(inst) else {
48305 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
48306 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);
48307 const eu_err_ty = eu_ty.errorUnionSet(zcu);
48308 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
48309 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
48310 const eu_pl_off: i32 = @intCast(codegen.errUnionPayloadOffset(eu_pl_ty, zcu));
48311 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
48312 try ops[0].toOffset(eu_err_off, cg);
48313 var no_err = try cg.tempInit(eu_err_ty, .{ .immediate = 0 });
48314 try ops[0].store(&no_err, .{}, cg);
48315 try no_err.die(cg);
48316 try ops[0].toOffset(eu_pl_off - eu_err_off, cg);
48317 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
48318 },
48319 .struct_field_ptr => if (use_old) try cg.airStructFieldPtr(inst) else {
48320 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
48321 const extra = cg.air.extraData(Air.StructField, ty_pl.payload).data;
48322 var ops = try cg.tempsFromOperands(inst, .{extra.struct_operand});
48323 try ops[0].toOffset(cg.fieldOffset(
48324 cg.typeOf(extra.struct_operand),
48325 ty_pl.ty.toType(),
48326 extra.field_index,
48327 ), cg);
48328 try ops[0].finish(inst, &.{extra.struct_operand}, &ops, cg);
48329 },
48330 .struct_field_ptr_index_0,
48331 .struct_field_ptr_index_1,
48332 .struct_field_ptr_index_2,
48333 .struct_field_ptr_index_3,
48334 => |air_tag| if (use_old) try cg.airStructFieldPtrIndex(inst, switch (air_tag) {
48335 else => unreachable,
48336 .struct_field_ptr_index_0 => 0,
48337 .struct_field_ptr_index_1 => 1,
48338 .struct_field_ptr_index_2 => 2,
48339 .struct_field_ptr_index_3 => 3,
48340 }) else {
48341 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
48342 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
48343 try ops[0].toOffset(cg.fieldOffset(
48344 cg.typeOf(ty_op.operand),
48345 ty_op.ty.toType(),
48346 switch (air_tag) {
48347 else => unreachable,
48348 .struct_field_ptr_index_0 => 0,
48349 .struct_field_ptr_index_1 => 1,
48350 .struct_field_ptr_index_2 => 2,
48351 .struct_field_ptr_index_3 => 3,
48352 },
48353 ), cg);
48354 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
48355 },
48356 .struct_field_val => if (use_old) try cg.airStructFieldVal(inst) else fallback: {
48357 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
48358 const extra = cg.air.extraData(Air.StructField, ty_pl.payload).data;
48359 const agg_ty = cg.typeOf(extra.struct_operand);
48360 const field_ty = ty_pl.ty.toType();
48361 const field_off: u31 = switch (agg_ty.containerLayout(zcu)) {
48362 .auto, .@"extern" => @intCast(agg_ty.structFieldOffset(extra.field_index, zcu)),
48363 .@"packed" => break :fallback try cg.airStructFieldVal(inst),
48364 };
48365 var ops = try cg.tempsFromOperands(inst, .{extra.struct_operand});
48366 // hack around Sema OPV bugs
48367 var res = if (field_ty.hasRuntimeBitsIgnoreComptime(zcu))
48368 try ops[0].read(field_ty, .{ .disp = field_off }, cg)
48369 else
48370 try cg.tempInit(field_ty, .none);
48371 try res.finish(inst, &.{extra.struct_operand}, &ops, cg);
48372 },
48373 .set_union_tag => if (use_old) try cg.airSetUnionTag(inst) else {
48374 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
48375 const union_ty = cg.typeOf(bin_op.lhs).childType(zcu);
48376 const union_layout = union_ty.unionGetLayout(zcu);
48377 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
48378 // hack around Sema OPV bugs
48379 if (union_layout.tag_size > 0) try ops[0].store(&ops[1], .{
48380 .disp = @intCast(union_layout.tagOffset()),
48381 }, cg);
48382 const res = try cg.tempInit(.void, .none);
48383 try res.finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
48384 },
48385 .get_union_tag => if (use_old) try cg.airGetUnionTag(inst) else {
48386 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
48387 const union_ty = cg.typeOf(ty_op.operand);
48388 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
48389 const union_layout = union_ty.unionGetLayout(zcu);
48390 assert(union_layout.tag_size > 0);
48391 const res = try ops[0].read(ty_op.ty.toType(), .{
48392 .disp = @intCast(union_layout.tagOffset()),
48393 }, cg);
48394 try res.finish(inst, &.{ty_op.operand}, &ops, cg);
48395 },
48396 .slice => if (use_old) try cg.airSlice(inst) else {
48397 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
48398 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
48399 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
48400 try ops[0].toPair(&ops[1], cg);
48401 try ops[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
48402 },
48403 .slice_len => if (use_old) try cg.airSliceLen(inst) else {
48404 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
48405 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
48406 try ops[0].toSliceLen(cg);
48407 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
48408 },
48409 .slice_ptr => if (use_old) try cg.airSlicePtr(inst) else {
48410 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
48411 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
48412 try ops[0].toSlicePtr(cg);
48413 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
48414 },
48415 .ptr_slice_len_ptr => if (use_old) try cg.airPtrSliceLenPtr(inst) else {
48416 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
48417 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
48418 try ops[0].toOffset(8, cg);
48419 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
48420 },
48421 .ptr_slice_ptr_ptr => if (use_old) try cg.airPtrSlicePtrPtr(inst) else {
48422 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
48423 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
48424 try ops[0].toOffset(0, cg);
48425 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
48426 },
48427 .slice_elem_val, .ptr_elem_val => |air_tag| if (use_old) switch (air_tag) {
48428 else => unreachable,
48429 .slice_elem_val => try cg.airSliceElemVal(inst),
48430 .ptr_elem_val => try cg.airPtrElemVal(inst),
48431 } else {
48432 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
48433 const res_ty = cg.typeOf(bin_op.lhs).elemType2(zcu);
48434 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
48435 try ops[0].toSlicePtr(cg);
48436 var res: [1]Temp = undefined;
48437 if (res_ty.hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{res_ty}, &ops, comptime &.{ .{
48438 .dst_constraints = .{.{ .int = .byte }},
27735 .patterns = &.{48439 .patterns = &.{
27736 .{ .src = .{ .mem, .none } },48440 .{ .src = .{ .to_gpr, .simm32, .none } },
27737 .{ .src = .{ .to_sse, .none } },
27738 },48441 },
27739 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},48442 .dst_temps = .{.{ .rc = .general_purpose }},
27740 .each = .{ .once = &.{48443 .each = .{ .once = &.{
27741 .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ },48444 .{ ._, ._, .movzx, .dst0d, .leaa(.src0b, .add_src0_elem_size_times_src1), ._, ._ },
27742 } },48445 } },
27743 }, .{48446 }, .{
27744 .required_features = .{ .avx, null, null, null },48447 .dst_constraints = .{.{ .int = .byte }},
27745 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any },
27746 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
27747 .patterns = &.{48448 .patterns = &.{
27748 .{ .src = .{ .mem, .none } },48449 .{ .src = .{ .to_gpr, .to_gpr, .none } },
27749 .{ .src = .{ .to_sse, .none } },
27750 },48450 },
27751 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},48451 .dst_temps = .{.{ .rc = .general_purpose }},
27752 .each = .{ .once = &.{48452 .each = .{ .once = &.{
27753 .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ },48453 .{ ._, ._, .movzx, .dst0d, .leai(.src0b, .src1), ._, ._ },
27754 } },48454 } },
27755 }, .{48455 }, .{
27756 .required_features = .{ .sse4_1, null, null, null },48456 .dst_constraints = .{.{ .int = .word }},
27757 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
27758 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
27759 .patterns = &.{48457 .patterns = &.{
27760 .{ .src = .{ .mem, .none } },48458 .{ .src = .{ .to_gpr, .simm32, .none } },
27761 .{ .src = .{ .to_sse, .none } },
27762 },48459 },
27763 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},48460 .dst_temps = .{.{ .rc = .general_purpose }},
27764 .each = .{ .once = &.{48461 .each = .{ .once = &.{
27765 .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ },48462 .{ ._, ._, .movzx, .dst0d, .leaa(.src0w, .add_src0_elem_size_times_src1), ._, ._ },
27766 } },48463 } },
27767 }, .{48464 }, .{
27768 .required_features = .{ .sse4_1, null, null, null },48465 .dst_constraints = .{.{ .int = .word }},
27769 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any },
27770 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
27771 .patterns = &.{48466 .patterns = &.{
27772 .{ .src = .{ .mem, .none } },48467 .{ .src = .{ .to_gpr, .to_gpr, .none } },
27773 .{ .src = .{ .to_sse, .none } },
27774 },48468 },
27775 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},48469 .dst_temps = .{.{ .rc = .general_purpose }},
27776 .each = .{ .once = &.{48470 .each = .{ .once = &.{
27777 .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ },48471 .{ ._, ._, .movzx, .dst0d, .leasi(.src0w, .@"2", .src1), ._, ._ },
27778 } },48472 } },
27779 }, .{48473 }, .{
27780 .required_features = .{ .sse2, null, null, null },48474 .dst_constraints = .{.{ .int = .dword }},
27781 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
27782 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
27783 .patterns = &.{48475 .patterns = &.{
27784 .{ .src = .{ .to_mut_sse, .none } },48476 .{ .src = .{ .to_gpr, .simm32, .none } },
27785 },
27786 .extra_temps = .{
27787 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
27788 .unused,
27789 .unused,
27790 .unused,
27791 .unused,
27792 .unused,
27793 .unused,
27794 .unused,
27795 .unused,
27796 },48477 },
27797 .dst_temps = .{.{ .ref = .src0 }},48478 .dst_temps = .{.{ .rc = .general_purpose }},
27798 .each = .{ .once = &.{48479 .each = .{ .once = &.{
27799 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },48480 .{ ._, ._, .mov, .dst0d, .leaa(.src0d, .add_src0_elem_size_times_src1), ._, ._ },
27800 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
27801 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
27802 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
27803 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
27804 } },48481 } },
27805 }, .{48482 }, .{
27806 .required_features = .{ .sse2, null, null, null },48483 .dst_constraints = .{.{ .int = .dword }},
27807 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any },
27808 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
27809 .patterns = &.{48484 .patterns = &.{
27810 .{ .src = .{ .to_mut_sse, .none } },48485 .{ .src = .{ .to_gpr, .to_gpr, .none } },
27811 },
27812 .extra_temps = .{
27813 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
27814 .unused,
27815 .unused,
27816 .unused,
27817 .unused,
27818 .unused,
27819 .unused,
27820 .unused,
27821 .unused,
27822 },48486 },
27823 .dst_temps = .{.{ .ref = .src0 }},48487 .dst_temps = .{.{ .rc = .general_purpose }},
27824 .each = .{ .once = &.{48488 .each = .{ .once = &.{
27825 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },48489 .{ ._, ._, .mov, .dst0d, .leasi(.src0d, .@"4", .src1), ._, ._ },
27826 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
27827 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
27828 } },48490 } },
27829 }, .{48491 }, .{
27830 .required_features = .{ .avx2, null, null, null },48492 .dst_constraints = .{.{ .int = .qword }},
27831 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
27832 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},
27833 .patterns = &.{48493 .patterns = &.{
27834 .{ .src = .{ .mem, .none } },48494 .{ .src = .{ .to_gpr, .simm32, .none } },
27835 .{ .src = .{ .to_sse, .none } },
27836 },48495 },
27837 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},48496 .dst_temps = .{.{ .rc = .general_purpose }},
27838 .each = .{ .once = &.{48497 .each = .{ .once = &.{
27839 .{ ._, .vp_q, .movsxw, .dst0y, .src0q, ._, ._ },48498 .{ ._, ._, .mov, .dst0q, .leaa(.src0q, .add_src0_elem_size_times_src1), ._, ._ },
27840 } },48499 } },
27841 }, .{48500 }, .{
27842 .required_features = .{ .avx2, null, null, null },48501 .required_features = .{ .@"64bit", null, null, null },
27843 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any },48502 .dst_constraints = .{.{ .int = .qword }},
27844 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
27845 .patterns = &.{48503 .patterns = &.{
27846 .{ .src = .{ .mem, .none } },48504 .{ .src = .{ .to_gpr, .to_gpr, .none } },
27847 .{ .src = .{ .to_sse, .none } },
27848 },48505 },
27849 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},48506 .dst_temps = .{.{ .rc = .general_purpose }},
27850 .each = .{ .once = &.{48507 .each = .{ .once = &.{
27851 .{ ._, .vp_q, .movzxw, .dst0y, .src0q, ._, ._ },48508 .{ ._, ._, .mov, .dst0q, .leasi(.src0q, .@"8", .src1), ._, ._ },
27852 } },48509 } },
27853 }, .{48510 } }) catch |err| switch (err) {
27854 .required_features = .{ .avx2, null, null, null },48511 error.SelectFailed => {
27855 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },48512 const elem_size = res_ty.abiSize(zcu);
27856 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},48513 while (true) for (&ops) |*op| {
27857 .patterns = &.{48514 if (try op.toRegClass(true, .general_purpose, cg)) break;
27858 .{ .src = .{ .mem, .none } },48515 } else break;
48516 const lhs_reg = ops[0].unwrap(cg).temp.tracking(cg).short.register.to64();
48517 const rhs_reg = ops[1].unwrap(cg).temp.tracking(cg).short.register.to64();
48518 if (!std.math.isPowerOfTwo(elem_size)) {
48519 try cg.spillEflagsIfOccupied();
48520 try cg.asmRegisterRegisterImmediate(
48521 .{ .i_, .mul },
48522 rhs_reg,
48523 rhs_reg,
48524 .u(elem_size),
48525 );
48526 try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
48527 .base = .{ .reg = lhs_reg },
48528 .mod = .{ .rm = .{ .size = .qword, .index = rhs_reg } },
48529 });
48530 } else if (elem_size > 8) {
48531 try cg.spillEflagsIfOccupied();
48532 try cg.asmRegisterImmediate(
48533 .{ ._l, .sh },
48534 rhs_reg,
48535 .u(std.math.log2_int(u64, elem_size)),
48536 );
48537 try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
48538 .base = .{ .reg = lhs_reg },
48539 .mod = .{ .rm = .{ .size = .qword, .index = rhs_reg } },
48540 });
48541 } else try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
48542 .base = .{ .reg = lhs_reg },
48543 .mod = .{ .rm = .{
48544 .size = .qword,
48545 .index = rhs_reg,
48546 .scale = .fromFactor(@intCast(elem_size)),
48547 } },
48548 });
48549 res[0] = try ops[0].load(res_ty, .{}, cg);
27859 },48550 },
27860 .extra_temps = .{48551 else => |e| return e,
27861 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },48552 } else {
27862 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },48553 // hack around Sema OPV bugs
27863 .unused,48554 res[0] = try cg.tempInit(res_ty, .none);
27864 .unused,48555 }
27865 .unused,48556 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
27866 .unused,48557 },
27867 .unused,48558 .slice_elem_ptr, .ptr_elem_ptr => |air_tag| if (use_old) switch (air_tag) {
27868 .unused,48559 else => unreachable,
27869 .unused,48560 .slice_elem_ptr => try cg.airSliceElemPtr(inst),
48561 .ptr_elem_ptr => try cg.airPtrElemPtr(inst),
48562 } else {
48563 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
48564 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
48565 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
48566 try ops[0].toSlicePtr(cg);
48567 const dst_ty = ty_pl.ty.toType();
48568 if (dst_ty.ptrInfo(zcu).flags.vector_index == .none) zero_offset: {
48569 const elem_size = dst_ty.childType(zcu).abiSize(zcu);
48570 // hack around Sema OPV bugs
48571 if (elem_size == 0) break :zero_offset;
48572 while (true) for (&ops) |*op| {
48573 if (try op.toRegClass(true, .general_purpose, cg)) break;
48574 } else break;
48575 const lhs_reg = ops[0].unwrap(cg).temp.tracking(cg).short.register.to64();
48576 const rhs_reg = ops[1].unwrap(cg).temp.tracking(cg).short.register.to64();
48577 if (!std.math.isPowerOfTwo(elem_size)) {
48578 try cg.spillEflagsIfOccupied();
48579 try cg.asmRegisterRegisterImmediate(
48580 .{ .i_, .mul },
48581 rhs_reg,
48582 rhs_reg,
48583 .u(elem_size),
48584 );
48585 try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
48586 .base = .{ .reg = lhs_reg },
48587 .mod = .{ .rm = .{ .size = .qword, .index = rhs_reg } },
48588 });
48589 } else if (elem_size > 8) {
48590 try cg.spillEflagsIfOccupied();
48591 try cg.asmRegisterImmediate(
48592 .{ ._l, .sh },
48593 rhs_reg,
48594 .u(std.math.log2_int(u64, elem_size)),
48595 );
48596 try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
48597 .base = .{ .reg = lhs_reg },
48598 .mod = .{ .rm = .{ .size = .qword, .index = rhs_reg } },
48599 });
48600 } else try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
48601 .base = .{ .reg = lhs_reg },
48602 .mod = .{ .rm = .{
48603 .size = .qword,
48604 .index = rhs_reg,
48605 .scale = .fromFactor(@intCast(elem_size)),
48606 } },
48607 });
48608 }
48609 try ops[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
48610 },
48611 .array_to_slice => if (use_old) try cg.airArrayToSlice(inst) else {
48612 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
48613 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
48614 var len = try cg.tempInit(.usize, .{
48615 .immediate = cg.typeOf(ty_op.operand).childType(zcu).arrayLen(zcu),
48616 });
48617 try ops[0].toPair(&len, cg);
48618 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
48619 },
48620 .error_set_has_value => return cg.fail("TODO implement error_set_has_value", .{}),
48621 .union_init => if (use_old) try cg.airUnionInit(inst) else {
48622 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
48623 const extra = cg.air.extraData(Air.UnionInit, ty_pl.payload).data;
48624 const union_ty = ty_pl.ty.toType();
48625 var ops = try cg.tempsFromOperands(inst, .{extra.init});
48626 var res = try cg.tempAllocMem(union_ty);
48627 const union_layout = union_ty.unionGetLayout(zcu);
48628 if (union_layout.tag_size > 0) {
48629 var tag_temp = try cg.tempFromValue(try pt.enumValueFieldIndex(
48630 union_ty.unionTagTypeSafety(zcu).?,
48631 extra.field_index,
48632 ));
48633 try res.write(&tag_temp, .{
48634 .disp = @intCast(union_layout.tagOffset()),
48635 }, cg);
48636 try tag_temp.die(cg);
48637 }
48638 try res.write(&ops[0], .{
48639 .disp = @intCast(union_layout.payloadOffset()),
48640 }, cg);
48641 try res.finish(inst, &.{extra.init}, &ops, cg);
48642 },
48643 .mul_add => |air_tag| if (use_old) try cg.airMulAdd(inst) else {
48644 const pl_op = air_datas[@intFromEnum(inst)].pl_op;
48645 const bin_op = cg.air.extraData(Air.Bin, pl_op.payload).data;
48646 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs, pl_op.operand });
48647 var res: [1]Temp = undefined;
48648 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
48649 .required_features = .{ .fma, .f16c, null, null },
48650 .src_constraints = .{
48651 .{ .scalar_float = .{ .of = .word, .is = .word } },
48652 .{ .scalar_float = .{ .of = .word, .is = .word } },
48653 .{ .scalar_float = .{ .of = .word, .is = .word } },
27870 },48654 },
27871 .dst_temps = .{.mem},
27872 .each = .{ .once = &.{
27873 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27874 .{ .@"0:", .vp_q, .movsxw, .tmp1y, .memia(.src0q, .tmp0, .add_size), ._, ._ },
27875 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp1y, ._, ._ },
27876 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
27877 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27878 } },
27879 }, .{
27880 .required_features = .{ .avx2, null, null, null },
27881 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any },
27882 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }},
27883 .patterns = &.{48655 .patterns = &.{
27884 .{ .src = .{ .mem, .none } },48656 .{ .src = .{ .to_sse, .to_sse, .to_sse } },
27885 },48657 },
27886 .extra_temps = .{48658 .extra_temps = .{
27887 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },48659 .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
27888 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },48660 .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
27889 .unused,48661 .unused,
27890 .unused,48662 .unused,
27891 .unused,48663 .unused,
...@@ -27894,24 +48666,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27894,24 +48666,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27894 .unused,48666 .unused,
27895 .unused,48667 .unused,
27896 },48668 },
27897 .dst_temps = .{.mem},48669 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27898 .each = .{ .once = &.{48670 .each = .{ .once = &.{
27899 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },48671 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
27900 .{ .@"0:", .vp_q, .movzxw, .tmp1y, .memia(.src0q, .tmp0, .add_size), ._, ._ },48672 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
27901 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp1y, ._, ._ },48673 .{ ._, .v_ps, .cvtph2, .tmp1x, .src2q, ._, ._ },
27902 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },48674 .{ ._, .v_ss, .fmadd213, .dst0x, .tmp0x, .tmp1d, ._ },
27903 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },48675 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
27904 } },48676 } },
27905 }, .{48677 }, .{
27906 .required_features = .{ .avx, null, null, null },48678 .required_features = .{ .sse, null, null, null },
27907 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },48679 .src_constraints = .{
27908 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},48680 .{ .scalar_float = .{ .of = .word, .is = .word } },
48681 .{ .scalar_float = .{ .of = .word, .is = .word } },
48682 .{ .scalar_float = .{ .of = .word, .is = .word } },
48683 },
27909 .patterns = &.{48684 .patterns = &.{
27910 .{ .src = .{ .mem, .none } },48685 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } },
27911 },48686 },
48687 .call_frame = .{ .alignment = .@"16" },
27912 .extra_temps = .{48688 .extra_temps = .{
27913 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },48689 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
27914 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },48690 .unused,
27915 .unused,48691 .unused,
27916 .unused,48692 .unused,
27917 .unused,48693 .unused,
...@@ -27920,24 +48696,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27920,24 +48696,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27920 .unused,48696 .unused,
27921 .unused,48697 .unused,
27922 },48698 },
27923 .dst_temps = .{.mem},48699 .dst_temps = .{.{ .ref = .src0 }},
48700 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
27924 .each = .{ .once = &.{48701 .each = .{ .once = &.{
27925 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },48702 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
27926 .{ .@"0:", .vp_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ },
27927 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ },
27928 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
27929 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27930 } },48703 } },
27931 }, .{48704 }, .{
27932 .required_features = .{ .avx, null, null, null },48705 .required_features = .{ .fma, .f16c, null, null },
27933 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any },48706 .src_constraints = .{
27934 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},48707 .{ .scalar_float = .{ .of = .qword, .is = .word } },
48708 .{ .scalar_float = .{ .of = .qword, .is = .word } },
48709 .{ .scalar_float = .{ .of = .qword, .is = .word } },
48710 },
27935 .patterns = &.{48711 .patterns = &.{
27936 .{ .src = .{ .mem, .none } },48712 .{ .src = .{ .mem, .mem, .mem } },
48713 .{ .src = .{ .to_sse, .mem, .mem } },
48714 .{ .src = .{ .mem, .to_sse, .mem } },
48715 .{ .src = .{ .mem, .mem, .to_sse } },
48716 .{ .src = .{ .to_sse, .to_sse, .mem } },
48717 .{ .src = .{ .to_sse, .mem, .to_sse } },
48718 .{ .src = .{ .mem, .to_sse, .to_sse } },
48719 .{ .src = .{ .to_sse, .to_sse, .to_sse } },
27937 },48720 },
27938 .extra_temps = .{48721 .extra_temps = .{
27939 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },48722 .{ .type = .vector_4_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
27940 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },48723 .{ .type = .vector_4_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
27941 .unused,48724 .unused,
27942 .unused,48725 .unused,
27943 .unused,48726 .unused,
...@@ -27946,24 +48729,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27946,24 +48729,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27946 .unused,48729 .unused,
27947 .unused,48730 .unused,
27948 },48731 },
27949 .dst_temps = .{.mem},48732 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27950 .each = .{ .once = &.{48733 .each = .{ .once = &.{
27951 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },48734 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
27952 .{ .@"0:", .vp_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ },48735 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
27953 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ },48736 .{ ._, .v_ps, .cvtph2, .tmp1x, .src2q, ._, ._ },
27954 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },48737 .{ ._, .v_ps, .fmadd213, .dst0x, .tmp0x, .tmp1x, ._ },
27955 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },48738 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
27956 } },48739 } },
27957 }, .{48740 }, .{
27958 .required_features = .{ .sse4_1, null, null, null },48741 .required_features = .{ .fma, .f16c, null, null },
27959 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },48742 .src_constraints = .{
27960 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},48743 .{ .scalar_float = .{ .of = .xword, .is = .word } },
48744 .{ .scalar_float = .{ .of = .xword, .is = .word } },
48745 .{ .scalar_float = .{ .of = .xword, .is = .word } },
48746 },
27961 .patterns = &.{48747 .patterns = &.{
27962 .{ .src = .{ .mem, .none } },48748 .{ .src = .{ .mem, .mem, .mem } },
48749 .{ .src = .{ .to_sse, .mem, .mem } },
48750 .{ .src = .{ .mem, .to_sse, .mem } },
48751 .{ .src = .{ .mem, .mem, .to_sse } },
48752 .{ .src = .{ .to_sse, .to_sse, .mem } },
48753 .{ .src = .{ .to_sse, .mem, .to_sse } },
48754 .{ .src = .{ .mem, .to_sse, .to_sse } },
48755 .{ .src = .{ .to_sse, .to_sse, .to_sse } },
27963 },48756 },
27964 .extra_temps = .{48757 .extra_temps = .{
27965 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },48758 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
27966 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },48759 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
27967 .unused,48760 .unused,
27968 .unused,48761 .unused,
27969 .unused,48762 .unused,
...@@ -27972,26 +48765,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27972,26 +48765,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27972 .unused,48765 .unused,
27973 .unused,48766 .unused,
27974 },48767 },
27975 .dst_temps = .{.mem},48768 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27976 .each = .{ .once = &.{48769 .each = .{ .once = &.{
27977 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },48770 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
27978 .{ .@"0:", .p_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ },48771 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
27979 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ },48772 .{ ._, .v_ps, .cvtph2, .tmp1y, .src2x, ._, ._ },
27980 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },48773 .{ ._, .v_ps, .fmadd213, .dst0y, .tmp0y, .tmp1y, ._ },
27981 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },48774 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
27982 } },48775 } },
27983 }, .{48776 }, .{
27984 .required_features = .{ .sse4_1, null, null, null },48777 .required_features = .{ .fma, .f16c, null, null },
27985 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any },48778 .src_constraints = .{
27986 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},48779 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
48780 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
48781 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
48782 },
27987 .patterns = &.{48783 .patterns = &.{
27988 .{ .src = .{ .mem, .none } },48784 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
27989 },48785 },
27990 .extra_temps = .{48786 .extra_temps = .{
27991 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },48787 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27992 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },48788 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
27993 .unused,48789 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
27994 .unused,48790 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
27995 .unused,48791 .unused,
27996 .unused,48792 .unused,
27997 .unused,48793 .unused,
...@@ -28000,286 +48796,230 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -28000,286 +48796,230 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28000 },48796 },
28001 .dst_temps = .{.mem},48797 .dst_temps = .{.mem},
28002 .each = .{ .once = &.{48798 .each = .{ .once = &.{
28003 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },48799 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28004 .{ .@"0:", .p_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ },48800 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
28005 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ },48801 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
28006 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },48802 .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },
48803 .{ ._, .v_ps, .fmadd213, .tmp1y, .tmp2y, .tmp3y, ._ },
48804 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
48805 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
28007 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },48806 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28008 } },48807 } },
28009 }, .{48808 }, .{
28010 .required_features = .{ .@"64bit", null, null, null },48809 .required_features = .{ .avx, null, null, null },
28011 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },48810 .src_constraints = .{
28012 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},48811 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
48812 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
48813 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
48814 },
28013 .patterns = &.{48815 .patterns = &.{
28014 .{ .src = .{ .to_mem, .none } },48816 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
28015 },48817 },
48818 .call_frame = .{ .alignment = .@"16" },
28016 .extra_temps = .{48819 .extra_temps = .{
28017 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },48820 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28018 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },48821 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
28019 .unused,48822 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
28020 .unused,48823 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
28021 .unused,48824 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
28022 .unused,48825 .unused,
28023 .unused,48826 .unused,
28024 .unused,48827 .unused,
28025 .unused,48828 .unused,
28026 },48829 },
28027 .dst_temps = .{.mem},48830 .dst_temps = .{.mem},
48831 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28028 .each = .{ .once = &.{48832 .each = .{ .once = &.{
28029 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },48833 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28030 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },48834 .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ },
28031 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },48835 .{ ._, .vp_w, .insr, .tmp1x, .tmp3x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
48836 .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
48837 .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memia(.src2w, .tmp0, .add_unaligned_size), .ui(0) },
48838 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
48839 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
28032 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },48840 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
28033 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },48841 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28034 } },48842 } },
28035 }, .{48843 }, .{
28036 .required_features = .{ .@"64bit", null, null, null },48844 .required_features = .{ .sse4_1, null, null, null },
28037 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },48845 .src_constraints = .{
28038 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},48846 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
48847 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
48848 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
48849 },
28039 .patterns = &.{48850 .patterns = &.{
28040 .{ .src = .{ .to_mem, .none } },48851 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
28041 },48852 },
48853 .call_frame = .{ .alignment = .@"16" },
28042 .extra_temps = .{48854 .extra_temps = .{
28043 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },48855 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28044 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },48856 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
28045 .unused,48857 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
28046 .unused,48858 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
28047 .unused,48859 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
28048 .unused,48860 .unused,
28049 .unused,48861 .unused,
28050 .unused,48862 .unused,
28051 .unused,48863 .unused,
28052 },48864 },
28053 .dst_temps = .{.mem},48865 .dst_temps = .{.mem},
48866 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28054 .each = .{ .once = &.{48867 .each = .{ .once = &.{
28055 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },48868 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28056 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },48869 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
28057 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },48870 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
48871 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },
48872 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
48873 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
48874 .{ ._, .p_w, .insr, .tmp3x, .memia(.src2w, .tmp0, .add_unaligned_size), .ui(0), ._ },
48875 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
48876 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
28058 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },48877 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
28059 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },48878 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28060 } },48879 } },
28061 }, .{
28062 .required_features = .{ .avx, null, null, null },
28063 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
28064 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
28065 .patterns = &.{
28066 .{ .src = .{ .mem, .none } },
28067 .{ .src = .{ .to_sse, .none } },
28068 },
28069 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28070 .each = .{ .once = &.{
28071 .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ },
28072 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
28073 } },
28074 }, .{
28075 .required_features = .{ .avx, null, null, null },
28076 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any },
28077 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
28078 .patterns = &.{
28079 .{ .src = .{ .mem, .none } },
28080 .{ .src = .{ .to_sse, .none } },
28081 },
28082 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28083 .each = .{ .once = &.{
28084 .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ },
28085 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
28086 } },
28087 }, .{
28088 .required_features = .{ .sse4_1, null, null, null },
28089 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
28090 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
28091 .patterns = &.{
28092 .{ .src = .{ .mem, .none } },
28093 .{ .src = .{ .to_sse, .none } },
28094 },
28095 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28096 .each = .{ .once = &.{
28097 .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ },
28098 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
28099 } },
28100 }, .{
28101 .required_features = .{ .sse4_1, null, null, null },
28102 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any },
28103 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
28104 .patterns = &.{
28105 .{ .src = .{ .mem, .none } },
28106 .{ .src = .{ .to_sse, .none } },
28107 },
28108 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28109 .each = .{ .once = &.{
28110 .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ },
28111 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
28112 } },
28113 }, .{
28114 .required_features = .{ .sse2, null, null, null },
28115 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
28116 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
28117 .patterns = &.{
28118 .{ .src = .{ .to_mut_sse, .none } },
28119 },
28120 .extra_temps = .{
28121 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
28122 .unused,
28123 .unused,
28124 .unused,
28125 .unused,
28126 .unused,
28127 .unused,
28128 .unused,
28129 .unused,
28130 },
28131 .dst_temps = .{.{ .ref = .src0 }},
28132 .each = .{ .once = &.{
28133 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
28134 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
28135 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
28136 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
28137 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
28138 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },
28139 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
28140 } },
28141 }, .{48880 }, .{
28142 .required_features = .{ .sse2, null, null, null },48881 .required_features = .{ .sse2, null, null, null },
28143 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any },48882 .src_constraints = .{
28144 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},48883 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28145 .patterns = &.{48884 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28146 .{ .src = .{ .to_mut_sse, .none } },48885 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28147 },
28148 .extra_temps = .{
28149 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
28150 .unused,
28151 .unused,
28152 .unused,
28153 .unused,
28154 .unused,
28155 .unused,
28156 .unused,
28157 .unused,
28158 },48886 },
28159 .dst_temps = .{.{ .ref = .src0 }},
28160 .each = .{ .once = &.{
28161 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
28162 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
28163 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
28164 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
28165 } },
28166 }, .{
28167 .required_features = .{ .@"64bit", null, null, null },
28168 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
28169 .dst_constraints = .{.any_scalar_signed_int},
28170 .patterns = &.{48887 .patterns = &.{
28171 .{ .src = .{ .to_mem, .none } },48888 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
28172 },48889 },
48890 .call_frame = .{ .alignment = .@"16" },
28173 .extra_temps = .{48891 .extra_temps = .{
28174 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },48892 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28175 .{ .type = .usize, .kind = .{ .reg = .rdi } },48893 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
28176 .{ .type = .i64, .kind = .{ .reg = .rax } },48894 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
28177 .{ .type = .u32, .kind = .{ .reg = .ecx } },48895 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
28178 .unused,48896 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
28179 .unused,48897 .{ .type = .f16, .kind = .{ .reg = .ax } },
28180 .unused,48898 .unused,
28181 .unused,48899 .unused,
28182 .unused,48900 .unused,
28183 },48901 },
28184 .dst_temps = .{.mem},48902 .dst_temps = .{.mem},
48903 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28185 .each = .{ .once = &.{48904 .each = .{ .once = &.{
28186 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },48905 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28187 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },48906 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
28188 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },48907 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
28189 .{ ._, ._sq, .sto, ._, ._, ._, ._ },48908 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },
28190 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },48909 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
28191 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },48910 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
28192 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },48911 .{ ._, .p_w, .insr, .tmp3x, .memia(.src2w, .tmp0, .add_unaligned_size), .ui(0), ._ },
48912 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
48913 .{ ._, .p_w, .extr, .tmp5d, .tmp1x, .ui(0), ._ },
48914 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp5w, ._, ._ },
28193 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },48915 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
28194 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },48916 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28195 } },48917 } },
28196 }, .{48918 }, .{
28197 .required_features = .{ .@"64bit", null, null, null },48919 .required_features = .{ .sse, null, null, null },
28198 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },48920 .src_constraints = .{
28199 .dst_constraints = .{.any_scalar_int},48921 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
48922 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
48923 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
48924 },
28200 .patterns = &.{48925 .patterns = &.{
28201 .{ .src = .{ .to_mem, .none } },48926 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
28202 },48927 },
48928 .call_frame = .{ .alignment = .@"16" },
28203 .extra_temps = .{48929 .extra_temps = .{
28204 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },48930 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28205 .{ .type = .usize, .kind = .{ .reg = .rdi } },48931 .{ .type = .f16, .kind = .{ .reg = .ax } },
28206 .{ .type = .u64, .kind = .{ .reg = .rax } },48932 .{ .type = .f32, .kind = .mem },
28207 .{ .type = .u32, .kind = .{ .reg = .ecx } },48933 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
28208 .unused,48934 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
28209 .unused,48935 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
28210 .unused,48936 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
28211 .unused,48937 .unused,
28212 .unused,48938 .unused,
28213 },48939 },
28214 .dst_temps = .{.mem},48940 .dst_temps = .{.mem},
48941 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28215 .each = .{ .once = &.{48942 .each = .{ .once = &.{
28216 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },48943 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28217 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },48944 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
28218 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },48945 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
28219 .{ ._, ._sq, .sto, ._, ._, ._, ._ },48946 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
28220 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },48947 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
28221 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },48948 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
28222 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },48949 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
48950 .{ ._, ._, .movzx, .tmp1d, .memia(.src2w, .tmp0, .add_unaligned_size), ._, ._ },
48951 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
48952 .{ ._, ._ss, .mov, .tmp5x, .mem(.tmp2d), ._, ._ },
48953 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
48954 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
48955 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
48956 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
28223 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },48957 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
28224 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },48958 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28225 } },48959 } },
28226 }, .{48960 }, .{
28227 .required_features = .{ .avx, null, null, null },48961 .required_features = .{ .fma, null, null, null },
28228 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },48962 .src_constraints = .{
28229 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},48963 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
28230 .patterns = &.{48964 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
28231 .{ .src = .{ .mem, .none } },48965 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
28232 .{ .src = .{ .to_sse, .none } },
28233 },48966 },
28234 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28235 .each = .{ .once = &.{
28236 .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ },
28237 } },
28238 }, .{
28239 .required_features = .{ .avx, null, null, null },
28240 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any },
28241 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
28242 .patterns = &.{48967 .patterns = &.{
28243 .{ .src = .{ .mem, .none } },48968 .{ .src = .{ .to_mut_sse, .mem, .to_sse } },
28244 .{ .src = .{ .to_sse, .none } },48969 .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } },
48970 .{ .src = .{ .mut_sse, .sse, .sse } },
48971 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
28245 },48972 },
28246 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},48973 .dst_temps = .{.{ .ref = .src0 }},
28247 .each = .{ .once = &.{48974 .each = .{ .once = &.{
28248 .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ },48975 .{ ._, .v_ss, .fmadd132, .dst0x, .src2x, .src1d, ._ },
28249 } },48976 } },
28250 }, .{48977 }, .{
28251 .required_features = .{ .sse4_1, null, null, null },48978 .required_features = .{ .fma, null, null, null },
28252 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },48979 .src_constraints = .{
28253 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},48980 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
48981 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
48982 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
48983 },
28254 .patterns = &.{48984 .patterns = &.{
28255 .{ .src = .{ .mem, .none } },48985 .{ .src = .{ .to_mut_sse, .to_sse, .mem } },
28256 .{ .src = .{ .to_sse, .none } },48986 .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } },
48987 .{ .src = .{ .mut_sse, .sse, .sse } },
48988 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
28257 },48989 },
28258 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},48990 .dst_temps = .{.{ .ref = .src0 }},
28259 .each = .{ .once = &.{48991 .each = .{ .once = &.{
28260 .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ },48992 .{ ._, .v_ss, .fmadd213, .dst0x, .src1x, .src2d, ._ },
28261 } },48993 } },
28262 }, .{48994 }, .{
28263 .required_features = .{ .sse4_1, null, null, null },48995 .required_features = .{ .fma, null, null, null },
28264 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any },48996 .src_constraints = .{
28265 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},48997 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
48998 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
48999 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
49000 },
28266 .patterns = &.{49001 .patterns = &.{
28267 .{ .src = .{ .mem, .none } },49002 .{ .src = .{ .to_sse, .mem, .to_mut_sse } },
28268 .{ .src = .{ .to_sse, .none } },49003 .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } },
49004 .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } },
28269 },49005 },
28270 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},49006 .dst_temps = .{.{ .ref = .src2 }},
28271 .each = .{ .once = &.{49007 .each = .{ .once = &.{
28272 .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ },49008 .{ ._, .v_ss, .fmadd231, .dst0x, .src0x, .src1d, ._ },
28273 } },49009 } },
28274 }, .{49010 }, .{
28275 .required_features = .{ .sse2, null, null, null },49011 .required_features = .{ .sse, null, null, null },
28276 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },49012 .src_constraints = .{
28277 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},49013 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
49014 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
49015 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
49016 },
28278 .patterns = &.{49017 .patterns = &.{
28279 .{ .src = .{ .to_mut_sse, .none } },49018 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } },
28280 },49019 },
49020 .call_frame = .{ .alignment = .@"16" },
28281 .extra_temps = .{49021 .extra_temps = .{
28282 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },49022 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } },
28283 .unused,49023 .unused,
28284 .unused,49024 .unused,
28285 .unused,49025 .unused,
...@@ -28290,121 +49030,124 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -28290,121 +49030,124 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28290 .unused,49030 .unused,
28291 },49031 },
28292 .dst_temps = .{.{ .ref = .src0 }},49032 .dst_temps = .{.{ .ref = .src0 }},
49033 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28293 .each = .{ .once = &.{49034 .each = .{ .once = &.{
28294 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },49035 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
28295 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },
28296 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
28297 } },49036 } },
28298 }, .{49037 }, .{
28299 .required_features = .{ .sse2, null, null, null },49038 .required_features = .{ .fma, null, null, null },
28300 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any },49039 .src_constraints = .{
28301 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},49040 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
28302 .patterns = &.{49041 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
28303 .{ .src = .{ .to_mut_sse, .none } },49042 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
28304 },49043 },
28305 .extra_temps = .{49044 .patterns = &.{
28306 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },49045 .{ .src = .{ .to_mut_sse, .mem, .to_sse } },
28307 .unused,49046 .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } },
28308 .unused,49047 .{ .src = .{ .mut_sse, .sse, .sse } },
28309 .unused,49048 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
28310 .unused,
28311 .unused,
28312 .unused,
28313 .unused,
28314 .unused,
28315 },49049 },
28316 .dst_temps = .{.{ .ref = .src0 }},49050 .dst_temps = .{.{ .ref = .src0 }},
28317 .each = .{ .once = &.{49051 .each = .{ .once = &.{
28318 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },49052 .{ ._, .v_ps, .fmadd132, .dst0x, .src2x, .src1x, ._ },
28319 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
28320 } },49053 } },
28321 }, .{49054 }, .{
28322 .required_features = .{ .avx2, null, null, null },49055 .required_features = .{ .fma, null, null, null },
28323 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },49056 .src_constraints = .{
28324 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},49057 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
49058 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
49059 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
49060 },
28325 .patterns = &.{49061 .patterns = &.{
28326 .{ .src = .{ .mem, .none } },49062 .{ .src = .{ .to_mut_sse, .to_sse, .mem } },
28327 .{ .src = .{ .to_sse, .none } },49063 .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } },
49064 .{ .src = .{ .mut_sse, .sse, .sse } },
49065 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
28328 },49066 },
28329 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},49067 .dst_temps = .{.{ .ref = .src0 }},
28330 .each = .{ .once = &.{49068 .each = .{ .once = &.{
28331 .{ ._, .vp_q, .movsxd, .dst0y, .src0x, ._, ._ },49069 .{ ._, .v_ps, .fmadd213, .dst0x, .src1x, .src2x, ._ },
28332 } },49070 } },
28333 }, .{49071 }, .{
28334 .required_features = .{ .avx2, null, null, null },49072 .required_features = .{ .fma, null, null, null },
28335 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },49073 .src_constraints = .{
28336 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},49074 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
49075 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
49076 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
49077 },
28337 .patterns = &.{49078 .patterns = &.{
28338 .{ .src = .{ .mem, .none } },49079 .{ .src = .{ .to_sse, .mem, .to_mut_sse } },
28339 .{ .src = .{ .to_sse, .none } },49080 .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } },
49081 .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } },
28340 },49082 },
28341 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},49083 .dst_temps = .{.{ .ref = .src2 }},
28342 .each = .{ .once = &.{49084 .each = .{ .once = &.{
28343 .{ ._, .vp_q, .movzxd, .dst0y, .src0x, ._, ._ },49085 .{ ._, .v_ps, .fmadd231, .dst0x, .src0x, .src1x, ._ },
28344 } },49086 } },
28345 }, .{49087 }, .{
28346 .required_features = .{ .avx2, null, null, null },49088 .required_features = .{ .fma, null, null, null },
28347 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },49089 .src_constraints = .{
28348 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},49090 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
28349 .patterns = &.{49091 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
28350 .{ .src = .{ .mem, .none } },49092 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
28351 },49093 },
28352 .extra_temps = .{49094 .patterns = &.{
28353 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },49095 .{ .src = .{ .to_mut_sse, .mem, .to_sse } },
28354 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },49096 .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } },
28355 .unused,49097 .{ .src = .{ .mut_sse, .sse, .sse } },
28356 .unused,49098 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
28357 .unused,
28358 .unused,
28359 .unused,
28360 .unused,
28361 .unused,
28362 },49099 },
28363 .dst_temps = .{.mem},49100 .dst_temps = .{.{ .ref = .src0 }},
28364 .each = .{ .once = &.{49101 .each = .{ .once = &.{
28365 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },49102 .{ ._, .v_ps, .fmadd132, .dst0y, .src2y, .src1y, ._ },
28366 .{ .@"0:", .vp_q, .movsxd, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
28367 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ },
28368 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
28369 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28370 } },49103 } },
28371 }, .{49104 }, .{
28372 .required_features = .{ .avx2, null, null, null },49105 .required_features = .{ .fma, null, null, null },
28373 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any },49106 .src_constraints = .{
28374 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }},49107 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
49108 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
49109 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
49110 },
28375 .patterns = &.{49111 .patterns = &.{
28376 .{ .src = .{ .mem, .none } },49112 .{ .src = .{ .to_mut_sse, .to_sse, .mem } },
49113 .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } },
49114 .{ .src = .{ .mut_sse, .sse, .sse } },
49115 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
28377 },49116 },
28378 .extra_temps = .{49117 .dst_temps = .{.{ .ref = .src0 }},
28379 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },49118 .each = .{ .once = &.{
28380 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },49119 .{ ._, .v_ps, .fmadd213, .dst0y, .src1y, .src2y, ._ },
28381 .unused,49120 } },
28382 .unused,49121 }, .{
28383 .unused,49122 .required_features = .{ .fma, null, null, null },
28384 .unused,49123 .src_constraints = .{
28385 .unused,49124 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
28386 .unused,49125 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
28387 .unused,49126 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
28388 },49127 },
28389 .dst_temps = .{.mem},49128 .patterns = &.{
49129 .{ .src = .{ .to_sse, .mem, .to_mut_sse } },
49130 .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } },
49131 .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } },
49132 },
49133 .dst_temps = .{.{ .ref = .src2 }},
28390 .each = .{ .once = &.{49134 .each = .{ .once = &.{
28391 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },49135 .{ ._, .v_ps, .fmadd231, .dst0y, .src0y, .src1y, ._ },
28392 .{ .@"0:", .vp_q, .movzxd, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
28393 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ },
28394 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
28395 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28396 } },49136 } },
28397 }, .{49137 }, .{
28398 .required_features = .{ .avx, null, null, null },49138 .required_features = .{ .fma, null, null, null },
28399 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },49139 .src_constraints = .{
28400 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},49140 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
49141 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
49142 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
49143 },
28401 .patterns = &.{49144 .patterns = &.{
28402 .{ .src = .{ .mem, .none } },49145 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
28403 },49146 },
28404 .extra_temps = .{49147 .extra_temps = .{
28405 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },49148 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28406 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },49149 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
28407 .unused,49150 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
28408 .unused,49151 .unused,
28409 .unused,49152 .unused,
28410 .unused,49153 .unused,
...@@ -28414,126 +49157,146 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -28414,126 +49157,146 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28414 },49157 },
28415 .dst_temps = .{.mem},49158 .dst_temps = .{.mem},
28416 .each = .{ .once = &.{49159 .each = .{ .once = &.{
28417 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },49160 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28418 .{ .@"0:", .vp_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },49161 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
28419 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },49162 .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_unaligned_size), ._, ._ },
28420 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },49163 .{ ._, .v_ps, .fmadd213, .tmp1y, .tmp2y, .memia(.src2y, .tmp0, .add_unaligned_size), ._ },
49164 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
49165 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
28421 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },49166 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28422 } },49167 } },
28423 }, .{49168 }, .{
28424 .required_features = .{ .avx, null, null, null },49169 .required_features = .{ .avx, null, null, null },
28425 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any },49170 .src_constraints = .{
28426 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},49171 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
49172 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
49173 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
49174 },
28427 .patterns = &.{49175 .patterns = &.{
28428 .{ .src = .{ .mem, .none } },49176 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
28429 },49177 },
49178 .call_frame = .{ .alignment = .@"16" },
28430 .extra_temps = .{49179 .extra_temps = .{
28431 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },49180 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28432 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },49181 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
28433 .unused,49182 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
28434 .unused,49183 .{ .type = .f32, .kind = .{ .reg = .xmm2 } },
28435 .unused,49184 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } },
28436 .unused,49185 .unused,
28437 .unused,49186 .unused,
28438 .unused,49187 .unused,
28439 .unused,49188 .unused,
28440 },49189 },
28441 .dst_temps = .{.mem},49190 .dst_temps = .{.mem},
49191 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28442 .each = .{ .once = &.{49192 .each = .{ .once = &.{
28443 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },49193 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28444 .{ .@"0:", .vp_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },49194 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
28445 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },49195 .{ ._, .v_ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },
28446 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },49196 .{ ._, .v_ss, .mov, .tmp3x, .memia(.src2d, .tmp0, .add_unaligned_size), ._, ._ },
49197 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
49198 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
49199 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
28447 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },49200 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28448 } },49201 } },
28449 }, .{49202 }, .{
28450 .required_features = .{ .sse4_1, null, null, null },49203 .required_features = .{ .sse, null, null, null },
28451 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },49204 .src_constraints = .{
28452 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},49205 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
49206 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
49207 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
49208 },
28453 .patterns = &.{49209 .patterns = &.{
28454 .{ .src = .{ .mem, .none } },49210 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
28455 },49211 },
49212 .call_frame = .{ .alignment = .@"16" },
28456 .extra_temps = .{49213 .extra_temps = .{
28457 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },49214 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28458 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },49215 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
28459 .unused,49216 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
28460 .unused,49217 .{ .type = .f32, .kind = .{ .reg = .xmm2 } },
28461 .unused,49218 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } },
28462 .unused,49219 .unused,
28463 .unused,49220 .unused,
28464 .unused,49221 .unused,
28465 .unused,49222 .unused,
28466 },49223 },
28467 .dst_temps = .{.mem},49224 .dst_temps = .{.mem},
49225 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28468 .each = .{ .once = &.{49226 .each = .{ .once = &.{
28469 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },49227 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28470 .{ .@"0:", .p_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },49228 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
28471 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },49229 .{ ._, ._ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },
28472 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },49230 .{ ._, ._ss, .mov, .tmp3x, .memia(.src2d, .tmp0, .add_unaligned_size), ._, ._ },
49231 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
49232 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
49233 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
28473 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },49234 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28474 } },49235 } },
28475 }, .{49236 }, .{
28476 .required_features = .{ .sse4_1, null, null, null },49237 .required_features = .{ .fma, null, null, null },
28477 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any },49238 .src_constraints = .{
28478 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},49239 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
28479 .patterns = &.{49240 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
28480 .{ .src = .{ .mem, .none } },49241 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
28481 },49242 },
28482 .extra_temps = .{49243 .patterns = &.{
28483 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },49244 .{ .src = .{ .to_mut_sse, .mem, .to_sse } },
28484 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },49245 .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } },
28485 .unused,49246 .{ .src = .{ .mut_sse, .sse, .sse } },
28486 .unused,49247 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
28487 .unused,
28488 .unused,
28489 .unused,
28490 .unused,
28491 .unused,
28492 },49248 },
28493 .dst_temps = .{.mem},49249 .dst_temps = .{.{ .ref = .src0 }},
28494 .each = .{ .once = &.{49250 .each = .{ .once = &.{
28495 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },49251 .{ ._, .v_sd, .fmadd132, .dst0x, .src2x, .src1q, ._ },
28496 .{ .@"0:", .p_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
28497 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
28498 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
28499 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28500 } },49252 } },
28501 }, .{49253 }, .{
28502 .required_features = .{ .@"64bit", null, null, null },49254 .required_features = .{ .fma, null, null, null },
28503 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },49255 .src_constraints = .{
28504 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},49256 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
49257 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
49258 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
49259 },
28505 .patterns = &.{49260 .patterns = &.{
28506 .{ .src = .{ .to_mem, .none } },49261 .{ .src = .{ .to_mut_sse, .to_sse, .mem } },
49262 .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } },
49263 .{ .src = .{ .mut_sse, .sse, .sse } },
49264 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
28507 },49265 },
28508 .extra_temps = .{49266 .dst_temps = .{.{ .ref = .src0 }},
28509 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },49267 .each = .{ .once = &.{
28510 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },49268 .{ ._, .v_sd, .fmadd213, .dst0x, .src1x, .src2q, ._ },
28511 .unused,49269 } },
28512 .unused,49270 }, .{
28513 .unused,49271 .required_features = .{ .fma, null, null, null },
28514 .unused,49272 .src_constraints = .{
28515 .unused,49273 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
28516 .unused,49274 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
28517 .unused,49275 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
28518 },49276 },
28519 .dst_temps = .{.mem},49277 .patterns = &.{
49278 .{ .src = .{ .to_sse, .mem, .to_mut_sse } },
49279 .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } },
49280 .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } },
49281 },
49282 .dst_temps = .{.{ .ref = .src2 }},
28520 .each = .{ .once = &.{49283 .each = .{ .once = &.{
28521 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },49284 .{ ._, .v_sd, .fmadd231, .dst0x, .src0x, .src1q, ._ },
28522 .{ .@"0:", ._, .movsxd, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
28523 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
28524 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
28525 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28526 } },49285 } },
28527 }, .{49286 }, .{
28528 .required_features = .{ .@"64bit", null, null, null },49287 .required_features = .{ .sse, null, null, null },
28529 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },49288 .src_constraints = .{
28530 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},49289 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
49290 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
49291 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
49292 },
28531 .patterns = &.{49293 .patterns = &.{
28532 .{ .src = .{ .to_mem, .none } },49294 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } },
28533 },49295 },
49296 .call_frame = .{ .alignment = .@"16" },
28534 .extra_temps = .{49297 .extra_temps = .{
28535 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },49298 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },
28536 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },49299 .unused,
28537 .unused,49300 .unused,
28538 .unused,49301 .unused,
28539 .unused,49302 .unused,
...@@ -28542,103 +49305,125 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -28542,103 +49305,125 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28542 .unused,49305 .unused,
28543 .unused,49306 .unused,
28544 },49307 },
28545 .dst_temps = .{.mem},49308 .dst_temps = .{.{ .ref = .src0 }},
49309 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28546 .each = .{ .once = &.{49310 .each = .{ .once = &.{
28547 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },49311 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
28548 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
28549 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
28550 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
28551 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28552 } },49312 } },
28553 }, .{49313 }, .{
28554 .required_features = .{ .avx, null, null, null },49314 .required_features = .{ .fma, null, null, null },
28555 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },49315 .src_constraints = .{
28556 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},49316 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
49317 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
49318 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
49319 },
28557 .patterns = &.{49320 .patterns = &.{
28558 .{ .src = .{ .mem, .none } },49321 .{ .src = .{ .to_mut_sse, .mem, .to_sse } },
28559 .{ .src = .{ .to_sse, .none } },49322 .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } },
49323 .{ .src = .{ .mut_sse, .sse, .sse } },
49324 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
28560 },49325 },
28561 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},49326 .dst_temps = .{.{ .ref = .src0 }},
28562 .each = .{ .once = &.{49327 .each = .{ .once = &.{
28563 .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ },49328 .{ ._, .v_pd, .fmadd132, .dst0x, .src2x, .src1x, ._ },
28564 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
28565 } },49329 } },
28566 }, .{49330 }, .{
28567 .required_features = .{ .avx, null, null, null },49331 .required_features = .{ .fma, null, null, null },
28568 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any },49332 .src_constraints = .{
28569 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},49333 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
49334 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
49335 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
49336 },
28570 .patterns = &.{49337 .patterns = &.{
28571 .{ .src = .{ .mem, .none } },49338 .{ .src = .{ .to_mut_sse, .to_sse, .mem } },
28572 .{ .src = .{ .to_sse, .none } },49339 .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } },
49340 .{ .src = .{ .mut_sse, .sse, .sse } },
49341 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
28573 },49342 },
28574 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},49343 .dst_temps = .{.{ .ref = .src0 }},
28575 .each = .{ .once = &.{49344 .each = .{ .once = &.{
28576 .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ },49345 .{ ._, .v_pd, .fmadd213, .dst0x, .src1x, .src2x, ._ },
28577 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
28578 } },49346 } },
28579 }, .{49347 }, .{
28580 .required_features = .{ .sse4_1, null, null, null },49348 .required_features = .{ .fma, null, null, null },
28581 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },49349 .src_constraints = .{
28582 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},49350 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
49351 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
49352 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
49353 },
28583 .patterns = &.{49354 .patterns = &.{
28584 .{ .src = .{ .mem, .none } },49355 .{ .src = .{ .to_sse, .mem, .to_mut_sse } },
28585 .{ .src = .{ .to_sse, .none } },49356 .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } },
49357 .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } },
28586 },49358 },
28587 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},49359 .dst_temps = .{.{ .ref = .src2 }},
28588 .each = .{ .once = &.{49360 .each = .{ .once = &.{
28589 .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ },49361 .{ ._, .v_pd, .fmadd231, .dst0x, .src0x, .src1x, ._ },
28590 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
28591 } },49362 } },
28592 }, .{49363 }, .{
28593 .required_features = .{ .sse4_1, null, null, null },49364 .required_features = .{ .fma, null, null, null },
28594 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any },49365 .src_constraints = .{
28595 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},49366 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
49367 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
49368 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
49369 },
28596 .patterns = &.{49370 .patterns = &.{
28597 .{ .src = .{ .mem, .none } },49371 .{ .src = .{ .to_mut_sse, .mem, .to_sse } },
28598 .{ .src = .{ .to_sse, .none } },49372 .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } },
49373 .{ .src = .{ .mut_sse, .sse, .sse } },
49374 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
28599 },49375 },
28600 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},49376 .dst_temps = .{.{ .ref = .src0 }},
28601 .each = .{ .once = &.{49377 .each = .{ .once = &.{
28602 .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ },49378 .{ ._, .v_pd, .fmadd132, .dst0y, .src2y, .src1y, ._ },
28603 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
28604 } },49379 } },
28605 }, .{49380 }, .{
28606 .required_features = .{ .sse2, null, null, null },49381 .required_features = .{ .fma, null, null, null },
28607 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },49382 .src_constraints = .{
28608 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},49383 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
28609 .patterns = &.{49384 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
28610 .{ .src = .{ .to_mut_sse, .none } },49385 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
28611 },49386 },
28612 .extra_temps = .{49387 .patterns = &.{
28613 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },49388 .{ .src = .{ .to_mut_sse, .to_sse, .mem } },
28614 .unused,49389 .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } },
28615 .unused,49390 .{ .src = .{ .mut_sse, .sse, .sse } },
28616 .unused,49391 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
28617 .unused,
28618 .unused,
28619 .unused,
28620 .unused,
28621 .unused,
28622 },49392 },
28623 .dst_temps = .{.{ .ref = .src0 }},49393 .dst_temps = .{.{ .ref = .src0 }},
28624 .each = .{ .once = &.{49394 .each = .{ .once = &.{
28625 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },49395 .{ ._, .v_pd, .fmadd213, .dst0y, .src1y, .src2y, ._ },
28626 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },
28627 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
28628 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },
28629 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
28630 } },49396 } },
28631 }, .{49397 }, .{
28632 .required_features = .{ .sse2, null, null, null },49398 .required_features = .{ .fma, null, null, null },
28633 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any },49399 .src_constraints = .{
28634 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},49400 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
49401 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
49402 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
49403 },
49404 .patterns = &.{
49405 .{ .src = .{ .to_sse, .mem, .to_mut_sse } },
49406 .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } },
49407 .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } },
49408 },
49409 .dst_temps = .{.{ .ref = .src2 }},
49410 .each = .{ .once = &.{
49411 .{ ._, .v_pd, .fmadd231, .dst0y, .src0y, .src1y, ._ },
49412 } },
49413 }, .{
49414 .required_features = .{ .fma, null, null, null },
49415 .src_constraints = .{
49416 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
49417 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
49418 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
49419 },
28635 .patterns = &.{49420 .patterns = &.{
28636 .{ .src = .{ .to_mut_sse, .none } },49421 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
28637 },49422 },
28638 .extra_temps = .{49423 .extra_temps = .{
28639 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },49424 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28640 .unused,49425 .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
28641 .unused,49426 .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
28642 .unused,49427 .unused,
28643 .unused,49428 .unused,
28644 .unused,49429 .unused,
...@@ -28646,592 +49431,332 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -28646,592 +49431,332 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28646 .unused,49431 .unused,
28647 .unused,49432 .unused,
28648 },49433 },
28649 .dst_temps = .{.{ .ref = .src0 }},49434 .dst_temps = .{.mem},
28650 .each = .{ .once = &.{49435 .each = .{ .once = &.{
28651 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },49436 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28652 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },49437 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
28653 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },49438 .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_unaligned_size), ._, ._ },
49439 .{ ._, .v_pd, .fmadd213, .tmp1y, .tmp2y, .memia(.src2y, .tmp0, .add_unaligned_size), ._ },
49440 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
49441 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
49442 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28654 } },49443 } },
28655 }, .{49444 }, .{
28656 .required_features = .{ .@"64bit", null, null, null },49445 .required_features = .{ .avx, null, null, null },
28657 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },49446 .src_constraints = .{
28658 .dst_constraints = .{.any_scalar_signed_int},49447 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
49448 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
49449 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
49450 },
28659 .patterns = &.{49451 .patterns = &.{
28660 .{ .src = .{ .to_mem, .none } },49452 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
28661 },49453 },
49454 .call_frame = .{ .alignment = .@"16" },
28662 .extra_temps = .{49455 .extra_temps = .{
28663 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },49456 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28664 .{ .type = .usize, .kind = .{ .reg = .rdi } },49457 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
28665 .{ .type = .i64, .kind = .{ .reg = .rax } },49458 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
28666 .{ .type = .u32, .kind = .{ .reg = .ecx } },49459 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },
28667 .unused,49460 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },
28668 .unused,49461 .unused,
28669 .unused,49462 .unused,
28670 .unused,49463 .unused,
28671 .unused,49464 .unused,
28672 },49465 },
28673 .dst_temps = .{.mem},49466 .dst_temps = .{.mem},
49467 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28674 .each = .{ .once = &.{49468 .each = .{ .once = &.{
28675 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },49469 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28676 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },49470 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
28677 .{ .@"0:", ._, .movsxd, .tmp2q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },49471 .{ ._, .v_sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
28678 .{ ._, ._sq, .sto, ._, ._, ._, ._ },49472 .{ ._, .v_sd, .mov, .tmp3x, .memia(.src2q, .tmp0, .add_unaligned_size), ._, ._ },
28679 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },49473 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
28680 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },49474 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
28681 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },49475 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
28682 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
28683 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },49476 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28684 } },49477 } },
28685 }, .{49478 }, .{
28686 .required_features = .{ .@"64bit", null, null, null },49479 .required_features = .{ .sse2, null, null, null },
28687 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },49480 .src_constraints = .{
28688 .dst_constraints = .{.any_scalar_int},49481 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
49482 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
49483 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
49484 },
28689 .patterns = &.{49485 .patterns = &.{
28690 .{ .src = .{ .to_mem, .none } },49486 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
28691 },49487 },
49488 .call_frame = .{ .alignment = .@"16" },
28692 .extra_temps = .{49489 .extra_temps = .{
28693 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },49490 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28694 .{ .type = .usize, .kind = .{ .reg = .rdi } },49491 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
28695 .{ .type = .u64, .kind = .{ .reg = .rax } },49492 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
28696 .{ .type = .u32, .kind = .{ .reg = .ecx } },49493 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },
28697 .unused,49494 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },
28698 .unused,49495 .unused,
28699 .unused,49496 .unused,
28700 .unused,49497 .unused,
28701 .unused,49498 .unused,
28702 },49499 },
28703 .dst_temps = .{.mem},49500 .dst_temps = .{.mem},
49501 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28704 .each = .{ .once = &.{49502 .each = .{ .once = &.{
28705 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },49503 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28706 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },49504 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
28707 .{ .@"0:", ._, .mov, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },49505 .{ ._, ._sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
28708 .{ ._, ._sq, .sto, ._, ._, ._, ._ },49506 .{ ._, ._sd, .mov, .tmp3x, .memia(.src2q, .tmp0, .add_unaligned_size), ._, ._ },
28709 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },49507 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
28710 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },49508 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
28711 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },49509 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
28712 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
28713 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },49510 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28714 } },49511 } },
28715 }, .{49512 }, .{
28716 .required_features = .{ .@"64bit", .slow_incdec, null, null },49513 .required_features = .{ .sse, null, null, null },
28717 .src_constraints = .{ .any_scalar_signed_int, .any },49514 .src_constraints = .{
28718 .dst_constraints = .{.any_scalar_signed_int},49515 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
49516 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
49517 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
49518 },
28719 .patterns = &.{49519 .patterns = &.{
28720 .{ .src = .{ .to_mem, .none } },49520 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
28721 },49521 },
49522 .call_frame = .{ .alignment = .@"16" },
28722 .extra_temps = .{49523 .extra_temps = .{
28723 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },49524 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28724 .{ .type = .usize, .kind = .{ .reg = .rsi } },49525 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
28725 .{ .type = .usize, .kind = .{ .reg = .rdi } },49526 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
28726 .{ .type = .u32, .kind = .{ .reg = .ecx } },49527 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },
28727 .{ .type = .i64, .kind = .{ .reg = .rax } },49528 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },
28728 .unused,49529 .unused,
28729 .unused,49530 .unused,
28730 .unused,49531 .unused,
28731 .unused,49532 .unused,
28732 },49533 },
28733 .dst_temps = .{.mem},49534 .dst_temps = .{.mem},
28734 .clobbers = .{ .eflags = true },49535 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28735 .each = .{ .once = &.{49536 .each = .{ .once = &.{
28736 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },49537 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28737 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },49538 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
28738 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },49539 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },
28739 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ },49540 .{ ._, ._ps, .xor, .tmp3x, .tmp3x, ._, ._ },
28740 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },49541 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
28741 .{ ._, ._sq, .lod, ._, ._, ._, ._ },49542 .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
28742 .{ ._, ._sq, .sto, ._, ._, ._, ._ },49543 .{ ._, ._ps, .movl, .tmp3x, .memia(.src2q, .tmp0, .add_unaligned_size), ._, ._ },
28743 .{ ._, ._r, .sa, .tmp4q, .ui(63), ._, ._ },49544 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
28744 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },49545 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
28745 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },49546 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
28746 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },49547 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28747 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
28748 } },49548 } },
28749 }, .{49549 }, .{
28750 .required_features = .{ .@"64bit", null, null, null },49550 .required_features = .{ .sse, .x87, null, null },
28751 .src_constraints = .{ .any_scalar_signed_int, .any },49551 .src_constraints = .{
28752 .dst_constraints = .{.any_scalar_signed_int},49552 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
49553 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
49554 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
49555 },
28753 .patterns = &.{49556 .patterns = &.{
28754 .{ .src = .{ .to_mem, .none } },49557 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
28755 },49558 },
49559 .call_frame = .{ .size = 16 * 3, .alignment = .@"16" },
28756 .extra_temps = .{49560 .extra_temps = .{
28757 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },49561 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
28758 .{ .type = .usize, .kind = .{ .reg = .rsi } },49562 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
28759 .{ .type = .usize, .kind = .{ .reg = .rdi } },49563 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmax" } } },
28760 .{ .type = .u32, .kind = .{ .reg = .ecx } },49564 .unused,
28761 .{ .type = .i64, .kind = .{ .reg = .rax } },49565 .unused,
28762 .unused,49566 .unused,
28763 .unused,49567 .unused,
28764 .unused,49568 .unused,
28765 .unused,49569 .unused,
28766 },49570 },
28767 .dst_temps = .{.mem},49571 .dst_temps = .{.{ .reg = .st0 }},
28768 .clobbers = .{ .eflags = true },49572 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28769 .each = .{ .once = &.{49573 .each = .{ .once = &.{
28770 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },49574 .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ },
28771 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },49575 .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ },
28772 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },49576 .{ ._, ._ps, .mova, .tmp0x, .mem(.src1x), ._, ._ },
28773 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ },49577 .{ ._, ._ps, .mova, .memd(.tmp1x, 16), .tmp0x, ._, ._ },
28774 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },49578 .{ ._, ._ps, .mova, .tmp0x, .mem(.src2x), ._, ._ },
28775 .{ ._, ._sq, .lod, ._, ._, ._, ._ },49579 .{ ._, ._ps, .mova, .memd(.tmp1x, 16 * 2), .tmp0x, ._, ._ },
28776 .{ ._, ._sq, .sto, ._, ._, ._, ._ },49580 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
28777 .{ ._, ._r, .sa, .tmp4q, .ui(63), ._, ._ },
28778 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
28779 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28780 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
28781 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
28782 } },49581 } },
28783 }, .{49582 }, .{
28784 .required_features = .{ .@"64bit", .slow_incdec, null, null },49583 .required_features = .{ .sse, .x87, null, null },
28785 .src_constraints = .{ .any_scalar_int, .any },49584 .src_constraints = .{
28786 .dst_constraints = .{.any_scalar_int},49585 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
49586 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
49587 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
49588 },
28787 .patterns = &.{49589 .patterns = &.{
28788 .{ .src = .{ .to_mem, .none } },49590 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
28789 },49591 },
49592 .call_frame = .{ .size = 16 * 3, .alignment = .@"16" },
28790 .extra_temps = .{49593 .extra_temps = .{
28791 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },49594 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28792 .{ .type = .usize, .kind = .{ .reg = .rsi } },49595 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
28793 .{ .type = .usize, .kind = .{ .reg = .rdi } },49596 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
28794 .{ .type = .u32, .kind = .{ .reg = .ecx } },49597 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmax" } } },
28795 .{ .type = .u64, .kind = .{ .reg = .rax } },49598 .unused,
28796 .unused,49599 .unused,
28797 .unused,49600 .unused,
28798 .unused,49601 .unused,
28799 .unused,49602 .unused,
28800 },49603 },
28801 .dst_temps = .{.mem},49604 .dst_temps = .{.mem},
28802 .clobbers = .{ .eflags = true },49605 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28803 .each = .{ .once = &.{49606 .each = .{ .once = &.{
28804 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },49607 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28805 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },49608 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
28806 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },49609 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
28807 .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ },49610 .{ ._, ._ps, .mova, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
28808 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },49611 .{ ._, ._ps, .mova, .memd(.tmp2x, 16), .tmp1x, ._, ._ },
28809 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },49612 .{ ._, ._ps, .mova, .tmp1x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },
28810 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },49613 .{ ._, ._ps, .mova, .memd(.tmp2x, 16 * 2), .tmp1x, ._, ._ },
28811 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },49614 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
28812 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },49615 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
28813 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },49616 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
49617 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
49618 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28814 } },49619 } },
28815 }, .{49620 }, .{
28816 .required_features = .{ .@"64bit", null, null, null },49621 .required_features = .{ .sse, null, null, null },
28817 .src_constraints = .{ .any_scalar_int, .any },49622 .src_constraints = .{
28818 .dst_constraints = .{.any_scalar_int},49623 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
49624 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
49625 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
49626 },
28819 .patterns = &.{49627 .patterns = &.{
28820 .{ .src = .{ .to_mem, .none } },49628 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } },
28821 },49629 },
49630 .call_frame = .{ .alignment = .@"16" },
28822 .extra_temps = .{49631 .extra_temps = .{
28823 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },49632 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },
28824 .{ .type = .usize, .kind = .{ .reg = .rsi } },49633 .unused,
28825 .{ .type = .usize, .kind = .{ .reg = .rdi } },49634 .unused,
28826 .{ .type = .u32, .kind = .{ .reg = .ecx } },49635 .unused,
28827 .{ .type = .u64, .kind = .{ .reg = .rax } },49636 .unused,
28828 .unused,49637 .unused,
28829 .unused,49638 .unused,
28830 .unused,49639 .unused,
28831 .unused,49640 .unused,
28832 },49641 },
28833 .dst_temps = .{.mem},49642 .dst_temps = .{.{ .ref = .src0 }},
28834 .clobbers = .{ .eflags = true },49643 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28835 .each = .{ .once = &.{49644 .each = .{ .once = &.{
28836 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },49645 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
28837 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
28838 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
28839 .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ },
28840 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
28841 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
28842 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
28843 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28844 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
28845 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
28846 } },49646 } },
28847 } }) catch |err| switch (err) {49647 }, .{
28848 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{49648 .required_features = .{ .avx, null, null, null },
28849 @tagName(air_tag),49649 .src_constraints = .{
28850 dst_ty.fmt(pt),49650 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
28851 src_ty.fmt(pt),49651 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
28852 ops[0].tracking(cg),49652 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
28853 }),
28854 else => |e| return e,
28855 };
28856 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
28857 },
28858 .optional_payload_ptr => if (use_old) try cg.airOptionalPayloadPtr(inst) else {
28859 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
28860 const ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
28861 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
28862 },
28863 .optional_payload_ptr_set => if (use_old) try cg.airOptionalPayloadPtrSet(inst) else {
28864 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
28865 const opt_ty = cg.typeOf(ty_op.operand).childType(zcu);
28866 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
28867 if (!opt_ty.optionalReprIsPayload(zcu)) {
28868 const opt_child_ty = opt_ty.optionalChild(zcu);
28869 const opt_child_abi_size: i32 = @intCast(opt_child_ty.abiSize(zcu));
28870 try ops[0].toOffset(opt_child_abi_size, cg);
28871 var has_value = try cg.tempInit(.bool, .{ .immediate = 1 });
28872 try ops[0].store(&has_value, .{}, cg);
28873 try has_value.die(cg);
28874 try ops[0].toOffset(-opt_child_abi_size, cg);
28875 }
28876 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
28877 },
28878 .unwrap_errunion_payload_ptr => if (use_old) try cg.airUnwrapErrUnionPayloadPtr(inst) else {
28879 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
28880 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);
28881 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
28882 const eu_pl_off: i32 = @intCast(codegen.errUnionPayloadOffset(eu_pl_ty, zcu));
28883 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
28884 try ops[0].toOffset(eu_pl_off, cg);
28885 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
28886 },
28887 .unwrap_errunion_err_ptr => if (use_old) try cg.airUnwrapErrUnionErrPtr(inst) else {
28888 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
28889 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);
28890 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
28891 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
28892 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
28893 try ops[0].toOffset(eu_err_off, cg);
28894 const err = try ops[0].load(eu_ty.errorUnionSet(zcu), .{}, cg);
28895 try err.finish(inst, &.{ty_op.operand}, &ops, cg);
28896 },
28897 .errunion_payload_ptr_set => if (use_old) try cg.airErrUnionPayloadPtrSet(inst) else {
28898 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
28899 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);
28900 const eu_err_ty = eu_ty.errorUnionSet(zcu);
28901 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
28902 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
28903 const eu_pl_off: i32 = @intCast(codegen.errUnionPayloadOffset(eu_pl_ty, zcu));
28904 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
28905 try ops[0].toOffset(eu_err_off, cg);
28906 var no_err = try cg.tempInit(eu_err_ty, .{ .immediate = 0 });
28907 try ops[0].store(&no_err, .{}, cg);
28908 try no_err.die(cg);
28909 try ops[0].toOffset(eu_pl_off - eu_err_off, cg);
28910 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
28911 },
28912 .struct_field_ptr => if (use_old) try cg.airStructFieldPtr(inst) else {
28913 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
28914 const extra = cg.air.extraData(Air.StructField, ty_pl.payload).data;
28915 var ops = try cg.tempsFromOperands(inst, .{extra.struct_operand});
28916 try ops[0].toOffset(cg.fieldOffset(
28917 cg.typeOf(extra.struct_operand),
28918 ty_pl.ty.toType(),
28919 extra.field_index,
28920 ), cg);
28921 try ops[0].finish(inst, &.{extra.struct_operand}, &ops, cg);
28922 },
28923 .struct_field_ptr_index_0,
28924 .struct_field_ptr_index_1,
28925 .struct_field_ptr_index_2,
28926 .struct_field_ptr_index_3,
28927 => |air_tag| if (use_old) try cg.airStructFieldPtrIndex(inst, switch (air_tag) {
28928 else => unreachable,
28929 .struct_field_ptr_index_0 => 0,
28930 .struct_field_ptr_index_1 => 1,
28931 .struct_field_ptr_index_2 => 2,
28932 .struct_field_ptr_index_3 => 3,
28933 }) else {
28934 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
28935 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
28936 try ops[0].toOffset(cg.fieldOffset(
28937 cg.typeOf(ty_op.operand),
28938 ty_op.ty.toType(),
28939 switch (air_tag) {
28940 else => unreachable,
28941 .struct_field_ptr_index_0 => 0,
28942 .struct_field_ptr_index_1 => 1,
28943 .struct_field_ptr_index_2 => 2,
28944 .struct_field_ptr_index_3 => 3,
28945 },49653 },
28946 ), cg);
28947 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
28948 },
28949 .struct_field_val => if (use_old) try cg.airStructFieldVal(inst) else fallback: {
28950 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
28951 const extra = cg.air.extraData(Air.StructField, ty_pl.payload).data;
28952 const agg_ty = cg.typeOf(extra.struct_operand);
28953 const field_ty = ty_pl.ty.toType();
28954 const field_off: u31 = switch (agg_ty.containerLayout(zcu)) {
28955 .auto, .@"extern" => @intCast(agg_ty.structFieldOffset(extra.field_index, zcu)),
28956 .@"packed" => break :fallback try cg.airStructFieldVal(inst),
28957 };
28958 var ops = try cg.tempsFromOperands(inst, .{extra.struct_operand});
28959 // hack around Sema OPV bugs
28960 var res = if (field_ty.hasRuntimeBitsIgnoreComptime(zcu))
28961 try ops[0].read(field_ty, .{ .disp = field_off }, cg)
28962 else
28963 try cg.tempInit(field_ty, .none);
28964 try res.finish(inst, &.{extra.struct_operand}, &ops, cg);
28965 },
28966 .set_union_tag => if (use_old) try cg.airSetUnionTag(inst) else {
28967 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
28968 const union_ty = cg.typeOf(bin_op.lhs).childType(zcu);
28969 const union_layout = union_ty.unionGetLayout(zcu);
28970 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
28971 // hack around Sema OPV bugs
28972 if (union_layout.tag_size > 0) try ops[0].store(&ops[1], .{
28973 .disp = @intCast(union_layout.tagOffset()),
28974 }, cg);
28975 const res = try cg.tempInit(.void, .none);
28976 try res.finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
28977 },
28978 .get_union_tag => if (use_old) try cg.airGetUnionTag(inst) else {
28979 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
28980 const union_ty = cg.typeOf(ty_op.operand);
28981 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
28982 const union_layout = union_ty.unionGetLayout(zcu);
28983 assert(union_layout.tag_size > 0);
28984 const res = try ops[0].read(ty_op.ty.toType(), .{
28985 .disp = @intCast(union_layout.tagOffset()),
28986 }, cg);
28987 try res.finish(inst, &.{ty_op.operand}, &ops, cg);
28988 },
28989 .slice => if (use_old) try cg.airSlice(inst) else {
28990 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
28991 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
28992 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
28993 try ops[0].toPair(&ops[1], cg);
28994 try ops[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
28995 },
28996 .slice_len => if (use_old) try cg.airSliceLen(inst) else {
28997 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
28998 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
28999 try ops[0].toSliceLen(cg);
29000 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
29001 },
29002 .slice_ptr => if (use_old) try cg.airSlicePtr(inst) else {
29003 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
29004 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
29005 try ops[0].toSlicePtr(cg);
29006 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
29007 },
29008 .ptr_slice_len_ptr => if (use_old) try cg.airPtrSliceLenPtr(inst) else {
29009 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
29010 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
29011 try ops[0].toOffset(8, cg);
29012 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
29013 },
29014 .ptr_slice_ptr_ptr => if (use_old) try cg.airPtrSlicePtrPtr(inst) else {
29015 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
29016 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
29017 try ops[0].toOffset(0, cg);
29018 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
29019 },
29020 .slice_elem_val, .ptr_elem_val => |air_tag| if (use_old) switch (air_tag) {
29021 else => unreachable,
29022 .slice_elem_val => try cg.airSliceElemVal(inst),
29023 .ptr_elem_val => try cg.airPtrElemVal(inst),
29024 } else {
29025 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
29026 const res_ty = cg.typeOf(bin_op.lhs).elemType2(zcu);
29027 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
29028 try ops[0].toSlicePtr(cg);
29029 var res: [1]Temp = undefined;
29030 if (res_ty.hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{res_ty}, &ops, comptime &.{ .{
29031 .dst_constraints = .{.{ .int = .byte }},
29032 .patterns = &.{49654 .patterns = &.{
29033 .{ .src = .{ .to_gpr, .simm32 } },49655 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
29034 },49656 },
29035 .dst_temps = .{.{ .rc = .general_purpose }},49657 .call_frame = .{ .alignment = .@"16" },
29036 .each = .{ .once = &.{49658 .extra_temps = .{
29037 .{ ._, ._, .movzx, .dst0d, .leaa(.src0b, .add_src0_elem_size_times_src1), ._, ._ },49659 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29038 } },49660 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
29039 }, .{49661 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
29040 .dst_constraints = .{.{ .int = .byte }},49662 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },
29041 .patterns = &.{49663 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },
29042 .{ .src = .{ .to_gpr, .to_gpr } },49664 .unused,
49665 .unused,
49666 .unused,
49667 .unused,
29043 },49668 },
29044 .dst_temps = .{.{ .rc = .general_purpose }},49669 .dst_temps = .{.mem},
49670 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29045 .each = .{ .once = &.{49671 .each = .{ .once = &.{
29046 .{ ._, ._, .movzx, .dst0d, .leai(.src0b, .src1), ._, ._ },49672 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
49673 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
49674 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
49675 .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },
49676 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
49677 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
49678 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
49679 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29047 } },49680 } },
29048 }, .{49681 }, .{
29049 .dst_constraints = .{.{ .int = .word }},49682 .required_features = .{ .sse2, null, null, null },
29050 .patterns = &.{49683 .src_constraints = .{
29051 .{ .src = .{ .to_gpr, .simm32 } },49684 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
49685 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
49686 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
29052 },49687 },
29053 .dst_temps = .{.{ .rc = .general_purpose }},
29054 .each = .{ .once = &.{
29055 .{ ._, ._, .movzx, .dst0d, .leaa(.src0w, .add_src0_elem_size_times_src1), ._, ._ },
29056 } },
29057 }, .{
29058 .dst_constraints = .{.{ .int = .word }},
29059 .patterns = &.{49688 .patterns = &.{
29060 .{ .src = .{ .to_gpr, .to_gpr } },49689 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
29061 },49690 },
29062 .dst_temps = .{.{ .rc = .general_purpose }},49691 .call_frame = .{ .alignment = .@"16" },
29063 .each = .{ .once = &.{49692 .extra_temps = .{
29064 .{ ._, ._, .movzx, .dst0d, .leasi(.src0w, .@"2", .src1), ._, ._ },49693 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29065 } },49694 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
29066 }, .{49695 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
29067 .dst_constraints = .{.{ .int = .dword }},49696 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },
29068 .patterns = &.{49697 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },
29069 .{ .src = .{ .to_gpr, .simm32 } },49698 .unused,
49699 .unused,
49700 .unused,
49701 .unused,
29070 },49702 },
29071 .dst_temps = .{.{ .rc = .general_purpose }},49703 .dst_temps = .{.mem},
49704 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29072 .each = .{ .once = &.{49705 .each = .{ .once = &.{
29073 .{ ._, ._, .mov, .dst0d, .leaa(.src0d, .add_src0_elem_size_times_src1), ._, ._ },49706 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
49707 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
49708 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
49709 .{ ._, ._dqa, .mov, .tmp3x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },
49710 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
49711 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
49712 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
49713 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29074 } },49714 } },
29075 }, .{49715 }, .{
29076 .dst_constraints = .{.{ .int = .dword }},49716 .required_features = .{ .sse, null, null, null },
29077 .patterns = &.{49717 .src_constraints = .{
29078 .{ .src = .{ .to_gpr, .to_gpr } },49718 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
49719 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
49720 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
29079 },49721 },
29080 .dst_temps = .{.{ .rc = .general_purpose }},
29081 .each = .{ .once = &.{
29082 .{ ._, ._, .mov, .dst0d, .leasi(.src0d, .@"4", .src1), ._, ._ },
29083 } },
29084 }, .{
29085 .dst_constraints = .{.{ .int = .qword }},
29086 .patterns = &.{49722 .patterns = &.{
29087 .{ .src = .{ .to_gpr, .simm32 } },49723 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
29088 },49724 },
29089 .dst_temps = .{.{ .rc = .general_purpose }},49725 .call_frame = .{ .alignment = .@"16" },
29090 .each = .{ .once = &.{49726 .extra_temps = .{
29091 .{ ._, ._, .mov, .dst0q, .leaa(.src0q, .add_src0_elem_size_times_src1), ._, ._ },49727 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29092 } },49728 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
29093 }, .{49729 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
29094 .required_features = .{ .@"64bit", null, null, null },49730 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },
29095 .dst_constraints = .{.{ .int = .qword }},49731 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },
29096 .patterns = &.{49732 .unused,
29097 .{ .src = .{ .to_gpr, .to_gpr } },49733 .unused,
49734 .unused,
49735 .unused,
29098 },49736 },
29099 .dst_temps = .{.{ .rc = .general_purpose }},49737 .dst_temps = .{.mem},
49738 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29100 .each = .{ .once = &.{49739 .each = .{ .once = &.{
29101 .{ ._, ._, .mov, .dst0q, .leasi(.src0q, .@"8", .src1), ._, ._ },49740 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
49741 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
49742 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
49743 .{ ._, ._ps, .mova, .tmp3x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },
49744 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
49745 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
49746 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
49747 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29102 } },49748 } },
29103 } }) catch |err| switch (err) {49749 } }) catch |err| switch (err) {
29104 error.SelectFailed => {49750 error.SelectFailed => return cg.fail("failed to select {s} {} {} {} {}", .{
29105 const elem_size = res_ty.abiSize(zcu);49751 @tagName(air_tag),
29106 while (true) for (&ops) |*op| {49752 cg.typeOf(bin_op.lhs).fmt(pt),
29107 if (try op.toRegClass(true, .general_purpose, cg)) break;49753 ops[0].tracking(cg),
29108 } else break;49754 ops[1].tracking(cg),
29109 const lhs_reg = ops[0].unwrap(cg).temp.tracking(cg).short.register.to64();49755 ops[2].tracking(cg),
29110 const rhs_reg = ops[1].unwrap(cg).temp.tracking(cg).short.register.to64();49756 }),
29111 if (!std.math.isPowerOfTwo(elem_size)) {
29112 try cg.spillEflagsIfOccupied();
29113 try cg.asmRegisterRegisterImmediate(
29114 .{ .i_, .mul },
29115 rhs_reg,
29116 rhs_reg,
29117 .u(elem_size),
29118 );
29119 try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
29120 .base = .{ .reg = lhs_reg },
29121 .mod = .{ .rm = .{ .size = .qword, .index = rhs_reg } },
29122 });
29123 } else if (elem_size > 8) {
29124 try cg.spillEflagsIfOccupied();
29125 try cg.asmRegisterImmediate(
29126 .{ ._l, .sh },
29127 rhs_reg,
29128 .u(std.math.log2_int(u64, elem_size)),
29129 );
29130 try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
29131 .base = .{ .reg = lhs_reg },
29132 .mod = .{ .rm = .{ .size = .qword, .index = rhs_reg } },
29133 });
29134 } else try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
29135 .base = .{ .reg = lhs_reg },
29136 .mod = .{ .rm = .{
29137 .size = .qword,
29138 .index = rhs_reg,
29139 .scale = .fromFactor(@intCast(elem_size)),
29140 } },
29141 });
29142 res[0] = try ops[0].load(res_ty, .{}, cg);
29143 },
29144 else => |e| return e,49757 else => |e| return e,
29145 } else {49758 };
29146 // hack around Sema OPV bugs49759 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs, pl_op.operand }, &ops, cg);
29147 res[0] = try cg.tempInit(res_ty, .none);
29148 }
29149 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
29150 },
29151 .slice_elem_ptr, .ptr_elem_ptr => |air_tag| if (use_old) switch (air_tag) {
29152 else => unreachable,
29153 .slice_elem_ptr => try cg.airSliceElemPtr(inst),
29154 .ptr_elem_ptr => try cg.airPtrElemPtr(inst),
29155 } else {
29156 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
29157 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
29158 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
29159 try ops[0].toSlicePtr(cg);
29160 const dst_ty = ty_pl.ty.toType();
29161 if (dst_ty.ptrInfo(zcu).flags.vector_index == .none) zero_offset: {
29162 const elem_size = dst_ty.childType(zcu).abiSize(zcu);
29163 // hack around Sema OPV bugs
29164 if (elem_size == 0) break :zero_offset;
29165 while (true) for (&ops) |*op| {
29166 if (try op.toRegClass(true, .general_purpose, cg)) break;
29167 } else break;
29168 const lhs_reg = ops[0].unwrap(cg).temp.tracking(cg).short.register.to64();
29169 const rhs_reg = ops[1].unwrap(cg).temp.tracking(cg).short.register.to64();
29170 if (!std.math.isPowerOfTwo(elem_size)) {
29171 try cg.spillEflagsIfOccupied();
29172 try cg.asmRegisterRegisterImmediate(
29173 .{ .i_, .mul },
29174 rhs_reg,
29175 rhs_reg,
29176 .u(elem_size),
29177 );
29178 try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
29179 .base = .{ .reg = lhs_reg },
29180 .mod = .{ .rm = .{ .size = .qword, .index = rhs_reg } },
29181 });
29182 } else if (elem_size > 8) {
29183 try cg.spillEflagsIfOccupied();
29184 try cg.asmRegisterImmediate(
29185 .{ ._l, .sh },
29186 rhs_reg,
29187 .u(std.math.log2_int(u64, elem_size)),
29188 );
29189 try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
29190 .base = .{ .reg = lhs_reg },
29191 .mod = .{ .rm = .{ .size = .qword, .index = rhs_reg } },
29192 });
29193 } else try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
29194 .base = .{ .reg = lhs_reg },
29195 .mod = .{ .rm = .{
29196 .size = .qword,
29197 .index = rhs_reg,
29198 .scale = .fromFactor(@intCast(elem_size)),
29199 } },
29200 });
29201 }
29202 try ops[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
29203 },
29204 .array_to_slice => if (use_old) try cg.airArrayToSlice(inst) else {
29205 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
29206 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
29207 var len = try cg.tempInit(.usize, .{
29208 .immediate = cg.typeOf(ty_op.operand).childType(zcu).arrayLen(zcu),
29209 });
29210 try ops[0].toPair(&len, cg);
29211 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
29212 },
29213 .error_set_has_value => return cg.fail("TODO implement error_set_has_value", .{}),
29214 .union_init => if (use_old) try cg.airUnionInit(inst) else {
29215 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
29216 const extra = cg.air.extraData(Air.UnionInit, ty_pl.payload).data;
29217 const union_ty = ty_pl.ty.toType();
29218 var ops = try cg.tempsFromOperands(inst, .{extra.init});
29219 var res = try cg.tempAllocMem(union_ty);
29220 const union_layout = union_ty.unionGetLayout(zcu);
29221 if (union_layout.tag_size > 0) {
29222 var tag_temp = try cg.tempFromValue(try pt.enumValueFieldIndex(
29223 union_ty.unionTagTypeSafety(zcu).?,
29224 extra.field_index,
29225 ));
29226 try res.write(&tag_temp, .{
29227 .disp = @intCast(union_layout.tagOffset()),
29228 }, cg);
29229 try tag_temp.die(cg);
29230 }
29231 try res.write(&ops[0], .{
29232 .disp = @intCast(union_layout.payloadOffset()),
29233 }, cg);
29234 try res.finish(inst, &.{extra.init}, &ops, cg);
29235 },49760 },
29236 .field_parent_ptr => if (use_old) try cg.airFieldParentPtr(inst) else {49761 .field_parent_ptr => if (use_old) try cg.airFieldParentPtr(inst) else {
29237 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;49762 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
...@@ -34169,7 +54694,7 @@ fn genRoundLibcall(self: *CodeGen, ty: Type, src_mcv: MCValue, mode: bits.RoundM...@@ -34169,7 +54694,7 @@ fn genRoundLibcall(self: *CodeGen, ty: Type, src_mcv: MCValue, mode: bits.RoundM
34169 .param_types = &.{ty.toIntern()},54694 .param_types = &.{ty.toIntern()},
34170 .callee = std.fmt.bufPrint(&callee_buf, "{s}{s}{s}", .{54695 .callee = std.fmt.bufPrint(&callee_buf, "{s}{s}{s}", .{
34171 floatLibcAbiPrefix(ty),54696 floatLibcAbiPrefix(ty),
34172 switch (mode.mode) {54697 switch (mode.direction) {
34173 .down => "floor",54698 .down => "floor",
34174 .up => "ceil",54699 .up => "ceil",
34175 .zero => "trunc",54700 .zero => "trunc",
...@@ -36813,7 +57338,7 @@ fn genBinOp(...@@ -36813,7 +57338,7 @@ fn genBinOp(
36813 } }, &.{ lhs_ty, rhs_ty }, &.{ adjusted, .{ .air_ref = rhs_air } }, .{});57338 } }, &.{ lhs_ty, rhs_ty }, &.{ adjusted, .{ .air_ref = rhs_air } }, .{});
36814 },57339 },
36815 .div_trunc, .div_floor => try self.genRoundLibcall(lhs_ty, result, .{57340 .div_trunc, .div_floor => try self.genRoundLibcall(lhs_ty, result, .{
36816 .mode = switch (air_tag) {57341 .direction = switch (air_tag) {
36817 .div_trunc => .zero,57342 .div_trunc => .zero,
36818 .div_floor => .down,57343 .div_floor => .down,
36819 else => unreachable,57344 else => unreachable,
...@@ -37271,7 +57796,7 @@ fn genBinOp(...@@ -37271,7 +57796,7 @@ fn genBinOp(
37271 dst_reg,57796 dst_reg,
37272 dst_reg,57797 dst_reg,
37273 bits.RoundMode.imm(.{57798 bits.RoundMode.imm(.{
37274 .mode = switch (air_tag) {57799 .direction = switch (air_tag) {
37275 .div_trunc => .zero,57800 .div_trunc => .zero,
37276 .div_floor => .down,57801 .div_floor => .down,
37277 else => unreachable,57802 else => unreachable,
...@@ -38073,7 +58598,7 @@ fn genBinOp(...@@ -38073,7 +58598,7 @@ fn genBinOp(
38073 switch (air_tag) {58598 switch (air_tag) {
38074 .add, .add_wrap, .sub, .sub_wrap, .mul, .mul_wrap, .div_float, .div_exact => {},58599 .add, .add_wrap, .sub, .sub_wrap, .mul, .mul_wrap, .div_float, .div_exact => {},
38075 .div_trunc, .div_floor => try self.genRound(lhs_ty, dst_reg, .{ .register = dst_reg }, .{58600 .div_trunc, .div_floor => try self.genRound(lhs_ty, dst_reg, .{ .register = dst_reg }, .{
38076 .mode = switch (air_tag) {58601 .direction = switch (air_tag) {
38077 .div_trunc => .zero,58602 .div_trunc => .zero,
38078 .div_floor => .down,58603 .div_floor => .down,
38079 else => unreachable,58604 else => unreachable,
...@@ -45841,10 +66366,17 @@ fn airReduce(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -45841,10 +66366,17 @@ fn airReduce(self: *CodeGen, inst: Air.Inst.Index) !void {
45841 const acc_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp);66366 const acc_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp);
45842 const acc_lock = self.register_manager.lockRegAssumeUnused(acc_reg);66367 const acc_lock = self.register_manager.lockRegAssumeUnused(acc_reg);
45843 defer self.register_manager.unlockReg(acc_lock);66368 defer self.register_manager.unlockReg(acc_lock);
45844 var limb_offset: i31 = 0;66369 var limb_offset: i31 = @intCast((mask_len - 1) / 64 * 8);
45845 while (limb_offset < abi_size) : (limb_offset += 8) {66370 const need_mask = mask_len % 64 != 0;
66371 if (need_mask) try self.asmRegisterImmediate(
66372 .{ ._, .mov },
66373 if (mask_len % 64 <= 32) acc_reg.to32() else acc_reg.to64(),
66374 .u((@as(u64, std.math.maxInt(u64)) >> @truncate(-%mask_len))),
66375 );
66376 var first = true;
66377 while (true) : (limb_offset -= 8) {
45846 try self.asmRegisterMemory(66378 try self.asmRegisterMemory(
45847 .{ ._, if (limb_offset == 0) .mov else switch (reduce.operation) {66379 .{ ._, if (first) if (need_mask) .@"and" else .mov else switch (reduce.operation) {
45848 .Or => .@"or",66380 .Or => .@"or",
45849 .And => .@"and",66381 .And => .@"and",
45850 else => return self.fail("TODO implement airReduce for {}", .{operand_ty.fmt(pt)}),66382 else => return self.fail("TODO implement airReduce for {}", .{operand_ty.fmt(pt)}),
...@@ -45855,6 +66387,8 @@ fn airReduce(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -45855,6 +66387,8 @@ fn airReduce(self: *CodeGen, inst: Air.Inst.Index) !void {
45855 .disp = limb_offset,66387 .disp = limb_offset,
45856 }),66388 }),
45857 );66389 );
66390 if (limb_offset == 0) break;
66391 first = false;
45858 }66392 }
45859 switch (reduce.operation) {66393 switch (reduce.operation) {
45860 .Or => {66394 .Or => {
...@@ -48345,11 +68879,11 @@ const Temp = struct {...@@ -48345,11 +68879,11 @@ const Temp = struct {
48345 };68879 };
48346 if (commute) std.mem.swap(Temp, &ops[0], &ops[1]);68880 if (commute) std.mem.swap(Temp, &ops[0], &ops[1]);
48347 try cg.select(&res, &.{.bool}, &ops, comptime &.{ .{68881 try cg.select(&res, &.{.bool}, &ops, comptime &.{ .{
48348 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } },68882 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any },
48349 .patterns = &.{68883 .patterns = &.{
48350 .{ .src = .{ .imm8, .mem }, .commute = .{ 0, 1 } },68884 .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } },
48351 .{ .src = .{ .imm8, .to_gpr }, .commute = .{ 0, 1 } },68885 .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } },
48352 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },68886 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
48353 },68887 },
48354 .dst_temps = .{.{ .cc = .g }},68888 .dst_temps = .{.{ .cc = .g }},
48355 .clobbers = .{ .eflags = true },68889 .clobbers = .{ .eflags = true },
...@@ -48357,12 +68891,12 @@ const Temp = struct {...@@ -48357,12 +68891,12 @@ const Temp = struct {
48357 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },68891 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
48358 } },68892 } },
48359 }, .{68893 }, .{
48360 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } },68894 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any },
48361 .patterns = &.{68895 .patterns = &.{
48362 .{ .src = .{ .mem, .imm8 } },68896 .{ .src = .{ .mem, .imm8, .none } },
48363 .{ .src = .{ .to_gpr, .imm8 } },68897 .{ .src = .{ .to_gpr, .imm8, .none } },
48364 .{ .src = .{ .to_gpr, .mem } },68898 .{ .src = .{ .to_gpr, .mem, .none } },
48365 .{ .src = .{ .to_gpr, .to_gpr } },68899 .{ .src = .{ .to_gpr, .to_gpr, .none } },
48366 },68900 },
48367 .dst_temps = .{.{ .cc = .l }},68901 .dst_temps = .{.{ .cc = .l }},
48368 .clobbers = .{ .eflags = true },68902 .clobbers = .{ .eflags = true },
...@@ -48370,11 +68904,11 @@ const Temp = struct {...@@ -48370,11 +68904,11 @@ const Temp = struct {
48370 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },68904 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
48371 } },68905 } },
48372 }, .{68906 }, .{
48373 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } },68907 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
48374 .patterns = &.{68908 .patterns = &.{
48375 .{ .src = .{ .imm8, .mem }, .commute = .{ 0, 1 } },68909 .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } },
48376 .{ .src = .{ .imm8, .to_gpr }, .commute = .{ 0, 1 } },68910 .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } },
48377 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },68911 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
48378 },68912 },
48379 .dst_temps = .{.{ .cc = .a }},68913 .dst_temps = .{.{ .cc = .a }},
48380 .clobbers = .{ .eflags = true },68914 .clobbers = .{ .eflags = true },
...@@ -48382,12 +68916,12 @@ const Temp = struct {...@@ -48382,12 +68916,12 @@ const Temp = struct {
48382 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },68916 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
48383 } },68917 } },
48384 }, .{68918 }, .{
48385 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } },68919 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
48386 .patterns = &.{68920 .patterns = &.{
48387 .{ .src = .{ .mem, .imm8 } },68921 .{ .src = .{ .mem, .imm8, .none } },
48388 .{ .src = .{ .to_gpr, .imm8 } },68922 .{ .src = .{ .to_gpr, .imm8, .none } },
48389 .{ .src = .{ .to_gpr, .mem } },68923 .{ .src = .{ .to_gpr, .mem, .none } },
48390 .{ .src = .{ .to_gpr, .to_gpr } },68924 .{ .src = .{ .to_gpr, .to_gpr, .none } },
48391 },68925 },
48392 .dst_temps = .{.{ .cc = .b }},68926 .dst_temps = .{.{ .cc = .b }},
48393 .clobbers = .{ .eflags = true },68927 .clobbers = .{ .eflags = true },
...@@ -48395,11 +68929,11 @@ const Temp = struct {...@@ -48395,11 +68929,11 @@ const Temp = struct {
48395 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },68929 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
48396 } },68930 } },
48397 }, .{68931 }, .{
48398 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } },68932 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any },
48399 .patterns = &.{68933 .patterns = &.{
48400 .{ .src = .{ .imm16, .mem }, .commute = .{ 0, 1 } },68934 .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } },
48401 .{ .src = .{ .imm16, .to_gpr }, .commute = .{ 0, 1 } },68935 .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } },
48402 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },68936 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
48403 },68937 },
48404 .dst_temps = .{.{ .cc = .g }},68938 .dst_temps = .{.{ .cc = .g }},
48405 .clobbers = .{ .eflags = true },68939 .clobbers = .{ .eflags = true },
...@@ -48407,12 +68941,12 @@ const Temp = struct {...@@ -48407,12 +68941,12 @@ const Temp = struct {
48407 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },68941 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
48408 } },68942 } },
48409 }, .{68943 }, .{
48410 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } },68944 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any },
48411 .patterns = &.{68945 .patterns = &.{
48412 .{ .src = .{ .mem, .imm16 } },68946 .{ .src = .{ .mem, .imm16, .none } },
48413 .{ .src = .{ .to_gpr, .imm16 } },68947 .{ .src = .{ .to_gpr, .imm16, .none } },
48414 .{ .src = .{ .to_gpr, .mem } },68948 .{ .src = .{ .to_gpr, .mem, .none } },
48415 .{ .src = .{ .to_gpr, .to_gpr } },68949 .{ .src = .{ .to_gpr, .to_gpr, .none } },
48416 },68950 },
48417 .dst_temps = .{.{ .cc = .l }},68951 .dst_temps = .{.{ .cc = .l }},
48418 .clobbers = .{ .eflags = true },68952 .clobbers = .{ .eflags = true },
...@@ -48420,11 +68954,11 @@ const Temp = struct {...@@ -48420,11 +68954,11 @@ const Temp = struct {
48420 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },68954 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
48421 } },68955 } },
48422 }, .{68956 }, .{
48423 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } },68957 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
48424 .patterns = &.{68958 .patterns = &.{
48425 .{ .src = .{ .imm16, .mem }, .commute = .{ 0, 1 } },68959 .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } },
48426 .{ .src = .{ .imm16, .to_gpr }, .commute = .{ 0, 1 } },68960 .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } },
48427 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },68961 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
48428 },68962 },
48429 .dst_temps = .{.{ .cc = .a }},68963 .dst_temps = .{.{ .cc = .a }},
48430 .clobbers = .{ .eflags = true },68964 .clobbers = .{ .eflags = true },
...@@ -48432,12 +68966,12 @@ const Temp = struct {...@@ -48432,12 +68966,12 @@ const Temp = struct {
48432 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },68966 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
48433 } },68967 } },
48434 }, .{68968 }, .{
48435 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } },68969 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
48436 .patterns = &.{68970 .patterns = &.{
48437 .{ .src = .{ .mem, .imm16 } },68971 .{ .src = .{ .mem, .imm16, .none } },
48438 .{ .src = .{ .to_gpr, .imm16 } },68972 .{ .src = .{ .to_gpr, .imm16, .none } },
48439 .{ .src = .{ .to_gpr, .mem } },68973 .{ .src = .{ .to_gpr, .mem, .none } },
48440 .{ .src = .{ .to_gpr, .to_gpr } },68974 .{ .src = .{ .to_gpr, .to_gpr, .none } },
48441 },68975 },
48442 .dst_temps = .{.{ .cc = .b }},68976 .dst_temps = .{.{ .cc = .b }},
48443 .clobbers = .{ .eflags = true },68977 .clobbers = .{ .eflags = true },
...@@ -48445,11 +68979,11 @@ const Temp = struct {...@@ -48445,11 +68979,11 @@ const Temp = struct {
48445 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },68979 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
48446 } },68980 } },
48447 }, .{68981 }, .{
48448 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } },68982 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any },
48449 .patterns = &.{68983 .patterns = &.{
48450 .{ .src = .{ .imm32, .mem }, .commute = .{ 0, 1 } },68984 .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } },
48451 .{ .src = .{ .imm32, .to_gpr }, .commute = .{ 0, 1 } },68985 .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
48452 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },68986 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
48453 },68987 },
48454 .dst_temps = .{.{ .cc = .g }},68988 .dst_temps = .{.{ .cc = .g }},
48455 .clobbers = .{ .eflags = true },68989 .clobbers = .{ .eflags = true },
...@@ -48457,12 +68991,12 @@ const Temp = struct {...@@ -48457,12 +68991,12 @@ const Temp = struct {
48457 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },68991 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
48458 } },68992 } },
48459 }, .{68993 }, .{
48460 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } },68994 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any },
48461 .patterns = &.{68995 .patterns = &.{
48462 .{ .src = .{ .mem, .imm32 } },68996 .{ .src = .{ .mem, .imm32, .none } },
48463 .{ .src = .{ .to_gpr, .imm32 } },68997 .{ .src = .{ .to_gpr, .imm32, .none } },
48464 .{ .src = .{ .to_gpr, .mem } },68998 .{ .src = .{ .to_gpr, .mem, .none } },
48465 .{ .src = .{ .to_gpr, .to_gpr } },68999 .{ .src = .{ .to_gpr, .to_gpr, .none } },
48466 },69000 },
48467 .dst_temps = .{.{ .cc = .l }},69001 .dst_temps = .{.{ .cc = .l }},
48468 .clobbers = .{ .eflags = true },69002 .clobbers = .{ .eflags = true },
...@@ -48470,11 +69004,11 @@ const Temp = struct {...@@ -48470,11 +69004,11 @@ const Temp = struct {
48470 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },69004 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
48471 } },69005 } },
48472 }, .{69006 }, .{
48473 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } },69007 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any },
48474 .patterns = &.{69008 .patterns = &.{
48475 .{ .src = .{ .imm32, .mem }, .commute = .{ 0, 1 } },69009 .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } },
48476 .{ .src = .{ .imm32, .to_gpr }, .commute = .{ 0, 1 } },69010 .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
48477 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },69011 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
48478 },69012 },
48479 .dst_temps = .{.{ .cc = .a }},69013 .dst_temps = .{.{ .cc = .a }},
48480 .clobbers = .{ .eflags = true },69014 .clobbers = .{ .eflags = true },
...@@ -48482,12 +69016,12 @@ const Temp = struct {...@@ -48482,12 +69016,12 @@ const Temp = struct {
48482 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },69016 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
48483 } },69017 } },
48484 }, .{69018 }, .{
48485 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } },69019 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any },
48486 .patterns = &.{69020 .patterns = &.{
48487 .{ .src = .{ .mem, .imm32 } },69021 .{ .src = .{ .mem, .imm32, .none } },
48488 .{ .src = .{ .to_gpr, .imm32 } },69022 .{ .src = .{ .to_gpr, .imm32, .none } },
48489 .{ .src = .{ .to_gpr, .mem } },69023 .{ .src = .{ .to_gpr, .mem, .none } },
48490 .{ .src = .{ .to_gpr, .to_gpr } },69024 .{ .src = .{ .to_gpr, .to_gpr, .none } },
48491 },69025 },
48492 .dst_temps = .{.{ .cc = .b }},69026 .dst_temps = .{.{ .cc = .b }},
48493 .clobbers = .{ .eflags = true },69027 .clobbers = .{ .eflags = true },
...@@ -48496,11 +69030,11 @@ const Temp = struct {...@@ -48496,11 +69030,11 @@ const Temp = struct {
48496 } },69030 } },
48497 }, .{69031 }, .{
48498 .required_features = .{ .@"64bit", null, null, null },69032 .required_features = .{ .@"64bit", null, null, null },
48499 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } },69033 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any },
48500 .patterns = &.{69034 .patterns = &.{
48501 .{ .src = .{ .simm32, .mem }, .commute = .{ 0, 1 } },69035 .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } },
48502 .{ .src = .{ .simm32, .to_gpr }, .commute = .{ 0, 1 } },69036 .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
48503 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },69037 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
48504 },69038 },
48505 .dst_temps = .{.{ .cc = .g }},69039 .dst_temps = .{.{ .cc = .g }},
48506 .clobbers = .{ .eflags = true },69040 .clobbers = .{ .eflags = true },
...@@ -48509,12 +69043,12 @@ const Temp = struct {...@@ -48509,12 +69043,12 @@ const Temp = struct {
48509 } },69043 } },
48510 }, .{69044 }, .{
48511 .required_features = .{ .@"64bit", null, null, null },69045 .required_features = .{ .@"64bit", null, null, null },
48512 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } },69046 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any },
48513 .patterns = &.{69047 .patterns = &.{
48514 .{ .src = .{ .mem, .simm32 } },69048 .{ .src = .{ .mem, .simm32, .none } },
48515 .{ .src = .{ .to_gpr, .simm32 } },69049 .{ .src = .{ .to_gpr, .simm32, .none } },
48516 .{ .src = .{ .to_gpr, .mem } },69050 .{ .src = .{ .to_gpr, .mem, .none } },
48517 .{ .src = .{ .to_gpr, .to_gpr } },69051 .{ .src = .{ .to_gpr, .to_gpr, .none } },
48518 },69052 },
48519 .dst_temps = .{.{ .cc = .l }},69053 .dst_temps = .{.{ .cc = .l }},
48520 .clobbers = .{ .eflags = true },69054 .clobbers = .{ .eflags = true },
...@@ -48523,11 +69057,11 @@ const Temp = struct {...@@ -48523,11 +69057,11 @@ const Temp = struct {
48523 } },69057 } },
48524 }, .{69058 }, .{
48525 .required_features = .{ .@"64bit", null, null, null },69059 .required_features = .{ .@"64bit", null, null, null },
48526 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } },69060 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any },
48527 .patterns = &.{69061 .patterns = &.{
48528 .{ .src = .{ .simm32, .mem }, .commute = .{ 0, 1 } },69062 .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } },
48529 .{ .src = .{ .simm32, .to_gpr }, .commute = .{ 0, 1 } },69063 .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
48530 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },69064 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
48531 },69065 },
48532 .dst_temps = .{.{ .cc = .a }},69066 .dst_temps = .{.{ .cc = .a }},
48533 .clobbers = .{ .eflags = true },69067 .clobbers = .{ .eflags = true },
...@@ -48536,12 +69070,12 @@ const Temp = struct {...@@ -48536,12 +69070,12 @@ const Temp = struct {
48536 } },69070 } },
48537 }, .{69071 }, .{
48538 .required_features = .{ .@"64bit", null, null, null },69072 .required_features = .{ .@"64bit", null, null, null },
48539 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } },69073 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any },
48540 .patterns = &.{69074 .patterns = &.{
48541 .{ .src = .{ .mem, .simm32 } },69075 .{ .src = .{ .mem, .simm32, .none } },
48542 .{ .src = .{ .to_gpr, .simm32 } },69076 .{ .src = .{ .to_gpr, .simm32, .none } },
48543 .{ .src = .{ .to_gpr, .mem } },69077 .{ .src = .{ .to_gpr, .mem, .none } },
48544 .{ .src = .{ .to_gpr, .to_gpr } },69078 .{ .src = .{ .to_gpr, .to_gpr, .none } },
48545 },69079 },
48546 .dst_temps = .{.{ .cc = .b }},69080 .dst_temps = .{.{ .cc = .b }},
48547 .clobbers = .{ .eflags = true },69081 .clobbers = .{ .eflags = true },
...@@ -48551,11 +69085,12 @@ const Temp = struct {...@@ -48551,11 +69085,12 @@ const Temp = struct {
48551 }, .{69085 }, .{
48552 .required_features = .{ .@"64bit", null, null, null },69086 .required_features = .{ .@"64bit", null, null, null },
48553 .src_constraints = .{69087 .src_constraints = .{
48554 .{ .signed_remainder_int = .{ .of = .qword, .is = .qword } },69088 .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } },
48555 .{ .signed_remainder_int = .{ .of = .qword, .is = .qword } },69089 .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } },
69090 .any,
48556 },69091 },
48557 .patterns = &.{69092 .patterns = &.{
48558 .{ .src = .{ .to_mem, .to_mem } },69093 .{ .src = .{ .to_mem, .to_mem, .none } },
48559 },69094 },
48560 .extra_temps = .{69095 .extra_temps = .{
48561 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },69096 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -48583,11 +69118,12 @@ const Temp = struct {...@@ -48583,11 +69118,12 @@ const Temp = struct {
48583 }, .{69118 }, .{
48584 .required_features = .{ .@"64bit", null, null, null },69119 .required_features = .{ .@"64bit", null, null, null },
48585 .src_constraints = .{69120 .src_constraints = .{
48586 .{ .unsigned_remainder_int = .{ .of = .qword, .is = .qword } },69121 .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } },
48587 .{ .unsigned_remainder_int = .{ .of = .qword, .is = .qword } },69122 .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } },
69123 .any,
48588 },69124 },
48589 .patterns = &.{69125 .patterns = &.{
48590 .{ .src = .{ .to_mem, .to_mem } },69126 .{ .src = .{ .to_mem, .to_mem, .none } },
48591 },69127 },
48592 .extra_temps = .{69128 .extra_temps = .{
48593 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },69129 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -48612,11 +69148,12 @@ const Temp = struct {...@@ -48612,11 +69148,12 @@ const Temp = struct {
48612 } },69148 } },
48613 }, .{69149 }, .{
48614 .src_constraints = .{69150 .src_constraints = .{
48615 .{ .signed_remainder_int = .{ .of = .dword, .is = .dword } },69151 .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } },
48616 .{ .signed_remainder_int = .{ .of = .dword, .is = .dword } },69152 .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } },
69153 .any,
48617 },69154 },
48618 .patterns = &.{69155 .patterns = &.{
48619 .{ .src = .{ .to_mem, .to_mem } },69156 .{ .src = .{ .to_mem, .to_mem, .none } },
48620 },69157 },
48621 .extra_temps = .{69158 .extra_temps = .{
48622 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },69159 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -48643,11 +69180,12 @@ const Temp = struct {...@@ -48643,11 +69180,12 @@ const Temp = struct {
48643 } },69180 } },
48644 }, .{69181 }, .{
48645 .src_constraints = .{69182 .src_constraints = .{
48646 .{ .unsigned_remainder_int = .{ .of = .dword, .is = .dword } },69183 .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } },
48647 .{ .unsigned_remainder_int = .{ .of = .dword, .is = .dword } },69184 .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } },
69185 .any,
48648 },69186 },
48649 .patterns = &.{69187 .patterns = &.{
48650 .{ .src = .{ .to_mem, .to_mem } },69188 .{ .src = .{ .to_mem, .to_mem, .none } },
48651 },69189 },
48652 .extra_temps = .{69190 .extra_temps = .{
48653 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },69191 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -48675,15 +69213,15 @@ const Temp = struct {...@@ -48675,15 +69213,15 @@ const Temp = struct {
48675 },69213 },
48676 .eq, .neq => {69214 .eq, .neq => {
48677 try cg.select(&res, &.{.bool}, &ops, comptime &.{ .{69215 try cg.select(&res, &.{.bool}, &ops, comptime &.{ .{
48678 .src_constraints = .{ .{ .int = .byte }, .{ .int = .byte } },69216 .src_constraints = .{ .{ .int = .byte }, .{ .int = .byte }, .any },
48679 .patterns = &.{69217 .patterns = &.{
48680 .{ .src = .{ .mem, .imm8 } },69218 .{ .src = .{ .mem, .imm8, .none } },
48681 .{ .src = .{ .imm8, .mem }, .commute = .{ 0, 1 } },69219 .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } },
48682 .{ .src = .{ .to_gpr, .imm8 } },69220 .{ .src = .{ .to_gpr, .imm8, .none } },
48683 .{ .src = .{ .imm8, .to_gpr }, .commute = .{ 0, 1 } },69221 .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } },
48684 .{ .src = .{ .to_gpr, .mem } },69222 .{ .src = .{ .to_gpr, .mem, .none } },
48685 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },69223 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
48686 .{ .src = .{ .to_gpr, .to_gpr } },69224 .{ .src = .{ .to_gpr, .to_gpr, .none } },
48687 },69225 },
48688 .dst_temps = .{.{ .cc = .e }},69226 .dst_temps = .{.{ .cc = .e }},
48689 .clobbers = .{ .eflags = true },69227 .clobbers = .{ .eflags = true },
...@@ -48691,15 +69229,15 @@ const Temp = struct {...@@ -48691,15 +69229,15 @@ const Temp = struct {
48691 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },69229 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
48692 } },69230 } },
48693 }, .{69231 }, .{
48694 .src_constraints = .{ .{ .int = .word }, .{ .int = .word } },69232 .src_constraints = .{ .{ .int = .word }, .{ .int = .word }, .any },
48695 .patterns = &.{69233 .patterns = &.{
48696 .{ .src = .{ .mem, .imm16 } },69234 .{ .src = .{ .mem, .imm16, .none } },
48697 .{ .src = .{ .imm16, .mem }, .commute = .{ 0, 1 } },69235 .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } },
48698 .{ .src = .{ .to_gpr, .imm16 } },69236 .{ .src = .{ .to_gpr, .imm16, .none } },
48699 .{ .src = .{ .imm16, .to_gpr }, .commute = .{ 0, 1 } },69237 .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } },
48700 .{ .src = .{ .to_gpr, .mem } },69238 .{ .src = .{ .to_gpr, .mem, .none } },
48701 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },69239 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
48702 .{ .src = .{ .to_gpr, .to_gpr } },69240 .{ .src = .{ .to_gpr, .to_gpr, .none } },
48703 },69241 },
48704 .dst_temps = .{.{ .cc = .e }},69242 .dst_temps = .{.{ .cc = .e }},
48705 .clobbers = .{ .eflags = true },69243 .clobbers = .{ .eflags = true },
...@@ -48707,15 +69245,15 @@ const Temp = struct {...@@ -48707,15 +69245,15 @@ const Temp = struct {
48707 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },69245 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
48708 } },69246 } },
48709 }, .{69247 }, .{
48710 .src_constraints = .{ .{ .int = .dword }, .{ .int = .dword } },69248 .src_constraints = .{ .{ .int = .dword }, .{ .int = .dword }, .any },
48711 .patterns = &.{69249 .patterns = &.{
48712 .{ .src = .{ .mem, .imm32 } },69250 .{ .src = .{ .mem, .imm32, .none } },
48713 .{ .src = .{ .imm32, .mem }, .commute = .{ 0, 1 } },69251 .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } },
48714 .{ .src = .{ .to_gpr, .imm32 } },69252 .{ .src = .{ .to_gpr, .imm32, .none } },
48715 .{ .src = .{ .imm32, .to_gpr }, .commute = .{ 0, 1 } },69253 .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
48716 .{ .src = .{ .to_gpr, .mem } },69254 .{ .src = .{ .to_gpr, .mem, .none } },
48717 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },69255 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
48718 .{ .src = .{ .to_gpr, .to_gpr } },69256 .{ .src = .{ .to_gpr, .to_gpr, .none } },
48719 },69257 },
48720 .dst_temps = .{.{ .cc = .e }},69258 .dst_temps = .{.{ .cc = .e }},
48721 .clobbers = .{ .eflags = true },69259 .clobbers = .{ .eflags = true },
...@@ -48724,15 +69262,15 @@ const Temp = struct {...@@ -48724,15 +69262,15 @@ const Temp = struct {
48724 } },69262 } },
48725 }, .{69263 }, .{
48726 .required_features = .{ .@"64bit", null, null, null },69264 .required_features = .{ .@"64bit", null, null, null },
48727 .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword } },69265 .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword }, .any },
48728 .patterns = &.{69266 .patterns = &.{
48729 .{ .src = .{ .mem, .simm32 } },69267 .{ .src = .{ .mem, .simm32, .none } },
48730 .{ .src = .{ .simm32, .mem }, .commute = .{ 0, 1 } },69268 .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } },
48731 .{ .src = .{ .to_gpr, .simm32 } },69269 .{ .src = .{ .to_gpr, .simm32, .none } },
48732 .{ .src = .{ .simm32, .to_gpr }, .commute = .{ 0, 1 } },69270 .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
48733 .{ .src = .{ .to_gpr, .mem } },69271 .{ .src = .{ .to_gpr, .mem, .none } },
48734 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },69272 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
48735 .{ .src = .{ .to_gpr, .to_gpr } },69273 .{ .src = .{ .to_gpr, .to_gpr, .none } },
48736 },69274 },
48737 .dst_temps = .{.{ .cc = .e }},69275 .dst_temps = .{.{ .cc = .e }},
48738 .clobbers = .{ .eflags = true },69276 .clobbers = .{ .eflags = true },
...@@ -48741,11 +69279,11 @@ const Temp = struct {...@@ -48741,11 +69279,11 @@ const Temp = struct {
48741 } },69279 } },
48742 }, .{69280 }, .{
48743 .required_features = .{ .sse, .mmx, null, null },69281 .required_features = .{ .sse, .mmx, null, null },
48744 .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword } },69282 .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword }, .any },
48745 .patterns = &.{69283 .patterns = &.{
48746 .{ .src = .{ .to_mut_mm, .mem } },69284 .{ .src = .{ .to_mut_mm, .mem, .none } },
48747 .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } },69285 .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } },
48748 .{ .src = .{ .to_mut_mm, .to_mm } },69286 .{ .src = .{ .to_mut_mm, .to_mm, .none } },
48749 },69287 },
48750 .extra_temps = .{69288 .extra_temps = .{
48751 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },69289 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -48769,11 +69307,11 @@ const Temp = struct {...@@ -48769,11 +69307,11 @@ const Temp = struct {
48769 } },69307 } },
48770 }, .{69308 }, .{
48771 .required_features = .{ .avx, null, null, null },69309 .required_features = .{ .avx, null, null, null },
48772 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword } },69310 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any },
48773 .patterns = &.{69311 .patterns = &.{
48774 .{ .src = .{ .to_xmm, .mem } },69312 .{ .src = .{ .to_xmm, .mem, .none } },
48775 .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } },69313 .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } },
48776 .{ .src = .{ .to_xmm, .to_xmm } },69314 .{ .src = .{ .to_xmm, .to_xmm, .none } },
48777 },69315 },
48778 .extra_temps = .{69316 .extra_temps = .{
48779 .{ .kind = .{ .rc = .sse } },69317 .{ .kind = .{ .rc = .sse } },
...@@ -48794,11 +69332,11 @@ const Temp = struct {...@@ -48794,11 +69332,11 @@ const Temp = struct {
48794 } },69332 } },
48795 }, .{69333 }, .{
48796 .required_features = .{ .sse4_1, null, null, null },69334 .required_features = .{ .sse4_1, null, null, null },
48797 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword } },69335 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any },
48798 .patterns = &.{69336 .patterns = &.{
48799 .{ .src = .{ .to_mut_xmm, .mem } },69337 .{ .src = .{ .to_mut_xmm, .mem, .none } },
48800 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },69338 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
48801 .{ .src = .{ .to_mut_xmm, .to_xmm } },69339 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
48802 },69340 },
48803 .dst_temps = .{.{ .cc = .z }},69341 .dst_temps = .{.{ .cc = .z }},
48804 .clobbers = .{ .eflags = true },69342 .clobbers = .{ .eflags = true },
...@@ -48808,11 +69346,11 @@ const Temp = struct {...@@ -48808,11 +69346,11 @@ const Temp = struct {
48808 } },69346 } },
48809 }, .{69347 }, .{
48810 .required_features = .{ .sse2, .fast_imm16, null, null },69348 .required_features = .{ .sse2, .fast_imm16, null, null },
48811 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword } },69349 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any },
48812 .patterns = &.{69350 .patterns = &.{
48813 .{ .src = .{ .to_mut_xmm, .mem } },69351 .{ .src = .{ .to_mut_xmm, .mem, .none } },
48814 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },69352 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
48815 .{ .src = .{ .to_mut_xmm, .to_xmm } },69353 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
48816 },69354 },
48817 .extra_temps = .{69355 .extra_temps = .{
48818 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },69356 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -48836,11 +69374,11 @@ const Temp = struct {...@@ -48836,11 +69374,11 @@ const Temp = struct {
48836 } },69374 } },
48837 }, .{69375 }, .{
48838 .required_features = .{ .sse2, null, null, null },69376 .required_features = .{ .sse2, null, null, null },
48839 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword } },69377 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any },
48840 .patterns = &.{69378 .patterns = &.{
48841 .{ .src = .{ .to_mut_xmm, .mem } },69379 .{ .src = .{ .to_mut_xmm, .mem, .none } },
48842 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },69380 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
48843 .{ .src = .{ .to_mut_xmm, .to_xmm } },69381 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
48844 },69382 },
48845 .extra_temps = .{69383 .extra_temps = .{
48846 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },69384 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -48864,11 +69402,11 @@ const Temp = struct {...@@ -48864,11 +69402,11 @@ const Temp = struct {
48864 } },69402 } },
48865 }, .{69403 }, .{
48866 .required_features = .{ .avx2, null, null, null },69404 .required_features = .{ .avx2, null, null, null },
48867 .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword } },69405 .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword }, .any },
48868 .patterns = &.{69406 .patterns = &.{
48869 .{ .src = .{ .to_ymm, .mem } },69407 .{ .src = .{ .to_ymm, .mem, .none } },
48870 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },69408 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
48871 .{ .src = .{ .to_ymm, .to_ymm } },69409 .{ .src = .{ .to_ymm, .to_ymm, .none } },
48872 },69410 },
48873 .extra_temps = .{69411 .extra_temps = .{
48874 .{ .kind = .{ .rc = .sse } },69412 .{ .kind = .{ .rc = .sse } },
...@@ -48889,11 +69427,11 @@ const Temp = struct {...@@ -48889,11 +69427,11 @@ const Temp = struct {
48889 } },69427 } },
48890 }, .{69428 }, .{
48891 .required_features = .{ .avx, null, null, null },69429 .required_features = .{ .avx, null, null, null },
48892 .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword } },69430 .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword }, .any },
48893 .patterns = &.{69431 .patterns = &.{
48894 .{ .src = .{ .to_ymm, .mem } },69432 .{ .src = .{ .to_ymm, .mem, .none } },
48895 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },69433 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
48896 .{ .src = .{ .to_ymm, .to_ymm } },69434 .{ .src = .{ .to_ymm, .to_ymm, .none } },
48897 },69435 },
48898 .extra_temps = .{69436 .extra_temps = .{
48899 .{ .kind = .{ .rc = .sse } },69437 .{ .kind = .{ .rc = .sse } },
...@@ -48917,9 +69455,10 @@ const Temp = struct {...@@ -48917,9 +69455,10 @@ const Temp = struct {
48917 .src_constraints = .{69455 .src_constraints = .{
48918 .{ .remainder_int = .{ .of = .yword, .is = .xword } },69456 .{ .remainder_int = .{ .of = .yword, .is = .xword } },
48919 .{ .remainder_int = .{ .of = .yword, .is = .xword } },69457 .{ .remainder_int = .{ .of = .yword, .is = .xword } },
69458 .any,
48920 },69459 },
48921 .patterns = &.{69460 .patterns = &.{
48922 .{ .src = .{ .to_mem, .to_mem } },69461 .{ .src = .{ .to_mem, .to_mem, .none } },
48923 },69462 },
48924 .extra_temps = .{69463 .extra_temps = .{
48925 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },69464 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -48951,9 +69490,10 @@ const Temp = struct {...@@ -48951,9 +69490,10 @@ const Temp = struct {
48951 .src_constraints = .{69490 .src_constraints = .{
48952 .{ .remainder_int = .{ .of = .yword, .is = .xword } },69491 .{ .remainder_int = .{ .of = .yword, .is = .xword } },
48953 .{ .remainder_int = .{ .of = .yword, .is = .xword } },69492 .{ .remainder_int = .{ .of = .yword, .is = .xword } },
69493 .any,
48954 },69494 },
48955 .patterns = &.{69495 .patterns = &.{
48956 .{ .src = .{ .to_mem, .to_mem } },69496 .{ .src = .{ .to_mem, .to_mem, .none } },
48957 },69497 },
48958 .extra_temps = .{69498 .extra_temps = .{
48959 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },69499 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -48985,9 +69525,10 @@ const Temp = struct {...@@ -48985,9 +69525,10 @@ const Temp = struct {
48985 .src_constraints = .{69525 .src_constraints = .{
48986 .{ .remainder_int = .{ .of = .yword, .is = .yword } },69526 .{ .remainder_int = .{ .of = .yword, .is = .yword } },
48987 .{ .remainder_int = .{ .of = .yword, .is = .yword } },69527 .{ .remainder_int = .{ .of = .yword, .is = .yword } },
69528 .any,
48988 },69529 },
48989 .patterns = &.{69530 .patterns = &.{
48990 .{ .src = .{ .to_mem, .to_mem } },69531 .{ .src = .{ .to_mem, .to_mem, .none } },
48991 },69532 },
48992 .extra_temps = .{69533 .extra_temps = .{
48993 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },69534 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -49016,9 +69557,10 @@ const Temp = struct {...@@ -49016,9 +69557,10 @@ const Temp = struct {
49016 .src_constraints = .{69557 .src_constraints = .{
49017 .{ .remainder_int = .{ .of = .yword, .is = .yword } },69558 .{ .remainder_int = .{ .of = .yword, .is = .yword } },
49018 .{ .remainder_int = .{ .of = .yword, .is = .yword } },69559 .{ .remainder_int = .{ .of = .yword, .is = .yword } },
69560 .any,
49019 },69561 },
49020 .patterns = &.{69562 .patterns = &.{
49021 .{ .src = .{ .to_mem, .to_mem } },69563 .{ .src = .{ .to_mem, .to_mem, .none } },
49022 },69564 },
49023 .extra_temps = .{69565 .extra_temps = .{
49024 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },69566 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -49047,9 +69589,10 @@ const Temp = struct {...@@ -49047,9 +69589,10 @@ const Temp = struct {
49047 .src_constraints = .{69589 .src_constraints = .{
49048 .{ .remainder_int = .{ .of = .xword, .is = .xword } },69590 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
49049 .{ .remainder_int = .{ .of = .xword, .is = .xword } },69591 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
69592 .any,
49050 },69593 },
49051 .patterns = &.{69594 .patterns = &.{
49052 .{ .src = .{ .to_mem, .to_mem } },69595 .{ .src = .{ .to_mem, .to_mem, .none } },
49053 },69596 },
49054 .extra_temps = .{69597 .extra_temps = .{
49055 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },69598 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -49078,9 +69621,10 @@ const Temp = struct {...@@ -49078,9 +69621,10 @@ const Temp = struct {
49078 .src_constraints = .{69621 .src_constraints = .{
49079 .{ .remainder_int = .{ .of = .xword, .is = .xword } },69622 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
49080 .{ .remainder_int = .{ .of = .xword, .is = .xword } },69623 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
69624 .any,
49081 },69625 },
49082 .patterns = &.{69626 .patterns = &.{
49083 .{ .src = .{ .to_mem, .to_mem } },69627 .{ .src = .{ .to_mem, .to_mem, .none } },
49084 },69628 },
49085 .extra_temps = .{69629 .extra_temps = .{
49086 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },69630 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -49109,9 +69653,10 @@ const Temp = struct {...@@ -49109,9 +69653,10 @@ const Temp = struct {
49109 .src_constraints = .{69653 .src_constraints = .{
49110 .{ .remainder_int = .{ .of = .xword, .is = .xword } },69654 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
49111 .{ .remainder_int = .{ .of = .xword, .is = .xword } },69655 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
69656 .any,
49112 },69657 },
49113 .patterns = &.{69658 .patterns = &.{
49114 .{ .src = .{ .to_mem, .to_mem } },69659 .{ .src = .{ .to_mem, .to_mem, .none } },
49115 },69660 },
49116 .extra_temps = .{69661 .extra_temps = .{
49117 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },69662 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -49141,9 +69686,10 @@ const Temp = struct {...@@ -49141,9 +69686,10 @@ const Temp = struct {
49141 .src_constraints = .{69686 .src_constraints = .{
49142 .{ .remainder_int = .{ .of = .xword, .is = .xword } },69687 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
49143 .{ .remainder_int = .{ .of = .xword, .is = .xword } },69688 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
69689 .any,
49144 },69690 },
49145 .patterns = &.{69691 .patterns = &.{
49146 .{ .src = .{ .to_mem, .to_mem } },69692 .{ .src = .{ .to_mem, .to_mem, .none } },
49147 },69693 },
49148 .extra_temps = .{69694 .extra_temps = .{
49149 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },69695 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -49173,9 +69719,10 @@ const Temp = struct {...@@ -49173,9 +69719,10 @@ const Temp = struct {
49173 .src_constraints = .{69719 .src_constraints = .{
49174 .{ .remainder_int = .{ .of = .qword, .is = .qword } },69720 .{ .remainder_int = .{ .of = .qword, .is = .qword } },
49175 .{ .remainder_int = .{ .of = .qword, .is = .qword } },69721 .{ .remainder_int = .{ .of = .qword, .is = .qword } },
69722 .any,
49176 },69723 },
49177 .patterns = &.{69724 .patterns = &.{
49178 .{ .src = .{ .to_mem, .to_mem } },69725 .{ .src = .{ .to_mem, .to_mem, .none } },
49179 },69726 },
49180 .extra_temps = .{69727 .extra_temps = .{
49181 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },69728 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -49205,9 +69752,10 @@ const Temp = struct {...@@ -49205,9 +69752,10 @@ const Temp = struct {
49205 .src_constraints = .{69752 .src_constraints = .{
49206 .{ .remainder_int = .{ .of = .qword, .is = .qword } },69753 .{ .remainder_int = .{ .of = .qword, .is = .qword } },
49207 .{ .remainder_int = .{ .of = .qword, .is = .qword } },69754 .{ .remainder_int = .{ .of = .qword, .is = .qword } },
69755 .any,
49208 },69756 },
49209 .patterns = &.{69757 .patterns = &.{
49210 .{ .src = .{ .to_mem, .to_mem } },69758 .{ .src = .{ .to_mem, .to_mem, .none } },
49211 },69759 },
49212 .extra_temps = .{69760 .extra_temps = .{
49213 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },69761 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -49234,9 +69782,10 @@ const Temp = struct {...@@ -49234,9 +69782,10 @@ const Temp = struct {
49234 .src_constraints = .{69782 .src_constraints = .{
49235 .{ .remainder_int = .{ .of = .dword, .is = .dword } },69783 .{ .remainder_int = .{ .of = .dword, .is = .dword } },
49236 .{ .remainder_int = .{ .of = .dword, .is = .dword } },69784 .{ .remainder_int = .{ .of = .dword, .is = .dword } },
69785 .any,
49237 },69786 },
49238 .patterns = &.{69787 .patterns = &.{
49239 .{ .src = .{ .to_mem, .to_mem } },69788 .{ .src = .{ .to_mem, .to_mem, .none } },
49240 },69789 },
49241 .extra_temps = .{69790 .extra_temps = .{
49242 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },69791 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -49536,6 +70085,7 @@ const Operand = union(enum) {...@@ -49536,6 +70085,7 @@ const Operand = union(enum) {
4953670085
49537const Select = struct {70086const Select = struct {
49538 cg: *CodeGen,70087 cg: *CodeGen,
70088 types: [@intFromEnum(Select.Operand.Ref.none)]Type,
49539 temps: [@intFromEnum(Select.Operand.Ref.none)]Temp,70089 temps: [@intFromEnum(Select.Operand.Ref.none)]Temp,
49540 labels: [@intFromEnum(Label._)]struct {70090 labels: [@intFromEnum(Label._)]struct {
49541 backward: ?Mir.Inst.Index,70091 backward: ?Mir.Inst.Index,
...@@ -49747,7 +70297,15 @@ const Select = struct {...@@ -49747,7 +70297,15 @@ const Select = struct {
49747 multiple_scalar_int: OfIsSizes,70297 multiple_scalar_int: OfIsSizes,
49748 multiple_scalar_signed_int: OfIsSizes,70298 multiple_scalar_signed_int: OfIsSizes,
49749 multiple_scalar_unsigned_int: OfIsSizes,70299 multiple_scalar_unsigned_int: OfIsSizes,
70300 multiple_scalar_exact_int: struct { of: Memory.Size, is: u16 },
70301 multiple_scalar_exact_signed_int: struct { of: Memory.Size, is: u16 },
70302 multiple_scalar_exact_unsigned_int: struct { of: Memory.Size, is: u16 },
49750 scalar_remainder_int: OfIsSizes,70303 scalar_remainder_int: OfIsSizes,
70304 scalar_remainder_signed_int: OfIsSizes,
70305 scalar_remainder_unsigned_int: OfIsSizes,
70306 scalar_exact_remainder_int: OfIsSizes,
70307 scalar_exact_remainder_signed_int: OfIsSizes,
70308 scalar_exact_remainder_unsigned_int: OfIsSizes,
49751 float: Memory.Size,70309 float: Memory.Size,
49752 scalar_any_float: Memory.Size,70310 scalar_any_float: Memory.Size,
49753 scalar_float: OfIsSizes,70311 scalar_float: OfIsSizes,
...@@ -49762,9 +70320,11 @@ const Select = struct {...@@ -49762,9 +70320,11 @@ const Select = struct {
49762 signed_po2_int: Memory.Size,70320 signed_po2_int: Memory.Size,
49763 unsigned_po2_or_exact_int: Memory.Size,70321 unsigned_po2_or_exact_int: Memory.Size,
49764 remainder_int: OfIsSizes,70322 remainder_int: OfIsSizes,
49765 signed_remainder_int: OfIsSizes,70323 remainder_signed_int: OfIsSizes,
49766 unsigned_remainder_int: OfIsSizes,70324 remainder_unsigned_int: OfIsSizes,
49767 exact_remainder_int: OfIsSizes,70325 exact_remainder_int: OfIsSizes,
70326 exact_remainder_signed_int: OfIsSizes,
70327 exact_remainder_unsigned_int: OfIsSizes,
49768 signed_or_exact_remainder_int: OfIsSizes,70328 signed_or_exact_remainder_int: OfIsSizes,
49769 unsigned_or_exact_remainder_int: OfIsSizes,70329 unsigned_or_exact_remainder_int: OfIsSizes,
49770 signed_int: Memory.Size,70330 signed_int: Memory.Size,
...@@ -49832,10 +70392,30 @@ const Select = struct {...@@ -49832,10 +70392,30 @@ const Select = struct {
49832 .multiple_scalar_unsigned_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and70392 .multiple_scalar_unsigned_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and
49833 if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and70393 if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and
49834 of_is.is.bitSize(cg.target) >= int_info.bits else false,70394 of_is.is.bitSize(cg.target) >= int_info.bits else false,
70395 .multiple_scalar_exact_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and
70396 if (cg.intInfo(ty.scalarType(zcu))) |int_info| of_is.is == int_info.bits else false,
70397 .multiple_scalar_exact_signed_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and
70398 if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .signed and
70399 of_is.is == int_info.bits else false,
70400 .multiple_scalar_exact_unsigned_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and
70401 if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and
70402 of_is.is == int_info.bits else false,
49835 .scalar_remainder_int => |of_is| if (cg.intInfo(ty.scalarType(zcu))) |int_info|70403 .scalar_remainder_int => |of_is| if (cg.intInfo(ty.scalarType(zcu))) |int_info|
49836 of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 170404 of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1
49837 else70405 else
49838 false,70406 false,
70407 .scalar_remainder_signed_int => |of_is| if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .signed and
70408 of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false,
70409 .scalar_remainder_unsigned_int => |of_is| if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and
70410 of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false,
70411 .scalar_exact_remainder_int => |of_is| if (cg.intInfo(ty.scalarType(zcu))) |int_info|
70412 of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1
70413 else
70414 false,
70415 .scalar_exact_remainder_signed_int => |of_is| if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .signed and
70416 of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false,
70417 .scalar_exact_remainder_unsigned_int => |of_is| if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and
70418 of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false,
49839 .float => |size| if (cg.floatBits(ty)) |float_bits| size.bitSize(cg.target) == float_bits else false,70419 .float => |size| if (cg.floatBits(ty)) |float_bits| size.bitSize(cg.target) == float_bits else false,
49840 .scalar_any_float => |size| @divExact(size.bitSize(cg.target), 8) >= ty.abiSize(zcu) and70420 .scalar_any_float => |size| @divExact(size.bitSize(cg.target), 8) >= ty.abiSize(zcu) and
49841 cg.floatBits(ty.scalarType(zcu)) != null,70421 cg.floatBits(ty.scalarType(zcu)) != null,
...@@ -49878,14 +70458,18 @@ const Select = struct {...@@ -49878,14 +70458,18 @@ const Select = struct {
49878 of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 170458 of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1
49879 else70459 else
49880 false,70460 false,
49881 .signed_remainder_int => |of_is| if (cg.intInfo(ty)) |int_info| int_info.signedness == .signed and70461 .remainder_signed_int => |of_is| if (cg.intInfo(ty)) |int_info| int_info.signedness == .signed and
49882 of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false,70462 of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false,
49883 .unsigned_remainder_int => |of_is| if (cg.intInfo(ty)) |int_info| int_info.signedness == .unsigned and70463 .remainder_unsigned_int => |of_is| if (cg.intInfo(ty)) |int_info| int_info.signedness == .unsigned and
49884 of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false,70464 of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false,
49885 .exact_remainder_int => |of_is| if (cg.intInfo(ty)) |int_info|70465 .exact_remainder_int => |of_is| if (cg.intInfo(ty)) |int_info|
49886 of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 170466 of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1
49887 else70467 else
49888 false,70468 false,
70469 .exact_remainder_signed_int => |of_is| if (cg.intInfo(ty)) |int_info| int_info.signedness == .signed and
70470 of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false,
70471 .exact_remainder_unsigned_int => |of_is| if (cg.intInfo(ty)) |int_info| int_info.signedness == .unsigned and
70472 of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false,
49889 .signed_or_exact_remainder_int => |of_is| if (cg.intInfo(ty)) |int_info| switch (int_info.signedness) {70473 .signed_or_exact_remainder_int => |of_is| if (cg.intInfo(ty)) |int_info| switch (int_info.signedness) {
49890 .signed => of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1,70474 .signed => of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1,
49891 .unsigned => of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1,70475 .unsigned => of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1,
...@@ -49913,7 +70497,7 @@ const Select = struct {...@@ -49913,7 +70497,7 @@ const Select = struct {
49913 };70497 };
4991470498
49915 const Pattern = struct {70499 const Pattern = struct {
49916 src: [2]Src,70500 src: [@intFromEnum(Select.Operand.Ref.none) - @intFromEnum(Select.Operand.Ref.src0)]Src,
49917 commute: struct { u8, u8 } = .{ 0, 0 },70501 commute: struct { u8, u8 } = .{ 0, 0 },
4991870502
49919 const Src = union(enum) {70503 const Src = union(enum) {
...@@ -50105,7 +70689,11 @@ const Select = struct {...@@ -50105,7 +70689,11 @@ const Select = struct {
50105 frame: FrameIndex,70689 frame: FrameIndex,
50106 symbol: *const struct { lib: ?[]const u8 = null, name: []const u8 },70690 symbol: *const struct { lib: ?[]const u8 = null, name: []const u8 },
5010770691
50108 const ConstInfo = struct { ref: Select.Operand.Ref, vectorize_to: ?Memory.Size = null };70692 const ConstInfo = struct {
70693 ref: Select.Operand.Ref,
70694 to_signedness: ?std.builtin.Signedness = null,
70695 vectorize_to: ?Memory.Size = null,
70696 };
5010970697
50110 fn finish(kind: Kind, temp: Temp, s: *const Select) void {70698 fn finish(kind: Kind, temp: Temp, s: *const Select) void {
50111 switch (kind) {70699 switch (kind) {
...@@ -50129,11 +70717,11 @@ const Select = struct {...@@ -50129,11 +70717,11 @@ const Select = struct {
50129 .unused => unreachable,70717 .unused => unreachable,
50130 .any => .{ try cg.tempAlloc(spec.type), true },70718 .any => .{ try cg.tempAlloc(spec.type), true },
50131 .cc => |cc| .{ try cg.tempInit(spec.type, .{ .eflags = cc }), true },70719 .cc => |cc| .{ try cg.tempInit(spec.type, .{ .eflags = cc }), true },
50132 .ref => |ref| .{ ref.deref(s), false },70720 .ref => |ref| .{ ref.tempOf(s), false },
50133 .reg => |reg| .{ try cg.tempInit(spec.type, .{ .register = reg }), true },70721 .reg => |reg| .{ try cg.tempInit(spec.type, .{ .register = reg }), true },
50134 .rc => |rc| .{ try cg.tempAllocReg(spec.type, regSetForRegClass(rc)), true },70722 .rc => |rc| .{ try cg.tempAllocReg(spec.type, regSetForRegClass(rc)), true },
50135 .mut_rc => |ref_rc| {70723 .mut_rc => |ref_rc| {
50136 const temp = ref_rc.ref.deref(s);70724 const temp = ref_rc.ref.tempOf(s);
50137 if (temp.isMut(cg)) switch (temp.tracking(cg).short) {70725 if (temp.isMut(cg)) switch (temp.tracking(cg).short) {
50138 .register => |reg| if (reg.class() == ref_rc.rc) return .{ temp, false },70726 .register => |reg| if (reg.class() == ref_rc.rc) return .{ temp, false },
50139 .register_offset => |reg_off| if (reg_off.off == 0 and reg_off.reg.class() == ref_rc.rc) return .{ temp, false },70727 .register_offset => |reg_off| if (reg_off.off == 0 and reg_off.reg.class() == ref_rc.rc) return .{ temp, false },
...@@ -50141,10 +70729,10 @@ const Select = struct {...@@ -50141,10 +70729,10 @@ const Select = struct {
50141 };70729 };
50142 return .{ try cg.tempAllocReg(spec.type, regSetForRegClass(ref_rc.rc)), true };70730 return .{ try cg.tempAllocReg(spec.type, regSetForRegClass(ref_rc.rc)), true };
50143 },70731 },
50144 .ref_mask => |ref_mask| .{ ref_mask.ref.deref(s), false },70732 .ref_mask => |ref_mask| .{ ref_mask.ref.tempOf(s), false },
50145 .rc_mask => |rc_mask| .{ try cg.tempAllocReg(spec.type, regSetForRegClass(rc_mask.rc)), true },70733 .rc_mask => |rc_mask| .{ try cg.tempAllocReg(spec.type, regSetForRegClass(rc_mask.rc)), true },
50146 .mut_rc_mask => |ref_rc_mask| {70734 .mut_rc_mask => |ref_rc_mask| {
50147 const temp = ref_rc_mask.ref.deref(s);70735 const temp = ref_rc_mask.ref.tempOf(s);
50148 if (temp.isMut(cg)) switch (temp.tracking(cg).short) {70736 if (temp.isMut(cg)) switch (temp.tracking(cg).short) {
50149 .register => |reg| if (reg.class() == ref_rc_mask.rc) return .{ temp, false },70737 .register => |reg| if (reg.class() == ref_rc_mask.rc) return .{ temp, false },
50150 .register_offset => |reg_off| if (reg_off.off == 0 and reg_off.reg.class() == ref_rc_mask.rc) return .{ temp, false },70738 .register_offset => |reg_off| if (reg_off.off == 0 and reg_off.reg.class() == ref_rc_mask.rc) return .{ temp, false },
...@@ -50157,7 +70745,7 @@ const Select = struct {...@@ -50157,7 +70745,7 @@ const Select = struct {
50157 const pt = cg.pt;70745 const pt = cg.pt;
50158 const zcu = pt.zcu;70746 const zcu = pt.zcu;
50159 const ip = &zcu.intern_pool;70747 const ip = &zcu.intern_pool;
50160 const ty = const_info.ref.deref(s).typeOf(cg);70748 const ty = const_info.ref.typeOf(s);
50161 const vector_len, const scalar_ty: Type = switch (ip.indexToKey(ty.toIntern())) {70749 const vector_len, const scalar_ty: Type = switch (ip.indexToKey(ty.toIntern())) {
50162 else => .{ null, ty },70750 else => .{ null, ty },
50163 .vector_type => |vector_type| .{ vector_type.len, .fromInterned(vector_type.child) },70751 .vector_type => |vector_type| .{ vector_type.len, .fromInterned(vector_type.child) },
...@@ -50180,7 +70768,8 @@ const Select = struct {...@@ -50180,7 +70768,8 @@ const Select = struct {
50180 .signedness = .signed,70768 .signedness = .signed,
50181 .bits = cg.floatBits(scalar_ty).?,70769 .bits = cg.floatBits(scalar_ty).?,
50182 };70770 };
50183 const scalar_int_ty = try pt.intType(scalar_info.signedness, scalar_info.bits);70771 const scalar_signedness = const_info.to_signedness orelse scalar_info.signedness;
70772 const scalar_int_ty = try pt.intType(scalar_signedness, scalar_info.bits);
50184 if (scalar_info.bits <= 64) {70773 if (scalar_info.bits <= 64) {
50185 const int_val: i64 = switch (spec.kind) {70774 const int_val: i64 = switch (spec.kind) {
50186 else => unreachable,70775 else => unreachable,
...@@ -50190,7 +70779,7 @@ const Select = struct {...@@ -50190,7 +70779,7 @@ const Select = struct {
50190 .umax_mem => -1,70779 .umax_mem => -1,
50191 };70780 };
50192 const shift: u6 = @intCast(64 - scalar_info.bits);70781 const shift: u6 = @intCast(64 - scalar_info.bits);
50193 break :res_scalar .{ scalar_int_ty, switch (scalar_info.signedness) {70782 break :res_scalar .{ scalar_int_ty, switch (scalar_signedness) {
50194 .signed => try pt.intValue_i64(scalar_int_ty, int_val >> shift),70783 .signed => try pt.intValue_i64(scalar_int_ty, int_val >> shift),
50195 .unsigned => try pt.intValue_u64(scalar_int_ty, @as(u64, @bitCast(int_val)) >> shift),70784 .unsigned => try pt.intValue_u64(scalar_int_ty, @as(u64, @bitCast(int_val)) >> shift),
50196 } };70785 } };
...@@ -50206,7 +70795,7 @@ const Select = struct {...@@ -50206,7 +70795,7 @@ const Select = struct {
50206 .smin_mem, .smax_mem => .signed,70795 .smin_mem, .smax_mem => .signed,
50207 .umin_mem, .umax_mem => .unsigned,70796 .umin_mem, .umax_mem => .unsigned,
50208 }, scalar_info.bits);70797 }, scalar_info.bits);
50209 try big_int.truncate(&big_int, scalar_info.signedness, scalar_info.bits);70798 try big_int.truncate(&big_int, scalar_signedness, scalar_info.bits);
50210 break :res_scalar .{ scalar_int_ty, try pt.intValue_big(scalar_int_ty, big_int.toConst()) };70799 break :res_scalar .{ scalar_int_ty, try pt.intValue_big(scalar_int_ty, big_int.toConst()) };
50211 },70800 },
50212 };70801 };
...@@ -50246,7 +70835,7 @@ const Select = struct {...@@ -50246,7 +70835,7 @@ const Select = struct {
50246 flags: packed struct(u16) {70835 flags: packed struct(u16) {
50247 tag: Tag,70836 tag: Tag,
50248 adjust: Adjust = .none,70837 adjust: Adjust = .none,
50249 unused: u4 = 0,70838 unused: u3 = 0,
50250 },70839 },
50251 base: Ref.Sized = .none,70840 base: Ref.Sized = .none,
50252 index: packed struct(u6) {70841 index: packed struct(u6) {
...@@ -50265,7 +70854,7 @@ const Select = struct {...@@ -50265,7 +70854,7 @@ const Select = struct {
50265 lea,70854 lea,
50266 mem,70855 mem,
50267 };70856 };
50268 const Adjust = packed struct(u9) {70857 const Adjust = packed struct(u10) {
50269 sign: enum(u1) { neg, pos },70858 sign: enum(u1) { neg, pos },
50270 lhs: enum(u5) {70859 lhs: enum(u5) {
50271 none,70860 none,
...@@ -50288,7 +70877,7 @@ const Select = struct {...@@ -50288,7 +70877,7 @@ const Select = struct {
50288 smax,70877 smax,
50289 umax,70878 umax,
50290 },70879 },
50291 op: enum(u1) { mul, div },70880 op: enum(u2) { mul, div, rem_8_mul },
50292 rhs: Memory.Scale,70881 rhs: Memory.Scale,
5029370882
50294 const none: Adjust = .{ .sign = .pos, .lhs = .none, .op = .mul, .rhs = .@"1" };70883 const none: Adjust = .{ .sign = .pos, .lhs = .none, .op = .mul, .rhs = .@"1" };
...@@ -50308,6 +70897,8 @@ const Select = struct {...@@ -50308,6 +70897,8 @@ const Select = struct {
50308 const sub_unaligned_size: Adjust = .{ .sign = .neg, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" };70897 const sub_unaligned_size: Adjust = .{ .sign = .neg, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" };
50309 const add_2_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"2" };70898 const add_2_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"2" };
50310 const add_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"1" };70899 const add_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"1" };
70900 const add_bit_size_rem_64: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .rem_8_mul, .rhs = .@"8" };
70901 const sub_bit_size_rem_64: Adjust = .{ .sign = .neg, .lhs = .bit_size, .op = .rem_8_mul, .rhs = .@"8" };
50311 const sub_bit_size: Adjust = .{ .sign = .neg, .lhs = .bit_size, .op = .mul, .rhs = .@"1" };70902 const sub_bit_size: Adjust = .{ .sign = .neg, .lhs = .bit_size, .op = .mul, .rhs = .@"1" };
50312 const add_src0_bit_size: Adjust = .{ .sign = .pos, .lhs = .src0_bit_size, .op = .mul, .rhs = .@"1" };70903 const add_src0_bit_size: Adjust = .{ .sign = .pos, .lhs = .src0_bit_size, .op = .mul, .rhs = .@"1" };
50313 const sub_src0_bit_size: Adjust = .{ .sign = .neg, .lhs = .src0_bit_size, .op = .mul, .rhs = .@"1" };70904 const sub_src0_bit_size: Adjust = .{ .sign = .neg, .lhs = .src0_bit_size, .op = .mul, .rhs = .@"1" };
...@@ -50328,6 +70919,7 @@ const Select = struct {...@@ -50328,6 +70919,7 @@ const Select = struct {
50328 const sub_src0_elem_size_times_src1: Adjust = .{ .sign = .neg, .lhs = .src0_elem_size_times_src1, .op = .mul, .rhs = .@"1" };70919 const sub_src0_elem_size_times_src1: Adjust = .{ .sign = .neg, .lhs = .src0_elem_size_times_src1, .op = .mul, .rhs = .@"1" };
50329 const add_log2_src0_elem_size: Adjust = .{ .sign = .pos, .lhs = .log2_src0_elem_size, .op = .mul, .rhs = .@"1" };70920 const add_log2_src0_elem_size: Adjust = .{ .sign = .pos, .lhs = .log2_src0_elem_size, .op = .mul, .rhs = .@"1" };
50330 const add_elem_limbs: Adjust = .{ .sign = .pos, .lhs = .elem_limbs, .op = .mul, .rhs = .@"1" };70921 const add_elem_limbs: Adjust = .{ .sign = .pos, .lhs = .elem_limbs, .op = .mul, .rhs = .@"1" };
70922 const add_smin: Adjust = .{ .sign = .pos, .lhs = .smin, .op = .mul, .rhs = .@"1" };
50331 const add_umax: Adjust = .{ .sign = .pos, .lhs = .umax, .op = .mul, .rhs = .@"1" };70923 const add_umax: Adjust = .{ .sign = .pos, .lhs = .umax, .op = .mul, .rhs = .@"1" };
50332 };70924 };
50333 const Ref = enum(u4) {70925 const Ref = enum(u4) {
...@@ -50343,6 +70935,7 @@ const Select = struct {...@@ -50343,6 +70935,7 @@ const Select = struct {
50343 dst0,70935 dst0,
50344 src0,70936 src0,
50345 src1,70937 src1,
70938 src2,
50346 none,70939 none,
5034770940
50348 const Sized = packed struct(u8) {70941 const Sized = packed struct(u8) {
...@@ -50356,6 +70949,7 @@ const Select = struct {...@@ -50356,6 +70949,7 @@ const Select = struct {
50356 const tmp0w: Sized = .{ .ref = .tmp0, .size = .word };70949 const tmp0w: Sized = .{ .ref = .tmp0, .size = .word };
50357 const tmp0d: Sized = .{ .ref = .tmp0, .size = .dword };70950 const tmp0d: Sized = .{ .ref = .tmp0, .size = .dword };
50358 const tmp0p: Sized = .{ .ref = .tmp0, .size = .ptr };70951 const tmp0p: Sized = .{ .ref = .tmp0, .size = .ptr };
70952 const tmp0g: Sized = .{ .ref = .tmp0, .size = .gpr };
50359 const tmp0q: Sized = .{ .ref = .tmp0, .size = .qword };70953 const tmp0q: Sized = .{ .ref = .tmp0, .size = .qword };
50360 const tmp0t: Sized = .{ .ref = .tmp0, .size = .tbyte };70954 const tmp0t: Sized = .{ .ref = .tmp0, .size = .tbyte };
50361 const tmp0x: Sized = .{ .ref = .tmp0, .size = .xword };70955 const tmp0x: Sized = .{ .ref = .tmp0, .size = .xword };
...@@ -50366,6 +70960,7 @@ const Select = struct {...@@ -50366,6 +70960,7 @@ const Select = struct {
50366 const tmp1w: Sized = .{ .ref = .tmp1, .size = .word };70960 const tmp1w: Sized = .{ .ref = .tmp1, .size = .word };
50367 const tmp1d: Sized = .{ .ref = .tmp1, .size = .dword };70961 const tmp1d: Sized = .{ .ref = .tmp1, .size = .dword };
50368 const tmp1p: Sized = .{ .ref = .tmp1, .size = .ptr };70962 const tmp1p: Sized = .{ .ref = .tmp1, .size = .ptr };
70963 const tmp1g: Sized = .{ .ref = .tmp1, .size = .gpr };
50369 const tmp1q: Sized = .{ .ref = .tmp1, .size = .qword };70964 const tmp1q: Sized = .{ .ref = .tmp1, .size = .qword };
50370 const tmp1t: Sized = .{ .ref = .tmp1, .size = .tbyte };70965 const tmp1t: Sized = .{ .ref = .tmp1, .size = .tbyte };
50371 const tmp1x: Sized = .{ .ref = .tmp1, .size = .xword };70966 const tmp1x: Sized = .{ .ref = .tmp1, .size = .xword };
...@@ -50376,6 +70971,7 @@ const Select = struct {...@@ -50376,6 +70971,7 @@ const Select = struct {
50376 const tmp2w: Sized = .{ .ref = .tmp2, .size = .word };70971 const tmp2w: Sized = .{ .ref = .tmp2, .size = .word };
50377 const tmp2d: Sized = .{ .ref = .tmp2, .size = .dword };70972 const tmp2d: Sized = .{ .ref = .tmp2, .size = .dword };
50378 const tmp2p: Sized = .{ .ref = .tmp2, .size = .ptr };70973 const tmp2p: Sized = .{ .ref = .tmp2, .size = .ptr };
70974 const tmp2g: Sized = .{ .ref = .tmp2, .size = .gpr };
50379 const tmp2q: Sized = .{ .ref = .tmp2, .size = .qword };70975 const tmp2q: Sized = .{ .ref = .tmp2, .size = .qword };
50380 const tmp2t: Sized = .{ .ref = .tmp2, .size = .tbyte };70976 const tmp2t: Sized = .{ .ref = .tmp2, .size = .tbyte };
50381 const tmp2x: Sized = .{ .ref = .tmp2, .size = .xword };70977 const tmp2x: Sized = .{ .ref = .tmp2, .size = .xword };
...@@ -50386,6 +70982,7 @@ const Select = struct {...@@ -50386,6 +70982,7 @@ const Select = struct {
50386 const tmp3w: Sized = .{ .ref = .tmp3, .size = .word };70982 const tmp3w: Sized = .{ .ref = .tmp3, .size = .word };
50387 const tmp3d: Sized = .{ .ref = .tmp3, .size = .dword };70983 const tmp3d: Sized = .{ .ref = .tmp3, .size = .dword };
50388 const tmp3p: Sized = .{ .ref = .tmp3, .size = .ptr };70984 const tmp3p: Sized = .{ .ref = .tmp3, .size = .ptr };
70985 const tmp3g: Sized = .{ .ref = .tmp3, .size = .gpr };
50389 const tmp3q: Sized = .{ .ref = .tmp3, .size = .qword };70986 const tmp3q: Sized = .{ .ref = .tmp3, .size = .qword };
50390 const tmp3t: Sized = .{ .ref = .tmp3, .size = .tbyte };70987 const tmp3t: Sized = .{ .ref = .tmp3, .size = .tbyte };
50391 const tmp3x: Sized = .{ .ref = .tmp3, .size = .xword };70988 const tmp3x: Sized = .{ .ref = .tmp3, .size = .xword };
...@@ -50396,6 +70993,7 @@ const Select = struct {...@@ -50396,6 +70993,7 @@ const Select = struct {
50396 const tmp4w: Sized = .{ .ref = .tmp4, .size = .word };70993 const tmp4w: Sized = .{ .ref = .tmp4, .size = .word };
50397 const tmp4d: Sized = .{ .ref = .tmp4, .size = .dword };70994 const tmp4d: Sized = .{ .ref = .tmp4, .size = .dword };
50398 const tmp4p: Sized = .{ .ref = .tmp4, .size = .ptr };70995 const tmp4p: Sized = .{ .ref = .tmp4, .size = .ptr };
70996 const tmp4g: Sized = .{ .ref = .tmp4, .size = .gpr };
50399 const tmp4q: Sized = .{ .ref = .tmp4, .size = .qword };70997 const tmp4q: Sized = .{ .ref = .tmp4, .size = .qword };
50400 const tmp4t: Sized = .{ .ref = .tmp4, .size = .tbyte };70998 const tmp4t: Sized = .{ .ref = .tmp4, .size = .tbyte };
50401 const tmp4x: Sized = .{ .ref = .tmp4, .size = .xword };70999 const tmp4x: Sized = .{ .ref = .tmp4, .size = .xword };
...@@ -50406,6 +71004,7 @@ const Select = struct {...@@ -50406,6 +71004,7 @@ const Select = struct {
50406 const tmp5w: Sized = .{ .ref = .tmp5, .size = .word };71004 const tmp5w: Sized = .{ .ref = .tmp5, .size = .word };
50407 const tmp5d: Sized = .{ .ref = .tmp5, .size = .dword };71005 const tmp5d: Sized = .{ .ref = .tmp5, .size = .dword };
50408 const tmp5p: Sized = .{ .ref = .tmp5, .size = .ptr };71006 const tmp5p: Sized = .{ .ref = .tmp5, .size = .ptr };
71007 const tmp5g: Sized = .{ .ref = .tmp5, .size = .gpr };
50409 const tmp5q: Sized = .{ .ref = .tmp5, .size = .qword };71008 const tmp5q: Sized = .{ .ref = .tmp5, .size = .qword };
50410 const tmp5t: Sized = .{ .ref = .tmp5, .size = .tbyte };71009 const tmp5t: Sized = .{ .ref = .tmp5, .size = .tbyte };
50411 const tmp5x: Sized = .{ .ref = .tmp5, .size = .xword };71010 const tmp5x: Sized = .{ .ref = .tmp5, .size = .xword };
...@@ -50416,6 +71015,7 @@ const Select = struct {...@@ -50416,6 +71015,7 @@ const Select = struct {
50416 const tmp6w: Sized = .{ .ref = .tmp6, .size = .word };71015 const tmp6w: Sized = .{ .ref = .tmp6, .size = .word };
50417 const tmp6d: Sized = .{ .ref = .tmp6, .size = .dword };71016 const tmp6d: Sized = .{ .ref = .tmp6, .size = .dword };
50418 const tmp6p: Sized = .{ .ref = .tmp6, .size = .ptr };71017 const tmp6p: Sized = .{ .ref = .tmp6, .size = .ptr };
71018 const tmp6g: Sized = .{ .ref = .tmp6, .size = .gpr };
50419 const tmp6q: Sized = .{ .ref = .tmp6, .size = .qword };71019 const tmp6q: Sized = .{ .ref = .tmp6, .size = .qword };
50420 const tmp6t: Sized = .{ .ref = .tmp6, .size = .tbyte };71020 const tmp6t: Sized = .{ .ref = .tmp6, .size = .tbyte };
50421 const tmp6x: Sized = .{ .ref = .tmp6, .size = .xword };71021 const tmp6x: Sized = .{ .ref = .tmp6, .size = .xword };
...@@ -50426,6 +71026,7 @@ const Select = struct {...@@ -50426,6 +71026,7 @@ const Select = struct {
50426 const tmp7w: Sized = .{ .ref = .tmp7, .size = .word };71026 const tmp7w: Sized = .{ .ref = .tmp7, .size = .word };
50427 const tmp7d: Sized = .{ .ref = .tmp7, .size = .dword };71027 const tmp7d: Sized = .{ .ref = .tmp7, .size = .dword };
50428 const tmp7p: Sized = .{ .ref = .tmp7, .size = .ptr };71028 const tmp7p: Sized = .{ .ref = .tmp7, .size = .ptr };
71029 const tmp7g: Sized = .{ .ref = .tmp7, .size = .gpr };
50429 const tmp7q: Sized = .{ .ref = .tmp7, .size = .qword };71030 const tmp7q: Sized = .{ .ref = .tmp7, .size = .qword };
50430 const tmp7t: Sized = .{ .ref = .tmp7, .size = .tbyte };71031 const tmp7t: Sized = .{ .ref = .tmp7, .size = .tbyte };
50431 const tmp7x: Sized = .{ .ref = .tmp7, .size = .xword };71032 const tmp7x: Sized = .{ .ref = .tmp7, .size = .xword };
...@@ -50436,6 +71037,7 @@ const Select = struct {...@@ -50436,6 +71037,7 @@ const Select = struct {
50436 const tmp8w: Sized = .{ .ref = .tmp8, .size = .word };71037 const tmp8w: Sized = .{ .ref = .tmp8, .size = .word };
50437 const tmp8d: Sized = .{ .ref = .tmp8, .size = .dword };71038 const tmp8d: Sized = .{ .ref = .tmp8, .size = .dword };
50438 const tmp8p: Sized = .{ .ref = .tmp8, .size = .ptr };71039 const tmp8p: Sized = .{ .ref = .tmp8, .size = .ptr };
71040 const tmp8g: Sized = .{ .ref = .tmp8, .size = .gpr };
50439 const tmp8q: Sized = .{ .ref = .tmp8, .size = .qword };71041 const tmp8q: Sized = .{ .ref = .tmp8, .size = .qword };
50440 const tmp8t: Sized = .{ .ref = .tmp8, .size = .tbyte };71042 const tmp8t: Sized = .{ .ref = .tmp8, .size = .tbyte };
50441 const tmp8x: Sized = .{ .ref = .tmp8, .size = .xword };71043 const tmp8x: Sized = .{ .ref = .tmp8, .size = .xword };
...@@ -50446,6 +71048,7 @@ const Select = struct {...@@ -50446,6 +71048,7 @@ const Select = struct {
50446 const dst0w: Sized = .{ .ref = .dst0, .size = .word };71048 const dst0w: Sized = .{ .ref = .dst0, .size = .word };
50447 const dst0d: Sized = .{ .ref = .dst0, .size = .dword };71049 const dst0d: Sized = .{ .ref = .dst0, .size = .dword };
50448 const dst0p: Sized = .{ .ref = .dst0, .size = .ptr };71050 const dst0p: Sized = .{ .ref = .dst0, .size = .ptr };
71051 const dst0g: Sized = .{ .ref = .dst0, .size = .gpr };
50449 const dst0q: Sized = .{ .ref = .dst0, .size = .qword };71052 const dst0q: Sized = .{ .ref = .dst0, .size = .qword };
50450 const dst0t: Sized = .{ .ref = .dst0, .size = .tbyte };71053 const dst0t: Sized = .{ .ref = .dst0, .size = .tbyte };
50451 const dst0x: Sized = .{ .ref = .dst0, .size = .xword };71054 const dst0x: Sized = .{ .ref = .dst0, .size = .xword };
...@@ -50456,6 +71059,7 @@ const Select = struct {...@@ -50456,6 +71059,7 @@ const Select = struct {
50456 const src0w: Sized = .{ .ref = .src0, .size = .word };71059 const src0w: Sized = .{ .ref = .src0, .size = .word };
50457 const src0d: Sized = .{ .ref = .src0, .size = .dword };71060 const src0d: Sized = .{ .ref = .src0, .size = .dword };
50458 const src0p: Sized = .{ .ref = .src0, .size = .ptr };71061 const src0p: Sized = .{ .ref = .src0, .size = .ptr };
71062 const src0g: Sized = .{ .ref = .src0, .size = .gpr };
50459 const src0q: Sized = .{ .ref = .src0, .size = .qword };71063 const src0q: Sized = .{ .ref = .src0, .size = .qword };
50460 const src0t: Sized = .{ .ref = .src0, .size = .tbyte };71064 const src0t: Sized = .{ .ref = .src0, .size = .tbyte };
50461 const src0x: Sized = .{ .ref = .src0, .size = .xword };71065 const src0x: Sized = .{ .ref = .src0, .size = .xword };
...@@ -50466,15 +71070,35 @@ const Select = struct {...@@ -50466,15 +71070,35 @@ const Select = struct {
50466 const src1w: Sized = .{ .ref = .src1, .size = .word };71070 const src1w: Sized = .{ .ref = .src1, .size = .word };
50467 const src1d: Sized = .{ .ref = .src1, .size = .dword };71071 const src1d: Sized = .{ .ref = .src1, .size = .dword };
50468 const src1p: Sized = .{ .ref = .src1, .size = .ptr };71072 const src1p: Sized = .{ .ref = .src1, .size = .ptr };
71073 const src1g: Sized = .{ .ref = .src1, .size = .gpr };
50469 const src1q: Sized = .{ .ref = .src1, .size = .qword };71074 const src1q: Sized = .{ .ref = .src1, .size = .qword };
50470 const src1t: Sized = .{ .ref = .src1, .size = .tbyte };71075 const src1t: Sized = .{ .ref = .src1, .size = .tbyte };
50471 const src1x: Sized = .{ .ref = .src1, .size = .xword };71076 const src1x: Sized = .{ .ref = .src1, .size = .xword };
50472 const src1y: Sized = .{ .ref = .src1, .size = .yword };71077 const src1y: Sized = .{ .ref = .src1, .size = .yword };
71078
71079 const src2: Sized = .{ .ref = .src2, .size = .none };
71080 const src2b: Sized = .{ .ref = .src2, .size = .byte };
71081 const src2w: Sized = .{ .ref = .src2, .size = .word };
71082 const src2d: Sized = .{ .ref = .src2, .size = .dword };
71083 const src2p: Sized = .{ .ref = .src2, .size = .ptr };
71084 const src2g: Sized = .{ .ref = .src2, .size = .gpr };
71085 const src2q: Sized = .{ .ref = .src2, .size = .qword };
71086 const src2t: Sized = .{ .ref = .src2, .size = .tbyte };
71087 const src2x: Sized = .{ .ref = .src2, .size = .xword };
71088 const src2y: Sized = .{ .ref = .src2, .size = .yword };
50473 };71089 };
5047471090
50475 fn deref(ref: Ref, s: *const Select) Temp {71091 fn typeOf(ref: Ref, s: *const Select) Type {
71092 return s.types[@intFromEnum(ref)];
71093 }
71094
71095 fn tempOf(ref: Ref, s: *const Select) Temp {
50476 return s.temps[@intFromEnum(ref)];71096 return s.temps[@intFromEnum(ref)];
50477 }71097 }
71098
71099 fn valueOf(ref: Ref, s: *const Select) MCValue {
71100 return s.temps[@intFromEnum(ref)].tracking(s.cg).short;
71101 }
50478 };71102 };
5047971103
50480 const @"_": Select.Operand = .{ .flags = .{ .tag = .none } };71104 const @"_": Select.Operand = .{ .flags = .{ .tag = .none } };
...@@ -50490,6 +71114,7 @@ const Select = struct {...@@ -50490,6 +71114,7 @@ const Select = struct {
50490 const tmp0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0w };71114 const tmp0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0w };
50491 const tmp0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0d };71115 const tmp0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0d };
50492 const tmp0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0p };71116 const tmp0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0p };
71117 const tmp0g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0g };
50493 const tmp0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0q };71118 const tmp0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0q };
50494 const tmp0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0t };71119 const tmp0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0t };
50495 const tmp0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0x };71120 const tmp0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0x };
...@@ -50499,6 +71124,7 @@ const Select = struct {...@@ -50499,6 +71124,7 @@ const Select = struct {
50499 const tmp1w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1w };71124 const tmp1w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1w };
50500 const tmp1d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1d };71125 const tmp1d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1d };
50501 const tmp1p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1p };71126 const tmp1p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1p };
71127 const tmp1g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1g };
50502 const tmp1q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1q };71128 const tmp1q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1q };
50503 const tmp1t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1t };71129 const tmp1t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1t };
50504 const tmp1x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1x };71130 const tmp1x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1x };
...@@ -50508,6 +71134,7 @@ const Select = struct {...@@ -50508,6 +71134,7 @@ const Select = struct {
50508 const tmp2w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2w };71134 const tmp2w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2w };
50509 const tmp2d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2d };71135 const tmp2d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2d };
50510 const tmp2p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2p };71136 const tmp2p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2p };
71137 const tmp2g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2g };
50511 const tmp2q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2q };71138 const tmp2q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2q };
50512 const tmp2t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2t };71139 const tmp2t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2t };
50513 const tmp2x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2x };71140 const tmp2x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2x };
...@@ -50517,6 +71144,7 @@ const Select = struct {...@@ -50517,6 +71144,7 @@ const Select = struct {
50517 const tmp3w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3w };71144 const tmp3w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3w };
50518 const tmp3d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3d };71145 const tmp3d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3d };
50519 const tmp3p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3p };71146 const tmp3p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3p };
71147 const tmp3g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3g };
50520 const tmp3q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3q };71148 const tmp3q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3q };
50521 const tmp3t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3t };71149 const tmp3t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3t };
50522 const tmp3x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3x };71150 const tmp3x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3x };
...@@ -50526,6 +71154,7 @@ const Select = struct {...@@ -50526,6 +71154,7 @@ const Select = struct {
50526 const tmp4w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4w };71154 const tmp4w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4w };
50527 const tmp4d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4d };71155 const tmp4d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4d };
50528 const tmp4p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4p };71156 const tmp4p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4p };
71157 const tmp4g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4g };
50529 const tmp4q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4q };71158 const tmp4q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4q };
50530 const tmp4t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4t };71159 const tmp4t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4t };
50531 const tmp4x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4x };71160 const tmp4x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4x };
...@@ -50535,6 +71164,7 @@ const Select = struct {...@@ -50535,6 +71164,7 @@ const Select = struct {
50535 const tmp5w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5w };71164 const tmp5w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5w };
50536 const tmp5d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5d };71165 const tmp5d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5d };
50537 const tmp5p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5p };71166 const tmp5p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5p };
71167 const tmp5g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5g };
50538 const tmp5q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5q };71168 const tmp5q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5q };
50539 const tmp5t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5t };71169 const tmp5t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5t };
50540 const tmp5x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5x };71170 const tmp5x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5x };
...@@ -50544,6 +71174,7 @@ const Select = struct {...@@ -50544,6 +71174,7 @@ const Select = struct {
50544 const tmp6w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6w };71174 const tmp6w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6w };
50545 const tmp6d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6d };71175 const tmp6d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6d };
50546 const tmp6p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6p };71176 const tmp6p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6p };
71177 const tmp6g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6g };
50547 const tmp6q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6q };71178 const tmp6q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6q };
50548 const tmp6t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6t };71179 const tmp6t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6t };
50549 const tmp6x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6x };71180 const tmp6x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6x };
...@@ -50553,6 +71184,7 @@ const Select = struct {...@@ -50553,6 +71184,7 @@ const Select = struct {
50553 const tmp7w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7w };71184 const tmp7w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7w };
50554 const tmp7d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7d };71185 const tmp7d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7d };
50555 const tmp7p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7p };71186 const tmp7p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7p };
71187 const tmp7g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7g };
50556 const tmp7q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7q };71188 const tmp7q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7q };
50557 const tmp7t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7t };71189 const tmp7t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7t };
50558 const tmp7x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7x };71190 const tmp7x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7x };
...@@ -50562,6 +71194,7 @@ const Select = struct {...@@ -50562,6 +71194,7 @@ const Select = struct {
50562 const tmp8w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8w };71194 const tmp8w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8w };
50563 const tmp8d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8d };71195 const tmp8d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8d };
50564 const tmp8p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8p };71196 const tmp8p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8p };
71197 const tmp8g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8g };
50565 const tmp8q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8q };71198 const tmp8q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8q };
50566 const tmp8t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8t };71199 const tmp8t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8t };
50567 const tmp8x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8x };71200 const tmp8x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8x };
...@@ -50571,6 +71204,7 @@ const Select = struct {...@@ -50571,6 +71204,7 @@ const Select = struct {
50571 const dst0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0w };71204 const dst0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0w };
50572 const dst0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0d };71205 const dst0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0d };
50573 const dst0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0p };71206 const dst0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0p };
71207 const dst0g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0g };
50574 const dst0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0q };71208 const dst0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0q };
50575 const dst0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0t };71209 const dst0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0t };
50576 const dst0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0x };71210 const dst0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0x };
...@@ -50580,6 +71214,7 @@ const Select = struct {...@@ -50580,6 +71214,7 @@ const Select = struct {
50580 const src0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0w };71214 const src0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0w };
50581 const src0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0d };71215 const src0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0d };
50582 const src0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0p };71216 const src0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0p };
71217 const src0g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0g };
50583 const src0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0q };71218 const src0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0q };
50584 const src0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0t };71219 const src0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0t };
50585 const src0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0x };71220 const src0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0x };
...@@ -50589,11 +71224,22 @@ const Select = struct {...@@ -50589,11 +71224,22 @@ const Select = struct {
50589 const src1w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1w };71224 const src1w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1w };
50590 const src1d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1d };71225 const src1d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1d };
50591 const src1p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1p };71226 const src1p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1p };
71227 const src1g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1g };
50592 const src1q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1q };71228 const src1q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1q };
50593 const src1t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1t };71229 const src1t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1t };
50594 const src1x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1x };71230 const src1x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1x };
50595 const src1y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1y };71231 const src1y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1y };
5059671232
71233 const src2b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2b };
71234 const src2w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2w };
71235 const src2d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2d };
71236 const src2p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2p };
71237 const src2g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2g };
71238 const src2q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2q };
71239 const src2t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2t };
71240 const src2x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2x };
71241 const src2y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2y };
71242
50597 fn si(imm: i32) Select.Operand {71243 fn si(imm: i32) Select.Operand {
50598 return .{ .flags = .{ .tag = .simm }, .imm = imm };71244 return .{ .flags = .{ .tag = .simm }, .imm = imm };
50599 }71245 }
...@@ -50606,6 +71252,9 @@ const Select = struct {...@@ -50606,6 +71252,9 @@ const Select = struct {
50606 fn sia(imm: i32, base: Ref.Sized, adjust: Adjust) Select.Operand {71252 fn sia(imm: i32, base: Ref.Sized, adjust: Adjust) Select.Operand {
50607 return .{ .flags = .{ .tag = .simm, .adjust = adjust }, .base = base, .imm = imm };71253 return .{ .flags = .{ .tag = .simm, .adjust = adjust }, .base = base, .imm = imm };
50608 }71254 }
71255 fn sia2(imm: i32, base: Ref.Sized, index: Ref, adjust: Adjust) Select.Operand {
71256 return .{ .flags = .{ .tag = .simm, .adjust = adjust }, .base = base, .index = .{ .ref = index }, .imm = imm };
71257 }
50609 fn ui(imm: u32) Select.Operand {71258 fn ui(imm: u32) Select.Operand {
50610 return .{ .flags = .{ .tag = .uimm }, .imm = @bitCast(imm) };71259 return .{ .flags = .{ .tag = .uimm }, .imm = @bitCast(imm) };
50611 }71260 }
...@@ -50786,36 +71435,36 @@ const Select = struct {...@@ -50786,36 +71435,36 @@ const Select = struct {
50786 .none => 0,71435 .none => 0,
50787 .ptr_size => @divExact(s.cg.target.ptrBitWidth(), 8),71436 .ptr_size => @divExact(s.cg.target.ptrBitWidth(), 8),
50788 .ptr_bit_size => s.cg.target.ptrBitWidth(),71437 .ptr_bit_size => s.cg.target.ptrBitWidth(),
50789 .size => @intCast(op.base.ref.deref(s).typeOf(s.cg).abiSize(s.cg.pt.zcu)),71438 .size => @intCast(op.base.ref.typeOf(s).abiSize(s.cg.pt.zcu)),
50790 .delta_size => @intCast(@as(SignedImm, @intCast(op.base.ref.deref(s).typeOf(s.cg).abiSize(s.cg.pt.zcu))) -71439 .delta_size => @intCast(@as(SignedImm, @intCast(op.base.ref.typeOf(s).abiSize(s.cg.pt.zcu))) -
50791 @as(SignedImm, @intCast(op.index.ref.deref(s).typeOf(s.cg).abiSize(s.cg.pt.zcu)))),71440 @as(SignedImm, @intCast(op.index.ref.typeOf(s).abiSize(s.cg.pt.zcu)))),
50792 .delta_elem_size => @intCast(@as(SignedImm, @intCast(op.base.ref.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu))) -71441 .delta_elem_size => @intCast(@as(SignedImm, @intCast(op.base.ref.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu))) -
50793 @as(SignedImm, @intCast(op.index.ref.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)))),71442 @as(SignedImm, @intCast(op.index.ref.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)))),
50794 .size_sub_elem_size => {71443 .size_sub_elem_size => {
50795 const ty = op.base.ref.deref(s).typeOf(s.cg);71444 const ty = op.base.ref.typeOf(s);
50796 break :lhs @intCast(ty.abiSize(s.cg.pt.zcu) - ty.elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu));71445 break :lhs @intCast(ty.abiSize(s.cg.pt.zcu) - ty.elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu));
50797 },71446 },
50798 .unaligned_size => @intCast(s.cg.unalignedSize(op.base.ref.deref(s).typeOf(s.cg))),71447 .unaligned_size => @intCast(s.cg.unalignedSize(op.base.ref.typeOf(s))),
50799 .bit_size => @intCast(op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)),71448 .bit_size => @intCast(op.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)),
50800 .src0_bit_size => @intCast(Select.Operand.Ref.src0.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)),71449 .src0_bit_size => @intCast(Select.Operand.Ref.src0.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)),
50801 .len => @intCast(op.base.ref.deref(s).typeOf(s.cg).vectorLen(s.cg.pt.zcu)),71450 .len => @intCast(op.base.ref.typeOf(s).vectorLen(s.cg.pt.zcu)),
50802 .elem_limbs => @intCast(@divExact(71451 .elem_limbs => @intCast(@divExact(
50803 op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).abiSize(s.cg.pt.zcu),71452 op.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).abiSize(s.cg.pt.zcu),
50804 @divExact(op.base.size.bitSize(s.cg.target), 8),71453 @divExact(op.base.size.bitSize(s.cg.target), 8),
50805 )),71454 )),
50806 .elem_size => @intCast(op.base.ref.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)),71455 .elem_size => @intCast(op.base.ref.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)),
50807 .src0_elem_size => @intCast(Select.Operand.Ref.src0.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)),71456 .src0_elem_size => @intCast(Select.Operand.Ref.src0.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)),
50808 .src0_elem_size_times_src1 => @intCast(Select.Operand.Ref.src0.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu) *71457 .src0_elem_size_times_src1 => @intCast(Select.Operand.Ref.src0.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu) *
50809 Select.Operand.Ref.src1.deref(s).tracking(s.cg).short.immediate),71458 Select.Operand.Ref.src1.valueOf(s).immediate),
50810 .log2_src0_elem_size => @intCast(std.math.log2(Select.Operand.Ref.src0.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu))),71459 .log2_src0_elem_size => @intCast(std.math.log2(Select.Operand.Ref.src0.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu))),
50811 .smin => @as(SignedImm, std.math.minInt(SignedImm)) >> @truncate(71460 .smin => @as(SignedImm, std.math.minInt(SignedImm)) >> @truncate(
50812 -%op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu),71461 -%op.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu),
50813 ),71462 ),
50814 .smax => @as(SignedImm, std.math.maxInt(SignedImm)) >> @truncate(71463 .smax => @as(SignedImm, std.math.maxInt(SignedImm)) >> @truncate(
50815 -%op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu),71464 -%op.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu),
50816 ),71465 ),
50817 .umax => @bitCast(@as(UnsignedImm, std.math.maxInt(UnsignedImm)) >> @truncate(71466 .umax => @bitCast(@as(UnsignedImm, std.math.maxInt(UnsignedImm)) >> @truncate(
50818 -%op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu),71467 -%op.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu),
50819 )),71468 )),
50820 };71469 };
50821 const rhs = op.flags.adjust.rhs.toLog2();71470 const rhs = op.flags.adjust.rhs.toLog2();
...@@ -50826,6 +71475,7 @@ const Select = struct {...@@ -50826,6 +71475,7 @@ const Select = struct {
50826 break :res res[0];71475 break :res res[0];
50827 },71476 },
50828 .div => @shrExact(lhs, rhs),71477 .div => @shrExact(lhs, rhs),
71478 .rem_8_mul => lhs & (@as(SignedImm, 1) << @intCast(@as(u3, 3) + rhs)) - 1,
50829 };71479 };
50830 return switch (op.flags.adjust.sign) {71480 return switch (op.flags.adjust.sign) {
50831 .neg => op.imm - res,71481 .neg => op.imm - res,
...@@ -50842,7 +71492,7 @@ const Select = struct {...@@ -50842,7 +71492,7 @@ const Select = struct {
50842 label.* = @intCast(s.cg.mir_instructions.len);71492 label.* = @intCast(s.cg.mir_instructions.len);
50843 break .{ .inst = undefined };71493 break .{ .inst = undefined };
50844 } else unreachable,71494 } else unreachable,
50845 .ref => switch (op.base.ref.deref(s).tracking(s.cg).short) {71495 .ref => switch (op.base.ref.valueOf(s)) {
50846 .immediate => |imm| .{ .imm = switch (op.base.size) {71496 .immediate => |imm| .{ .imm = switch (op.base.size) {
50847 .byte => if (std.math.cast(i8, @as(i64, @bitCast(imm)))) |simm| .s(simm) else .u(@as(u8, @intCast(imm))),71497 .byte => if (std.math.cast(i8, @as(i64, @bitCast(imm)))) |simm| .s(simm) else .u(@as(u8, @intCast(imm))),
50848 .word => if (std.math.cast(i16, @as(i64, @bitCast(imm)))) |simm| .s(simm) else .u(@as(u16, @intCast(imm))),71498 .word => if (std.math.cast(i16, @as(i64, @bitCast(imm)))) |simm| .s(simm) else .u(@as(u16, @intCast(imm))),
...@@ -50857,21 +71507,21 @@ const Select = struct {...@@ -50857,21 +71507,21 @@ const Select = struct {
50857 .simm => .{ .imm = .s(op.adjustedImm(i32, s)) },71507 .simm => .{ .imm = .s(op.adjustedImm(i32, s)) },
50858 .uimm => .{ .imm = .u(@bitCast(op.adjustedImm(i64, s))) },71508 .uimm => .{ .imm = .u(@bitCast(op.adjustedImm(i64, s))) },
50859 .lea => .{ .mem = .{71509 .lea => .{ .mem = .{
50860 .base = .{ .reg = registerAlias(op.base.ref.deref(s).tracking(s.cg).short.register, @divExact(s.cg.target.ptrBitWidth(), 8)) },71510 .base = .{ .reg = registerAlias(op.base.ref.valueOf(s).register, @divExact(s.cg.target.ptrBitWidth(), 8)) },
50861 .mod = .{ .rm = .{71511 .mod = .{ .rm = .{
50862 .size = op.base.size,71512 .size = op.base.size,
50863 .index = switch (op.index.ref) {71513 .index = switch (op.index.ref) {
50864 else => |ref| registerAlias(ref.deref(s).tracking(s.cg).short.register, @divExact(s.cg.target.ptrBitWidth(), 8)),71514 else => |ref| registerAlias(ref.valueOf(s).register, @divExact(s.cg.target.ptrBitWidth(), 8)),
50865 .none => .none,71515 .none => .none,
50866 },71516 },
50867 .scale = op.index.scale,71517 .scale = op.index.scale,
50868 .disp = op.adjustedImm(i32, s),71518 .disp = op.adjustedImm(i32, s),
50869 } },71519 } },
50870 } },71520 } },
50871 .mem => .{ .mem = try op.base.ref.deref(s).tracking(s.cg).short.mem(s.cg, .{71521 .mem => .{ .mem = try op.base.ref.valueOf(s).mem(s.cg, .{
50872 .size = op.base.size,71522 .size = op.base.size,
50873 .index = switch (op.index.ref) {71523 .index = switch (op.index.ref) {
50874 else => |ref| registerAlias(ref.deref(s).tracking(s.cg).short.register, @divExact(s.cg.target.ptrBitWidth(), 8)),71524 else => |ref| registerAlias(ref.valueOf(s).register, @divExact(s.cg.target.ptrBitWidth(), 8)),
50875 .none => .none,71525 .none => .none,
50876 },71526 },
50877 .scale = op.index.scale,71527 .scale = op.index.scale,
...@@ -50888,7 +71538,7 @@ fn select(...@@ -50888,7 +71538,7 @@ fn select(
50888 src_temps: []Temp,71538 src_temps: []Temp,
50889 cases: []const Select.Case,71539 cases: []const Select.Case,
50890) !void {71540) !void {
50891 @setEvalBranchQuota(33_600);71541 @setEvalBranchQuota(33_500);
50892 cases: for (cases) |case| {71542 cases: for (cases) |case| {
50893 for (case.required_features) |required_feature| if (required_feature) |feature| if (!cg.hasFeature(feature)) continue :cases;71543 for (case.required_features) |required_feature| if (required_feature) |feature| if (!cg.hasFeature(feature)) continue :cases;
50894 for (case.src_constraints[0..src_temps.len], src_temps) |src_constraint, src_temp| if (!src_constraint.accepts(src_temp.typeOf(cg), cg)) continue :cases;71544 for (case.src_constraints[0..src_temps.len], src_temps) |src_constraint, src_temp| if (!src_constraint.accepts(src_temp.typeOf(cg), cg)) continue :cases;
...@@ -50914,12 +71564,21 @@ fn select(...@@ -50914,12 +71564,21 @@ fn select(
50914 var s: Select = .{71564 var s: Select = .{
50915 .cg = cg,71565 .cg = cg,
50916 .temps = undefined,71566 .temps = undefined,
71567 .types = undefined,
50917 .labels = @splat(.{ .forward = @splat(null), .backward = null }),71568 .labels = @splat(.{ .forward = @splat(null), .backward = null }),
50918 .top = 0,71569 .top = 0,
50919 };71570 };
50920 const tmp_slots = s.temps[@intFromEnum(Select.Operand.Ref.tmp0)..@intFromEnum(Select.Operand.Ref.dst0)];71571 const s_tmp_types = s.types[@intFromEnum(Select.Operand.Ref.tmp0)..@intFromEnum(Select.Operand.Ref.dst0)];
50921 const dst_slots = s.temps[@intFromEnum(Select.Operand.Ref.dst0)..@intFromEnum(Select.Operand.Ref.src0)];71572 const s_tmp_temps = s.temps[@intFromEnum(Select.Operand.Ref.tmp0)..@intFromEnum(Select.Operand.Ref.dst0)];
50922 const src_slots = s.temps[@intFromEnum(Select.Operand.Ref.src0)..@intFromEnum(Select.Operand.Ref.none)];71573 const s_dst_types = s.types[@intFromEnum(Select.Operand.Ref.dst0)..@intFromEnum(Select.Operand.Ref.src0)];
71574 const s_dst_temps = s.temps[@intFromEnum(Select.Operand.Ref.dst0)..@intFromEnum(Select.Operand.Ref.src0)];
71575 const s_src_types = s.types[@intFromEnum(Select.Operand.Ref.src0)..@intFromEnum(Select.Operand.Ref.none)];
71576 const s_src_temps = s.temps[@intFromEnum(Select.Operand.Ref.src0)..@intFromEnum(Select.Operand.Ref.none)];
71577
71578 for (s_tmp_types, case.extra_temps) |*ty, spec| ty.* = spec.type;
71579 @memcpy(s_dst_types[0..dst_tys.len], dst_tys);
71580 for (s_src_types[0..src_temps.len], src_temps) |*ty, temp| ty.* = temp.typeOf(cg);
71581 std.mem.swap(Type, &s_src_types[pattern.commute[0]], &s_src_types[pattern.commute[1]]);
5092371582
50924 caller_preserved: {71583 caller_preserved: {
50925 const cc = switch (case.clobbers.caller_preserved) {71584 const cc = switch (case.clobbers.caller_preserved) {
...@@ -50943,23 +71602,23 @@ fn select(...@@ -50943,23 +71602,23 @@ fn select(
50943 }71602 }
50944 }71603 }
5094571604
50946 @memcpy(src_slots[0..src_temps.len], src_temps);71605 @memcpy(s_src_temps[0..src_temps.len], src_temps);
50947 std.mem.swap(Temp, &src_slots[pattern.commute[0]], &src_slots[pattern.commute[1]]);71606 std.mem.swap(Temp, &s_src_temps[pattern.commute[0]], &s_src_temps[pattern.commute[1]]);
50948 for (dst_temps, dst_tys, case.dst_temps[0..dst_temps.len]) |*dst_temp, dst_ty, dst_kind| {71607 for (dst_temps, dst_tys, case.dst_temps[0..dst_temps.len]) |*dst_temp, dst_ty, dst_kind| {
50949 if (dst_kind.pass() != 1) continue;71608 if (dst_kind.pass() != 1) continue;
50950 dst_temp.*, _ = try Select.TempSpec.create(.{ .type = dst_ty, .kind = dst_kind }, &s);71609 dst_temp.*, _ = try Select.TempSpec.create(.{ .type = dst_ty, .kind = dst_kind }, &s);
50951 }71610 }
50952 var tmp_owned: [tmp_slots.len]bool = @splat(false);71611 var tmp_owned: [s_tmp_temps.len]bool = @splat(false);
50953 for (1..3) |pass| for (tmp_slots, &tmp_owned, case.extra_temps) |*slot, *owned, spec| {71612 for (1..3) |pass| for (s_tmp_temps, &tmp_owned, case.extra_temps) |*temp, *owned, spec| {
50954 if (spec.kind.pass() != pass) continue;71613 if (spec.kind.pass() != pass) continue;
50955 slot.*, owned.* = try spec.create(&s);71614 temp.*, owned.* = try spec.create(&s);
50956 };71615 };
5095771616
50958 while (true) for (pattern.src[0..src_temps.len], src_temps) |src_pattern, *src_temp| {71617 while (true) for (pattern.src[0..src_temps.len], src_temps) |src_pattern, *src_temp| {
50959 if (try src_pattern.convert(src_temp, cg)) break;71618 if (try src_pattern.convert(src_temp, cg)) break;
50960 } else break;71619 } else break;
50961 @memcpy(src_slots[0..src_temps.len], src_temps);71620 @memcpy(s_src_temps[0..src_temps.len], src_temps);
50962 std.mem.swap(Temp, &src_slots[pattern.commute[0]], &src_slots[pattern.commute[1]]);71621 std.mem.swap(Temp, &s_src_temps[pattern.commute[0]], &s_src_temps[pattern.commute[1]]);
5096371622
50964 if (case.clobbers.eflags) try cg.spillEflagsIfOccupied();71623 if (case.clobbers.eflags) try cg.spillEflagsIfOccupied();
5096571624
...@@ -50967,7 +71626,7 @@ fn select(...@@ -50967,7 +71626,7 @@ fn select(
50967 if (dst_kind.pass() != 2) continue;71626 if (dst_kind.pass() != 2) continue;
50968 dst_temp.*, _ = try Select.TempSpec.create(.{ .type = dst_ty, .kind = dst_kind }, &s);71627 dst_temp.*, _ = try Select.TempSpec.create(.{ .type = dst_ty, .kind = dst_kind }, &s);
50969 }71628 }
50970 @memcpy(dst_slots[0..dst_temps.len], dst_temps);71629 @memcpy(s_dst_temps[0..dst_temps.len], dst_temps);
5097171630
50972 switch (case.each) {71631 switch (case.each) {
50973 .once => |body| {71632 .once => |body| {
...@@ -50996,7 +71655,7 @@ fn select(...@@ -50996,7 +71655,7 @@ fn select(
50996 }71655 }
50997 }71656 }
50998 for (dst_temps, case.dst_temps[0..dst_temps.len]) |dst_temp, dst_kind| dst_kind.finish(dst_temp, &s);71657 for (dst_temps, case.dst_temps[0..dst_temps.len]) |dst_temp, dst_kind| dst_kind.finish(dst_temp, &s);
50999 for (tmp_owned, tmp_slots) |owned, temp| if (owned) try temp.die(cg);71658 for (tmp_owned, s_tmp_temps) |owned, temp| if (owned) try temp.die(cg);
51000 return;71659 return;
51001 }71660 }
51002 }71661 }
src/arch/x86_64/bits.zig+15-7
...@@ -177,7 +177,13 @@ pub const Condition = enum(u5) {...@@ -177,7 +177,13 @@ pub const Condition = enum(u5) {
177177
178/// The immediate operand of vcvtps2ph.178/// The immediate operand of vcvtps2ph.
179pub const RoundMode = packed struct(u5) {179pub const RoundMode = packed struct(u5) {
180 mode: enum(u4) {180 direction: Direction = .mxcsr,
181 precision: enum(u1) {
182 normal = 0b0,
183 inexact = 0b1,
184 } = .normal,
185
186 pub const Direction = enum(u4) {
181 /// Round to nearest (even)187 /// Round to nearest (even)
182 nearest = 0b0_00,188 nearest = 0b0_00,
183 /// Round down (toward -∞)189 /// Round down (toward -∞)
...@@ -188,11 +194,7 @@ pub const RoundMode = packed struct(u5) {...@@ -188,11 +194,7 @@ pub const RoundMode = packed struct(u5) {
188 zero = 0b0_11,194 zero = 0b0_11,
189 /// Use current rounding mode of MXCSR.RC195 /// Use current rounding mode of MXCSR.RC
190 mxcsr = 0b1_00,196 mxcsr = 0b1_00,
191 } = .mxcsr,197 };
192 precision: enum(u1) {
193 normal = 0b0,
194 inexact = 0b1,
195 } = .normal,
196198
197 pub fn imm(mode: RoundMode) Immediate {199 pub fn imm(mode: RoundMode) Immediate {
198 return .u(@as(@typeInfo(RoundMode).@"struct".backing_integer.?, @bitCast(mode)));200 return .u(@as(@typeInfo(RoundMode).@"struct".backing_integer.?, @bitCast(mode)));
...@@ -702,6 +704,7 @@ pub const Memory = struct {...@@ -702,6 +704,7 @@ pub const Memory = struct {
702 pub const Size = enum(u4) {704 pub const Size = enum(u4) {
703 none,705 none,
704 ptr,706 ptr,
707 gpr,
705 byte,708 byte,
706 word,709 word,
707 dword,710 dword,
...@@ -742,6 +745,11 @@ pub const Memory = struct {...@@ -742,6 +745,11 @@ pub const Memory = struct {
742 return switch (s) {745 return switch (s) {
743 .none => 0,746 .none => 0,
744 .ptr => target.ptrBitWidth(),747 .ptr => target.ptrBitWidth(),
748 .gpr => switch (target.cpu.arch) {
749 else => unreachable,
750 .x86 => 32,
751 .x86_64 => 64,
752 },
745 .byte => 8,753 .byte => 8,
746 .word => 16,754 .word => 16,
747 .dword => 32,755 .dword => 32,
...@@ -763,7 +771,7 @@ pub const Memory = struct {...@@ -763,7 +771,7 @@ pub const Memory = struct {
763 try writer.writeAll(@tagName(s));771 try writer.writeAll(@tagName(s));
764 switch (s) {772 switch (s) {
765 .none => unreachable,773 .none => unreachable,
766 .ptr => {},774 .ptr, .gpr => {},
767 else => {775 else => {
768 try writer.writeByte(' ');776 try writer.writeByte(' ');
769 try writer.writeAll("ptr");777 try writer.writeAll("ptr");
src/arch/x86_64/encodings.zig+1-1
...@@ -19,7 +19,7 @@ pub const table = [_]Entry{...@@ -19,7 +19,7 @@ pub const table = [_]Entry{
19 .{ .aad, .zi, &.{ .imm8 }, &.{ 0xd5 }, 0, .none, .@"32bit" },19 .{ .aad, .zi, &.{ .imm8 }, &.{ 0xd5 }, 0, .none, .@"32bit" },
2020
21 .{ .aam, .z, &.{ }, &.{ 0xd4, 0x0a }, 0, .none, .@"32bit" },21 .{ .aam, .z, &.{ }, &.{ 0xd4, 0x0a }, 0, .none, .@"32bit" },
22 .{ .aam, .z, &.{ .imm8 }, &.{ 0xd4 }, 0, .none, .@"32bit" },22 .{ .aam, .zi, &.{ .imm8 }, &.{ 0xd4 }, 0, .none, .@"32bit" },
2323
24 .{ .aas, .z, &.{}, &.{ 0x3f }, 0, .none, .@"32bit" },24 .{ .aas, .z, &.{}, &.{ 0x3f }, 0, .none, .@"32bit" },
2525
test/behavior/floatop.zig+18-15
...@@ -156,7 +156,13 @@ test "cmp f128" {...@@ -156,7 +156,13 @@ test "cmp f128" {
156}156}
157157
158test "cmp f80/c_longdouble" {158test "cmp f80/c_longdouble" {
159 if (true) return error.SkipZigTest;159 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
160 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
161 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
162 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
163 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
164 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
165 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
160166
161 try testCmp(f80);167 try testCmp(f80);
162 try comptime testCmp(f80);168 try comptime testCmp(f80);
...@@ -453,7 +459,7 @@ test "@sin with vectors" {...@@ -453,7 +459,7 @@ test "@sin with vectors" {
453 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO459 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
454 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO460 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
455 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO461 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
456 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;462 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
457 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;463 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
458464
459 try testSinWithVectors();465 try testSinWithVectors();
...@@ -526,7 +532,7 @@ test "@cos with vectors" {...@@ -526,7 +532,7 @@ test "@cos with vectors" {
526 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO532 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
527 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO533 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
528 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO534 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
529 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;535 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
530 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;536 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
531537
532 try testCosWithVectors();538 try testCosWithVectors();
...@@ -600,7 +606,7 @@ test "@tan with vectors" {...@@ -600,7 +606,7 @@ test "@tan with vectors" {
600 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO606 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
601 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO607 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
602 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO608 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
603 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;609 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
604 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;610 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
605611
606 try testTanWithVectors();612 try testTanWithVectors();
...@@ -677,7 +683,7 @@ test "@exp with vectors" {...@@ -677,7 +683,7 @@ test "@exp with vectors" {
677 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO683 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
678 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO684 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
679 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO685 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
680 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;686 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
681 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;687 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
682688
683 try testExpWithVectors();689 try testExpWithVectors();
...@@ -749,7 +755,7 @@ test "@exp2 with @vectors" {...@@ -749,7 +755,7 @@ test "@exp2 with @vectors" {
749 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO755 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
750 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO756 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
751 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO757 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
752 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;758 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
753 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;759 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
754760
755 try testExp2WithVectors();761 try testExp2WithVectors();
...@@ -822,7 +828,7 @@ test "@log with @vectors" {...@@ -822,7 +828,7 @@ test "@log with @vectors" {
822 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO828 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
823 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO829 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
824 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO830 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
825 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;831 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
826 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;832 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
827833
828 {834 {
...@@ -896,7 +902,7 @@ test "@log2 with vectors" {...@@ -896,7 +902,7 @@ test "@log2 with vectors" {
896 if (builtin.zig_backend == .stage2_llvm and902 if (builtin.zig_backend == .stage2_llvm and
897 builtin.cpu.arch == .aarch64 and903 builtin.cpu.arch == .aarch64 and
898 builtin.os.tag == .windows) return error.SkipZigTest;904 builtin.os.tag == .windows) return error.SkipZigTest;
899 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;905 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
900906
901 try testLog2WithVectors();907 try testLog2WithVectors();
902 try comptime testLog2WithVectors();908 try comptime testLog2WithVectors();
...@@ -967,7 +973,7 @@ test "@log10 with vectors" {...@@ -967,7 +973,7 @@ test "@log10 with vectors" {
967 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO973 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
968 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO974 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
969 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO975 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
970 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;976 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
971 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;977 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
972978
973 try testLog10WithVectors();979 try testLog10WithVectors();
...@@ -1188,8 +1194,7 @@ test "@floor with vectors" {...@@ -1188,8 +1194,7 @@ test "@floor with vectors" {
1188 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1194 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1189 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1195 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1190 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1196 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1191 if (builtin.zig_backend == .stage2_x86_64 and1197 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
1192 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest;
11931198
1194 try testFloorWithVectors();1199 try testFloorWithVectors();
1195 try comptime testFloorWithVectors();1200 try comptime testFloorWithVectors();
...@@ -1286,8 +1291,7 @@ test "@ceil with vectors" {...@@ -1286,8 +1291,7 @@ test "@ceil with vectors" {
1286 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1291 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1287 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1292 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1288 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1293 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1289 if (builtin.zig_backend == .stage2_x86_64 and1294 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
1290 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest;
12911295
1292 try testCeilWithVectors();1296 try testCeilWithVectors();
1293 try comptime testCeilWithVectors();1297 try comptime testCeilWithVectors();
...@@ -1384,8 +1388,7 @@ test "@trunc with vectors" {...@@ -1384,8 +1388,7 @@ test "@trunc with vectors" {
1384 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1388 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1385 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1389 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1386 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1390 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1387 if (builtin.zig_backend == .stage2_x86_64 and1391 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
1388 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest;
13891392
1390 try testTruncWithVectors();1393 try testTruncWithVectors();
1391 try comptime testTruncWithVectors();1394 try comptime testTruncWithVectors();
test/behavior/memset.zig+2
...@@ -84,6 +84,7 @@ test "memset with 1-byte struct element" {...@@ -84,6 +84,7 @@ test "memset with 1-byte struct element" {
84 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;84 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
85 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;85 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
86 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;86 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
87 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
8788
88 const S = struct { x: bool };89 const S = struct { x: bool };
89 var buf: [5]S = undefined;90 var buf: [5]S = undefined;
...@@ -97,6 +98,7 @@ test "memset with 1-byte array element" {...@@ -97,6 +98,7 @@ test "memset with 1-byte array element" {
97 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;98 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
98 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;99 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
99 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;100 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
101 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
100102
101 const A = [1]bool;103 const A = [1]bool;
102 var buf: [5]A = undefined;104 var buf: [5]A = undefined;
test/behavior/muladd.zig+9-13
...@@ -2,16 +2,12 @@ const std = @import("std");...@@ -2,16 +2,12 @@ const std = @import("std");
2const builtin = @import("builtin");2const builtin = @import("builtin");
3const expect = std.testing.expect;3const expect = std.testing.expect;
44
5const no_x86_64_hardware_fma_support = builtin.zig_backend == .stage2_x86_64 and
6 !std.Target.x86.featureSetHas(builtin.cpu.features, .fma);
7
8test "@mulAdd" {5test "@mulAdd" {
9 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10
11 if (no_x86_64_hardware_fma_support) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1511
16 try comptime testMulAdd();12 try comptime testMulAdd();
17 try testMulAdd();13 try testMulAdd();
...@@ -110,10 +106,10 @@ fn vector16() !void {...@@ -110,10 +106,10 @@ fn vector16() !void {
110106
111test "vector f16" {107test "vector f16" {
112 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO108 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
113 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
114 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO109 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
115 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO110 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
116 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
112 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
117 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;113 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
118114
119 try comptime vector16();115 try comptime vector16();
...@@ -135,11 +131,11 @@ fn vector32() !void {...@@ -135,11 +131,11 @@ fn vector32() !void {
135131
136test "vector f32" {132test "vector f32" {
137 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO133 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
138 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
139 if (no_x86_64_hardware_fma_support) return error.SkipZigTest; // TODO
140 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO134 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
141 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO135 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
142 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO136 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
137 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
138 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
143139
144 try comptime vector32();140 try comptime vector32();
145 try vector32();141 try vector32();
...@@ -160,11 +156,11 @@ fn vector64() !void {...@@ -160,11 +156,11 @@ fn vector64() !void {
160156
161test "vector f64" {157test "vector f64" {
162 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO158 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
163 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
164 if (no_x86_64_hardware_fma_support) return error.SkipZigTest; // TODO
165 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO159 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
166 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO160 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
167 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO161 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
162 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
163 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
168164
169 try comptime vector64();165 try comptime vector64();
170 try vector64();166 try vector64();
...@@ -184,12 +180,12 @@ fn vector80() !void {...@@ -184,12 +180,12 @@ fn vector80() !void {
184180
185test "vector f80" {181test "vector f80" {
186 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO182 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
187 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
188 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO183 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
189 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO184 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
190 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO185 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
191 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;186 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
192 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;187 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
188 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
193 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;189 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
194190
195 try comptime vector80();191 try comptime vector80();
...@@ -211,12 +207,12 @@ fn vector128() !void {...@@ -211,12 +207,12 @@ fn vector128() !void {
211207
212test "vector f128" {208test "vector f128" {
213 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO209 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
214 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
215 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO210 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
216 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO211 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
217 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO212 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
218 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;213 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
219 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;214 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
215 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
220 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;216 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
221217
222 try comptime vector128();218 try comptime vector128();
test/behavior/vector.zig+1-1
...@@ -102,7 +102,7 @@ test "vector float operators" {...@@ -102,7 +102,7 @@ test "vector float operators" {
102 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO102 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
103 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;103 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
104 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;104 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
105 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO105 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
106106
107 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {107 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {
108 // Triggers an assertion with LLVM 18:108 // Triggers an assertion with LLVM 18:
test/behavior/x86_64/math.zig+2482-746
...@@ -37,6 +37,14 @@ inline fn splat(comptime Type: type, scalar: Scalar(Type)) Type {...@@ -37,6 +37,14 @@ inline fn splat(comptime Type: type, scalar: Scalar(Type)) Type {
37 .vector => @splat(scalar),37 .vector => @splat(scalar),
38 };38 };
39}39}
40// inline to avoid a runtime `@select`
41inline fn select(cond: anytype, lhs: anytype, rhs: @TypeOf(lhs)) @TypeOf(lhs) {
42 return switch (@typeInfo(@TypeOf(cond))) {
43 .bool => if (cond) lhs else rhs,
44 .vector => @select(Scalar(@TypeOf(lhs)), cond, lhs, rhs),
45 else => @compileError(@typeName(@TypeOf(cond))),
46 };
47}
40fn sign(rhs: anytype) switch (@typeInfo(@TypeOf(rhs))) {48fn sign(rhs: anytype) switch (@typeInfo(@TypeOf(rhs))) {
41 else => bool,49 else => bool,
42 .vector => |vector| @Vector(vector.len, bool),50 .vector => |vector| @Vector(vector.len, bool),
...@@ -84,65 +92,81 @@ fn boolOr(lhs: anytype, rhs: @TypeOf(lhs)) @TypeOf(lhs) {...@@ -84,65 +92,81 @@ fn boolOr(lhs: anytype, rhs: @TypeOf(lhs)) @TypeOf(lhs) {
84 @compileError("unsupported boolOr type: " ++ @typeName(@TypeOf(lhs)));92 @compileError("unsupported boolOr type: " ++ @typeName(@TypeOf(lhs)));
85}93}
8694
95const Compare = enum { strict, relaxed, approx, approx_int };
87// noinline for a more helpful stack trace96// noinline for a more helpful stack trace
88noinline fn checkExpected(expected: anytype, actual: @TypeOf(expected), comptime strict: bool) !void {97noinline fn checkExpected(expected: anytype, actual: @TypeOf(expected), comptime compare: Compare) !void {
89 const info = @typeInfo(@TypeOf(expected));98 const Expected = @TypeOf(expected);
90 const unexpected = unexpected: switch (switch (info) {99 const unexpected = unexpected: switch (@typeInfo(Scalar(Expected))) {
91 else => info,
92 .vector => |vector| @typeInfo(vector.child),
93 }) {
94 else => expected != actual,100 else => expected != actual,
95 .float => {101 .float => switch (compare) {
96 const unequal = boolAnd(expected != actual, boolOr(expected == expected, actual == actual));102 .strict, .relaxed => {
97 break :unexpected switch (strict) {103 const unequal = boolAnd(expected != actual, boolOr(expected == expected, actual == actual));
98 false => unequal,104 break :unexpected switch (compare) {
99 true => boolOr(unequal, sign(expected) != sign(actual)),105 .strict => boolOr(unequal, sign(expected) != sign(actual)),
100 };106 .relaxed => unequal,
107 .approx, .approx_int => comptime unreachable,
108 };
109 },
110 .approx, .approx_int => {
111 const epsilon = math.floatEps(Scalar(Expected));
112 const tolerance = @sqrt(epsilon);
113 break :unexpected @abs(expected - actual) > @max(
114 @abs(expected) * splat(Expected, tolerance),
115 splat(Expected, switch (compare) {
116 .strict, .relaxed => comptime unreachable,
117 .approx => tolerance,
118 .approx_int => 1,
119 }),
120 );
121 },
101 },122 },
102 };123 };
103 if (switch (info) {124 if (switch (@typeInfo(Expected)) {
104 else => unexpected,125 else => unexpected,
105 .vector => @reduce(.Or, unexpected),126 .vector => @reduce(.Or, unexpected),
106 }) return error.Unexpected;127 }) return error.Unexpected;
107}128}
108test checkExpected {129test checkExpected {
109 if (checkExpected(nan(f16), nan(f16), true) == error.Unexpected) return error.Unexpected;130 if (checkExpected(nan(f16), nan(f16), .strict) == error.Unexpected) return error.Unexpected;
110 if (checkExpected(nan(f16), -nan(f16), true) != error.Unexpected) return error.Unexpected;131 if (checkExpected(nan(f16), -nan(f16), .strict) != error.Unexpected) return error.Unexpected;
111 if (checkExpected(@as(f16, 0.0), @as(f16, 0.0), true) == error.Unexpected) return error.Unexpected;132 if (checkExpected(@as(f16, 0.0), @as(f16, 0.0), .strict) == error.Unexpected) return error.Unexpected;
112 if (checkExpected(@as(f16, -0.0), @as(f16, -0.0), true) == error.Unexpected) return error.Unexpected;133 if (checkExpected(@as(f16, -0.0), @as(f16, -0.0), .strict) == error.Unexpected) return error.Unexpected;
113 if (checkExpected(@as(f16, -0.0), @as(f16, 0.0), true) != error.Unexpected) return error.Unexpected;134 if (checkExpected(@as(f16, -0.0), @as(f16, 0.0), .strict) != error.Unexpected) return error.Unexpected;
114 if (checkExpected(@as(f16, 0.0), @as(f16, -0.0), true) != error.Unexpected) return error.Unexpected;135 if (checkExpected(@as(f16, 0.0), @as(f16, -0.0), .strict) != error.Unexpected) return error.Unexpected;
115136
116 if (checkExpected(nan(f32), nan(f32), true) == error.Unexpected) return error.Unexpected;137 if (checkExpected(nan(f32), nan(f32), .strict) == error.Unexpected) return error.Unexpected;
117 if (checkExpected(nan(f32), -nan(f32), true) != error.Unexpected) return error.Unexpected;138 if (checkExpected(nan(f32), -nan(f32), .strict) != error.Unexpected) return error.Unexpected;
118 if (checkExpected(@as(f32, 0.0), @as(f32, 0.0), true) == error.Unexpected) return error.Unexpected;139 if (checkExpected(@as(f32, 0.0), @as(f32, 0.0), .strict) == error.Unexpected) return error.Unexpected;
119 if (checkExpected(@as(f32, -0.0), @as(f32, -0.0), true) == error.Unexpected) return error.Unexpected;140 if (checkExpected(@as(f32, -0.0), @as(f32, -0.0), .strict) == error.Unexpected) return error.Unexpected;
120 if (checkExpected(@as(f32, -0.0), @as(f32, 0.0), true) != error.Unexpected) return error.Unexpected;141 if (checkExpected(@as(f32, -0.0), @as(f32, 0.0), .strict) != error.Unexpected) return error.Unexpected;
121 if (checkExpected(@as(f32, 0.0), @as(f32, -0.0), true) != error.Unexpected) return error.Unexpected;142 if (checkExpected(@as(f32, 0.0), @as(f32, -0.0), .strict) != error.Unexpected) return error.Unexpected;
122143
123 if (checkExpected(nan(f64), nan(f64), true) == error.Unexpected) return error.Unexpected;144 if (checkExpected(nan(f64), nan(f64), .strict) == error.Unexpected) return error.Unexpected;
124 if (checkExpected(nan(f64), -nan(f64), true) != error.Unexpected) return error.Unexpected;145 if (checkExpected(nan(f64), -nan(f64), .strict) != error.Unexpected) return error.Unexpected;
125 if (checkExpected(@as(f64, 0.0), @as(f64, 0.0), true) == error.Unexpected) return error.Unexpected;146 if (checkExpected(@as(f64, 0.0), @as(f64, 0.0), .strict) == error.Unexpected) return error.Unexpected;
126 if (checkExpected(@as(f64, -0.0), @as(f64, -0.0), true) == error.Unexpected) return error.Unexpected;147 if (checkExpected(@as(f64, -0.0), @as(f64, -0.0), .strict) == error.Unexpected) return error.Unexpected;
127 if (checkExpected(@as(f64, -0.0), @as(f64, 0.0), true) != error.Unexpected) return error.Unexpected;148 if (checkExpected(@as(f64, -0.0), @as(f64, 0.0), .strict) != error.Unexpected) return error.Unexpected;
128 if (checkExpected(@as(f64, 0.0), @as(f64, -0.0), true) != error.Unexpected) return error.Unexpected;149 if (checkExpected(@as(f64, 0.0), @as(f64, -0.0), .strict) != error.Unexpected) return error.Unexpected;
129150
130 if (checkExpected(nan(f80), nan(f80), true) == error.Unexpected) return error.Unexpected;151 if (checkExpected(nan(f80), nan(f80), .strict) == error.Unexpected) return error.Unexpected;
131 if (checkExpected(nan(f80), -nan(f80), true) != error.Unexpected) return error.Unexpected;152 if (checkExpected(nan(f80), -nan(f80), .strict) != error.Unexpected) return error.Unexpected;
132 if (checkExpected(@as(f80, 0.0), @as(f80, 0.0), true) == error.Unexpected) return error.Unexpected;153 if (checkExpected(@as(f80, 0.0), @as(f80, 0.0), .strict) == error.Unexpected) return error.Unexpected;
133 if (checkExpected(@as(f80, -0.0), @as(f80, -0.0), true) == error.Unexpected) return error.Unexpected;154 if (checkExpected(@as(f80, -0.0), @as(f80, -0.0), .strict) == error.Unexpected) return error.Unexpected;
134 if (checkExpected(@as(f80, -0.0), @as(f80, 0.0), true) != error.Unexpected) return error.Unexpected;155 if (checkExpected(@as(f80, -0.0), @as(f80, 0.0), .strict) != error.Unexpected) return error.Unexpected;
135 if (checkExpected(@as(f80, 0.0), @as(f80, -0.0), true) != error.Unexpected) return error.Unexpected;156 if (checkExpected(@as(f80, 0.0), @as(f80, -0.0), .strict) != error.Unexpected) return error.Unexpected;
136157
137 if (checkExpected(nan(f128), nan(f128), true) == error.Unexpected) return error.Unexpected;158 if (checkExpected(nan(f128), nan(f128), .strict) == error.Unexpected) return error.Unexpected;
138 if (checkExpected(nan(f128), -nan(f128), true) != error.Unexpected) return error.Unexpected;159 if (checkExpected(nan(f128), -nan(f128), .strict) != error.Unexpected) return error.Unexpected;
139 if (checkExpected(@as(f128, 0.0), @as(f128, 0.0), true) == error.Unexpected) return error.Unexpected;160 if (checkExpected(@as(f128, 0.0), @as(f128, 0.0), .strict) == error.Unexpected) return error.Unexpected;
140 if (checkExpected(@as(f128, -0.0), @as(f128, -0.0), true) == error.Unexpected) return error.Unexpected;161 if (checkExpected(@as(f128, -0.0), @as(f128, -0.0), .strict) == error.Unexpected) return error.Unexpected;
141 if (checkExpected(@as(f128, -0.0), @as(f128, 0.0), true) != error.Unexpected) return error.Unexpected;162 if (checkExpected(@as(f128, -0.0), @as(f128, 0.0), .strict) != error.Unexpected) return error.Unexpected;
142 if (checkExpected(@as(f128, 0.0), @as(f128, -0.0), true) != error.Unexpected) return error.Unexpected;163 if (checkExpected(@as(f128, 0.0), @as(f128, -0.0), .strict) != error.Unexpected) return error.Unexpected;
143}164}
144165
145fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) type {166fn unary(comptime op: anytype, comptime opts: struct {
167 libc_name: ?[]const u8 = null,
168 compare: Compare = .relaxed,
169}) type {
146 return struct {170 return struct {
147 // noinline so that `mem_arg` is on the stack171 // noinline so that `mem_arg` is on the stack
148 noinline fn testArgKinds(172 noinline fn testArgKinds(
...@@ -166,12 +190,34 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t...@@ -166,12 +190,34 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
166 comptime imm_arg: Type,190 comptime imm_arg: Type,
167 mem_arg: Type,191 mem_arg: Type,
168 ) !void {192 ) !void {
169 const expected = comptime op(Type, imm_arg);193 const expected = expected: {
194 if (opts.libc_name) |libc_name| libc: {
195 const libc_func = @extern(*const fn (Scalar(Type)) callconv(.c) Scalar(Type), .{
196 .name = switch (Scalar(Type)) {
197 f16 => "__" ++ libc_name ++ "h",
198 f32 => libc_name ++ "f",
199 f64 => libc_name,
200 f80 => "__" ++ libc_name ++ "x",
201 f128 => libc_name ++ "q",
202 else => break :libc,
203 },
204 });
205 switch (@typeInfo(Type)) {
206 else => break :expected libc_func(imm_arg),
207 .vector => |vector| {
208 var res: Type = undefined;
209 inline for (0..vector.len) |i| res[i] = libc_func(imm_arg[i]);
210 break :expected res;
211 },
212 }
213 }
214 break :expected comptime op(Type, imm_arg);
215 };
170 var reg_arg = mem_arg;216 var reg_arg = mem_arg;
171 _ = .{&reg_arg};217 _ = .{&reg_arg};
172 try checkExpected(expected, op(Type, reg_arg), opts.strict);218 try checkExpected(expected, op(Type, reg_arg), opts.compare);
173 try checkExpected(expected, op(Type, mem_arg), opts.strict);219 try checkExpected(expected, op(Type, mem_arg), opts.compare);
174 try checkExpected(expected, op(Type, imm_arg), opts.strict);220 if (opts.libc_name == null) try checkExpected(expected, op(Type, imm_arg), opts.compare);
175 }221 }
176 // noinline for a more helpful stack trace222 // noinline for a more helpful stack trace
177 noinline fn testArgs(comptime Type: type, comptime imm_arg: Type) !void {223 noinline fn testArgs(comptime Type: type, comptime imm_arg: Type) !void {
...@@ -1628,7 +1674,7 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t...@@ -1628,7 +1674,7 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
1628 };1674 };
1629}1675}
16301676
1631fn cast(comptime op: anytype, comptime opts: struct { strict: bool = false }) type {1677fn cast(comptime op: anytype, comptime opts: struct { compare: Compare = .relaxed }) type {
1632 return struct {1678 return struct {
1633 // noinline so that `mem_arg` is on the stack1679 // noinline so that `mem_arg` is on the stack
1634 noinline fn testArgKinds(1680 noinline fn testArgKinds(
...@@ -1656,9 +1702,9 @@ fn cast(comptime op: anytype, comptime opts: struct { strict: bool = false }) ty...@@ -1656,9 +1702,9 @@ fn cast(comptime op: anytype, comptime opts: struct { strict: bool = false }) ty
1656 const expected = comptime op(Result, Type, imm_arg, imm_arg);1702 const expected = comptime op(Result, Type, imm_arg, imm_arg);
1657 var reg_arg = mem_arg;1703 var reg_arg = mem_arg;
1658 _ = .{&reg_arg};1704 _ = .{&reg_arg};
1659 try checkExpected(expected, op(Result, Type, reg_arg, imm_arg), opts.strict);1705 try checkExpected(expected, op(Result, Type, reg_arg, imm_arg), opts.compare);
1660 try checkExpected(expected, op(Result, Type, mem_arg, imm_arg), opts.strict);1706 try checkExpected(expected, op(Result, Type, mem_arg, imm_arg), opts.compare);
1661 try checkExpected(expected, op(Result, Type, imm_arg, imm_arg), opts.strict);1707 try checkExpected(expected, op(Result, Type, imm_arg, imm_arg), opts.compare);
1662 }1708 }
1663 // noinline for a more helpful stack trace1709 // noinline for a more helpful stack trace
1664 noinline fn testArgs(comptime Result: type, comptime Type: type, comptime imm_arg: Type) !void {1710 noinline fn testArgs(comptime Result: type, comptime Type: type, comptime imm_arg: Type) !void {
...@@ -5222,1392 +5268,2781 @@ fn cast(comptime op: anytype, comptime opts: struct { strict: bool = false }) ty...@@ -5222,1392 +5268,2781 @@ fn cast(comptime op: anytype, comptime opts: struct { strict: bool = false }) ty
5222 try testArgs(f128, f128, inf(f128));5268 try testArgs(f128, f128, inf(f128));
5223 try testArgs(f128, f128, nan(f128));5269 try testArgs(f128, f128, nan(f128));
5224 }5270 }
5225 fn testIntVectors() !void {5271 fn testSameSignednessIntVectors() !void {
5272 try testArgs(@Vector(1, i7), @Vector(1, i1), .{-1});
5226 try testArgs(@Vector(1, i8), @Vector(1, i1), .{-1});5273 try testArgs(@Vector(1, i8), @Vector(1, i1), .{-1});
5227 try testArgs(@Vector(1, u8), @Vector(1, i1), .{-1});5274 try testArgs(@Vector(1, i9), @Vector(1, i1), .{-1});
5275 try testArgs(@Vector(1, i15), @Vector(1, i1), .{-1});
5228 try testArgs(@Vector(1, i16), @Vector(1, i1), .{-1});5276 try testArgs(@Vector(1, i16), @Vector(1, i1), .{-1});
5229 try testArgs(@Vector(1, u16), @Vector(1, i1), .{-1});5277 try testArgs(@Vector(1, i17), @Vector(1, i1), .{-1});
5278 try testArgs(@Vector(1, i31), @Vector(1, i1), .{-1});
5230 try testArgs(@Vector(1, i32), @Vector(1, i1), .{-1});5279 try testArgs(@Vector(1, i32), @Vector(1, i1), .{-1});
5231 try testArgs(@Vector(1, u32), @Vector(1, i1), .{-1});5280 try testArgs(@Vector(1, i33), @Vector(1, i1), .{-1});
5281 try testArgs(@Vector(1, i63), @Vector(1, i1), .{-1});
5232 try testArgs(@Vector(1, i64), @Vector(1, i1), .{-1});5282 try testArgs(@Vector(1, i64), @Vector(1, i1), .{-1});
5233 try testArgs(@Vector(1, u64), @Vector(1, i1), .{-1});5283 try testArgs(@Vector(1, i65), @Vector(1, i1), .{-1});
5284 try testArgs(@Vector(1, i127), @Vector(1, i1), .{-1});
5234 try testArgs(@Vector(1, i128), @Vector(1, i1), .{-1});5285 try testArgs(@Vector(1, i128), @Vector(1, i1), .{-1});
5235 try testArgs(@Vector(1, u128), @Vector(1, i1), .{-1});5286 try testArgs(@Vector(1, i129), @Vector(1, i1), .{-1});
5287 try testArgs(@Vector(1, i255), @Vector(1, i1), .{-1});
5236 try testArgs(@Vector(1, i256), @Vector(1, i1), .{-1});5288 try testArgs(@Vector(1, i256), @Vector(1, i1), .{-1});
5237 try testArgs(@Vector(1, u256), @Vector(1, i1), .{-1});5289 try testArgs(@Vector(1, i257), @Vector(1, i1), .{-1});
5290 try testArgs(@Vector(1, i511), @Vector(1, i1), .{-1});
5238 try testArgs(@Vector(1, i512), @Vector(1, i1), .{-1});5291 try testArgs(@Vector(1, i512), @Vector(1, i1), .{-1});
5239 try testArgs(@Vector(1, u512), @Vector(1, i1), .{-1});5292 try testArgs(@Vector(1, i513), @Vector(1, i1), .{-1});
5293 try testArgs(@Vector(1, i1023), @Vector(1, i1), .{-1});
5240 try testArgs(@Vector(1, i1024), @Vector(1, i1), .{-1});5294 try testArgs(@Vector(1, i1024), @Vector(1, i1), .{-1});
5241 try testArgs(@Vector(1, u1024), @Vector(1, i1), .{-1});5295 try testArgs(@Vector(1, i1025), @Vector(1, i1), .{-1});
5242 try testArgs(@Vector(1, i8), @Vector(1, u1), .{1});5296 try testArgs(@Vector(1, u7), @Vector(1, u1), .{1});
5243 try testArgs(@Vector(1, u8), @Vector(1, u1), .{1});5297 try testArgs(@Vector(1, u8), @Vector(1, u1), .{1});
5244 try testArgs(@Vector(1, i16), @Vector(1, u1), .{1});5298 try testArgs(@Vector(1, u9), @Vector(1, u1), .{1});
5299 try testArgs(@Vector(1, u15), @Vector(1, u1), .{1});
5245 try testArgs(@Vector(1, u16), @Vector(1, u1), .{1});5300 try testArgs(@Vector(1, u16), @Vector(1, u1), .{1});
5246 try testArgs(@Vector(1, i32), @Vector(1, u1), .{1});5301 try testArgs(@Vector(1, u17), @Vector(1, u1), .{1});
5302 try testArgs(@Vector(1, u31), @Vector(1, u1), .{1});
5247 try testArgs(@Vector(1, u32), @Vector(1, u1), .{1});5303 try testArgs(@Vector(1, u32), @Vector(1, u1), .{1});
5248 try testArgs(@Vector(1, i64), @Vector(1, u1), .{1});5304 try testArgs(@Vector(1, u33), @Vector(1, u1), .{1});
5305 try testArgs(@Vector(1, u63), @Vector(1, u1), .{1});
5249 try testArgs(@Vector(1, u64), @Vector(1, u1), .{1});5306 try testArgs(@Vector(1, u64), @Vector(1, u1), .{1});
5250 try testArgs(@Vector(1, i128), @Vector(1, u1), .{1});5307 try testArgs(@Vector(1, u65), @Vector(1, u1), .{1});
5308 try testArgs(@Vector(1, u127), @Vector(1, u1), .{1});
5251 try testArgs(@Vector(1, u128), @Vector(1, u1), .{1});5309 try testArgs(@Vector(1, u128), @Vector(1, u1), .{1});
5252 try testArgs(@Vector(1, i256), @Vector(1, u1), .{1});5310 try testArgs(@Vector(1, u129), @Vector(1, u1), .{1});
5311 try testArgs(@Vector(1, u255), @Vector(1, u1), .{1});
5253 try testArgs(@Vector(1, u256), @Vector(1, u1), .{1});5312 try testArgs(@Vector(1, u256), @Vector(1, u1), .{1});
5254 try testArgs(@Vector(1, i512), @Vector(1, u1), .{1});5313 try testArgs(@Vector(1, u257), @Vector(1, u1), .{1});
5314 try testArgs(@Vector(1, u511), @Vector(1, u1), .{1});
5255 try testArgs(@Vector(1, u512), @Vector(1, u1), .{1});5315 try testArgs(@Vector(1, u512), @Vector(1, u1), .{1});
5256 try testArgs(@Vector(1, i1024), @Vector(1, u1), .{1});5316 try testArgs(@Vector(1, u513), @Vector(1, u1), .{1});
5317 try testArgs(@Vector(1, u1023), @Vector(1, u1), .{1});
5257 try testArgs(@Vector(1, u1024), @Vector(1, u1), .{1});5318 try testArgs(@Vector(1, u1024), @Vector(1, u1), .{1});
5319 try testArgs(@Vector(1, u1025), @Vector(1, u1), .{1});
52585320
5321 try testArgs(@Vector(2, i7), @Vector(2, i1), .{ -1, 0 });
5259 try testArgs(@Vector(2, i8), @Vector(2, i1), .{ -1, 0 });5322 try testArgs(@Vector(2, i8), @Vector(2, i1), .{ -1, 0 });
5260 try testArgs(@Vector(2, u8), @Vector(2, i1), .{ -1, 0 });5323 try testArgs(@Vector(2, i9), @Vector(2, i1), .{ -1, 0 });
5324 try testArgs(@Vector(2, i15), @Vector(2, i1), .{ -1, 0 });
5261 try testArgs(@Vector(2, i16), @Vector(2, i1), .{ -1, 0 });5325 try testArgs(@Vector(2, i16), @Vector(2, i1), .{ -1, 0 });
5262 try testArgs(@Vector(2, u16), @Vector(2, i1), .{ -1, 0 });5326 try testArgs(@Vector(2, i17), @Vector(2, i1), .{ -1, 0 });
5327 try testArgs(@Vector(2, i31), @Vector(2, i1), .{ -1, 0 });
5263 try testArgs(@Vector(2, i32), @Vector(2, i1), .{ -1, 0 });5328 try testArgs(@Vector(2, i32), @Vector(2, i1), .{ -1, 0 });
5264 try testArgs(@Vector(2, u32), @Vector(2, i1), .{ -1, 0 });5329 try testArgs(@Vector(2, i33), @Vector(2, i1), .{ -1, 0 });
5330 try testArgs(@Vector(2, i63), @Vector(2, i1), .{ -1, 0 });
5265 try testArgs(@Vector(2, i64), @Vector(2, i1), .{ -1, 0 });5331 try testArgs(@Vector(2, i64), @Vector(2, i1), .{ -1, 0 });
5266 try testArgs(@Vector(2, u64), @Vector(2, i1), .{ -1, 0 });5332 try testArgs(@Vector(2, i65), @Vector(2, i1), .{ -1, 0 });
5333 try testArgs(@Vector(2, i127), @Vector(2, i1), .{ -1, 0 });
5267 try testArgs(@Vector(2, i128), @Vector(2, i1), .{ -1, 0 });5334 try testArgs(@Vector(2, i128), @Vector(2, i1), .{ -1, 0 });
5268 try testArgs(@Vector(2, u128), @Vector(2, i1), .{ -1, 0 });5335 try testArgs(@Vector(2, i129), @Vector(2, i1), .{ -1, 0 });
5336 try testArgs(@Vector(2, i255), @Vector(2, i1), .{ -1, 0 });
5269 try testArgs(@Vector(2, i256), @Vector(2, i1), .{ -1, 0 });5337 try testArgs(@Vector(2, i256), @Vector(2, i1), .{ -1, 0 });
5270 try testArgs(@Vector(2, u256), @Vector(2, i1), .{ -1, 0 });5338 try testArgs(@Vector(2, i257), @Vector(2, i1), .{ -1, 0 });
5339 try testArgs(@Vector(2, i511), @Vector(2, i1), .{ -1, 0 });
5271 try testArgs(@Vector(2, i512), @Vector(2, i1), .{ -1, 0 });5340 try testArgs(@Vector(2, i512), @Vector(2, i1), .{ -1, 0 });
5272 try testArgs(@Vector(2, u512), @Vector(2, i1), .{ -1, 0 });5341 try testArgs(@Vector(2, i513), @Vector(2, i1), .{ -1, 0 });
5342 try testArgs(@Vector(2, i1023), @Vector(2, i1), .{ -1, 0 });
5273 try testArgs(@Vector(2, i1024), @Vector(2, i1), .{ -1, 0 });5343 try testArgs(@Vector(2, i1024), @Vector(2, i1), .{ -1, 0 });
5274 try testArgs(@Vector(2, u1024), @Vector(2, i1), .{ -1, 0 });5344 try testArgs(@Vector(2, i1025), @Vector(2, i1), .{ -1, 0 });
5275 try testArgs(@Vector(2, i8), @Vector(2, u1), .{ 0, 1 });5345 try testArgs(@Vector(2, u7), @Vector(2, u1), .{ 0, 1 });
5276 try testArgs(@Vector(2, u8), @Vector(2, u1), .{ 0, 1 });5346 try testArgs(@Vector(2, u8), @Vector(2, u1), .{ 0, 1 });
5277 try testArgs(@Vector(2, i16), @Vector(2, u1), .{ 0, 1 });5347 try testArgs(@Vector(2, u9), @Vector(2, u1), .{ 0, 1 });
5348 try testArgs(@Vector(2, u15), @Vector(2, u1), .{ 0, 1 });
5278 try testArgs(@Vector(2, u16), @Vector(2, u1), .{ 0, 1 });5349 try testArgs(@Vector(2, u16), @Vector(2, u1), .{ 0, 1 });
5279 try testArgs(@Vector(2, i32), @Vector(2, u1), .{ 0, 1 });5350 try testArgs(@Vector(2, u17), @Vector(2, u1), .{ 0, 1 });
5351 try testArgs(@Vector(2, u31), @Vector(2, u1), .{ 0, 1 });
5280 try testArgs(@Vector(2, u32), @Vector(2, u1), .{ 0, 1 });5352 try testArgs(@Vector(2, u32), @Vector(2, u1), .{ 0, 1 });
5281 try testArgs(@Vector(2, i64), @Vector(2, u1), .{ 0, 1 });5353 try testArgs(@Vector(2, u33), @Vector(2, u1), .{ 0, 1 });
5354 try testArgs(@Vector(2, u63), @Vector(2, u1), .{ 0, 1 });
5282 try testArgs(@Vector(2, u64), @Vector(2, u1), .{ 0, 1 });5355 try testArgs(@Vector(2, u64), @Vector(2, u1), .{ 0, 1 });
5283 try testArgs(@Vector(2, i128), @Vector(2, u1), .{ 0, 1 });5356 try testArgs(@Vector(2, u65), @Vector(2, u1), .{ 0, 1 });
5357 try testArgs(@Vector(2, u127), @Vector(2, u1), .{ 0, 1 });
5284 try testArgs(@Vector(2, u128), @Vector(2, u1), .{ 0, 1 });5358 try testArgs(@Vector(2, u128), @Vector(2, u1), .{ 0, 1 });
5285 try testArgs(@Vector(2, i256), @Vector(2, u1), .{ 0, 1 });5359 try testArgs(@Vector(2, u129), @Vector(2, u1), .{ 0, 1 });
5360 try testArgs(@Vector(2, u255), @Vector(2, u1), .{ 0, 1 });
5286 try testArgs(@Vector(2, u256), @Vector(2, u1), .{ 0, 1 });5361 try testArgs(@Vector(2, u256), @Vector(2, u1), .{ 0, 1 });
5287 try testArgs(@Vector(2, i512), @Vector(2, u1), .{ 0, 1 });5362 try testArgs(@Vector(2, u257), @Vector(2, u1), .{ 0, 1 });
5363 try testArgs(@Vector(2, u511), @Vector(2, u1), .{ 0, 1 });
5288 try testArgs(@Vector(2, u512), @Vector(2, u1), .{ 0, 1 });5364 try testArgs(@Vector(2, u512), @Vector(2, u1), .{ 0, 1 });
5289 try testArgs(@Vector(2, i1024), @Vector(2, u1), .{ 0, 1 });5365 try testArgs(@Vector(2, u513), @Vector(2, u1), .{ 0, 1 });
5366 try testArgs(@Vector(2, u1023), @Vector(2, u1), .{ 0, 1 });
5290 try testArgs(@Vector(2, u1024), @Vector(2, u1), .{ 0, 1 });5367 try testArgs(@Vector(2, u1024), @Vector(2, u1), .{ 0, 1 });
5368 try testArgs(@Vector(2, u1025), @Vector(2, u1), .{ 0, 1 });
52915369
5370 try testArgs(@Vector(3, i7), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5292 try testArgs(@Vector(3, i8), @Vector(3, i2), .{ -1 << 1, -1, 0 });5371 try testArgs(@Vector(3, i8), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5293 try testArgs(@Vector(3, u8), @Vector(3, i2), .{ -1 << 1, -1, 0 });5372 try testArgs(@Vector(3, i9), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5373 try testArgs(@Vector(3, i15), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5294 try testArgs(@Vector(3, i16), @Vector(3, i2), .{ -1 << 1, -1, 0 });5374 try testArgs(@Vector(3, i16), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5295 try testArgs(@Vector(3, u16), @Vector(3, i2), .{ -1 << 1, -1, 0 });5375 try testArgs(@Vector(3, i17), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5376 try testArgs(@Vector(3, i31), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5296 try testArgs(@Vector(3, i32), @Vector(3, i2), .{ -1 << 1, -1, 0 });5377 try testArgs(@Vector(3, i32), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5297 try testArgs(@Vector(3, u32), @Vector(3, i2), .{ -1 << 1, -1, 0 });5378 try testArgs(@Vector(3, i33), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5379 try testArgs(@Vector(3, i63), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5298 try testArgs(@Vector(3, i64), @Vector(3, i2), .{ -1 << 1, -1, 0 });5380 try testArgs(@Vector(3, i64), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5299 try testArgs(@Vector(3, u64), @Vector(3, i2), .{ -1 << 1, -1, 0 });5381 try testArgs(@Vector(3, i65), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5382 try testArgs(@Vector(3, i127), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5300 try testArgs(@Vector(3, i128), @Vector(3, i2), .{ -1 << 1, -1, 0 });5383 try testArgs(@Vector(3, i128), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5301 try testArgs(@Vector(3, u128), @Vector(3, i2), .{ -1 << 1, -1, 0 });5384 try testArgs(@Vector(3, i129), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5385 try testArgs(@Vector(3, i255), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5302 try testArgs(@Vector(3, i256), @Vector(3, i2), .{ -1 << 1, -1, 0 });5386 try testArgs(@Vector(3, i256), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5303 try testArgs(@Vector(3, u256), @Vector(3, i2), .{ -1 << 1, -1, 0 });5387 try testArgs(@Vector(3, i257), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5388 try testArgs(@Vector(3, i511), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5304 try testArgs(@Vector(3, i512), @Vector(3, i2), .{ -1 << 1, -1, 0 });5389 try testArgs(@Vector(3, i512), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5305 try testArgs(@Vector(3, u512), @Vector(3, i2), .{ -1 << 1, -1, 0 });5390 try testArgs(@Vector(3, i513), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5391 try testArgs(@Vector(3, i1023), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5306 try testArgs(@Vector(3, i1024), @Vector(3, i2), .{ -1 << 1, -1, 0 });5392 try testArgs(@Vector(3, i1024), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5307 try testArgs(@Vector(3, u1024), @Vector(3, i2), .{ -1 << 1, -1, 0 });5393 try testArgs(@Vector(3, i1025), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5308 try testArgs(@Vector(3, i8), @Vector(3, u2), .{ 0, 1, 1 << 1 });5394 try testArgs(@Vector(3, u7), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5309 try testArgs(@Vector(3, u8), @Vector(3, u2), .{ 0, 1, 1 << 1 });5395 try testArgs(@Vector(3, u8), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5310 try testArgs(@Vector(3, i16), @Vector(3, u2), .{ 0, 1, 1 << 1 });5396 try testArgs(@Vector(3, u9), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5397 try testArgs(@Vector(3, u15), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5311 try testArgs(@Vector(3, u16), @Vector(3, u2), .{ 0, 1, 1 << 1 });5398 try testArgs(@Vector(3, u16), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5312 try testArgs(@Vector(3, i32), @Vector(3, u2), .{ 0, 1, 1 << 1 });5399 try testArgs(@Vector(3, u17), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5400 try testArgs(@Vector(3, u31), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5313 try testArgs(@Vector(3, u32), @Vector(3, u2), .{ 0, 1, 1 << 1 });5401 try testArgs(@Vector(3, u32), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5314 try testArgs(@Vector(3, i64), @Vector(3, u2), .{ 0, 1, 1 << 1 });5402 try testArgs(@Vector(3, u33), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5403 try testArgs(@Vector(3, u63), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5315 try testArgs(@Vector(3, u64), @Vector(3, u2), .{ 0, 1, 1 << 1 });5404 try testArgs(@Vector(3, u64), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5316 try testArgs(@Vector(3, i128), @Vector(3, u2), .{ 0, 1, 1 << 1 });5405 try testArgs(@Vector(3, u65), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5406 try testArgs(@Vector(3, u127), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5317 try testArgs(@Vector(3, u128), @Vector(3, u2), .{ 0, 1, 1 << 1 });5407 try testArgs(@Vector(3, u128), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5318 try testArgs(@Vector(3, i256), @Vector(3, u2), .{ 0, 1, 1 << 1 });5408 try testArgs(@Vector(3, u129), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5409 try testArgs(@Vector(3, u255), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5319 try testArgs(@Vector(3, u256), @Vector(3, u2), .{ 0, 1, 1 << 1 });5410 try testArgs(@Vector(3, u256), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5320 try testArgs(@Vector(3, i512), @Vector(3, u2), .{ 0, 1, 1 << 1 });5411 try testArgs(@Vector(3, u257), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5412 try testArgs(@Vector(3, u511), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5321 try testArgs(@Vector(3, u512), @Vector(3, u2), .{ 0, 1, 1 << 1 });5413 try testArgs(@Vector(3, u512), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5322 try testArgs(@Vector(3, i1024), @Vector(3, u2), .{ 0, 1, 1 << 1 });5414 try testArgs(@Vector(3, u513), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5415 try testArgs(@Vector(3, u1023), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5323 try testArgs(@Vector(3, u1024), @Vector(3, u2), .{ 0, 1, 1 << 1 });5416 try testArgs(@Vector(3, u1024), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5417 try testArgs(@Vector(3, u1025), @Vector(3, u2), .{ 0, 1, 1 << 1 });
53245418
5419 try testArgs(@Vector(3, i7), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5325 try testArgs(@Vector(3, i8), @Vector(3, i3), .{ -1 << 2, -1, 0 });5420 try testArgs(@Vector(3, i8), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5326 try testArgs(@Vector(3, u8), @Vector(3, i3), .{ -1 << 2, -1, 0 });5421 try testArgs(@Vector(3, i9), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5422 try testArgs(@Vector(3, i15), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5327 try testArgs(@Vector(3, i16), @Vector(3, i3), .{ -1 << 2, -1, 0 });5423 try testArgs(@Vector(3, i16), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5328 try testArgs(@Vector(3, u16), @Vector(3, i3), .{ -1 << 2, -1, 0 });5424 try testArgs(@Vector(3, i17), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5425 try testArgs(@Vector(3, i31), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5329 try testArgs(@Vector(3, i32), @Vector(3, i3), .{ -1 << 2, -1, 0 });5426 try testArgs(@Vector(3, i32), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5330 try testArgs(@Vector(3, u32), @Vector(3, i3), .{ -1 << 2, -1, 0 });5427 try testArgs(@Vector(3, i33), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5428 try testArgs(@Vector(3, i63), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5331 try testArgs(@Vector(3, i64), @Vector(3, i3), .{ -1 << 2, -1, 0 });5429 try testArgs(@Vector(3, i64), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5332 try testArgs(@Vector(3, u64), @Vector(3, i3), .{ -1 << 2, -1, 0 });5430 try testArgs(@Vector(3, i65), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5431 try testArgs(@Vector(3, i127), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5333 try testArgs(@Vector(3, i128), @Vector(3, i3), .{ -1 << 2, -1, 0 });5432 try testArgs(@Vector(3, i128), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5334 try testArgs(@Vector(3, u128), @Vector(3, i3), .{ -1 << 2, -1, 0 });5433 try testArgs(@Vector(3, i129), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5434 try testArgs(@Vector(3, i255), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5335 try testArgs(@Vector(3, i256), @Vector(3, i3), .{ -1 << 2, -1, 0 });5435 try testArgs(@Vector(3, i256), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5336 try testArgs(@Vector(3, u256), @Vector(3, i3), .{ -1 << 2, -1, 0 });5436 try testArgs(@Vector(3, i257), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5437 try testArgs(@Vector(3, i511), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5337 try testArgs(@Vector(3, i512), @Vector(3, i3), .{ -1 << 2, -1, 0 });5438 try testArgs(@Vector(3, i512), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5338 try testArgs(@Vector(3, u512), @Vector(3, i3), .{ -1 << 2, -1, 0 });5439 try testArgs(@Vector(3, i513), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5440 try testArgs(@Vector(3, i1023), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5339 try testArgs(@Vector(3, i1024), @Vector(3, i3), .{ -1 << 2, -1, 0 });5441 try testArgs(@Vector(3, i1024), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5340 try testArgs(@Vector(3, u1024), @Vector(3, i3), .{ -1 << 2, -1, 0 });5442 try testArgs(@Vector(3, i1025), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5341 try testArgs(@Vector(3, i8), @Vector(3, u3), .{ 0, 1, 1 << 2 });5443 try testArgs(@Vector(3, u7), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5342 try testArgs(@Vector(3, u8), @Vector(3, u3), .{ 0, 1, 1 << 2 });5444 try testArgs(@Vector(3, u8), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5343 try testArgs(@Vector(3, i16), @Vector(3, u3), .{ 0, 1, 1 << 2 });5445 try testArgs(@Vector(3, u9), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5446 try testArgs(@Vector(3, u15), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5344 try testArgs(@Vector(3, u16), @Vector(3, u3), .{ 0, 1, 1 << 2 });5447 try testArgs(@Vector(3, u16), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5345 try testArgs(@Vector(3, i32), @Vector(3, u3), .{ 0, 1, 1 << 2 });5448 try testArgs(@Vector(3, u17), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5449 try testArgs(@Vector(3, u31), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5346 try testArgs(@Vector(3, u32), @Vector(3, u3), .{ 0, 1, 1 << 2 });5450 try testArgs(@Vector(3, u32), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5347 try testArgs(@Vector(3, i64), @Vector(3, u3), .{ 0, 1, 1 << 2 });5451 try testArgs(@Vector(3, u33), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5452 try testArgs(@Vector(3, u63), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5348 try testArgs(@Vector(3, u64), @Vector(3, u3), .{ 0, 1, 1 << 2 });5453 try testArgs(@Vector(3, u64), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5349 try testArgs(@Vector(3, i128), @Vector(3, u3), .{ 0, 1, 1 << 2 });5454 try testArgs(@Vector(3, u65), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5455 try testArgs(@Vector(3, u127), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5350 try testArgs(@Vector(3, u128), @Vector(3, u3), .{ 0, 1, 1 << 2 });5456 try testArgs(@Vector(3, u128), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5351 try testArgs(@Vector(3, i256), @Vector(3, u3), .{ 0, 1, 1 << 2 });5457 try testArgs(@Vector(3, u129), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5458 try testArgs(@Vector(3, u255), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5352 try testArgs(@Vector(3, u256), @Vector(3, u3), .{ 0, 1, 1 << 2 });5459 try testArgs(@Vector(3, u256), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5353 try testArgs(@Vector(3, i512), @Vector(3, u3), .{ 0, 1, 1 << 2 });5460 try testArgs(@Vector(3, u257), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5461 try testArgs(@Vector(3, u511), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5354 try testArgs(@Vector(3, u512), @Vector(3, u3), .{ 0, 1, 1 << 2 });5462 try testArgs(@Vector(3, u512), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5355 try testArgs(@Vector(3, i1024), @Vector(3, u3), .{ 0, 1, 1 << 2 });5463 try testArgs(@Vector(3, u513), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5464 try testArgs(@Vector(3, u1023), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5356 try testArgs(@Vector(3, u1024), @Vector(3, u3), .{ 0, 1, 1 << 2 });5465 try testArgs(@Vector(3, u1024), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5466 try testArgs(@Vector(3, u1025), @Vector(3, u3), .{ 0, 1, 1 << 2 });
53575467
5468 try testArgs(@Vector(3, i7), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5358 try testArgs(@Vector(3, i8), @Vector(3, i4), .{ -1 << 3, -1, 0 });5469 try testArgs(@Vector(3, i8), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5359 try testArgs(@Vector(3, u8), @Vector(3, i4), .{ -1 << 3, -1, 0 });5470 try testArgs(@Vector(3, i9), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5471 try testArgs(@Vector(3, i15), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5360 try testArgs(@Vector(3, i16), @Vector(3, i4), .{ -1 << 3, -1, 0 });5472 try testArgs(@Vector(3, i16), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5361 try testArgs(@Vector(3, u16), @Vector(3, i4), .{ -1 << 3, -1, 0 });5473 try testArgs(@Vector(3, i17), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5474 try testArgs(@Vector(3, i31), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5362 try testArgs(@Vector(3, i32), @Vector(3, i4), .{ -1 << 3, -1, 0 });5475 try testArgs(@Vector(3, i32), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5363 try testArgs(@Vector(3, u32), @Vector(3, i4), .{ -1 << 3, -1, 0 });5476 try testArgs(@Vector(3, i33), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5477 try testArgs(@Vector(3, i63), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5364 try testArgs(@Vector(3, i64), @Vector(3, i4), .{ -1 << 3, -1, 0 });5478 try testArgs(@Vector(3, i64), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5365 try testArgs(@Vector(3, u64), @Vector(3, i4), .{ -1 << 3, -1, 0 });5479 try testArgs(@Vector(3, i65), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5480 try testArgs(@Vector(3, i127), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5366 try testArgs(@Vector(3, i128), @Vector(3, i4), .{ -1 << 3, -1, 0 });5481 try testArgs(@Vector(3, i128), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5367 try testArgs(@Vector(3, u128), @Vector(3, i4), .{ -1 << 3, -1, 0 });5482 try testArgs(@Vector(3, i129), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5483 try testArgs(@Vector(3, i255), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5368 try testArgs(@Vector(3, i256), @Vector(3, i4), .{ -1 << 3, -1, 0 });5484 try testArgs(@Vector(3, i256), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5369 try testArgs(@Vector(3, u256), @Vector(3, i4), .{ -1 << 3, -1, 0 });5485 try testArgs(@Vector(3, i257), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5486 try testArgs(@Vector(3, i511), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5370 try testArgs(@Vector(3, i512), @Vector(3, i4), .{ -1 << 3, -1, 0 });5487 try testArgs(@Vector(3, i512), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5371 try testArgs(@Vector(3, u512), @Vector(3, i4), .{ -1 << 3, -1, 0 });5488 try testArgs(@Vector(3, i513), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5489 try testArgs(@Vector(3, i1023), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5372 try testArgs(@Vector(3, i1024), @Vector(3, i4), .{ -1 << 3, -1, 0 });5490 try testArgs(@Vector(3, i1024), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5373 try testArgs(@Vector(3, u1024), @Vector(3, i4), .{ -1 << 3, -1, 0 });5491 try testArgs(@Vector(3, i1025), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5374 try testArgs(@Vector(3, i8), @Vector(3, u4), .{ 0, 1, 1 << 3 });5492 try testArgs(@Vector(3, u7), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5375 try testArgs(@Vector(3, u8), @Vector(3, u4), .{ 0, 1, 1 << 3 });5493 try testArgs(@Vector(3, u8), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5376 try testArgs(@Vector(3, i16), @Vector(3, u4), .{ 0, 1, 1 << 3 });5494 try testArgs(@Vector(3, u9), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5495 try testArgs(@Vector(3, u15), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5377 try testArgs(@Vector(3, u16), @Vector(3, u4), .{ 0, 1, 1 << 3 });5496 try testArgs(@Vector(3, u16), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5378 try testArgs(@Vector(3, i32), @Vector(3, u4), .{ 0, 1, 1 << 3 });5497 try testArgs(@Vector(3, u17), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5498 try testArgs(@Vector(3, u31), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5379 try testArgs(@Vector(3, u32), @Vector(3, u4), .{ 0, 1, 1 << 3 });5499 try testArgs(@Vector(3, u32), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5380 try testArgs(@Vector(3, i64), @Vector(3, u4), .{ 0, 1, 1 << 3 });5500 try testArgs(@Vector(3, u33), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5501 try testArgs(@Vector(3, u63), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5381 try testArgs(@Vector(3, u64), @Vector(3, u4), .{ 0, 1, 1 << 3 });5502 try testArgs(@Vector(3, u64), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5382 try testArgs(@Vector(3, i128), @Vector(3, u4), .{ 0, 1, 1 << 3 });5503 try testArgs(@Vector(3, u65), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5504 try testArgs(@Vector(3, u127), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5383 try testArgs(@Vector(3, u128), @Vector(3, u4), .{ 0, 1, 1 << 3 });5505 try testArgs(@Vector(3, u128), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5384 try testArgs(@Vector(3, i256), @Vector(3, u4), .{ 0, 1, 1 << 3 });5506 try testArgs(@Vector(3, u129), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5507 try testArgs(@Vector(3, u255), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5385 try testArgs(@Vector(3, u256), @Vector(3, u4), .{ 0, 1, 1 << 3 });5508 try testArgs(@Vector(3, u256), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5386 try testArgs(@Vector(3, i512), @Vector(3, u4), .{ 0, 1, 1 << 3 });5509 try testArgs(@Vector(3, u257), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5510 try testArgs(@Vector(3, u511), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5387 try testArgs(@Vector(3, u512), @Vector(3, u4), .{ 0, 1, 1 << 3 });5511 try testArgs(@Vector(3, u512), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5388 try testArgs(@Vector(3, i1024), @Vector(3, u4), .{ 0, 1, 1 << 3 });5512 try testArgs(@Vector(3, u513), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5513 try testArgs(@Vector(3, u1023), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5389 try testArgs(@Vector(3, u1024), @Vector(3, u4), .{ 0, 1, 1 << 3 });5514 try testArgs(@Vector(3, u1024), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5515 try testArgs(@Vector(3, u1025), @Vector(3, u4), .{ 0, 1, 1 << 3 });
53905516
5517 try testArgs(@Vector(3, i7), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5391 try testArgs(@Vector(3, i8), @Vector(3, i5), .{ -1 << 4, -1, 0 });5518 try testArgs(@Vector(3, i8), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5392 try testArgs(@Vector(3, u8), @Vector(3, i5), .{ -1 << 4, -1, 0 });5519 try testArgs(@Vector(3, i9), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5520 try testArgs(@Vector(3, i15), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5393 try testArgs(@Vector(3, i16), @Vector(3, i5), .{ -1 << 4, -1, 0 });5521 try testArgs(@Vector(3, i16), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5394 try testArgs(@Vector(3, u16), @Vector(3, i5), .{ -1 << 4, -1, 0 });5522 try testArgs(@Vector(3, i17), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5523 try testArgs(@Vector(3, i31), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5395 try testArgs(@Vector(3, i32), @Vector(3, i5), .{ -1 << 4, -1, 0 });5524 try testArgs(@Vector(3, i32), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5396 try testArgs(@Vector(3, u32), @Vector(3, i5), .{ -1 << 4, -1, 0 });5525 try testArgs(@Vector(3, i33), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5526 try testArgs(@Vector(3, i63), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5397 try testArgs(@Vector(3, i64), @Vector(3, i5), .{ -1 << 4, -1, 0 });5527 try testArgs(@Vector(3, i64), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5398 try testArgs(@Vector(3, u64), @Vector(3, i5), .{ -1 << 4, -1, 0 });5528 try testArgs(@Vector(3, i65), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5529 try testArgs(@Vector(3, i127), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5399 try testArgs(@Vector(3, i128), @Vector(3, i5), .{ -1 << 4, -1, 0 });5530 try testArgs(@Vector(3, i128), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5400 try testArgs(@Vector(3, u128), @Vector(3, i5), .{ -1 << 4, -1, 0 });5531 try testArgs(@Vector(3, i129), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5532 try testArgs(@Vector(3, i255), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5401 try testArgs(@Vector(3, i256), @Vector(3, i5), .{ -1 << 4, -1, 0 });5533 try testArgs(@Vector(3, i256), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5402 try testArgs(@Vector(3, u256), @Vector(3, i5), .{ -1 << 4, -1, 0 });5534 try testArgs(@Vector(3, i257), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5535 try testArgs(@Vector(3, i511), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5403 try testArgs(@Vector(3, i512), @Vector(3, i5), .{ -1 << 4, -1, 0 });5536 try testArgs(@Vector(3, i512), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5404 try testArgs(@Vector(3, u512), @Vector(3, i5), .{ -1 << 4, -1, 0 });5537 try testArgs(@Vector(3, i513), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5538 try testArgs(@Vector(3, i1023), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5405 try testArgs(@Vector(3, i1024), @Vector(3, i5), .{ -1 << 4, -1, 0 });5539 try testArgs(@Vector(3, i1024), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5406 try testArgs(@Vector(3, u1024), @Vector(3, i5), .{ -1 << 4, -1, 0 });5540 try testArgs(@Vector(3, i1025), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5407 try testArgs(@Vector(3, i8), @Vector(3, u5), .{ 0, 1, 1 << 4 });5541 try testArgs(@Vector(3, u7), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5408 try testArgs(@Vector(3, u8), @Vector(3, u5), .{ 0, 1, 1 << 4 });5542 try testArgs(@Vector(3, u8), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5409 try testArgs(@Vector(3, i16), @Vector(3, u5), .{ 0, 1, 1 << 4 });5543 try testArgs(@Vector(3, u9), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5544 try testArgs(@Vector(3, u15), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5410 try testArgs(@Vector(3, u16), @Vector(3, u5), .{ 0, 1, 1 << 4 });5545 try testArgs(@Vector(3, u16), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5411 try testArgs(@Vector(3, i32), @Vector(3, u5), .{ 0, 1, 1 << 4 });5546 try testArgs(@Vector(3, u17), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5547 try testArgs(@Vector(3, u31), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5412 try testArgs(@Vector(3, u32), @Vector(3, u5), .{ 0, 1, 1 << 4 });5548 try testArgs(@Vector(3, u32), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5413 try testArgs(@Vector(3, i64), @Vector(3, u5), .{ 0, 1, 1 << 4 });5549 try testArgs(@Vector(3, u33), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5550 try testArgs(@Vector(3, u63), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5414 try testArgs(@Vector(3, u64), @Vector(3, u5), .{ 0, 1, 1 << 4 });5551 try testArgs(@Vector(3, u64), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5415 try testArgs(@Vector(3, i128), @Vector(3, u5), .{ 0, 1, 1 << 4 });5552 try testArgs(@Vector(3, u65), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5553 try testArgs(@Vector(3, u127), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5416 try testArgs(@Vector(3, u128), @Vector(3, u5), .{ 0, 1, 1 << 4 });5554 try testArgs(@Vector(3, u128), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5417 try testArgs(@Vector(3, i256), @Vector(3, u5), .{ 0, 1, 1 << 4 });5555 try testArgs(@Vector(3, u129), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5556 try testArgs(@Vector(3, u255), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5418 try testArgs(@Vector(3, u256), @Vector(3, u5), .{ 0, 1, 1 << 4 });5557 try testArgs(@Vector(3, u256), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5419 try testArgs(@Vector(3, i512), @Vector(3, u5), .{ 0, 1, 1 << 4 });5558 try testArgs(@Vector(3, u257), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5559 try testArgs(@Vector(3, u511), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5420 try testArgs(@Vector(3, u512), @Vector(3, u5), .{ 0, 1, 1 << 4 });5560 try testArgs(@Vector(3, u512), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5421 try testArgs(@Vector(3, i1024), @Vector(3, u5), .{ 0, 1, 1 << 4 });5561 try testArgs(@Vector(3, u513), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5562 try testArgs(@Vector(3, u1023), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5422 try testArgs(@Vector(3, u1024), @Vector(3, u5), .{ 0, 1, 1 << 4 });5563 try testArgs(@Vector(3, u1024), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5564 try testArgs(@Vector(3, u1025), @Vector(3, u5), .{ 0, 1, 1 << 4 });
54235565
5566 try testArgs(@Vector(3, i7), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5424 try testArgs(@Vector(3, i8), @Vector(3, i7), .{ -1 << 6, -1, 0 });5567 try testArgs(@Vector(3, i8), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5425 try testArgs(@Vector(3, u8), @Vector(3, i7), .{ -1 << 6, -1, 0 });5568 try testArgs(@Vector(3, i9), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5569 try testArgs(@Vector(3, i15), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5426 try testArgs(@Vector(3, i16), @Vector(3, i7), .{ -1 << 6, -1, 0 });5570 try testArgs(@Vector(3, i16), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5427 try testArgs(@Vector(3, u16), @Vector(3, i7), .{ -1 << 6, -1, 0 });5571 try testArgs(@Vector(3, i17), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5572 try testArgs(@Vector(3, i31), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5428 try testArgs(@Vector(3, i32), @Vector(3, i7), .{ -1 << 6, -1, 0 });5573 try testArgs(@Vector(3, i32), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5429 try testArgs(@Vector(3, u32), @Vector(3, i7), .{ -1 << 6, -1, 0 });5574 try testArgs(@Vector(3, i33), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5575 try testArgs(@Vector(3, i63), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5430 try testArgs(@Vector(3, i64), @Vector(3, i7), .{ -1 << 6, -1, 0 });5576 try testArgs(@Vector(3, i64), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5431 try testArgs(@Vector(3, u64), @Vector(3, i7), .{ -1 << 6, -1, 0 });5577 try testArgs(@Vector(3, i65), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5578 try testArgs(@Vector(3, i127), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5432 try testArgs(@Vector(3, i128), @Vector(3, i7), .{ -1 << 6, -1, 0 });5579 try testArgs(@Vector(3, i128), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5433 try testArgs(@Vector(3, u128), @Vector(3, i7), .{ -1 << 6, -1, 0 });5580 try testArgs(@Vector(3, i129), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5581 try testArgs(@Vector(3, i255), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5434 try testArgs(@Vector(3, i256), @Vector(3, i7), .{ -1 << 6, -1, 0 });5582 try testArgs(@Vector(3, i256), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5435 try testArgs(@Vector(3, u256), @Vector(3, i7), .{ -1 << 6, -1, 0 });5583 try testArgs(@Vector(3, i257), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5584 try testArgs(@Vector(3, i511), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5436 try testArgs(@Vector(3, i512), @Vector(3, i7), .{ -1 << 6, -1, 0 });5585 try testArgs(@Vector(3, i512), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5437 try testArgs(@Vector(3, u512), @Vector(3, i7), .{ -1 << 6, -1, 0 });5586 try testArgs(@Vector(3, i513), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5587 try testArgs(@Vector(3, i1023), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5438 try testArgs(@Vector(3, i1024), @Vector(3, i7), .{ -1 << 6, -1, 0 });5588 try testArgs(@Vector(3, i1024), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5439 try testArgs(@Vector(3, u1024), @Vector(3, i7), .{ -1 << 6, -1, 0 });5589 try testArgs(@Vector(3, i1025), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5440 try testArgs(@Vector(3, i8), @Vector(3, u7), .{ 0, 1, 1 << 6 });5590 try testArgs(@Vector(3, u7), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5441 try testArgs(@Vector(3, u8), @Vector(3, u7), .{ 0, 1, 1 << 6 });5591 try testArgs(@Vector(3, u8), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5442 try testArgs(@Vector(3, i16), @Vector(3, u7), .{ 0, 1, 1 << 6 });5592 try testArgs(@Vector(3, u9), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5593 try testArgs(@Vector(3, u15), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5443 try testArgs(@Vector(3, u16), @Vector(3, u7), .{ 0, 1, 1 << 6 });5594 try testArgs(@Vector(3, u16), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5444 try testArgs(@Vector(3, i32), @Vector(3, u7), .{ 0, 1, 1 << 6 });5595 try testArgs(@Vector(3, u17), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5596 try testArgs(@Vector(3, u31), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5445 try testArgs(@Vector(3, u32), @Vector(3, u7), .{ 0, 1, 1 << 6 });5597 try testArgs(@Vector(3, u32), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5446 try testArgs(@Vector(3, i64), @Vector(3, u7), .{ 0, 1, 1 << 6 });5598 try testArgs(@Vector(3, u33), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5599 try testArgs(@Vector(3, u63), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5447 try testArgs(@Vector(3, u64), @Vector(3, u7), .{ 0, 1, 1 << 6 });5600 try testArgs(@Vector(3, u64), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5448 try testArgs(@Vector(3, i128), @Vector(3, u7), .{ 0, 1, 1 << 6 });5601 try testArgs(@Vector(3, u65), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5602 try testArgs(@Vector(3, u127), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5449 try testArgs(@Vector(3, u128), @Vector(3, u7), .{ 0, 1, 1 << 6 });5603 try testArgs(@Vector(3, u128), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5450 try testArgs(@Vector(3, i256), @Vector(3, u7), .{ 0, 1, 1 << 6 });5604 try testArgs(@Vector(3, u129), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5605 try testArgs(@Vector(3, u255), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5451 try testArgs(@Vector(3, u256), @Vector(3, u7), .{ 0, 1, 1 << 6 });5606 try testArgs(@Vector(3, u256), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5452 try testArgs(@Vector(3, i512), @Vector(3, u7), .{ 0, 1, 1 << 6 });5607 try testArgs(@Vector(3, u257), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5608 try testArgs(@Vector(3, u511), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5453 try testArgs(@Vector(3, u512), @Vector(3, u7), .{ 0, 1, 1 << 6 });5609 try testArgs(@Vector(3, u512), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5454 try testArgs(@Vector(3, i1024), @Vector(3, u7), .{ 0, 1, 1 << 6 });5610 try testArgs(@Vector(3, u513), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5611 try testArgs(@Vector(3, u1023), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5455 try testArgs(@Vector(3, u1024), @Vector(3, u7), .{ 0, 1, 1 << 6 });5612 try testArgs(@Vector(3, u1024), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5613 try testArgs(@Vector(3, u1025), @Vector(3, u7), .{ 0, 1, 1 << 6 });
54565614
5615 try testArgs(@Vector(3, i7), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5457 try testArgs(@Vector(3, i8), @Vector(3, i8), .{ -1 << 7, -1, 0 });5616 try testArgs(@Vector(3, i8), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5458 try testArgs(@Vector(3, u8), @Vector(3, i8), .{ -1 << 7, -1, 0 });5617 try testArgs(@Vector(3, i9), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5618 try testArgs(@Vector(3, i15), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5459 try testArgs(@Vector(3, i16), @Vector(3, i8), .{ -1 << 7, -1, 0 });5619 try testArgs(@Vector(3, i16), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5460 try testArgs(@Vector(3, u16), @Vector(3, i8), .{ -1 << 7, -1, 0 });5620 try testArgs(@Vector(3, i17), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5621 try testArgs(@Vector(3, i31), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5461 try testArgs(@Vector(3, i32), @Vector(3, i8), .{ -1 << 7, -1, 0 });5622 try testArgs(@Vector(3, i32), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5462 try testArgs(@Vector(3, u32), @Vector(3, i8), .{ -1 << 7, -1, 0 });5623 try testArgs(@Vector(3, i33), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5624 try testArgs(@Vector(3, i63), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5463 try testArgs(@Vector(3, i64), @Vector(3, i8), .{ -1 << 7, -1, 0 });5625 try testArgs(@Vector(3, i64), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5464 try testArgs(@Vector(3, u64), @Vector(3, i8), .{ -1 << 7, -1, 0 });5626 try testArgs(@Vector(3, i65), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5627 try testArgs(@Vector(3, i127), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5465 try testArgs(@Vector(3, i128), @Vector(3, i8), .{ -1 << 7, -1, 0 });5628 try testArgs(@Vector(3, i128), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5466 try testArgs(@Vector(3, u128), @Vector(3, i8), .{ -1 << 7, -1, 0 });5629 try testArgs(@Vector(3, i129), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5630 try testArgs(@Vector(3, i255), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5467 try testArgs(@Vector(3, i256), @Vector(3, i8), .{ -1 << 7, -1, 0 });5631 try testArgs(@Vector(3, i256), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5468 try testArgs(@Vector(3, u256), @Vector(3, i8), .{ -1 << 7, -1, 0 });5632 try testArgs(@Vector(3, i257), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5633 try testArgs(@Vector(3, i511), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5469 try testArgs(@Vector(3, i512), @Vector(3, i8), .{ -1 << 7, -1, 0 });5634 try testArgs(@Vector(3, i512), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5470 try testArgs(@Vector(3, u512), @Vector(3, i8), .{ -1 << 7, -1, 0 });5635 try testArgs(@Vector(3, i513), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5636 try testArgs(@Vector(3, i1023), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5471 try testArgs(@Vector(3, i1024), @Vector(3, i8), .{ -1 << 7, -1, 0 });5637 try testArgs(@Vector(3, i1024), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5472 try testArgs(@Vector(3, u1024), @Vector(3, i8), .{ -1 << 7, -1, 0 });5638 try testArgs(@Vector(3, i1025), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5473 try testArgs(@Vector(3, i8), @Vector(3, u8), .{ 0, 1, 1 << 7 });5639 try testArgs(@Vector(3, u7), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5474 try testArgs(@Vector(3, u8), @Vector(3, u8), .{ 0, 1, 1 << 7 });5640 try testArgs(@Vector(3, u8), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5475 try testArgs(@Vector(3, i16), @Vector(3, u8), .{ 0, 1, 1 << 7 });5641 try testArgs(@Vector(3, u9), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5642 try testArgs(@Vector(3, u15), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5476 try testArgs(@Vector(3, u16), @Vector(3, u8), .{ 0, 1, 1 << 7 });5643 try testArgs(@Vector(3, u16), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5477 try testArgs(@Vector(3, i32), @Vector(3, u8), .{ 0, 1, 1 << 7 });5644 try testArgs(@Vector(3, u17), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5645 try testArgs(@Vector(3, u31), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5478 try testArgs(@Vector(3, u32), @Vector(3, u8), .{ 0, 1, 1 << 7 });5646 try testArgs(@Vector(3, u32), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5479 try testArgs(@Vector(3, i64), @Vector(3, u8), .{ 0, 1, 1 << 7 });5647 try testArgs(@Vector(3, u33), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5648 try testArgs(@Vector(3, u63), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5480 try testArgs(@Vector(3, u64), @Vector(3, u8), .{ 0, 1, 1 << 7 });5649 try testArgs(@Vector(3, u64), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5481 try testArgs(@Vector(3, i128), @Vector(3, u8), .{ 0, 1, 1 << 7 });5650 try testArgs(@Vector(3, u65), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5651 try testArgs(@Vector(3, u127), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5482 try testArgs(@Vector(3, u128), @Vector(3, u8), .{ 0, 1, 1 << 7 });5652 try testArgs(@Vector(3, u128), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5483 try testArgs(@Vector(3, i256), @Vector(3, u8), .{ 0, 1, 1 << 7 });5653 try testArgs(@Vector(3, u129), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5654 try testArgs(@Vector(3, u255), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5484 try testArgs(@Vector(3, u256), @Vector(3, u8), .{ 0, 1, 1 << 7 });5655 try testArgs(@Vector(3, u256), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5485 try testArgs(@Vector(3, i512), @Vector(3, u8), .{ 0, 1, 1 << 7 });5656 try testArgs(@Vector(3, u257), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5657 try testArgs(@Vector(3, u511), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5486 try testArgs(@Vector(3, u512), @Vector(3, u8), .{ 0, 1, 1 << 7 });5658 try testArgs(@Vector(3, u512), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5487 try testArgs(@Vector(3, i1024), @Vector(3, u8), .{ 0, 1, 1 << 7 });5659 try testArgs(@Vector(3, u513), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5660 try testArgs(@Vector(3, u1023), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5488 try testArgs(@Vector(3, u1024), @Vector(3, u8), .{ 0, 1, 1 << 7 });5661 try testArgs(@Vector(3, u1024), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5662 try testArgs(@Vector(3, u1025), @Vector(3, u8), .{ 0, 1, 1 << 7 });
54895663
5664 try testArgs(@Vector(3, i7), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5490 try testArgs(@Vector(3, i8), @Vector(3, i9), .{ -1 << 8, -1, 0 });5665 try testArgs(@Vector(3, i8), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5491 try testArgs(@Vector(3, u8), @Vector(3, i9), .{ -1 << 8, -1, 0 });5666 try testArgs(@Vector(3, i9), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5667 try testArgs(@Vector(3, i15), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5492 try testArgs(@Vector(3, i16), @Vector(3, i9), .{ -1 << 8, -1, 0 });5668 try testArgs(@Vector(3, i16), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5493 try testArgs(@Vector(3, u16), @Vector(3, i9), .{ -1 << 8, -1, 0 });5669 try testArgs(@Vector(3, i17), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5670 try testArgs(@Vector(3, i31), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5494 try testArgs(@Vector(3, i32), @Vector(3, i9), .{ -1 << 8, -1, 0 });5671 try testArgs(@Vector(3, i32), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5495 try testArgs(@Vector(3, u32), @Vector(3, i9), .{ -1 << 8, -1, 0 });5672 try testArgs(@Vector(3, i33), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5673 try testArgs(@Vector(3, i63), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5496 try testArgs(@Vector(3, i64), @Vector(3, i9), .{ -1 << 8, -1, 0 });5674 try testArgs(@Vector(3, i64), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5497 try testArgs(@Vector(3, u64), @Vector(3, i9), .{ -1 << 8, -1, 0 });5675 try testArgs(@Vector(3, i65), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5676 try testArgs(@Vector(3, i127), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5498 try testArgs(@Vector(3, i128), @Vector(3, i9), .{ -1 << 8, -1, 0 });5677 try testArgs(@Vector(3, i128), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5499 try testArgs(@Vector(3, u128), @Vector(3, i9), .{ -1 << 8, -1, 0 });5678 try testArgs(@Vector(3, i129), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5679 try testArgs(@Vector(3, i255), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5500 try testArgs(@Vector(3, i256), @Vector(3, i9), .{ -1 << 8, -1, 0 });5680 try testArgs(@Vector(3, i256), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5501 try testArgs(@Vector(3, u256), @Vector(3, i9), .{ -1 << 8, -1, 0 });5681 try testArgs(@Vector(3, i257), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5682 try testArgs(@Vector(3, i511), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5502 try testArgs(@Vector(3, i512), @Vector(3, i9), .{ -1 << 8, -1, 0 });5683 try testArgs(@Vector(3, i512), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5503 try testArgs(@Vector(3, u512), @Vector(3, i9), .{ -1 << 8, -1, 0 });5684 try testArgs(@Vector(3, i513), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5685 try testArgs(@Vector(3, i1023), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5504 try testArgs(@Vector(3, i1024), @Vector(3, i9), .{ -1 << 8, -1, 0 });5686 try testArgs(@Vector(3, i1024), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5505 try testArgs(@Vector(3, u1024), @Vector(3, i9), .{ -1 << 8, -1, 0 });5687 try testArgs(@Vector(3, i1025), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5506 try testArgs(@Vector(3, i8), @Vector(3, u9), .{ 0, 1, 1 << 8 });5688 try testArgs(@Vector(3, u7), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5507 try testArgs(@Vector(3, u8), @Vector(3, u9), .{ 0, 1, 1 << 8 });5689 try testArgs(@Vector(3, u8), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5508 try testArgs(@Vector(3, i16), @Vector(3, u9), .{ 0, 1, 1 << 8 });5690 try testArgs(@Vector(3, u9), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5691 try testArgs(@Vector(3, u15), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5509 try testArgs(@Vector(3, u16), @Vector(3, u9), .{ 0, 1, 1 << 8 });5692 try testArgs(@Vector(3, u16), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5510 try testArgs(@Vector(3, i32), @Vector(3, u9), .{ 0, 1, 1 << 8 });5693 try testArgs(@Vector(3, u17), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5694 try testArgs(@Vector(3, u31), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5511 try testArgs(@Vector(3, u32), @Vector(3, u9), .{ 0, 1, 1 << 8 });5695 try testArgs(@Vector(3, u32), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5512 try testArgs(@Vector(3, i64), @Vector(3, u9), .{ 0, 1, 1 << 8 });5696 try testArgs(@Vector(3, u33), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5697 try testArgs(@Vector(3, u63), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5513 try testArgs(@Vector(3, u64), @Vector(3, u9), .{ 0, 1, 1 << 8 });5698 try testArgs(@Vector(3, u64), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5514 try testArgs(@Vector(3, i128), @Vector(3, u9), .{ 0, 1, 1 << 8 });5699 try testArgs(@Vector(3, u65), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5700 try testArgs(@Vector(3, u127), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5515 try testArgs(@Vector(3, u128), @Vector(3, u9), .{ 0, 1, 1 << 8 });5701 try testArgs(@Vector(3, u128), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5516 try testArgs(@Vector(3, i256), @Vector(3, u9), .{ 0, 1, 1 << 8 });5702 try testArgs(@Vector(3, u129), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5703 try testArgs(@Vector(3, u255), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5517 try testArgs(@Vector(3, u256), @Vector(3, u9), .{ 0, 1, 1 << 8 });5704 try testArgs(@Vector(3, u256), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5518 try testArgs(@Vector(3, i512), @Vector(3, u9), .{ 0, 1, 1 << 8 });5705 try testArgs(@Vector(3, u257), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5706 try testArgs(@Vector(3, u511), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5519 try testArgs(@Vector(3, u512), @Vector(3, u9), .{ 0, 1, 1 << 8 });5707 try testArgs(@Vector(3, u512), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5520 try testArgs(@Vector(3, i1024), @Vector(3, u9), .{ 0, 1, 1 << 8 });5708 try testArgs(@Vector(3, u513), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5709 try testArgs(@Vector(3, u1023), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5521 try testArgs(@Vector(3, u1024), @Vector(3, u9), .{ 0, 1, 1 << 8 });5710 try testArgs(@Vector(3, u1024), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5711 try testArgs(@Vector(3, u1025), @Vector(3, u9), .{ 0, 1, 1 << 8 });
55225712
5713 try testArgs(@Vector(3, i7), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5523 try testArgs(@Vector(3, i8), @Vector(3, i15), .{ -1 << 14, -1, 0 });5714 try testArgs(@Vector(3, i8), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5524 try testArgs(@Vector(3, u8), @Vector(3, i15), .{ -1 << 14, -1, 0 });5715 try testArgs(@Vector(3, i9), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5716 try testArgs(@Vector(3, i15), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5525 try testArgs(@Vector(3, i16), @Vector(3, i15), .{ -1 << 14, -1, 0 });5717 try testArgs(@Vector(3, i16), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5526 try testArgs(@Vector(3, u16), @Vector(3, i15), .{ -1 << 14, -1, 0 });5718 try testArgs(@Vector(3, i17), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5719 try testArgs(@Vector(3, i31), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5527 try testArgs(@Vector(3, i32), @Vector(3, i15), .{ -1 << 14, -1, 0 });5720 try testArgs(@Vector(3, i32), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5528 try testArgs(@Vector(3, u32), @Vector(3, i15), .{ -1 << 14, -1, 0 });5721 try testArgs(@Vector(3, i33), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5722 try testArgs(@Vector(3, i63), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5529 try testArgs(@Vector(3, i64), @Vector(3, i15), .{ -1 << 14, -1, 0 });5723 try testArgs(@Vector(3, i64), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5530 try testArgs(@Vector(3, u64), @Vector(3, i15), .{ -1 << 14, -1, 0 });5724 try testArgs(@Vector(3, i65), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5725 try testArgs(@Vector(3, i127), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5531 try testArgs(@Vector(3, i128), @Vector(3, i15), .{ -1 << 14, -1, 0 });5726 try testArgs(@Vector(3, i128), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5532 try testArgs(@Vector(3, u128), @Vector(3, i15), .{ -1 << 14, -1, 0 });5727 try testArgs(@Vector(3, i129), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5728 try testArgs(@Vector(3, i255), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5533 try testArgs(@Vector(3, i256), @Vector(3, i15), .{ -1 << 14, -1, 0 });5729 try testArgs(@Vector(3, i256), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5534 try testArgs(@Vector(3, u256), @Vector(3, i15), .{ -1 << 14, -1, 0 });5730 try testArgs(@Vector(3, i257), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5731 try testArgs(@Vector(3, i511), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5535 try testArgs(@Vector(3, i512), @Vector(3, i15), .{ -1 << 14, -1, 0 });5732 try testArgs(@Vector(3, i512), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5536 try testArgs(@Vector(3, u512), @Vector(3, i15), .{ -1 << 14, -1, 0 });5733 try testArgs(@Vector(3, i513), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5734 try testArgs(@Vector(3, i1023), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5537 try testArgs(@Vector(3, i1024), @Vector(3, i15), .{ -1 << 14, -1, 0 });5735 try testArgs(@Vector(3, i1024), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5538 try testArgs(@Vector(3, u1024), @Vector(3, i15), .{ -1 << 14, -1, 0 });5736 try testArgs(@Vector(3, i1025), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5539 try testArgs(@Vector(3, i8), @Vector(3, u15), .{ 0, 1, 1 << 14 });5737 try testArgs(@Vector(3, u7), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5540 try testArgs(@Vector(3, u8), @Vector(3, u15), .{ 0, 1, 1 << 14 });5738 try testArgs(@Vector(3, u8), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5541 try testArgs(@Vector(3, i16), @Vector(3, u15), .{ 0, 1, 1 << 14 });5739 try testArgs(@Vector(3, u9), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5740 try testArgs(@Vector(3, u15), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5542 try testArgs(@Vector(3, u16), @Vector(3, u15), .{ 0, 1, 1 << 14 });5741 try testArgs(@Vector(3, u16), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5543 try testArgs(@Vector(3, i32), @Vector(3, u15), .{ 0, 1, 1 << 14 });5742 try testArgs(@Vector(3, u17), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5743 try testArgs(@Vector(3, u31), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5544 try testArgs(@Vector(3, u32), @Vector(3, u15), .{ 0, 1, 1 << 14 });5744 try testArgs(@Vector(3, u32), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5545 try testArgs(@Vector(3, i64), @Vector(3, u15), .{ 0, 1, 1 << 14 });5745 try testArgs(@Vector(3, u33), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5746 try testArgs(@Vector(3, u63), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5546 try testArgs(@Vector(3, u64), @Vector(3, u15), .{ 0, 1, 1 << 14 });5747 try testArgs(@Vector(3, u64), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5547 try testArgs(@Vector(3, i128), @Vector(3, u15), .{ 0, 1, 1 << 14 });5748 try testArgs(@Vector(3, u65), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5749 try testArgs(@Vector(3, u127), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5548 try testArgs(@Vector(3, u128), @Vector(3, u15), .{ 0, 1, 1 << 14 });5750 try testArgs(@Vector(3, u128), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5549 try testArgs(@Vector(3, i256), @Vector(3, u15), .{ 0, 1, 1 << 14 });5751 try testArgs(@Vector(3, u129), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5752 try testArgs(@Vector(3, u255), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5550 try testArgs(@Vector(3, u256), @Vector(3, u15), .{ 0, 1, 1 << 14 });5753 try testArgs(@Vector(3, u256), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5551 try testArgs(@Vector(3, i512), @Vector(3, u15), .{ 0, 1, 1 << 14 });5754 try testArgs(@Vector(3, u257), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5755 try testArgs(@Vector(3, u511), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5552 try testArgs(@Vector(3, u512), @Vector(3, u15), .{ 0, 1, 1 << 14 });5756 try testArgs(@Vector(3, u512), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5553 try testArgs(@Vector(3, i1024), @Vector(3, u15), .{ 0, 1, 1 << 14 });5757 try testArgs(@Vector(3, u513), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5758 try testArgs(@Vector(3, u1023), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5554 try testArgs(@Vector(3, u1024), @Vector(3, u15), .{ 0, 1, 1 << 14 });5759 try testArgs(@Vector(3, u1024), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5760 try testArgs(@Vector(3, u1025), @Vector(3, u15), .{ 0, 1, 1 << 14 });
55555761
5762 try testArgs(@Vector(3, i7), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5556 try testArgs(@Vector(3, i8), @Vector(3, i16), .{ -1 << 15, -1, 0 });5763 try testArgs(@Vector(3, i8), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5557 try testArgs(@Vector(3, u8), @Vector(3, i16), .{ -1 << 15, -1, 0 });5764 try testArgs(@Vector(3, i9), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5765 try testArgs(@Vector(3, i15), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5558 try testArgs(@Vector(3, i16), @Vector(3, i16), .{ -1 << 15, -1, 0 });5766 try testArgs(@Vector(3, i16), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5559 try testArgs(@Vector(3, u16), @Vector(3, i16), .{ -1 << 15, -1, 0 });5767 try testArgs(@Vector(3, i17), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5768 try testArgs(@Vector(3, i31), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5560 try testArgs(@Vector(3, i32), @Vector(3, i16), .{ -1 << 15, -1, 0 });5769 try testArgs(@Vector(3, i32), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5561 try testArgs(@Vector(3, u32), @Vector(3, i16), .{ -1 << 15, -1, 0 });5770 try testArgs(@Vector(3, i33), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5771 try testArgs(@Vector(3, i63), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5562 try testArgs(@Vector(3, i64), @Vector(3, i16), .{ -1 << 15, -1, 0 });5772 try testArgs(@Vector(3, i64), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5563 try testArgs(@Vector(3, u64), @Vector(3, i16), .{ -1 << 15, -1, 0 });5773 try testArgs(@Vector(3, i65), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5774 try testArgs(@Vector(3, i127), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5564 try testArgs(@Vector(3, i128), @Vector(3, i16), .{ -1 << 15, -1, 0 });5775 try testArgs(@Vector(3, i128), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5565 try testArgs(@Vector(3, u128), @Vector(3, i16), .{ -1 << 15, -1, 0 });5776 try testArgs(@Vector(3, i129), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5777 try testArgs(@Vector(3, i255), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5566 try testArgs(@Vector(3, i256), @Vector(3, i16), .{ -1 << 15, -1, 0 });5778 try testArgs(@Vector(3, i256), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5567 try testArgs(@Vector(3, u256), @Vector(3, i16), .{ -1 << 15, -1, 0 });5779 try testArgs(@Vector(3, i257), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5780 try testArgs(@Vector(3, i511), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5568 try testArgs(@Vector(3, i512), @Vector(3, i16), .{ -1 << 15, -1, 0 });5781 try testArgs(@Vector(3, i512), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5569 try testArgs(@Vector(3, u512), @Vector(3, i16), .{ -1 << 15, -1, 0 });5782 try testArgs(@Vector(3, i513), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5783 try testArgs(@Vector(3, i1023), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5570 try testArgs(@Vector(3, i1024), @Vector(3, i16), .{ -1 << 15, -1, 0 });5784 try testArgs(@Vector(3, i1024), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5571 try testArgs(@Vector(3, u1024), @Vector(3, i16), .{ -1 << 15, -1, 0 });5785 try testArgs(@Vector(3, i1025), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5572 try testArgs(@Vector(3, i8), @Vector(3, u16), .{ 0, 1, 1 << 15 });5786 try testArgs(@Vector(3, u7), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5573 try testArgs(@Vector(3, u8), @Vector(3, u16), .{ 0, 1, 1 << 15 });5787 try testArgs(@Vector(3, u8), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5574 try testArgs(@Vector(3, i16), @Vector(3, u16), .{ 0, 1, 1 << 15 });5788 try testArgs(@Vector(3, u9), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5789 try testArgs(@Vector(3, u15), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5575 try testArgs(@Vector(3, u16), @Vector(3, u16), .{ 0, 1, 1 << 15 });5790 try testArgs(@Vector(3, u16), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5576 try testArgs(@Vector(3, i32), @Vector(3, u16), .{ 0, 1, 1 << 15 });5791 try testArgs(@Vector(3, u17), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5792 try testArgs(@Vector(3, u31), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5577 try testArgs(@Vector(3, u32), @Vector(3, u16), .{ 0, 1, 1 << 15 });5793 try testArgs(@Vector(3, u32), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5578 try testArgs(@Vector(3, i64), @Vector(3, u16), .{ 0, 1, 1 << 15 });5794 try testArgs(@Vector(3, u33), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5795 try testArgs(@Vector(3, u63), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5579 try testArgs(@Vector(3, u64), @Vector(3, u16), .{ 0, 1, 1 << 15 });5796 try testArgs(@Vector(3, u64), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5580 try testArgs(@Vector(3, i128), @Vector(3, u16), .{ 0, 1, 1 << 15 });5797 try testArgs(@Vector(3, u65), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5798 try testArgs(@Vector(3, u127), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5581 try testArgs(@Vector(3, u128), @Vector(3, u16), .{ 0, 1, 1 << 15 });5799 try testArgs(@Vector(3, u128), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5582 try testArgs(@Vector(3, i256), @Vector(3, u16), .{ 0, 1, 1 << 15 });5800 try testArgs(@Vector(3, u129), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5801 try testArgs(@Vector(3, u255), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5583 try testArgs(@Vector(3, u256), @Vector(3, u16), .{ 0, 1, 1 << 15 });5802 try testArgs(@Vector(3, u256), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5584 try testArgs(@Vector(3, i512), @Vector(3, u16), .{ 0, 1, 1 << 15 });5803 try testArgs(@Vector(3, u257), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5804 try testArgs(@Vector(3, u511), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5585 try testArgs(@Vector(3, u512), @Vector(3, u16), .{ 0, 1, 1 << 15 });5805 try testArgs(@Vector(3, u512), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5586 try testArgs(@Vector(3, i1024), @Vector(3, u16), .{ 0, 1, 1 << 15 });5806 try testArgs(@Vector(3, u513), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5807 try testArgs(@Vector(3, u1023), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5587 try testArgs(@Vector(3, u1024), @Vector(3, u16), .{ 0, 1, 1 << 15 });5808 try testArgs(@Vector(3, u1024), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5809 try testArgs(@Vector(3, u1025), @Vector(3, u16), .{ 0, 1, 1 << 15 });
55885810
5811 try testArgs(@Vector(3, i7), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5589 try testArgs(@Vector(3, i8), @Vector(3, i17), .{ -1 << 16, -1, 0 });5812 try testArgs(@Vector(3, i8), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5590 try testArgs(@Vector(3, u8), @Vector(3, i17), .{ -1 << 16, -1, 0 });5813 try testArgs(@Vector(3, i9), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5814 try testArgs(@Vector(3, i15), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5591 try testArgs(@Vector(3, i16), @Vector(3, i17), .{ -1 << 16, -1, 0 });5815 try testArgs(@Vector(3, i16), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5592 try testArgs(@Vector(3, u16), @Vector(3, i17), .{ -1 << 16, -1, 0 });5816 try testArgs(@Vector(3, i17), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5817 try testArgs(@Vector(3, i31), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5593 try testArgs(@Vector(3, i32), @Vector(3, i17), .{ -1 << 16, -1, 0 });5818 try testArgs(@Vector(3, i32), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5594 try testArgs(@Vector(3, u32), @Vector(3, i17), .{ -1 << 16, -1, 0 });5819 try testArgs(@Vector(3, i33), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5820 try testArgs(@Vector(3, i63), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5595 try testArgs(@Vector(3, i64), @Vector(3, i17), .{ -1 << 16, -1, 0 });5821 try testArgs(@Vector(3, i64), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5596 try testArgs(@Vector(3, u64), @Vector(3, i17), .{ -1 << 16, -1, 0 });5822 try testArgs(@Vector(3, i65), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5823 try testArgs(@Vector(3, i127), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5597 try testArgs(@Vector(3, i128), @Vector(3, i17), .{ -1 << 16, -1, 0 });5824 try testArgs(@Vector(3, i128), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5598 try testArgs(@Vector(3, u128), @Vector(3, i17), .{ -1 << 16, -1, 0 });5825 try testArgs(@Vector(3, i129), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5826 try testArgs(@Vector(3, i255), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5599 try testArgs(@Vector(3, i256), @Vector(3, i17), .{ -1 << 16, -1, 0 });5827 try testArgs(@Vector(3, i256), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5600 try testArgs(@Vector(3, u256), @Vector(3, i17), .{ -1 << 16, -1, 0 });5828 try testArgs(@Vector(3, i257), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5829 try testArgs(@Vector(3, i511), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5601 try testArgs(@Vector(3, i512), @Vector(3, i17), .{ -1 << 16, -1, 0 });5830 try testArgs(@Vector(3, i512), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5602 try testArgs(@Vector(3, u512), @Vector(3, i17), .{ -1 << 16, -1, 0 });5831 try testArgs(@Vector(3, i513), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5832 try testArgs(@Vector(3, i1023), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5603 try testArgs(@Vector(3, i1024), @Vector(3, i17), .{ -1 << 16, -1, 0 });5833 try testArgs(@Vector(3, i1024), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5604 try testArgs(@Vector(3, u1024), @Vector(3, i17), .{ -1 << 16, -1, 0 });5834 try testArgs(@Vector(3, i1025), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5605 try testArgs(@Vector(3, i8), @Vector(3, u17), .{ 0, 1, 1 << 16 });5835 try testArgs(@Vector(3, u7), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5606 try testArgs(@Vector(3, u8), @Vector(3, u17), .{ 0, 1, 1 << 16 });5836 try testArgs(@Vector(3, u8), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5607 try testArgs(@Vector(3, i16), @Vector(3, u17), .{ 0, 1, 1 << 16 });5837 try testArgs(@Vector(3, u9), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5838 try testArgs(@Vector(3, u15), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5608 try testArgs(@Vector(3, u16), @Vector(3, u17), .{ 0, 1, 1 << 16 });5839 try testArgs(@Vector(3, u16), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5609 try testArgs(@Vector(3, i32), @Vector(3, u17), .{ 0, 1, 1 << 16 });5840 try testArgs(@Vector(3, u17), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5841 try testArgs(@Vector(3, u31), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5610 try testArgs(@Vector(3, u32), @Vector(3, u17), .{ 0, 1, 1 << 16 });5842 try testArgs(@Vector(3, u32), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5611 try testArgs(@Vector(3, i64), @Vector(3, u17), .{ 0, 1, 1 << 16 });5843 try testArgs(@Vector(3, u33), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5844 try testArgs(@Vector(3, u63), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5612 try testArgs(@Vector(3, u64), @Vector(3, u17), .{ 0, 1, 1 << 16 });5845 try testArgs(@Vector(3, u64), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5613 try testArgs(@Vector(3, i128), @Vector(3, u17), .{ 0, 1, 1 << 16 });5846 try testArgs(@Vector(3, u65), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5847 try testArgs(@Vector(3, u127), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5614 try testArgs(@Vector(3, u128), @Vector(3, u17), .{ 0, 1, 1 << 16 });5848 try testArgs(@Vector(3, u128), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5615 try testArgs(@Vector(3, i256), @Vector(3, u17), .{ 0, 1, 1 << 16 });5849 try testArgs(@Vector(3, u129), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5850 try testArgs(@Vector(3, u255), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5616 try testArgs(@Vector(3, u256), @Vector(3, u17), .{ 0, 1, 1 << 16 });5851 try testArgs(@Vector(3, u256), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5617 try testArgs(@Vector(3, i512), @Vector(3, u17), .{ 0, 1, 1 << 16 });5852 try testArgs(@Vector(3, u257), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5853 try testArgs(@Vector(3, u511), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5618 try testArgs(@Vector(3, u512), @Vector(3, u17), .{ 0, 1, 1 << 16 });5854 try testArgs(@Vector(3, u512), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5619 try testArgs(@Vector(3, i1024), @Vector(3, u17), .{ 0, 1, 1 << 16 });5855 try testArgs(@Vector(3, u513), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5856 try testArgs(@Vector(3, u1023), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5620 try testArgs(@Vector(3, u1024), @Vector(3, u17), .{ 0, 1, 1 << 16 });5857 try testArgs(@Vector(3, u1024), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5858 try testArgs(@Vector(3, u1025), @Vector(3, u17), .{ 0, 1, 1 << 16 });
56215859
5860 try testArgs(@Vector(3, i7), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5622 try testArgs(@Vector(3, i8), @Vector(3, i31), .{ -1 << 30, -1, 0 });5861 try testArgs(@Vector(3, i8), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5623 try testArgs(@Vector(3, u8), @Vector(3, i31), .{ -1 << 30, -1, 0 });5862 try testArgs(@Vector(3, i9), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5863 try testArgs(@Vector(3, i15), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5624 try testArgs(@Vector(3, i16), @Vector(3, i31), .{ -1 << 30, -1, 0 });5864 try testArgs(@Vector(3, i16), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5625 try testArgs(@Vector(3, u16), @Vector(3, i31), .{ -1 << 30, -1, 0 });5865 try testArgs(@Vector(3, i17), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5866 try testArgs(@Vector(3, i31), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5626 try testArgs(@Vector(3, i32), @Vector(3, i31), .{ -1 << 30, -1, 0 });5867 try testArgs(@Vector(3, i32), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5627 try testArgs(@Vector(3, u32), @Vector(3, i31), .{ -1 << 30, -1, 0 });5868 try testArgs(@Vector(3, i33), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5869 try testArgs(@Vector(3, i63), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5628 try testArgs(@Vector(3, i64), @Vector(3, i31), .{ -1 << 30, -1, 0 });5870 try testArgs(@Vector(3, i64), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5629 try testArgs(@Vector(3, u64), @Vector(3, i31), .{ -1 << 30, -1, 0 });5871 try testArgs(@Vector(3, i65), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5872 try testArgs(@Vector(3, i127), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5630 try testArgs(@Vector(3, i128), @Vector(3, i31), .{ -1 << 30, -1, 0 });5873 try testArgs(@Vector(3, i128), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5631 try testArgs(@Vector(3, u128), @Vector(3, i31), .{ -1 << 30, -1, 0 });5874 try testArgs(@Vector(3, i129), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5875 try testArgs(@Vector(3, i255), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5632 try testArgs(@Vector(3, i256), @Vector(3, i31), .{ -1 << 30, -1, 0 });5876 try testArgs(@Vector(3, i256), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5633 try testArgs(@Vector(3, u256), @Vector(3, i31), .{ -1 << 30, -1, 0 });5877 try testArgs(@Vector(3, i257), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5878 try testArgs(@Vector(3, i511), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5634 try testArgs(@Vector(3, i512), @Vector(3, i31), .{ -1 << 30, -1, 0 });5879 try testArgs(@Vector(3, i512), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5635 try testArgs(@Vector(3, u512), @Vector(3, i31), .{ -1 << 30, -1, 0 });5880 try testArgs(@Vector(3, i513), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5881 try testArgs(@Vector(3, i1023), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5636 try testArgs(@Vector(3, i1024), @Vector(3, i31), .{ -1 << 30, -1, 0 });5882 try testArgs(@Vector(3, i1024), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5637 try testArgs(@Vector(3, u1024), @Vector(3, i31), .{ -1 << 30, -1, 0 });5883 try testArgs(@Vector(3, i1025), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5638 try testArgs(@Vector(3, i8), @Vector(3, u31), .{ 0, 1, 1 << 30 });5884 try testArgs(@Vector(3, u7), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5639 try testArgs(@Vector(3, u8), @Vector(3, u31), .{ 0, 1, 1 << 30 });5885 try testArgs(@Vector(3, u8), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5640 try testArgs(@Vector(3, i16), @Vector(3, u31), .{ 0, 1, 1 << 30 });5886 try testArgs(@Vector(3, u9), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5887 try testArgs(@Vector(3, u15), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5641 try testArgs(@Vector(3, u16), @Vector(3, u31), .{ 0, 1, 1 << 30 });5888 try testArgs(@Vector(3, u16), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5642 try testArgs(@Vector(3, i32), @Vector(3, u31), .{ 0, 1, 1 << 30 });5889 try testArgs(@Vector(3, u17), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5890 try testArgs(@Vector(3, u31), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5643 try testArgs(@Vector(3, u32), @Vector(3, u31), .{ 0, 1, 1 << 30 });5891 try testArgs(@Vector(3, u32), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5644 try testArgs(@Vector(3, i64), @Vector(3, u31), .{ 0, 1, 1 << 30 });5892 try testArgs(@Vector(3, u33), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5893 try testArgs(@Vector(3, u63), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5645 try testArgs(@Vector(3, u64), @Vector(3, u31), .{ 0, 1, 1 << 30 });5894 try testArgs(@Vector(3, u64), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5646 try testArgs(@Vector(3, i128), @Vector(3, u31), .{ 0, 1, 1 << 30 });5895 try testArgs(@Vector(3, u65), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5896 try testArgs(@Vector(3, u127), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5647 try testArgs(@Vector(3, u128), @Vector(3, u31), .{ 0, 1, 1 << 30 });5897 try testArgs(@Vector(3, u128), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5648 try testArgs(@Vector(3, i256), @Vector(3, u31), .{ 0, 1, 1 << 30 });5898 try testArgs(@Vector(3, u129), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5899 try testArgs(@Vector(3, u255), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5649 try testArgs(@Vector(3, u256), @Vector(3, u31), .{ 0, 1, 1 << 30 });5900 try testArgs(@Vector(3, u256), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5650 try testArgs(@Vector(3, i512), @Vector(3, u31), .{ 0, 1, 1 << 30 });5901 try testArgs(@Vector(3, u257), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5902 try testArgs(@Vector(3, u511), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5651 try testArgs(@Vector(3, u512), @Vector(3, u31), .{ 0, 1, 1 << 30 });5903 try testArgs(@Vector(3, u512), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5652 try testArgs(@Vector(3, i1024), @Vector(3, u31), .{ 0, 1, 1 << 30 });5904 try testArgs(@Vector(3, u513), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5905 try testArgs(@Vector(3, u1023), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5653 try testArgs(@Vector(3, u1024), @Vector(3, u31), .{ 0, 1, 1 << 30 });5906 try testArgs(@Vector(3, u1024), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5907 try testArgs(@Vector(3, u1025), @Vector(3, u31), .{ 0, 1, 1 << 30 });
56545908
5909 try testArgs(@Vector(3, i7), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5655 try testArgs(@Vector(3, i8), @Vector(3, i32), .{ -1 << 31, -1, 0 });5910 try testArgs(@Vector(3, i8), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5656 try testArgs(@Vector(3, u8), @Vector(3, i32), .{ -1 << 31, -1, 0 });5911 try testArgs(@Vector(3, i9), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5912 try testArgs(@Vector(3, i15), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5657 try testArgs(@Vector(3, i16), @Vector(3, i32), .{ -1 << 31, -1, 0 });5913 try testArgs(@Vector(3, i16), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5658 try testArgs(@Vector(3, u16), @Vector(3, i32), .{ -1 << 31, -1, 0 });5914 try testArgs(@Vector(3, i17), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5915 try testArgs(@Vector(3, i31), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5659 try testArgs(@Vector(3, i32), @Vector(3, i32), .{ -1 << 31, -1, 0 });5916 try testArgs(@Vector(3, i32), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5660 try testArgs(@Vector(3, u32), @Vector(3, i32), .{ -1 << 31, -1, 0 });5917 try testArgs(@Vector(3, i33), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5918 try testArgs(@Vector(3, i63), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5661 try testArgs(@Vector(3, i64), @Vector(3, i32), .{ -1 << 31, -1, 0 });5919 try testArgs(@Vector(3, i64), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5662 try testArgs(@Vector(3, u64), @Vector(3, i32), .{ -1 << 31, -1, 0 });5920 try testArgs(@Vector(3, i65), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5921 try testArgs(@Vector(3, i127), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5663 try testArgs(@Vector(3, i128), @Vector(3, i32), .{ -1 << 31, -1, 0 });5922 try testArgs(@Vector(3, i128), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5664 try testArgs(@Vector(3, u128), @Vector(3, i32), .{ -1 << 31, -1, 0 });5923 try testArgs(@Vector(3, i129), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5924 try testArgs(@Vector(3, i255), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5665 try testArgs(@Vector(3, i256), @Vector(3, i32), .{ -1 << 31, -1, 0 });5925 try testArgs(@Vector(3, i256), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5666 try testArgs(@Vector(3, u256), @Vector(3, i32), .{ -1 << 31, -1, 0 });5926 try testArgs(@Vector(3, i257), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5927 try testArgs(@Vector(3, i511), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5667 try testArgs(@Vector(3, i512), @Vector(3, i32), .{ -1 << 31, -1, 0 });5928 try testArgs(@Vector(3, i512), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5668 try testArgs(@Vector(3, u512), @Vector(3, i32), .{ -1 << 31, -1, 0 });5929 try testArgs(@Vector(3, i513), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5930 try testArgs(@Vector(3, i1023), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5669 try testArgs(@Vector(3, i1024), @Vector(3, i32), .{ -1 << 31, -1, 0 });5931 try testArgs(@Vector(3, i1024), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5670 try testArgs(@Vector(3, u1024), @Vector(3, i32), .{ -1 << 31, -1, 0 });5932 try testArgs(@Vector(3, i1025), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5671 try testArgs(@Vector(3, i8), @Vector(3, u32), .{ 0, 1, 1 << 31 });5933 try testArgs(@Vector(3, u7), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5672 try testArgs(@Vector(3, u8), @Vector(3, u32), .{ 0, 1, 1 << 31 });5934 try testArgs(@Vector(3, u8), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5673 try testArgs(@Vector(3, i16), @Vector(3, u32), .{ 0, 1, 1 << 31 });5935 try testArgs(@Vector(3, u9), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5936 try testArgs(@Vector(3, u15), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5674 try testArgs(@Vector(3, u16), @Vector(3, u32), .{ 0, 1, 1 << 31 });5937 try testArgs(@Vector(3, u16), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5675 try testArgs(@Vector(3, i32), @Vector(3, u32), .{ 0, 1, 1 << 31 });5938 try testArgs(@Vector(3, u17), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5939 try testArgs(@Vector(3, u31), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5676 try testArgs(@Vector(3, u32), @Vector(3, u32), .{ 0, 1, 1 << 31 });5940 try testArgs(@Vector(3, u32), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5677 try testArgs(@Vector(3, i64), @Vector(3, u32), .{ 0, 1, 1 << 31 });5941 try testArgs(@Vector(3, u33), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5942 try testArgs(@Vector(3, u63), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5678 try testArgs(@Vector(3, u64), @Vector(3, u32), .{ 0, 1, 1 << 31 });5943 try testArgs(@Vector(3, u64), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5679 try testArgs(@Vector(3, i128), @Vector(3, u32), .{ 0, 1, 1 << 31 });5944 try testArgs(@Vector(3, u65), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5945 try testArgs(@Vector(3, u127), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5680 try testArgs(@Vector(3, u128), @Vector(3, u32), .{ 0, 1, 1 << 31 });5946 try testArgs(@Vector(3, u128), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5681 try testArgs(@Vector(3, i256), @Vector(3, u32), .{ 0, 1, 1 << 31 });5947 try testArgs(@Vector(3, u129), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5948 try testArgs(@Vector(3, u255), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5682 try testArgs(@Vector(3, u256), @Vector(3, u32), .{ 0, 1, 1 << 31 });5949 try testArgs(@Vector(3, u256), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5683 try testArgs(@Vector(3, i512), @Vector(3, u32), .{ 0, 1, 1 << 31 });5950 try testArgs(@Vector(3, u257), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5951 try testArgs(@Vector(3, u511), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5684 try testArgs(@Vector(3, u512), @Vector(3, u32), .{ 0, 1, 1 << 31 });5952 try testArgs(@Vector(3, u512), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5685 try testArgs(@Vector(3, i1024), @Vector(3, u32), .{ 0, 1, 1 << 31 });5953 try testArgs(@Vector(3, u513), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5954 try testArgs(@Vector(3, u1023), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5686 try testArgs(@Vector(3, u1024), @Vector(3, u32), .{ 0, 1, 1 << 31 });5955 try testArgs(@Vector(3, u1024), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5956 try testArgs(@Vector(3, u1025), @Vector(3, u32), .{ 0, 1, 1 << 31 });
56875957
5958 try testArgs(@Vector(3, i7), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5688 try testArgs(@Vector(3, i8), @Vector(3, i33), .{ -1 << 32, -1, 0 });5959 try testArgs(@Vector(3, i8), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5689 try testArgs(@Vector(3, u8), @Vector(3, i33), .{ -1 << 32, -1, 0 });5960 try testArgs(@Vector(3, i9), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5961 try testArgs(@Vector(3, i15), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5690 try testArgs(@Vector(3, i16), @Vector(3, i33), .{ -1 << 32, -1, 0 });5962 try testArgs(@Vector(3, i16), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5691 try testArgs(@Vector(3, u16), @Vector(3, i33), .{ -1 << 32, -1, 0 });5963 try testArgs(@Vector(3, i17), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5964 try testArgs(@Vector(3, i31), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5692 try testArgs(@Vector(3, i32), @Vector(3, i33), .{ -1 << 32, -1, 0 });5965 try testArgs(@Vector(3, i32), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5693 try testArgs(@Vector(3, u32), @Vector(3, i33), .{ -1 << 32, -1, 0 });5966 try testArgs(@Vector(3, i33), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5967 try testArgs(@Vector(3, i63), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5694 try testArgs(@Vector(3, i64), @Vector(3, i33), .{ -1 << 32, -1, 0 });5968 try testArgs(@Vector(3, i64), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5695 try testArgs(@Vector(3, u64), @Vector(3, i33), .{ -1 << 32, -1, 0 });5969 try testArgs(@Vector(3, i65), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5970 try testArgs(@Vector(3, i127), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5696 try testArgs(@Vector(3, i128), @Vector(3, i33), .{ -1 << 32, -1, 0 });5971 try testArgs(@Vector(3, i128), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5697 try testArgs(@Vector(3, u128), @Vector(3, i33), .{ -1 << 32, -1, 0 });5972 try testArgs(@Vector(3, i129), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5973 try testArgs(@Vector(3, i255), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5698 try testArgs(@Vector(3, i256), @Vector(3, i33), .{ -1 << 32, -1, 0 });5974 try testArgs(@Vector(3, i256), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5699 try testArgs(@Vector(3, u256), @Vector(3, i33), .{ -1 << 32, -1, 0 });5975 try testArgs(@Vector(3, i257), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5976 try testArgs(@Vector(3, i511), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5700 try testArgs(@Vector(3, i512), @Vector(3, i33), .{ -1 << 32, -1, 0 });5977 try testArgs(@Vector(3, i512), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5701 try testArgs(@Vector(3, u512), @Vector(3, i33), .{ -1 << 32, -1, 0 });5978 try testArgs(@Vector(3, i513), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5979 try testArgs(@Vector(3, i1023), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5702 try testArgs(@Vector(3, i1024), @Vector(3, i33), .{ -1 << 32, -1, 0 });5980 try testArgs(@Vector(3, i1024), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5703 try testArgs(@Vector(3, u1024), @Vector(3, i33), .{ -1 << 32, -1, 0 });5981 try testArgs(@Vector(3, i1025), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5704 try testArgs(@Vector(3, i8), @Vector(3, u33), .{ 0, 1, 1 << 32 });5982 try testArgs(@Vector(3, u7), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5705 try testArgs(@Vector(3, u8), @Vector(3, u33), .{ 0, 1, 1 << 32 });5983 try testArgs(@Vector(3, u8), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5706 try testArgs(@Vector(3, i16), @Vector(3, u33), .{ 0, 1, 1 << 32 });5984 try testArgs(@Vector(3, u9), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5985 try testArgs(@Vector(3, u15), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5707 try testArgs(@Vector(3, u16), @Vector(3, u33), .{ 0, 1, 1 << 32 });5986 try testArgs(@Vector(3, u16), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5708 try testArgs(@Vector(3, i32), @Vector(3, u33), .{ 0, 1, 1 << 32 });5987 try testArgs(@Vector(3, u17), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5988 try testArgs(@Vector(3, u31), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5709 try testArgs(@Vector(3, u32), @Vector(3, u33), .{ 0, 1, 1 << 32 });5989 try testArgs(@Vector(3, u32), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5710 try testArgs(@Vector(3, i64), @Vector(3, u33), .{ 0, 1, 1 << 32 });5990 try testArgs(@Vector(3, u33), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5991 try testArgs(@Vector(3, u63), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5711 try testArgs(@Vector(3, u64), @Vector(3, u33), .{ 0, 1, 1 << 32 });5992 try testArgs(@Vector(3, u64), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5712 try testArgs(@Vector(3, i128), @Vector(3, u33), .{ 0, 1, 1 << 32 });5993 try testArgs(@Vector(3, u65), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5994 try testArgs(@Vector(3, u127), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5713 try testArgs(@Vector(3, u128), @Vector(3, u33), .{ 0, 1, 1 << 32 });5995 try testArgs(@Vector(3, u128), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5714 try testArgs(@Vector(3, i256), @Vector(3, u33), .{ 0, 1, 1 << 32 });5996 try testArgs(@Vector(3, u129), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5997 try testArgs(@Vector(3, u255), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5715 try testArgs(@Vector(3, u256), @Vector(3, u33), .{ 0, 1, 1 << 32 });5998 try testArgs(@Vector(3, u256), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5716 try testArgs(@Vector(3, i512), @Vector(3, u33), .{ 0, 1, 1 << 32 });5999 try testArgs(@Vector(3, u257), @Vector(3, u33), .{ 0, 1, 1 << 32 });
6000 try testArgs(@Vector(3, u511), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5717 try testArgs(@Vector(3, u512), @Vector(3, u33), .{ 0, 1, 1 << 32 });6001 try testArgs(@Vector(3, u512), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5718 try testArgs(@Vector(3, i1024), @Vector(3, u33), .{ 0, 1, 1 << 32 });6002 try testArgs(@Vector(3, u513), @Vector(3, u33), .{ 0, 1, 1 << 32 });
6003 try testArgs(@Vector(3, u1023), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5719 try testArgs(@Vector(3, u1024), @Vector(3, u33), .{ 0, 1, 1 << 32 });6004 try testArgs(@Vector(3, u1024), @Vector(3, u33), .{ 0, 1, 1 << 32 });
6005 try testArgs(@Vector(3, u1025), @Vector(3, u33), .{ 0, 1, 1 << 32 });
57206006
6007 try testArgs(@Vector(3, i7), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5721 try testArgs(@Vector(3, i8), @Vector(3, i63), .{ -1 << 62, -1, 0 });6008 try testArgs(@Vector(3, i8), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5722 try testArgs(@Vector(3, u8), @Vector(3, i63), .{ -1 << 62, -1, 0 });6009 try testArgs(@Vector(3, i9), @Vector(3, i63), .{ -1 << 62, -1, 0 });
6010 try testArgs(@Vector(3, i15), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5723 try testArgs(@Vector(3, i16), @Vector(3, i63), .{ -1 << 62, -1, 0 });6011 try testArgs(@Vector(3, i16), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5724 try testArgs(@Vector(3, u16), @Vector(3, i63), .{ -1 << 62, -1, 0 });6012 try testArgs(@Vector(3, i17), @Vector(3, i63), .{ -1 << 62, -1, 0 });
6013 try testArgs(@Vector(3, i31), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5725 try testArgs(@Vector(3, i32), @Vector(3, i63), .{ -1 << 62, -1, 0 });6014 try testArgs(@Vector(3, i32), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5726 try testArgs(@Vector(3, u32), @Vector(3, i63), .{ -1 << 62, -1, 0 });6015 try testArgs(@Vector(3, i33), @Vector(3, i63), .{ -1 << 62, -1, 0 });
6016 try testArgs(@Vector(3, i63), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5727 try testArgs(@Vector(3, i64), @Vector(3, i63), .{ -1 << 62, -1, 0 });6017 try testArgs(@Vector(3, i64), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5728 try testArgs(@Vector(3, u64), @Vector(3, i63), .{ -1 << 62, -1, 0 });6018 try testArgs(@Vector(3, i65), @Vector(3, i63), .{ -1 << 62, -1, 0 });
6019 try testArgs(@Vector(3, i127), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5729 try testArgs(@Vector(3, i128), @Vector(3, i63), .{ -1 << 62, -1, 0 });6020 try testArgs(@Vector(3, i128), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5730 try testArgs(@Vector(3, u128), @Vector(3, i63), .{ -1 << 62, -1, 0 });6021 try testArgs(@Vector(3, i129), @Vector(3, i63), .{ -1 << 62, -1, 0 });
6022 try testArgs(@Vector(3, i255), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5731 try testArgs(@Vector(3, i256), @Vector(3, i63), .{ -1 << 62, -1, 0 });6023 try testArgs(@Vector(3, i256), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5732 try testArgs(@Vector(3, u256), @Vector(3, i63), .{ -1 << 62, -1, 0 });6024 try testArgs(@Vector(3, i257), @Vector(3, i63), .{ -1 << 62, -1, 0 });
6025 try testArgs(@Vector(3, i511), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5733 try testArgs(@Vector(3, i512), @Vector(3, i63), .{ -1 << 62, -1, 0 });6026 try testArgs(@Vector(3, i512), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5734 try testArgs(@Vector(3, u512), @Vector(3, i63), .{ -1 << 62, -1, 0 });6027 try testArgs(@Vector(3, i513), @Vector(3, i63), .{ -1 << 62, -1, 0 });
6028 try testArgs(@Vector(3, i1023), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5735 try testArgs(@Vector(3, i1024), @Vector(3, i63), .{ -1 << 62, -1, 0 });6029 try testArgs(@Vector(3, i1024), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5736 try testArgs(@Vector(3, u1024), @Vector(3, i63), .{ -1 << 62, -1, 0 });6030 try testArgs(@Vector(3, i1025), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5737 try testArgs(@Vector(3, i8), @Vector(3, u63), .{ 0, 1, 1 << 62 });6031 try testArgs(@Vector(3, u7), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5738 try testArgs(@Vector(3, u8), @Vector(3, u63), .{ 0, 1, 1 << 62 });6032 try testArgs(@Vector(3, u8), @Vector(3, u63), .{ 0, 1, 1 << 62 });
6033 try testArgs(@Vector(3, u9), @Vector(3, u63), .{ 0, 1, 1 << 62 });
6034 try testArgs(@Vector(3, u15), @Vector(3, u63), .{ 0, 1, 1 << 62 });
6035 try testArgs(@Vector(3, u16), @Vector(3, u63), .{ 0, 1, 1 << 62 });
6036 try testArgs(@Vector(3, u17), @Vector(3, u63), .{ 0, 1, 1 << 62 });
6037 try testArgs(@Vector(3, u31), @Vector(3, u63), .{ 0, 1, 1 << 62 });
6038 try testArgs(@Vector(3, u32), @Vector(3, u63), .{ 0, 1, 1 << 62 });
6039 try testArgs(@Vector(3, u33), @Vector(3, u63), .{ 0, 1, 1 << 62 });
6040 try testArgs(@Vector(3, u63), @Vector(3, u63), .{ 0, 1, 1 << 62 });
6041 try testArgs(@Vector(3, u64), @Vector(3, u63), .{ 0, 1, 1 << 62 });
6042 try testArgs(@Vector(3, u65), @Vector(3, u63), .{ 0, 1, 1 << 62 });
6043 try testArgs(@Vector(3, u127), @Vector(3, u63), .{ 0, 1, 1 << 62 });
6044 try testArgs(@Vector(3, u128), @Vector(3, u63), .{ 0, 1, 1 << 62 });
6045 try testArgs(@Vector(3, u129), @Vector(3, u63), .{ 0, 1, 1 << 62 });
6046 try testArgs(@Vector(3, u255), @Vector(3, u63), .{ 0, 1, 1 << 62 });
6047 try testArgs(@Vector(3, u256), @Vector(3, u63), .{ 0, 1, 1 << 62 });
6048 try testArgs(@Vector(3, u257), @Vector(3, u63), .{ 0, 1, 1 << 62 });
6049 try testArgs(@Vector(3, u511), @Vector(3, u63), .{ 0, 1, 1 << 62 });
6050 try testArgs(@Vector(3, u512), @Vector(3, u63), .{ 0, 1, 1 << 62 });
6051 try testArgs(@Vector(3, u513), @Vector(3, u63), .{ 0, 1, 1 << 62 });
6052 try testArgs(@Vector(3, u1023), @Vector(3, u63), .{ 0, 1, 1 << 62 });
6053 try testArgs(@Vector(3, u1024), @Vector(3, u63), .{ 0, 1, 1 << 62 });
6054 try testArgs(@Vector(3, u1025), @Vector(3, u63), .{ 0, 1, 1 << 62 });
6055
6056 try testArgs(@Vector(3, i7), @Vector(3, i64), .{ -1 << 63, -1, 0 });
6057 try testArgs(@Vector(3, i8), @Vector(3, i64), .{ -1 << 63, -1, 0 });
6058 try testArgs(@Vector(3, i9), @Vector(3, i64), .{ -1 << 63, -1, 0 });
6059 try testArgs(@Vector(3, i15), @Vector(3, i64), .{ -1 << 63, -1, 0 });
6060 try testArgs(@Vector(3, i16), @Vector(3, i64), .{ -1 << 63, -1, 0 });
6061 try testArgs(@Vector(3, i17), @Vector(3, i64), .{ -1 << 63, -1, 0 });
6062 try testArgs(@Vector(3, i31), @Vector(3, i64), .{ -1 << 63, -1, 0 });
6063 try testArgs(@Vector(3, i32), @Vector(3, i64), .{ -1 << 63, -1, 0 });
6064 try testArgs(@Vector(3, i33), @Vector(3, i64), .{ -1 << 63, -1, 0 });
6065 try testArgs(@Vector(3, i63), @Vector(3, i64), .{ -1 << 63, -1, 0 });
6066 try testArgs(@Vector(3, i64), @Vector(3, i64), .{ -1 << 63, -1, 0 });
6067 try testArgs(@Vector(3, i65), @Vector(3, i64), .{ -1 << 63, -1, 0 });
6068 try testArgs(@Vector(3, i127), @Vector(3, i64), .{ -1 << 63, -1, 0 });
6069 try testArgs(@Vector(3, i128), @Vector(3, i64), .{ -1 << 63, -1, 0 });
6070 try testArgs(@Vector(3, i129), @Vector(3, i64), .{ -1 << 63, -1, 0 });
6071 try testArgs(@Vector(3, i255), @Vector(3, i64), .{ -1 << 63, -1, 0 });
6072 try testArgs(@Vector(3, i256), @Vector(3, i64), .{ -1 << 63, -1, 0 });
6073 try testArgs(@Vector(3, i257), @Vector(3, i64), .{ -1 << 63, -1, 0 });
6074 try testArgs(@Vector(3, i511), @Vector(3, i64), .{ -1 << 63, -1, 0 });
6075 try testArgs(@Vector(3, i512), @Vector(3, i64), .{ -1 << 63, -1, 0 });
6076 try testArgs(@Vector(3, i513), @Vector(3, i64), .{ -1 << 63, -1, 0 });
6077 try testArgs(@Vector(3, i1023), @Vector(3, i64), .{ -1 << 63, -1, 0 });
6078 try testArgs(@Vector(3, i1024), @Vector(3, i64), .{ -1 << 63, -1, 0 });
6079 try testArgs(@Vector(3, i1025), @Vector(3, i64), .{ -1 << 63, -1, 0 });
6080 try testArgs(@Vector(3, u7), @Vector(3, u64), .{ 0, 1, 1 << 63 });
6081 try testArgs(@Vector(3, u8), @Vector(3, u64), .{ 0, 1, 1 << 63 });
6082 try testArgs(@Vector(3, u9), @Vector(3, u64), .{ 0, 1, 1 << 63 });
6083 try testArgs(@Vector(3, u15), @Vector(3, u64), .{ 0, 1, 1 << 63 });
6084 try testArgs(@Vector(3, u16), @Vector(3, u64), .{ 0, 1, 1 << 63 });
6085 try testArgs(@Vector(3, u17), @Vector(3, u64), .{ 0, 1, 1 << 63 });
6086 try testArgs(@Vector(3, u31), @Vector(3, u64), .{ 0, 1, 1 << 63 });
6087 try testArgs(@Vector(3, u32), @Vector(3, u64), .{ 0, 1, 1 << 63 });
6088 try testArgs(@Vector(3, u33), @Vector(3, u64), .{ 0, 1, 1 << 63 });
6089 try testArgs(@Vector(3, u63), @Vector(3, u64), .{ 0, 1, 1 << 63 });
6090 try testArgs(@Vector(3, u64), @Vector(3, u64), .{ 0, 1, 1 << 63 });
6091 try testArgs(@Vector(3, u65), @Vector(3, u64), .{ 0, 1, 1 << 63 });
6092 try testArgs(@Vector(3, u127), @Vector(3, u64), .{ 0, 1, 1 << 63 });
6093 try testArgs(@Vector(3, u128), @Vector(3, u64), .{ 0, 1, 1 << 63 });
6094 try testArgs(@Vector(3, u129), @Vector(3, u64), .{ 0, 1, 1 << 63 });
6095 try testArgs(@Vector(3, u255), @Vector(3, u64), .{ 0, 1, 1 << 63 });
6096 try testArgs(@Vector(3, u256), @Vector(3, u64), .{ 0, 1, 1 << 63 });
6097 try testArgs(@Vector(3, u257), @Vector(3, u64), .{ 0, 1, 1 << 63 });
6098 try testArgs(@Vector(3, u511), @Vector(3, u64), .{ 0, 1, 1 << 63 });
6099 try testArgs(@Vector(3, u512), @Vector(3, u64), .{ 0, 1, 1 << 63 });
6100 try testArgs(@Vector(3, u513), @Vector(3, u64), .{ 0, 1, 1 << 63 });
6101 try testArgs(@Vector(3, u1023), @Vector(3, u64), .{ 0, 1, 1 << 63 });
6102 try testArgs(@Vector(3, u1024), @Vector(3, u64), .{ 0, 1, 1 << 63 });
6103 try testArgs(@Vector(3, u1025), @Vector(3, u64), .{ 0, 1, 1 << 63 });
6104
6105 try testArgs(@Vector(3, i7), @Vector(3, i65), .{ -1 << 64, -1, 0 });
6106 try testArgs(@Vector(3, i8), @Vector(3, i65), .{ -1 << 64, -1, 0 });
6107 try testArgs(@Vector(3, i9), @Vector(3, i65), .{ -1 << 64, -1, 0 });
6108 try testArgs(@Vector(3, i15), @Vector(3, i65), .{ -1 << 64, -1, 0 });
6109 try testArgs(@Vector(3, i16), @Vector(3, i65), .{ -1 << 64, -1, 0 });
6110 try testArgs(@Vector(3, i17), @Vector(3, i65), .{ -1 << 64, -1, 0 });
6111 try testArgs(@Vector(3, i31), @Vector(3, i65), .{ -1 << 64, -1, 0 });
6112 try testArgs(@Vector(3, i32), @Vector(3, i65), .{ -1 << 64, -1, 0 });
6113 try testArgs(@Vector(3, i33), @Vector(3, i65), .{ -1 << 64, -1, 0 });
6114 try testArgs(@Vector(3, i63), @Vector(3, i65), .{ -1 << 64, -1, 0 });
6115 try testArgs(@Vector(3, i64), @Vector(3, i65), .{ -1 << 64, -1, 0 });
6116 try testArgs(@Vector(3, i65), @Vector(3, i65), .{ -1 << 64, -1, 0 });
6117 try testArgs(@Vector(3, i127), @Vector(3, i65), .{ -1 << 64, -1, 0 });
6118 try testArgs(@Vector(3, i128), @Vector(3, i65), .{ -1 << 64, -1, 0 });
6119 try testArgs(@Vector(3, i129), @Vector(3, i65), .{ -1 << 64, -1, 0 });
6120 try testArgs(@Vector(3, i255), @Vector(3, i65), .{ -1 << 64, -1, 0 });
6121 try testArgs(@Vector(3, i256), @Vector(3, i65), .{ -1 << 64, -1, 0 });
6122 try testArgs(@Vector(3, i257), @Vector(3, i65), .{ -1 << 64, -1, 0 });
6123 try testArgs(@Vector(3, i511), @Vector(3, i65), .{ -1 << 64, -1, 0 });
6124 try testArgs(@Vector(3, i512), @Vector(3, i65), .{ -1 << 64, -1, 0 });
6125 try testArgs(@Vector(3, i513), @Vector(3, i65), .{ -1 << 64, -1, 0 });
6126 try testArgs(@Vector(3, i1023), @Vector(3, i65), .{ -1 << 64, -1, 0 });
6127 try testArgs(@Vector(3, i1024), @Vector(3, i65), .{ -1 << 64, -1, 0 });
6128 try testArgs(@Vector(3, i1025), @Vector(3, i65), .{ -1 << 64, -1, 0 });
6129 try testArgs(@Vector(3, u7), @Vector(3, u65), .{ 0, 1, 1 << 64 });
6130 try testArgs(@Vector(3, u8), @Vector(3, u65), .{ 0, 1, 1 << 64 });
6131 try testArgs(@Vector(3, u9), @Vector(3, u65), .{ 0, 1, 1 << 64 });
6132 try testArgs(@Vector(3, u15), @Vector(3, u65), .{ 0, 1, 1 << 64 });
6133 try testArgs(@Vector(3, u16), @Vector(3, u65), .{ 0, 1, 1 << 64 });
6134 try testArgs(@Vector(3, u17), @Vector(3, u65), .{ 0, 1, 1 << 64 });
6135 try testArgs(@Vector(3, u31), @Vector(3, u65), .{ 0, 1, 1 << 64 });
6136 try testArgs(@Vector(3, u32), @Vector(3, u65), .{ 0, 1, 1 << 64 });
6137 try testArgs(@Vector(3, u33), @Vector(3, u65), .{ 0, 1, 1 << 64 });
6138 try testArgs(@Vector(3, u63), @Vector(3, u65), .{ 0, 1, 1 << 64 });
6139 try testArgs(@Vector(3, u64), @Vector(3, u65), .{ 0, 1, 1 << 64 });
6140 try testArgs(@Vector(3, u65), @Vector(3, u65), .{ 0, 1, 1 << 64 });
6141 try testArgs(@Vector(3, u127), @Vector(3, u65), .{ 0, 1, 1 << 64 });
6142 try testArgs(@Vector(3, u128), @Vector(3, u65), .{ 0, 1, 1 << 64 });
6143 try testArgs(@Vector(3, u129), @Vector(3, u65), .{ 0, 1, 1 << 64 });
6144 try testArgs(@Vector(3, u255), @Vector(3, u65), .{ 0, 1, 1 << 64 });
6145 try testArgs(@Vector(3, u256), @Vector(3, u65), .{ 0, 1, 1 << 64 });
6146 try testArgs(@Vector(3, u257), @Vector(3, u65), .{ 0, 1, 1 << 64 });
6147 try testArgs(@Vector(3, u511), @Vector(3, u65), .{ 0, 1, 1 << 64 });
6148 try testArgs(@Vector(3, u512), @Vector(3, u65), .{ 0, 1, 1 << 64 });
6149 try testArgs(@Vector(3, u513), @Vector(3, u65), .{ 0, 1, 1 << 64 });
6150 try testArgs(@Vector(3, u1023), @Vector(3, u65), .{ 0, 1, 1 << 64 });
6151 try testArgs(@Vector(3, u1024), @Vector(3, u65), .{ 0, 1, 1 << 64 });
6152 try testArgs(@Vector(3, u1025), @Vector(3, u65), .{ 0, 1, 1 << 64 });
6153
6154 try testArgs(@Vector(3, i7), @Vector(3, i95), .{ -1 << 94, -1, 0 });
6155 try testArgs(@Vector(3, i8), @Vector(3, i95), .{ -1 << 94, -1, 0 });
6156 try testArgs(@Vector(3, i9), @Vector(3, i95), .{ -1 << 94, -1, 0 });
6157 try testArgs(@Vector(3, i15), @Vector(3, i95), .{ -1 << 94, -1, 0 });
6158 try testArgs(@Vector(3, i16), @Vector(3, i95), .{ -1 << 94, -1, 0 });
6159 try testArgs(@Vector(3, i17), @Vector(3, i95), .{ -1 << 94, -1, 0 });
6160 try testArgs(@Vector(3, i31), @Vector(3, i95), .{ -1 << 94, -1, 0 });
6161 try testArgs(@Vector(3, i32), @Vector(3, i95), .{ -1 << 94, -1, 0 });
6162 try testArgs(@Vector(3, i33), @Vector(3, i95), .{ -1 << 94, -1, 0 });
6163 try testArgs(@Vector(3, i63), @Vector(3, i95), .{ -1 << 94, -1, 0 });
6164 try testArgs(@Vector(3, i64), @Vector(3, i95), .{ -1 << 94, -1, 0 });
6165 try testArgs(@Vector(3, i65), @Vector(3, i95), .{ -1 << 94, -1, 0 });
6166 try testArgs(@Vector(3, i127), @Vector(3, i95), .{ -1 << 94, -1, 0 });
6167 try testArgs(@Vector(3, i128), @Vector(3, i95), .{ -1 << 94, -1, 0 });
6168 try testArgs(@Vector(3, i129), @Vector(3, i95), .{ -1 << 94, -1, 0 });
6169 try testArgs(@Vector(3, i255), @Vector(3, i95), .{ -1 << 94, -1, 0 });
6170 try testArgs(@Vector(3, i256), @Vector(3, i95), .{ -1 << 94, -1, 0 });
6171 try testArgs(@Vector(3, i257), @Vector(3, i95), .{ -1 << 94, -1, 0 });
6172 try testArgs(@Vector(3, i511), @Vector(3, i95), .{ -1 << 94, -1, 0 });
6173 try testArgs(@Vector(3, i512), @Vector(3, i95), .{ -1 << 94, -1, 0 });
6174 try testArgs(@Vector(3, i513), @Vector(3, i95), .{ -1 << 94, -1, 0 });
6175 try testArgs(@Vector(3, i1023), @Vector(3, i95), .{ -1 << 94, -1, 0 });
6176 try testArgs(@Vector(3, i1024), @Vector(3, i95), .{ -1 << 94, -1, 0 });
6177 try testArgs(@Vector(3, i1025), @Vector(3, i95), .{ -1 << 94, -1, 0 });
6178 try testArgs(@Vector(3, u7), @Vector(3, u95), .{ 0, 1, 1 << 94 });
6179 try testArgs(@Vector(3, u8), @Vector(3, u95), .{ 0, 1, 1 << 94 });
6180 try testArgs(@Vector(3, u9), @Vector(3, u95), .{ 0, 1, 1 << 94 });
6181 try testArgs(@Vector(3, u15), @Vector(3, u95), .{ 0, 1, 1 << 94 });
6182 try testArgs(@Vector(3, u16), @Vector(3, u95), .{ 0, 1, 1 << 94 });
6183 try testArgs(@Vector(3, u17), @Vector(3, u95), .{ 0, 1, 1 << 94 });
6184 try testArgs(@Vector(3, u31), @Vector(3, u95), .{ 0, 1, 1 << 94 });
6185 try testArgs(@Vector(3, u32), @Vector(3, u95), .{ 0, 1, 1 << 94 });
6186 try testArgs(@Vector(3, u33), @Vector(3, u95), .{ 0, 1, 1 << 94 });
6187 try testArgs(@Vector(3, u63), @Vector(3, u95), .{ 0, 1, 1 << 94 });
6188 try testArgs(@Vector(3, u64), @Vector(3, u95), .{ 0, 1, 1 << 94 });
6189 try testArgs(@Vector(3, u65), @Vector(3, u95), .{ 0, 1, 1 << 94 });
6190 try testArgs(@Vector(3, u127), @Vector(3, u95), .{ 0, 1, 1 << 94 });
6191 try testArgs(@Vector(3, u128), @Vector(3, u95), .{ 0, 1, 1 << 94 });
6192 try testArgs(@Vector(3, u129), @Vector(3, u95), .{ 0, 1, 1 << 94 });
6193 try testArgs(@Vector(3, u255), @Vector(3, u95), .{ 0, 1, 1 << 94 });
6194 try testArgs(@Vector(3, u256), @Vector(3, u95), .{ 0, 1, 1 << 94 });
6195 try testArgs(@Vector(3, u257), @Vector(3, u95), .{ 0, 1, 1 << 94 });
6196 try testArgs(@Vector(3, u511), @Vector(3, u95), .{ 0, 1, 1 << 94 });
6197 try testArgs(@Vector(3, u512), @Vector(3, u95), .{ 0, 1, 1 << 94 });
6198 try testArgs(@Vector(3, u513), @Vector(3, u95), .{ 0, 1, 1 << 94 });
6199 try testArgs(@Vector(3, u1023), @Vector(3, u95), .{ 0, 1, 1 << 94 });
6200 try testArgs(@Vector(3, u1024), @Vector(3, u95), .{ 0, 1, 1 << 94 });
6201 try testArgs(@Vector(3, u1025), @Vector(3, u95), .{ 0, 1, 1 << 94 });
6202
6203 try testArgs(@Vector(3, i7), @Vector(3, i96), .{ -1 << 95, -1, 0 });
6204 try testArgs(@Vector(3, i8), @Vector(3, i96), .{ -1 << 95, -1, 0 });
6205 try testArgs(@Vector(3, i9), @Vector(3, i96), .{ -1 << 95, -1, 0 });
6206 try testArgs(@Vector(3, i15), @Vector(3, i96), .{ -1 << 95, -1, 0 });
6207 try testArgs(@Vector(3, i16), @Vector(3, i96), .{ -1 << 95, -1, 0 });
6208 try testArgs(@Vector(3, i17), @Vector(3, i96), .{ -1 << 95, -1, 0 });
6209 try testArgs(@Vector(3, i31), @Vector(3, i96), .{ -1 << 95, -1, 0 });
6210 try testArgs(@Vector(3, i32), @Vector(3, i96), .{ -1 << 95, -1, 0 });
6211 try testArgs(@Vector(3, i33), @Vector(3, i96), .{ -1 << 95, -1, 0 });
6212 try testArgs(@Vector(3, i63), @Vector(3, i96), .{ -1 << 95, -1, 0 });
6213 try testArgs(@Vector(3, i64), @Vector(3, i96), .{ -1 << 95, -1, 0 });
6214 try testArgs(@Vector(3, i65), @Vector(3, i96), .{ -1 << 95, -1, 0 });
6215 try testArgs(@Vector(3, i127), @Vector(3, i96), .{ -1 << 95, -1, 0 });
6216 try testArgs(@Vector(3, i128), @Vector(3, i96), .{ -1 << 95, -1, 0 });
6217 try testArgs(@Vector(3, i129), @Vector(3, i96), .{ -1 << 95, -1, 0 });
6218 try testArgs(@Vector(3, i255), @Vector(3, i96), .{ -1 << 95, -1, 0 });
6219 try testArgs(@Vector(3, i256), @Vector(3, i96), .{ -1 << 95, -1, 0 });
6220 try testArgs(@Vector(3, i257), @Vector(3, i96), .{ -1 << 95, -1, 0 });
6221 try testArgs(@Vector(3, i511), @Vector(3, i96), .{ -1 << 95, -1, 0 });
6222 try testArgs(@Vector(3, i512), @Vector(3, i96), .{ -1 << 95, -1, 0 });
6223 try testArgs(@Vector(3, i513), @Vector(3, i96), .{ -1 << 95, -1, 0 });
6224 try testArgs(@Vector(3, i1023), @Vector(3, i96), .{ -1 << 95, -1, 0 });
6225 try testArgs(@Vector(3, i1024), @Vector(3, i96), .{ -1 << 95, -1, 0 });
6226 try testArgs(@Vector(3, i1025), @Vector(3, i96), .{ -1 << 95, -1, 0 });
6227 try testArgs(@Vector(3, u7), @Vector(3, u96), .{ 0, 1, 1 << 95 });
6228 try testArgs(@Vector(3, u8), @Vector(3, u96), .{ 0, 1, 1 << 95 });
6229 try testArgs(@Vector(3, u9), @Vector(3, u96), .{ 0, 1, 1 << 95 });
6230 try testArgs(@Vector(3, u15), @Vector(3, u96), .{ 0, 1, 1 << 95 });
6231 try testArgs(@Vector(3, u16), @Vector(3, u96), .{ 0, 1, 1 << 95 });
6232 try testArgs(@Vector(3, u17), @Vector(3, u96), .{ 0, 1, 1 << 95 });
6233 try testArgs(@Vector(3, u31), @Vector(3, u96), .{ 0, 1, 1 << 95 });
6234 try testArgs(@Vector(3, u32), @Vector(3, u96), .{ 0, 1, 1 << 95 });
6235 try testArgs(@Vector(3, u33), @Vector(3, u96), .{ 0, 1, 1 << 95 });
6236 try testArgs(@Vector(3, u63), @Vector(3, u96), .{ 0, 1, 1 << 95 });
6237 try testArgs(@Vector(3, u64), @Vector(3, u96), .{ 0, 1, 1 << 95 });
6238 try testArgs(@Vector(3, u65), @Vector(3, u96), .{ 0, 1, 1 << 95 });
6239 try testArgs(@Vector(3, u127), @Vector(3, u96), .{ 0, 1, 1 << 95 });
6240 try testArgs(@Vector(3, u128), @Vector(3, u96), .{ 0, 1, 1 << 95 });
6241 try testArgs(@Vector(3, u129), @Vector(3, u96), .{ 0, 1, 1 << 95 });
6242 try testArgs(@Vector(3, u255), @Vector(3, u96), .{ 0, 1, 1 << 95 });
6243 try testArgs(@Vector(3, u256), @Vector(3, u96), .{ 0, 1, 1 << 95 });
6244 try testArgs(@Vector(3, u257), @Vector(3, u96), .{ 0, 1, 1 << 95 });
6245 try testArgs(@Vector(3, u511), @Vector(3, u96), .{ 0, 1, 1 << 95 });
6246 try testArgs(@Vector(3, u512), @Vector(3, u96), .{ 0, 1, 1 << 95 });
6247 try testArgs(@Vector(3, u513), @Vector(3, u96), .{ 0, 1, 1 << 95 });
6248 try testArgs(@Vector(3, u1023), @Vector(3, u96), .{ 0, 1, 1 << 95 });
6249 try testArgs(@Vector(3, u1024), @Vector(3, u96), .{ 0, 1, 1 << 95 });
6250 try testArgs(@Vector(3, u1025), @Vector(3, u96), .{ 0, 1, 1 << 95 });
6251
6252 try testArgs(@Vector(3, i7), @Vector(3, i97), .{ -1 << 96, -1, 0 });
6253 try testArgs(@Vector(3, i8), @Vector(3, i97), .{ -1 << 96, -1, 0 });
6254 try testArgs(@Vector(3, i9), @Vector(3, i97), .{ -1 << 96, -1, 0 });
6255 try testArgs(@Vector(3, i15), @Vector(3, i97), .{ -1 << 96, -1, 0 });
6256 try testArgs(@Vector(3, i16), @Vector(3, i97), .{ -1 << 96, -1, 0 });
6257 try testArgs(@Vector(3, i17), @Vector(3, i97), .{ -1 << 96, -1, 0 });
6258 try testArgs(@Vector(3, i31), @Vector(3, i97), .{ -1 << 96, -1, 0 });
6259 try testArgs(@Vector(3, i32), @Vector(3, i97), .{ -1 << 96, -1, 0 });
6260 try testArgs(@Vector(3, i33), @Vector(3, i97), .{ -1 << 96, -1, 0 });
6261 try testArgs(@Vector(3, i63), @Vector(3, i97), .{ -1 << 96, -1, 0 });
6262 try testArgs(@Vector(3, i64), @Vector(3, i97), .{ -1 << 96, -1, 0 });
6263 try testArgs(@Vector(3, i65), @Vector(3, i97), .{ -1 << 96, -1, 0 });
6264 try testArgs(@Vector(3, i127), @Vector(3, i97), .{ -1 << 96, -1, 0 });
6265 try testArgs(@Vector(3, i128), @Vector(3, i97), .{ -1 << 96, -1, 0 });
6266 try testArgs(@Vector(3, i129), @Vector(3, i97), .{ -1 << 96, -1, 0 });
6267 try testArgs(@Vector(3, i255), @Vector(3, i97), .{ -1 << 96, -1, 0 });
6268 try testArgs(@Vector(3, i256), @Vector(3, i97), .{ -1 << 96, -1, 0 });
6269 try testArgs(@Vector(3, i257), @Vector(3, i97), .{ -1 << 96, -1, 0 });
6270 try testArgs(@Vector(3, i511), @Vector(3, i97), .{ -1 << 96, -1, 0 });
6271 try testArgs(@Vector(3, i512), @Vector(3, i97), .{ -1 << 96, -1, 0 });
6272 try testArgs(@Vector(3, i513), @Vector(3, i97), .{ -1 << 96, -1, 0 });
6273 try testArgs(@Vector(3, i1023), @Vector(3, i97), .{ -1 << 96, -1, 0 });
6274 try testArgs(@Vector(3, i1024), @Vector(3, i97), .{ -1 << 96, -1, 0 });
6275 try testArgs(@Vector(3, i1025), @Vector(3, i97), .{ -1 << 96, -1, 0 });
6276 try testArgs(@Vector(3, u7), @Vector(3, u97), .{ 0, 1, 1 << 96 });
6277 try testArgs(@Vector(3, u8), @Vector(3, u97), .{ 0, 1, 1 << 96 });
6278 try testArgs(@Vector(3, u9), @Vector(3, u97), .{ 0, 1, 1 << 96 });
6279 try testArgs(@Vector(3, u15), @Vector(3, u97), .{ 0, 1, 1 << 96 });
6280 try testArgs(@Vector(3, u16), @Vector(3, u97), .{ 0, 1, 1 << 96 });
6281 try testArgs(@Vector(3, u17), @Vector(3, u97), .{ 0, 1, 1 << 96 });
6282 try testArgs(@Vector(3, u31), @Vector(3, u97), .{ 0, 1, 1 << 96 });
6283 try testArgs(@Vector(3, u32), @Vector(3, u97), .{ 0, 1, 1 << 96 });
6284 try testArgs(@Vector(3, u33), @Vector(3, u97), .{ 0, 1, 1 << 96 });
6285 try testArgs(@Vector(3, u63), @Vector(3, u97), .{ 0, 1, 1 << 96 });
6286 try testArgs(@Vector(3, u64), @Vector(3, u97), .{ 0, 1, 1 << 96 });
6287 try testArgs(@Vector(3, u65), @Vector(3, u97), .{ 0, 1, 1 << 96 });
6288 try testArgs(@Vector(3, u127), @Vector(3, u97), .{ 0, 1, 1 << 96 });
6289 try testArgs(@Vector(3, u128), @Vector(3, u97), .{ 0, 1, 1 << 96 });
6290 try testArgs(@Vector(3, u129), @Vector(3, u97), .{ 0, 1, 1 << 96 });
6291 try testArgs(@Vector(3, u255), @Vector(3, u97), .{ 0, 1, 1 << 96 });
6292 try testArgs(@Vector(3, u256), @Vector(3, u97), .{ 0, 1, 1 << 96 });
6293 try testArgs(@Vector(3, u257), @Vector(3, u97), .{ 0, 1, 1 << 96 });
6294 try testArgs(@Vector(3, u511), @Vector(3, u97), .{ 0, 1, 1 << 96 });
6295 try testArgs(@Vector(3, u512), @Vector(3, u97), .{ 0, 1, 1 << 96 });
6296 try testArgs(@Vector(3, u513), @Vector(3, u97), .{ 0, 1, 1 << 96 });
6297 try testArgs(@Vector(3, u1023), @Vector(3, u97), .{ 0, 1, 1 << 96 });
6298 try testArgs(@Vector(3, u1024), @Vector(3, u97), .{ 0, 1, 1 << 96 });
6299 try testArgs(@Vector(3, u1025), @Vector(3, u97), .{ 0, 1, 1 << 96 });
6300
6301 try testArgs(@Vector(3, i7), @Vector(3, i127), .{ -1 << 126, -1, 0 });
6302 try testArgs(@Vector(3, i8), @Vector(3, i127), .{ -1 << 126, -1, 0 });
6303 try testArgs(@Vector(3, i9), @Vector(3, i127), .{ -1 << 126, -1, 0 });
6304 try testArgs(@Vector(3, i15), @Vector(3, i127), .{ -1 << 126, -1, 0 });
6305 try testArgs(@Vector(3, i16), @Vector(3, i127), .{ -1 << 126, -1, 0 });
6306 try testArgs(@Vector(3, i17), @Vector(3, i127), .{ -1 << 126, -1, 0 });
6307 try testArgs(@Vector(3, i31), @Vector(3, i127), .{ -1 << 126, -1, 0 });
6308 try testArgs(@Vector(3, i32), @Vector(3, i127), .{ -1 << 126, -1, 0 });
6309 try testArgs(@Vector(3, i33), @Vector(3, i127), .{ -1 << 126, -1, 0 });
6310 try testArgs(@Vector(3, i63), @Vector(3, i127), .{ -1 << 126, -1, 0 });
6311 try testArgs(@Vector(3, i64), @Vector(3, i127), .{ -1 << 126, -1, 0 });
6312 try testArgs(@Vector(3, i65), @Vector(3, i127), .{ -1 << 126, -1, 0 });
6313 try testArgs(@Vector(3, i127), @Vector(3, i127), .{ -1 << 126, -1, 0 });
6314 try testArgs(@Vector(3, i128), @Vector(3, i127), .{ -1 << 126, -1, 0 });
6315 try testArgs(@Vector(3, i129), @Vector(3, i127), .{ -1 << 126, -1, 0 });
6316 try testArgs(@Vector(3, i255), @Vector(3, i127), .{ -1 << 126, -1, 0 });
6317 try testArgs(@Vector(3, i256), @Vector(3, i127), .{ -1 << 126, -1, 0 });
6318 try testArgs(@Vector(3, i257), @Vector(3, i127), .{ -1 << 126, -1, 0 });
6319 try testArgs(@Vector(3, i511), @Vector(3, i127), .{ -1 << 126, -1, 0 });
6320 try testArgs(@Vector(3, i512), @Vector(3, i127), .{ -1 << 126, -1, 0 });
6321 try testArgs(@Vector(3, i513), @Vector(3, i127), .{ -1 << 126, -1, 0 });
6322 try testArgs(@Vector(3, i1023), @Vector(3, i127), .{ -1 << 126, -1, 0 });
6323 try testArgs(@Vector(3, i1024), @Vector(3, i127), .{ -1 << 126, -1, 0 });
6324 try testArgs(@Vector(3, i1025), @Vector(3, i127), .{ -1 << 126, -1, 0 });
6325 try testArgs(@Vector(3, u7), @Vector(3, u127), .{ 0, 1, 1 << 126 });
6326 try testArgs(@Vector(3, u8), @Vector(3, u127), .{ 0, 1, 1 << 126 });
6327 try testArgs(@Vector(3, u9), @Vector(3, u127), .{ 0, 1, 1 << 126 });
6328 try testArgs(@Vector(3, u15), @Vector(3, u127), .{ 0, 1, 1 << 126 });
6329 try testArgs(@Vector(3, u16), @Vector(3, u127), .{ 0, 1, 1 << 126 });
6330 try testArgs(@Vector(3, u17), @Vector(3, u127), .{ 0, 1, 1 << 126 });
6331 try testArgs(@Vector(3, u31), @Vector(3, u127), .{ 0, 1, 1 << 126 });
6332 try testArgs(@Vector(3, u32), @Vector(3, u127), .{ 0, 1, 1 << 126 });
6333 try testArgs(@Vector(3, u33), @Vector(3, u127), .{ 0, 1, 1 << 126 });
6334 try testArgs(@Vector(3, u63), @Vector(3, u127), .{ 0, 1, 1 << 126 });
6335 try testArgs(@Vector(3, u64), @Vector(3, u127), .{ 0, 1, 1 << 126 });
6336 try testArgs(@Vector(3, u65), @Vector(3, u127), .{ 0, 1, 1 << 126 });
6337 try testArgs(@Vector(3, u127), @Vector(3, u127), .{ 0, 1, 1 << 126 });
6338 try testArgs(@Vector(3, u128), @Vector(3, u127), .{ 0, 1, 1 << 126 });
6339 try testArgs(@Vector(3, u129), @Vector(3, u127), .{ 0, 1, 1 << 126 });
6340 try testArgs(@Vector(3, u255), @Vector(3, u127), .{ 0, 1, 1 << 126 });
6341 try testArgs(@Vector(3, u256), @Vector(3, u127), .{ 0, 1, 1 << 126 });
6342 try testArgs(@Vector(3, u257), @Vector(3, u127), .{ 0, 1, 1 << 126 });
6343 try testArgs(@Vector(3, u511), @Vector(3, u127), .{ 0, 1, 1 << 126 });
6344 try testArgs(@Vector(3, u512), @Vector(3, u127), .{ 0, 1, 1 << 126 });
6345 try testArgs(@Vector(3, u513), @Vector(3, u127), .{ 0, 1, 1 << 126 });
6346 try testArgs(@Vector(3, u1023), @Vector(3, u127), .{ 0, 1, 1 << 126 });
6347 try testArgs(@Vector(3, u1024), @Vector(3, u127), .{ 0, 1, 1 << 126 });
6348 try testArgs(@Vector(3, u1025), @Vector(3, u127), .{ 0, 1, 1 << 126 });
6349
6350 try testArgs(@Vector(3, i7), @Vector(3, i128), .{ -1 << 127, -1, 0 });
6351 try testArgs(@Vector(3, i8), @Vector(3, i128), .{ -1 << 127, -1, 0 });
6352 try testArgs(@Vector(3, i9), @Vector(3, i128), .{ -1 << 127, -1, 0 });
6353 try testArgs(@Vector(3, i15), @Vector(3, i128), .{ -1 << 127, -1, 0 });
6354 try testArgs(@Vector(3, i16), @Vector(3, i128), .{ -1 << 127, -1, 0 });
6355 try testArgs(@Vector(3, i17), @Vector(3, i128), .{ -1 << 127, -1, 0 });
6356 try testArgs(@Vector(3, i31), @Vector(3, i128), .{ -1 << 127, -1, 0 });
6357 try testArgs(@Vector(3, i32), @Vector(3, i128), .{ -1 << 127, -1, 0 });
6358 try testArgs(@Vector(3, i33), @Vector(3, i128), .{ -1 << 127, -1, 0 });
6359 try testArgs(@Vector(3, i63), @Vector(3, i128), .{ -1 << 127, -1, 0 });
6360 try testArgs(@Vector(3, i64), @Vector(3, i128), .{ -1 << 127, -1, 0 });
6361 try testArgs(@Vector(3, i65), @Vector(3, i128), .{ -1 << 127, -1, 0 });
6362 try testArgs(@Vector(3, i127), @Vector(3, i128), .{ -1 << 127, -1, 0 });
6363 try testArgs(@Vector(3, i128), @Vector(3, i128), .{ -1 << 127, -1, 0 });
6364 try testArgs(@Vector(3, i129), @Vector(3, i128), .{ -1 << 127, -1, 0 });
6365 try testArgs(@Vector(3, i255), @Vector(3, i128), .{ -1 << 127, -1, 0 });
6366 try testArgs(@Vector(3, i256), @Vector(3, i128), .{ -1 << 127, -1, 0 });
6367 try testArgs(@Vector(3, i257), @Vector(3, i128), .{ -1 << 127, -1, 0 });
6368 try testArgs(@Vector(3, i511), @Vector(3, i128), .{ -1 << 127, -1, 0 });
6369 try testArgs(@Vector(3, i512), @Vector(3, i128), .{ -1 << 127, -1, 0 });
6370 try testArgs(@Vector(3, i513), @Vector(3, i128), .{ -1 << 127, -1, 0 });
6371 try testArgs(@Vector(3, i1023), @Vector(3, i128), .{ -1 << 127, -1, 0 });
6372 try testArgs(@Vector(3, i1024), @Vector(3, i128), .{ -1 << 127, -1, 0 });
6373 try testArgs(@Vector(3, i1025), @Vector(3, i128), .{ -1 << 127, -1, 0 });
6374 try testArgs(@Vector(3, u7), @Vector(3, u128), .{ 0, 1, 1 << 127 });
6375 try testArgs(@Vector(3, u8), @Vector(3, u128), .{ 0, 1, 1 << 127 });
6376 try testArgs(@Vector(3, u9), @Vector(3, u128), .{ 0, 1, 1 << 127 });
6377 try testArgs(@Vector(3, u15), @Vector(3, u128), .{ 0, 1, 1 << 127 });
6378 try testArgs(@Vector(3, u16), @Vector(3, u128), .{ 0, 1, 1 << 127 });
6379 try testArgs(@Vector(3, u17), @Vector(3, u128), .{ 0, 1, 1 << 127 });
6380 try testArgs(@Vector(3, u31), @Vector(3, u128), .{ 0, 1, 1 << 127 });
6381 try testArgs(@Vector(3, u32), @Vector(3, u128), .{ 0, 1, 1 << 127 });
6382 try testArgs(@Vector(3, u33), @Vector(3, u128), .{ 0, 1, 1 << 127 });
6383 try testArgs(@Vector(3, u63), @Vector(3, u128), .{ 0, 1, 1 << 127 });
6384 try testArgs(@Vector(3, u64), @Vector(3, u128), .{ 0, 1, 1 << 127 });
6385 try testArgs(@Vector(3, u65), @Vector(3, u128), .{ 0, 1, 1 << 127 });
6386 try testArgs(@Vector(3, u127), @Vector(3, u128), .{ 0, 1, 1 << 127 });
6387 try testArgs(@Vector(3, u128), @Vector(3, u128), .{ 0, 1, 1 << 127 });
6388 try testArgs(@Vector(3, u129), @Vector(3, u128), .{ 0, 1, 1 << 127 });
6389 try testArgs(@Vector(3, u255), @Vector(3, u128), .{ 0, 1, 1 << 127 });
6390 try testArgs(@Vector(3, u256), @Vector(3, u128), .{ 0, 1, 1 << 127 });
6391 try testArgs(@Vector(3, u257), @Vector(3, u128), .{ 0, 1, 1 << 127 });
6392 try testArgs(@Vector(3, u511), @Vector(3, u128), .{ 0, 1, 1 << 127 });
6393 try testArgs(@Vector(3, u512), @Vector(3, u128), .{ 0, 1, 1 << 127 });
6394 try testArgs(@Vector(3, u513), @Vector(3, u128), .{ 0, 1, 1 << 127 });
6395 try testArgs(@Vector(3, u1023), @Vector(3, u128), .{ 0, 1, 1 << 127 });
6396 try testArgs(@Vector(3, u1024), @Vector(3, u128), .{ 0, 1, 1 << 127 });
6397 try testArgs(@Vector(3, u1025), @Vector(3, u128), .{ 0, 1, 1 << 127 });
6398
6399 try testArgs(@Vector(3, i7), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6400 try testArgs(@Vector(3, i8), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6401 try testArgs(@Vector(3, i9), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6402 try testArgs(@Vector(3, i15), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6403 try testArgs(@Vector(3, i16), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6404 try testArgs(@Vector(3, i17), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6405 try testArgs(@Vector(3, i31), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6406 try testArgs(@Vector(3, i32), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6407 try testArgs(@Vector(3, i33), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6408 try testArgs(@Vector(3, i63), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6409 try testArgs(@Vector(3, i64), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6410 try testArgs(@Vector(3, i65), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6411 try testArgs(@Vector(3, i127), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6412 try testArgs(@Vector(3, i128), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6413 try testArgs(@Vector(3, i129), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6414 try testArgs(@Vector(3, i255), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6415 try testArgs(@Vector(3, i256), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6416 try testArgs(@Vector(3, i257), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6417 try testArgs(@Vector(3, i511), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6418 try testArgs(@Vector(3, i512), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6419 try testArgs(@Vector(3, i513), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6420 try testArgs(@Vector(3, i1023), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6421 try testArgs(@Vector(3, i1024), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6422 try testArgs(@Vector(3, i1025), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6423 try testArgs(@Vector(3, u7), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6424 try testArgs(@Vector(3, u8), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6425 try testArgs(@Vector(3, u9), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6426 try testArgs(@Vector(3, u15), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6427 try testArgs(@Vector(3, u16), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6428 try testArgs(@Vector(3, u17), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6429 try testArgs(@Vector(3, u31), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6430 try testArgs(@Vector(3, u32), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6431 try testArgs(@Vector(3, u33), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6432 try testArgs(@Vector(3, u63), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6433 try testArgs(@Vector(3, u64), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6434 try testArgs(@Vector(3, u65), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6435 try testArgs(@Vector(3, u127), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6436 try testArgs(@Vector(3, u128), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6437 try testArgs(@Vector(3, u129), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6438 try testArgs(@Vector(3, u255), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6439 try testArgs(@Vector(3, u256), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6440 try testArgs(@Vector(3, u257), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6441 try testArgs(@Vector(3, u511), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6442 try testArgs(@Vector(3, u512), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6443 try testArgs(@Vector(3, u513), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6444 try testArgs(@Vector(3, u1023), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6445 try testArgs(@Vector(3, u1024), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6446 try testArgs(@Vector(3, u1025), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6447
6448 try testArgs(@Vector(3, i7), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6449 try testArgs(@Vector(3, i8), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6450 try testArgs(@Vector(3, i9), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6451 try testArgs(@Vector(3, i15), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6452 try testArgs(@Vector(3, i16), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6453 try testArgs(@Vector(3, i17), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6454 try testArgs(@Vector(3, i31), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6455 try testArgs(@Vector(3, i32), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6456 try testArgs(@Vector(3, i33), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6457 try testArgs(@Vector(3, i63), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6458 try testArgs(@Vector(3, i64), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6459 try testArgs(@Vector(3, i65), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6460 try testArgs(@Vector(3, i127), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6461 try testArgs(@Vector(3, i128), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6462 try testArgs(@Vector(3, i129), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6463 try testArgs(@Vector(3, i255), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6464 try testArgs(@Vector(3, i256), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6465 try testArgs(@Vector(3, i257), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6466 try testArgs(@Vector(3, i511), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6467 try testArgs(@Vector(3, i512), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6468 try testArgs(@Vector(3, i513), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6469 try testArgs(@Vector(3, i1023), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6470 try testArgs(@Vector(3, i1024), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6471 try testArgs(@Vector(3, i1025), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6472 try testArgs(@Vector(3, u7), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6473 try testArgs(@Vector(3, u8), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6474 try testArgs(@Vector(3, u9), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6475 try testArgs(@Vector(3, u15), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6476 try testArgs(@Vector(3, u16), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6477 try testArgs(@Vector(3, u17), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6478 try testArgs(@Vector(3, u31), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6479 try testArgs(@Vector(3, u32), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6480 try testArgs(@Vector(3, u33), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6481 try testArgs(@Vector(3, u63), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6482 try testArgs(@Vector(3, u64), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6483 try testArgs(@Vector(3, u65), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6484 try testArgs(@Vector(3, u127), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6485 try testArgs(@Vector(3, u128), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6486 try testArgs(@Vector(3, u129), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6487 try testArgs(@Vector(3, u255), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6488 try testArgs(@Vector(3, u256), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6489 try testArgs(@Vector(3, u257), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6490 try testArgs(@Vector(3, u511), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6491 try testArgs(@Vector(3, u512), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6492 try testArgs(@Vector(3, u513), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6493 try testArgs(@Vector(3, u1023), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6494 try testArgs(@Vector(3, u1024), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6495 try testArgs(@Vector(3, u1025), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6496
6497 try testArgs(@Vector(3, i7), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6498 try testArgs(@Vector(3, i8), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6499 try testArgs(@Vector(3, i9), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6500 try testArgs(@Vector(3, i15), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6501 try testArgs(@Vector(3, i16), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6502 try testArgs(@Vector(3, i17), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6503 try testArgs(@Vector(3, i31), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6504 try testArgs(@Vector(3, i32), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6505 try testArgs(@Vector(3, i33), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6506 try testArgs(@Vector(3, i63), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6507 try testArgs(@Vector(3, i64), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6508 try testArgs(@Vector(3, i65), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6509 try testArgs(@Vector(3, i127), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6510 try testArgs(@Vector(3, i128), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6511 try testArgs(@Vector(3, i129), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6512 try testArgs(@Vector(3, i255), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6513 try testArgs(@Vector(3, i256), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6514 try testArgs(@Vector(3, i257), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6515 try testArgs(@Vector(3, i511), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6516 try testArgs(@Vector(3, i512), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6517 try testArgs(@Vector(3, i513), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6518 try testArgs(@Vector(3, i1023), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6519 try testArgs(@Vector(3, i1024), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6520 try testArgs(@Vector(3, i1025), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6521 try testArgs(@Vector(3, u7), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6522 try testArgs(@Vector(3, u8), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6523 try testArgs(@Vector(3, u9), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6524 try testArgs(@Vector(3, u15), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6525 try testArgs(@Vector(3, u16), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6526 try testArgs(@Vector(3, u17), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6527 try testArgs(@Vector(3, u31), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6528 try testArgs(@Vector(3, u32), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6529 try testArgs(@Vector(3, u33), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6530 try testArgs(@Vector(3, u63), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6531 try testArgs(@Vector(3, u64), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6532 try testArgs(@Vector(3, u65), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6533 try testArgs(@Vector(3, u127), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6534 try testArgs(@Vector(3, u128), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6535 try testArgs(@Vector(3, u129), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6536 try testArgs(@Vector(3, u255), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6537 try testArgs(@Vector(3, u256), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6538 try testArgs(@Vector(3, u257), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6539 try testArgs(@Vector(3, u511), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6540 try testArgs(@Vector(3, u512), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6541 try testArgs(@Vector(3, u513), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6542 try testArgs(@Vector(3, u1023), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6543 try testArgs(@Vector(3, u1024), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6544 try testArgs(@Vector(3, u1025), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6545
6546 try testArgs(@Vector(3, i7), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6547 try testArgs(@Vector(3, i8), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6548 try testArgs(@Vector(3, i9), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6549 try testArgs(@Vector(3, i15), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6550 try testArgs(@Vector(3, i16), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6551 try testArgs(@Vector(3, i17), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6552 try testArgs(@Vector(3, i31), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6553 try testArgs(@Vector(3, i32), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6554 try testArgs(@Vector(3, i33), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6555 try testArgs(@Vector(3, i63), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6556 try testArgs(@Vector(3, i64), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6557 try testArgs(@Vector(3, i65), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6558 try testArgs(@Vector(3, i127), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6559 try testArgs(@Vector(3, i128), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6560 try testArgs(@Vector(3, i129), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6561 try testArgs(@Vector(3, i255), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6562 try testArgs(@Vector(3, i256), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6563 try testArgs(@Vector(3, i257), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6564 try testArgs(@Vector(3, i511), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6565 try testArgs(@Vector(3, i512), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6566 try testArgs(@Vector(3, i513), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6567 try testArgs(@Vector(3, i1023), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6568 try testArgs(@Vector(3, i1024), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6569 try testArgs(@Vector(3, i1025), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6570 try testArgs(@Vector(3, u7), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6571 try testArgs(@Vector(3, u8), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6572 try testArgs(@Vector(3, u9), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6573 try testArgs(@Vector(3, u15), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6574 try testArgs(@Vector(3, u16), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6575 try testArgs(@Vector(3, u17), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6576 try testArgs(@Vector(3, u31), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6577 try testArgs(@Vector(3, u32), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6578 try testArgs(@Vector(3, u33), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6579 try testArgs(@Vector(3, u63), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6580 try testArgs(@Vector(3, u64), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6581 try testArgs(@Vector(3, u65), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6582 try testArgs(@Vector(3, u127), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6583 try testArgs(@Vector(3, u128), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6584 try testArgs(@Vector(3, u129), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6585 try testArgs(@Vector(3, u255), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6586 try testArgs(@Vector(3, u256), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6587 try testArgs(@Vector(3, u257), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6588 try testArgs(@Vector(3, u511), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6589 try testArgs(@Vector(3, u512), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6590 try testArgs(@Vector(3, u513), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6591 try testArgs(@Vector(3, u1023), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6592 try testArgs(@Vector(3, u1024), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6593 try testArgs(@Vector(3, u1025), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6594
6595 try testArgs(@Vector(3, i7), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6596 try testArgs(@Vector(3, i8), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6597 try testArgs(@Vector(3, i9), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6598 try testArgs(@Vector(3, i15), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6599 try testArgs(@Vector(3, i16), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6600 try testArgs(@Vector(3, i17), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6601 try testArgs(@Vector(3, i31), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6602 try testArgs(@Vector(3, i32), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6603 try testArgs(@Vector(3, i33), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6604 try testArgs(@Vector(3, i63), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6605 try testArgs(@Vector(3, i64), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6606 try testArgs(@Vector(3, i65), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6607 try testArgs(@Vector(3, i127), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6608 try testArgs(@Vector(3, i128), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6609 try testArgs(@Vector(3, i129), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6610 try testArgs(@Vector(3, i255), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6611 try testArgs(@Vector(3, i256), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6612 try testArgs(@Vector(3, i257), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6613 try testArgs(@Vector(3, i511), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6614 try testArgs(@Vector(3, i512), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6615 try testArgs(@Vector(3, i513), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6616 try testArgs(@Vector(3, i1023), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6617 try testArgs(@Vector(3, i1024), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6618 try testArgs(@Vector(3, i1025), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6619 try testArgs(@Vector(3, u7), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6620 try testArgs(@Vector(3, u8), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6621 try testArgs(@Vector(3, u9), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6622 try testArgs(@Vector(3, u15), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6623 try testArgs(@Vector(3, u16), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6624 try testArgs(@Vector(3, u17), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6625 try testArgs(@Vector(3, u31), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6626 try testArgs(@Vector(3, u32), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6627 try testArgs(@Vector(3, u33), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6628 try testArgs(@Vector(3, u63), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6629 try testArgs(@Vector(3, u64), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6630 try testArgs(@Vector(3, u65), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6631 try testArgs(@Vector(3, u127), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6632 try testArgs(@Vector(3, u128), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6633 try testArgs(@Vector(3, u129), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6634 try testArgs(@Vector(3, u255), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6635 try testArgs(@Vector(3, u256), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6636 try testArgs(@Vector(3, u257), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6637 try testArgs(@Vector(3, u511), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6638 try testArgs(@Vector(3, u512), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6639 try testArgs(@Vector(3, u513), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6640 try testArgs(@Vector(3, u1023), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6641 try testArgs(@Vector(3, u1024), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6642 try testArgs(@Vector(3, u1025), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6643
6644 try testArgs(@Vector(3, i7), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6645 try testArgs(@Vector(3, i8), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6646 try testArgs(@Vector(3, i9), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6647 try testArgs(@Vector(3, i15), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6648 try testArgs(@Vector(3, i16), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6649 try testArgs(@Vector(3, i17), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6650 try testArgs(@Vector(3, i31), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6651 try testArgs(@Vector(3, i32), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6652 try testArgs(@Vector(3, i33), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6653 try testArgs(@Vector(3, i63), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6654 try testArgs(@Vector(3, i64), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6655 try testArgs(@Vector(3, i65), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6656 try testArgs(@Vector(3, i127), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6657 try testArgs(@Vector(3, i128), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6658 try testArgs(@Vector(3, i129), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6659 try testArgs(@Vector(3, i255), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6660 try testArgs(@Vector(3, i256), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6661 try testArgs(@Vector(3, i257), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6662 try testArgs(@Vector(3, i511), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6663 try testArgs(@Vector(3, i512), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6664 try testArgs(@Vector(3, i513), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6665 try testArgs(@Vector(3, i1023), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6666 try testArgs(@Vector(3, i1024), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6667 try testArgs(@Vector(3, i1025), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6668 try testArgs(@Vector(3, u7), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6669 try testArgs(@Vector(3, u8), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6670 try testArgs(@Vector(3, u9), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6671 try testArgs(@Vector(3, u15), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6672 try testArgs(@Vector(3, u16), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6673 try testArgs(@Vector(3, u17), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6674 try testArgs(@Vector(3, u31), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6675 try testArgs(@Vector(3, u32), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6676 try testArgs(@Vector(3, u33), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6677 try testArgs(@Vector(3, u63), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6678 try testArgs(@Vector(3, u64), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6679 try testArgs(@Vector(3, u65), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6680 try testArgs(@Vector(3, u127), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6681 try testArgs(@Vector(3, u128), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6682 try testArgs(@Vector(3, u129), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6683 try testArgs(@Vector(3, u255), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6684 try testArgs(@Vector(3, u256), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6685 try testArgs(@Vector(3, u257), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6686 try testArgs(@Vector(3, u511), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6687 try testArgs(@Vector(3, u512), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6688 try testArgs(@Vector(3, u513), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6689 try testArgs(@Vector(3, u1023), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6690 try testArgs(@Vector(3, u1024), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6691 try testArgs(@Vector(3, u1025), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6692
6693 try testArgs(@Vector(3, i7), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6694 try testArgs(@Vector(3, i8), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6695 try testArgs(@Vector(3, i9), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6696 try testArgs(@Vector(3, i15), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6697 try testArgs(@Vector(3, i16), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6698 try testArgs(@Vector(3, i17), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6699 try testArgs(@Vector(3, i31), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6700 try testArgs(@Vector(3, i32), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6701 try testArgs(@Vector(3, i33), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6702 try testArgs(@Vector(3, i63), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6703 try testArgs(@Vector(3, i64), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6704 try testArgs(@Vector(3, i65), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6705 try testArgs(@Vector(3, i127), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6706 try testArgs(@Vector(3, i128), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6707 try testArgs(@Vector(3, i129), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6708 try testArgs(@Vector(3, i255), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6709 try testArgs(@Vector(3, i256), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6710 try testArgs(@Vector(3, i257), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6711 try testArgs(@Vector(3, i511), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6712 try testArgs(@Vector(3, i512), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6713 try testArgs(@Vector(3, i513), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6714 try testArgs(@Vector(3, i1023), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6715 try testArgs(@Vector(3, i1024), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6716 try testArgs(@Vector(3, i1025), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6717 try testArgs(@Vector(3, u7), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6718 try testArgs(@Vector(3, u8), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6719 try testArgs(@Vector(3, u9), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6720 try testArgs(@Vector(3, u15), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6721 try testArgs(@Vector(3, u16), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6722 try testArgs(@Vector(3, u17), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6723 try testArgs(@Vector(3, u31), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6724 try testArgs(@Vector(3, u32), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6725 try testArgs(@Vector(3, u33), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6726 try testArgs(@Vector(3, u63), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6727 try testArgs(@Vector(3, u64), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6728 try testArgs(@Vector(3, u65), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6729 try testArgs(@Vector(3, u127), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6730 try testArgs(@Vector(3, u128), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6731 try testArgs(@Vector(3, u129), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6732 try testArgs(@Vector(3, u255), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6733 try testArgs(@Vector(3, u256), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6734 try testArgs(@Vector(3, u257), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6735 try testArgs(@Vector(3, u511), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6736 try testArgs(@Vector(3, u512), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6737 try testArgs(@Vector(3, u513), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6738 try testArgs(@Vector(3, u1023), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6739 try testArgs(@Vector(3, u1024), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6740 try testArgs(@Vector(3, u1025), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6741
6742 try testArgs(@Vector(3, i7), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6743 try testArgs(@Vector(3, i8), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6744 try testArgs(@Vector(3, i9), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6745 try testArgs(@Vector(3, i15), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6746 try testArgs(@Vector(3, i16), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6747 try testArgs(@Vector(3, i17), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6748 try testArgs(@Vector(3, i31), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6749 try testArgs(@Vector(3, i32), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6750 try testArgs(@Vector(3, i33), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6751 try testArgs(@Vector(3, i63), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6752 try testArgs(@Vector(3, i64), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6753 try testArgs(@Vector(3, i65), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6754 try testArgs(@Vector(3, i127), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6755 try testArgs(@Vector(3, i128), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6756 try testArgs(@Vector(3, i129), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6757 try testArgs(@Vector(3, i255), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6758 try testArgs(@Vector(3, i256), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6759 try testArgs(@Vector(3, i257), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6760 try testArgs(@Vector(3, i511), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6761 try testArgs(@Vector(3, i512), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6762 try testArgs(@Vector(3, i513), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6763 try testArgs(@Vector(3, i1023), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6764 try testArgs(@Vector(3, i1024), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6765 try testArgs(@Vector(3, i1025), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6766 try testArgs(@Vector(3, u7), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6767 try testArgs(@Vector(3, u8), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6768 try testArgs(@Vector(3, u9), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6769 try testArgs(@Vector(3, u15), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6770 try testArgs(@Vector(3, u16), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6771 try testArgs(@Vector(3, u17), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6772 try testArgs(@Vector(3, u31), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6773 try testArgs(@Vector(3, u32), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6774 try testArgs(@Vector(3, u33), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6775 try testArgs(@Vector(3, u63), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6776 try testArgs(@Vector(3, u64), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6777 try testArgs(@Vector(3, u65), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6778 try testArgs(@Vector(3, u127), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6779 try testArgs(@Vector(3, u128), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6780 try testArgs(@Vector(3, u129), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6781 try testArgs(@Vector(3, u255), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6782 try testArgs(@Vector(3, u256), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6783 try testArgs(@Vector(3, u257), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6784 try testArgs(@Vector(3, u511), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6785 try testArgs(@Vector(3, u512), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6786 try testArgs(@Vector(3, u513), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6787 try testArgs(@Vector(3, u1023), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6788 try testArgs(@Vector(3, u1024), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6789 try testArgs(@Vector(3, u1025), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6790
6791 try testArgs(@Vector(3, i7), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6792 try testArgs(@Vector(3, i8), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6793 try testArgs(@Vector(3, i9), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6794 try testArgs(@Vector(3, i15), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6795 try testArgs(@Vector(3, i16), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6796 try testArgs(@Vector(3, i17), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6797 try testArgs(@Vector(3, i31), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6798 try testArgs(@Vector(3, i32), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6799 try testArgs(@Vector(3, i33), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6800 try testArgs(@Vector(3, i63), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6801 try testArgs(@Vector(3, i64), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6802 try testArgs(@Vector(3, i65), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6803 try testArgs(@Vector(3, i127), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6804 try testArgs(@Vector(3, i128), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6805 try testArgs(@Vector(3, i129), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6806 try testArgs(@Vector(3, i255), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6807 try testArgs(@Vector(3, i256), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6808 try testArgs(@Vector(3, i257), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6809 try testArgs(@Vector(3, i511), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6810 try testArgs(@Vector(3, i512), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6811 try testArgs(@Vector(3, i513), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6812 try testArgs(@Vector(3, i1023), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6813 try testArgs(@Vector(3, i1024), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6814 try testArgs(@Vector(3, i1025), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6815 try testArgs(@Vector(3, u7), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6816 try testArgs(@Vector(3, u8), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6817 try testArgs(@Vector(3, u9), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6818 try testArgs(@Vector(3, u15), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6819 try testArgs(@Vector(3, u16), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6820 try testArgs(@Vector(3, u17), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6821 try testArgs(@Vector(3, u31), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6822 try testArgs(@Vector(3, u32), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6823 try testArgs(@Vector(3, u33), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6824 try testArgs(@Vector(3, u63), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6825 try testArgs(@Vector(3, u64), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6826 try testArgs(@Vector(3, u65), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6827 try testArgs(@Vector(3, u127), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6828 try testArgs(@Vector(3, u128), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6829 try testArgs(@Vector(3, u129), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6830 try testArgs(@Vector(3, u255), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6831 try testArgs(@Vector(3, u256), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6832 try testArgs(@Vector(3, u257), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6833 try testArgs(@Vector(3, u511), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6834 try testArgs(@Vector(3, u512), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6835 try testArgs(@Vector(3, u513), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6836 try testArgs(@Vector(3, u1023), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6837 try testArgs(@Vector(3, u1024), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6838 try testArgs(@Vector(3, u1025), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6839
6840 try testArgs(@Vector(3, i7), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6841 try testArgs(@Vector(3, i8), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6842 try testArgs(@Vector(3, i9), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6843 try testArgs(@Vector(3, i15), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6844 try testArgs(@Vector(3, i16), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6845 try testArgs(@Vector(3, i17), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6846 try testArgs(@Vector(3, i31), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6847 try testArgs(@Vector(3, i32), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6848 try testArgs(@Vector(3, i33), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6849 try testArgs(@Vector(3, i63), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6850 try testArgs(@Vector(3, i64), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6851 try testArgs(@Vector(3, i65), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6852 try testArgs(@Vector(3, i127), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6853 try testArgs(@Vector(3, i128), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6854 try testArgs(@Vector(3, i129), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6855 try testArgs(@Vector(3, i255), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6856 try testArgs(@Vector(3, i256), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6857 try testArgs(@Vector(3, i257), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6858 try testArgs(@Vector(3, i511), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6859 try testArgs(@Vector(3, i512), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6860 try testArgs(@Vector(3, i513), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6861 try testArgs(@Vector(3, i1023), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6862 try testArgs(@Vector(3, i1024), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6863 try testArgs(@Vector(3, i1025), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6864 try testArgs(@Vector(3, u7), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6865 try testArgs(@Vector(3, u8), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6866 try testArgs(@Vector(3, u9), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6867 try testArgs(@Vector(3, u15), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6868 try testArgs(@Vector(3, u16), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6869 try testArgs(@Vector(3, u17), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6870 try testArgs(@Vector(3, u31), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6871 try testArgs(@Vector(3, u32), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6872 try testArgs(@Vector(3, u33), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6873 try testArgs(@Vector(3, u63), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6874 try testArgs(@Vector(3, u64), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6875 try testArgs(@Vector(3, u65), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6876 try testArgs(@Vector(3, u127), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6877 try testArgs(@Vector(3, u128), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6878 try testArgs(@Vector(3, u129), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6879 try testArgs(@Vector(3, u255), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6880 try testArgs(@Vector(3, u256), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6881 try testArgs(@Vector(3, u257), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6882 try testArgs(@Vector(3, u511), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6883 try testArgs(@Vector(3, u512), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6884 try testArgs(@Vector(3, u513), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6885 try testArgs(@Vector(3, u1023), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6886 try testArgs(@Vector(3, u1024), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6887 try testArgs(@Vector(3, u1025), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6888
6889 try testArgs(@Vector(3, i7), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6890 try testArgs(@Vector(3, i8), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6891 try testArgs(@Vector(3, i9), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6892 try testArgs(@Vector(3, i15), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6893 try testArgs(@Vector(3, i16), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6894 try testArgs(@Vector(3, i17), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6895 try testArgs(@Vector(3, i31), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6896 try testArgs(@Vector(3, i32), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6897 try testArgs(@Vector(3, i33), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6898 try testArgs(@Vector(3, i63), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6899 try testArgs(@Vector(3, i64), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6900 try testArgs(@Vector(3, i65), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6901 try testArgs(@Vector(3, i127), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6902 try testArgs(@Vector(3, i128), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6903 try testArgs(@Vector(3, i129), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6904 try testArgs(@Vector(3, i255), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6905 try testArgs(@Vector(3, i256), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6906 try testArgs(@Vector(3, i257), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6907 try testArgs(@Vector(3, i511), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6908 try testArgs(@Vector(3, i512), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6909 try testArgs(@Vector(3, i513), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6910 try testArgs(@Vector(3, i1023), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6911 try testArgs(@Vector(3, i1024), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6912 try testArgs(@Vector(3, i1025), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6913 try testArgs(@Vector(3, u7), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6914 try testArgs(@Vector(3, u8), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6915 try testArgs(@Vector(3, u9), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6916 try testArgs(@Vector(3, u15), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6917 try testArgs(@Vector(3, u16), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6918 try testArgs(@Vector(3, u17), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6919 try testArgs(@Vector(3, u31), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6920 try testArgs(@Vector(3, u32), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6921 try testArgs(@Vector(3, u33), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6922 try testArgs(@Vector(3, u63), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6923 try testArgs(@Vector(3, u64), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6924 try testArgs(@Vector(3, u65), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6925 try testArgs(@Vector(3, u127), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6926 try testArgs(@Vector(3, u128), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6927 try testArgs(@Vector(3, u129), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6928 try testArgs(@Vector(3, u255), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6929 try testArgs(@Vector(3, u256), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6930 try testArgs(@Vector(3, u257), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6931 try testArgs(@Vector(3, u511), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6932 try testArgs(@Vector(3, u512), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6933 try testArgs(@Vector(3, u513), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6934 try testArgs(@Vector(3, u1023), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6935 try testArgs(@Vector(3, u1024), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6936 try testArgs(@Vector(3, u1025), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6937
6938 try testArgs(@Vector(3, i7), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6939 try testArgs(@Vector(3, i8), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6940 try testArgs(@Vector(3, i9), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6941 try testArgs(@Vector(3, i15), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6942 try testArgs(@Vector(3, i16), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6943 try testArgs(@Vector(3, i17), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6944 try testArgs(@Vector(3, i31), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6945 try testArgs(@Vector(3, i32), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6946 try testArgs(@Vector(3, i33), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6947 try testArgs(@Vector(3, i63), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6948 try testArgs(@Vector(3, i64), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6949 try testArgs(@Vector(3, i65), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6950 try testArgs(@Vector(3, i127), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6951 try testArgs(@Vector(3, i128), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6952 try testArgs(@Vector(3, i129), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6953 try testArgs(@Vector(3, i255), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6954 try testArgs(@Vector(3, i256), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6955 try testArgs(@Vector(3, i257), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6956 try testArgs(@Vector(3, i511), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6957 try testArgs(@Vector(3, i512), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6958 try testArgs(@Vector(3, i513), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6959 try testArgs(@Vector(3, i1023), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6960 try testArgs(@Vector(3, i1024), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6961 try testArgs(@Vector(3, i1025), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6962 try testArgs(@Vector(3, u7), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6963 try testArgs(@Vector(3, u8), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6964 try testArgs(@Vector(3, u9), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6965 try testArgs(@Vector(3, u15), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6966 try testArgs(@Vector(3, u16), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6967 try testArgs(@Vector(3, u17), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6968 try testArgs(@Vector(3, u31), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6969 try testArgs(@Vector(3, u32), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6970 try testArgs(@Vector(3, u33), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6971 try testArgs(@Vector(3, u63), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6972 try testArgs(@Vector(3, u64), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6973 try testArgs(@Vector(3, u65), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6974 try testArgs(@Vector(3, u127), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6975 try testArgs(@Vector(3, u128), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6976 try testArgs(@Vector(3, u129), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6977 try testArgs(@Vector(3, u255), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6978 try testArgs(@Vector(3, u256), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6979 try testArgs(@Vector(3, u257), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6980 try testArgs(@Vector(3, u511), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6981 try testArgs(@Vector(3, u512), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6982 try testArgs(@Vector(3, u513), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6983 try testArgs(@Vector(3, u1023), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6984 try testArgs(@Vector(3, u1024), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6985 try testArgs(@Vector(3, u1025), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6986
6987 try testArgs(@Vector(3, i7), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6988 try testArgs(@Vector(3, i8), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6989 try testArgs(@Vector(3, i9), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6990 try testArgs(@Vector(3, i15), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6991 try testArgs(@Vector(3, i16), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6992 try testArgs(@Vector(3, i17), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6993 try testArgs(@Vector(3, i31), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6994 try testArgs(@Vector(3, i32), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6995 try testArgs(@Vector(3, i33), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6996 try testArgs(@Vector(3, i63), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6997 try testArgs(@Vector(3, i64), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6998 try testArgs(@Vector(3, i65), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6999 try testArgs(@Vector(3, i127), @Vector(3, i257), .{ -1 << 256, -1, 0 });
7000 try testArgs(@Vector(3, i128), @Vector(3, i257), .{ -1 << 256, -1, 0 });
7001 try testArgs(@Vector(3, i129), @Vector(3, i257), .{ -1 << 256, -1, 0 });
7002 try testArgs(@Vector(3, i255), @Vector(3, i257), .{ -1 << 256, -1, 0 });
7003 try testArgs(@Vector(3, i256), @Vector(3, i257), .{ -1 << 256, -1, 0 });
7004 try testArgs(@Vector(3, i257), @Vector(3, i257), .{ -1 << 256, -1, 0 });
7005 try testArgs(@Vector(3, i511), @Vector(3, i257), .{ -1 << 256, -1, 0 });
7006 try testArgs(@Vector(3, i512), @Vector(3, i257), .{ -1 << 256, -1, 0 });
7007 try testArgs(@Vector(3, i513), @Vector(3, i257), .{ -1 << 256, -1, 0 });
7008 try testArgs(@Vector(3, i1023), @Vector(3, i257), .{ -1 << 256, -1, 0 });
7009 try testArgs(@Vector(3, i1024), @Vector(3, i257), .{ -1 << 256, -1, 0 });
7010 try testArgs(@Vector(3, i1025), @Vector(3, i257), .{ -1 << 256, -1, 0 });
7011 try testArgs(@Vector(3, u7), @Vector(3, u257), .{ 0, 1, 1 << 256 });
7012 try testArgs(@Vector(3, u8), @Vector(3, u257), .{ 0, 1, 1 << 256 });
7013 try testArgs(@Vector(3, u9), @Vector(3, u257), .{ 0, 1, 1 << 256 });
7014 try testArgs(@Vector(3, u15), @Vector(3, u257), .{ 0, 1, 1 << 256 });
7015 try testArgs(@Vector(3, u16), @Vector(3, u257), .{ 0, 1, 1 << 256 });
7016 try testArgs(@Vector(3, u17), @Vector(3, u257), .{ 0, 1, 1 << 256 });
7017 try testArgs(@Vector(3, u31), @Vector(3, u257), .{ 0, 1, 1 << 256 });
7018 try testArgs(@Vector(3, u32), @Vector(3, u257), .{ 0, 1, 1 << 256 });
7019 try testArgs(@Vector(3, u33), @Vector(3, u257), .{ 0, 1, 1 << 256 });
7020 try testArgs(@Vector(3, u63), @Vector(3, u257), .{ 0, 1, 1 << 256 });
7021 try testArgs(@Vector(3, u64), @Vector(3, u257), .{ 0, 1, 1 << 256 });
7022 try testArgs(@Vector(3, u65), @Vector(3, u257), .{ 0, 1, 1 << 256 });
7023 try testArgs(@Vector(3, u127), @Vector(3, u257), .{ 0, 1, 1 << 256 });
7024 try testArgs(@Vector(3, u128), @Vector(3, u257), .{ 0, 1, 1 << 256 });
7025 try testArgs(@Vector(3, u129), @Vector(3, u257), .{ 0, 1, 1 << 256 });
7026 try testArgs(@Vector(3, u255), @Vector(3, u257), .{ 0, 1, 1 << 256 });
7027 try testArgs(@Vector(3, u256), @Vector(3, u257), .{ 0, 1, 1 << 256 });
7028 try testArgs(@Vector(3, u257), @Vector(3, u257), .{ 0, 1, 1 << 256 });
7029 try testArgs(@Vector(3, u511), @Vector(3, u257), .{ 0, 1, 1 << 256 });
7030 try testArgs(@Vector(3, u512), @Vector(3, u257), .{ 0, 1, 1 << 256 });
7031 try testArgs(@Vector(3, u513), @Vector(3, u257), .{ 0, 1, 1 << 256 });
7032 try testArgs(@Vector(3, u1023), @Vector(3, u257), .{ 0, 1, 1 << 256 });
7033 try testArgs(@Vector(3, u1024), @Vector(3, u257), .{ 0, 1, 1 << 256 });
7034 try testArgs(@Vector(3, u1025), @Vector(3, u257), .{ 0, 1, 1 << 256 });
7035
7036 try testArgs(@Vector(3, i7), @Vector(3, i511), .{ -1 << 510, -1, 0 });
7037 try testArgs(@Vector(3, i8), @Vector(3, i511), .{ -1 << 510, -1, 0 });
7038 try testArgs(@Vector(3, i9), @Vector(3, i511), .{ -1 << 510, -1, 0 });
7039 try testArgs(@Vector(3, i15), @Vector(3, i511), .{ -1 << 510, -1, 0 });
7040 try testArgs(@Vector(3, i16), @Vector(3, i511), .{ -1 << 510, -1, 0 });
7041 try testArgs(@Vector(3, i17), @Vector(3, i511), .{ -1 << 510, -1, 0 });
7042 try testArgs(@Vector(3, i31), @Vector(3, i511), .{ -1 << 510, -1, 0 });
7043 try testArgs(@Vector(3, i32), @Vector(3, i511), .{ -1 << 510, -1, 0 });
7044 try testArgs(@Vector(3, i33), @Vector(3, i511), .{ -1 << 510, -1, 0 });
7045 try testArgs(@Vector(3, i63), @Vector(3, i511), .{ -1 << 510, -1, 0 });
7046 try testArgs(@Vector(3, i64), @Vector(3, i511), .{ -1 << 510, -1, 0 });
7047 try testArgs(@Vector(3, i65), @Vector(3, i511), .{ -1 << 510, -1, 0 });
7048 try testArgs(@Vector(3, i127), @Vector(3, i511), .{ -1 << 510, -1, 0 });
7049 try testArgs(@Vector(3, i128), @Vector(3, i511), .{ -1 << 510, -1, 0 });
7050 try testArgs(@Vector(3, i129), @Vector(3, i511), .{ -1 << 510, -1, 0 });
7051 try testArgs(@Vector(3, i255), @Vector(3, i511), .{ -1 << 510, -1, 0 });
7052 try testArgs(@Vector(3, i256), @Vector(3, i511), .{ -1 << 510, -1, 0 });
7053 try testArgs(@Vector(3, i257), @Vector(3, i511), .{ -1 << 510, -1, 0 });
7054 try testArgs(@Vector(3, i511), @Vector(3, i511), .{ -1 << 510, -1, 0 });
7055 try testArgs(@Vector(3, i512), @Vector(3, i511), .{ -1 << 510, -1, 0 });
7056 try testArgs(@Vector(3, i513), @Vector(3, i511), .{ -1 << 510, -1, 0 });
7057 try testArgs(@Vector(3, i1023), @Vector(3, i511), .{ -1 << 510, -1, 0 });
7058 try testArgs(@Vector(3, i1024), @Vector(3, i511), .{ -1 << 510, -1, 0 });
7059 try testArgs(@Vector(3, i1025), @Vector(3, i511), .{ -1 << 510, -1, 0 });
7060 try testArgs(@Vector(3, u7), @Vector(3, u511), .{ 0, 1, 1 << 510 });
7061 try testArgs(@Vector(3, u8), @Vector(3, u511), .{ 0, 1, 1 << 510 });
7062 try testArgs(@Vector(3, u9), @Vector(3, u511), .{ 0, 1, 1 << 510 });
7063 try testArgs(@Vector(3, u15), @Vector(3, u511), .{ 0, 1, 1 << 510 });
7064 try testArgs(@Vector(3, u16), @Vector(3, u511), .{ 0, 1, 1 << 510 });
7065 try testArgs(@Vector(3, u17), @Vector(3, u511), .{ 0, 1, 1 << 510 });
7066 try testArgs(@Vector(3, u31), @Vector(3, u511), .{ 0, 1, 1 << 510 });
7067 try testArgs(@Vector(3, u32), @Vector(3, u511), .{ 0, 1, 1 << 510 });
7068 try testArgs(@Vector(3, u33), @Vector(3, u511), .{ 0, 1, 1 << 510 });
7069 try testArgs(@Vector(3, u63), @Vector(3, u511), .{ 0, 1, 1 << 510 });
7070 try testArgs(@Vector(3, u64), @Vector(3, u511), .{ 0, 1, 1 << 510 });
7071 try testArgs(@Vector(3, u65), @Vector(3, u511), .{ 0, 1, 1 << 510 });
7072 try testArgs(@Vector(3, u127), @Vector(3, u511), .{ 0, 1, 1 << 510 });
7073 try testArgs(@Vector(3, u128), @Vector(3, u511), .{ 0, 1, 1 << 510 });
7074 try testArgs(@Vector(3, u129), @Vector(3, u511), .{ 0, 1, 1 << 510 });
7075 try testArgs(@Vector(3, u255), @Vector(3, u511), .{ 0, 1, 1 << 510 });
7076 try testArgs(@Vector(3, u256), @Vector(3, u511), .{ 0, 1, 1 << 510 });
7077 try testArgs(@Vector(3, u257), @Vector(3, u511), .{ 0, 1, 1 << 510 });
7078 try testArgs(@Vector(3, u511), @Vector(3, u511), .{ 0, 1, 1 << 510 });
7079 try testArgs(@Vector(3, u512), @Vector(3, u511), .{ 0, 1, 1 << 510 });
7080 try testArgs(@Vector(3, u513), @Vector(3, u511), .{ 0, 1, 1 << 510 });
7081 try testArgs(@Vector(3, u1023), @Vector(3, u511), .{ 0, 1, 1 << 510 });
7082 try testArgs(@Vector(3, u1024), @Vector(3, u511), .{ 0, 1, 1 << 510 });
7083 try testArgs(@Vector(3, u1025), @Vector(3, u511), .{ 0, 1, 1 << 510 });
7084
7085 try testArgs(@Vector(3, i7), @Vector(3, i512), .{ -1 << 511, -1, 0 });
7086 try testArgs(@Vector(3, i8), @Vector(3, i512), .{ -1 << 511, -1, 0 });
7087 try testArgs(@Vector(3, i9), @Vector(3, i512), .{ -1 << 511, -1, 0 });
7088 try testArgs(@Vector(3, i15), @Vector(3, i512), .{ -1 << 511, -1, 0 });
7089 try testArgs(@Vector(3, i16), @Vector(3, i512), .{ -1 << 511, -1, 0 });
7090 try testArgs(@Vector(3, i17), @Vector(3, i512), .{ -1 << 511, -1, 0 });
7091 try testArgs(@Vector(3, i31), @Vector(3, i512), .{ -1 << 511, -1, 0 });
7092 try testArgs(@Vector(3, i32), @Vector(3, i512), .{ -1 << 511, -1, 0 });
7093 try testArgs(@Vector(3, i33), @Vector(3, i512), .{ -1 << 511, -1, 0 });
7094 try testArgs(@Vector(3, i63), @Vector(3, i512), .{ -1 << 511, -1, 0 });
7095 try testArgs(@Vector(3, i64), @Vector(3, i512), .{ -1 << 511, -1, 0 });
7096 try testArgs(@Vector(3, i65), @Vector(3, i512), .{ -1 << 511, -1, 0 });
7097 try testArgs(@Vector(3, i127), @Vector(3, i512), .{ -1 << 511, -1, 0 });
7098 try testArgs(@Vector(3, i128), @Vector(3, i512), .{ -1 << 511, -1, 0 });
7099 try testArgs(@Vector(3, i129), @Vector(3, i512), .{ -1 << 511, -1, 0 });
7100 try testArgs(@Vector(3, i255), @Vector(3, i512), .{ -1 << 511, -1, 0 });
7101 try testArgs(@Vector(3, i256), @Vector(3, i512), .{ -1 << 511, -1, 0 });
7102 try testArgs(@Vector(3, i257), @Vector(3, i512), .{ -1 << 511, -1, 0 });
7103 try testArgs(@Vector(3, i511), @Vector(3, i512), .{ -1 << 511, -1, 0 });
7104 try testArgs(@Vector(3, i512), @Vector(3, i512), .{ -1 << 511, -1, 0 });
7105 try testArgs(@Vector(3, i513), @Vector(3, i512), .{ -1 << 511, -1, 0 });
7106 try testArgs(@Vector(3, i1023), @Vector(3, i512), .{ -1 << 511, -1, 0 });
7107 try testArgs(@Vector(3, i1024), @Vector(3, i512), .{ -1 << 511, -1, 0 });
7108 try testArgs(@Vector(3, i1025), @Vector(3, i512), .{ -1 << 511, -1, 0 });
7109 try testArgs(@Vector(3, u7), @Vector(3, u512), .{ 0, 1, 1 << 511 });
7110 try testArgs(@Vector(3, u8), @Vector(3, u512), .{ 0, 1, 1 << 511 });
7111 try testArgs(@Vector(3, u9), @Vector(3, u512), .{ 0, 1, 1 << 511 });
7112 try testArgs(@Vector(3, u15), @Vector(3, u512), .{ 0, 1, 1 << 511 });
7113 try testArgs(@Vector(3, u16), @Vector(3, u512), .{ 0, 1, 1 << 511 });
7114 try testArgs(@Vector(3, u17), @Vector(3, u512), .{ 0, 1, 1 << 511 });
7115 try testArgs(@Vector(3, u31), @Vector(3, u512), .{ 0, 1, 1 << 511 });
7116 try testArgs(@Vector(3, u32), @Vector(3, u512), .{ 0, 1, 1 << 511 });
7117 try testArgs(@Vector(3, u33), @Vector(3, u512), .{ 0, 1, 1 << 511 });
7118 try testArgs(@Vector(3, u63), @Vector(3, u512), .{ 0, 1, 1 << 511 });
7119 try testArgs(@Vector(3, u64), @Vector(3, u512), .{ 0, 1, 1 << 511 });
7120 try testArgs(@Vector(3, u65), @Vector(3, u512), .{ 0, 1, 1 << 511 });
7121 try testArgs(@Vector(3, u127), @Vector(3, u512), .{ 0, 1, 1 << 511 });
7122 try testArgs(@Vector(3, u128), @Vector(3, u512), .{ 0, 1, 1 << 511 });
7123 try testArgs(@Vector(3, u129), @Vector(3, u512), .{ 0, 1, 1 << 511 });
7124 try testArgs(@Vector(3, u255), @Vector(3, u512), .{ 0, 1, 1 << 511 });
7125 try testArgs(@Vector(3, u256), @Vector(3, u512), .{ 0, 1, 1 << 511 });
7126 try testArgs(@Vector(3, u257), @Vector(3, u512), .{ 0, 1, 1 << 511 });
7127 try testArgs(@Vector(3, u511), @Vector(3, u512), .{ 0, 1, 1 << 511 });
7128 try testArgs(@Vector(3, u512), @Vector(3, u512), .{ 0, 1, 1 << 511 });
7129 try testArgs(@Vector(3, u513), @Vector(3, u512), .{ 0, 1, 1 << 511 });
7130 try testArgs(@Vector(3, u1023), @Vector(3, u512), .{ 0, 1, 1 << 511 });
7131 try testArgs(@Vector(3, u1024), @Vector(3, u512), .{ 0, 1, 1 << 511 });
7132 try testArgs(@Vector(3, u1025), @Vector(3, u512), .{ 0, 1, 1 << 511 });
7133
7134 try testArgs(@Vector(3, i7), @Vector(3, i513), .{ -1 << 512, -1, 0 });
7135 try testArgs(@Vector(3, i8), @Vector(3, i513), .{ -1 << 512, -1, 0 });
7136 try testArgs(@Vector(3, i9), @Vector(3, i513), .{ -1 << 512, -1, 0 });
7137 try testArgs(@Vector(3, i15), @Vector(3, i513), .{ -1 << 512, -1, 0 });
7138 try testArgs(@Vector(3, i16), @Vector(3, i513), .{ -1 << 512, -1, 0 });
7139 try testArgs(@Vector(3, i17), @Vector(3, i513), .{ -1 << 512, -1, 0 });
7140 try testArgs(@Vector(3, i31), @Vector(3, i513), .{ -1 << 512, -1, 0 });
7141 try testArgs(@Vector(3, i32), @Vector(3, i513), .{ -1 << 512, -1, 0 });
7142 try testArgs(@Vector(3, i33), @Vector(3, i513), .{ -1 << 512, -1, 0 });
7143 try testArgs(@Vector(3, i63), @Vector(3, i513), .{ -1 << 512, -1, 0 });
7144 try testArgs(@Vector(3, i64), @Vector(3, i513), .{ -1 << 512, -1, 0 });
7145 try testArgs(@Vector(3, i65), @Vector(3, i513), .{ -1 << 512, -1, 0 });
7146 try testArgs(@Vector(3, i127), @Vector(3, i513), .{ -1 << 512, -1, 0 });
7147 try testArgs(@Vector(3, i128), @Vector(3, i513), .{ -1 << 512, -1, 0 });
7148 try testArgs(@Vector(3, i129), @Vector(3, i513), .{ -1 << 512, -1, 0 });
7149 try testArgs(@Vector(3, i255), @Vector(3, i513), .{ -1 << 512, -1, 0 });
7150 try testArgs(@Vector(3, i256), @Vector(3, i513), .{ -1 << 512, -1, 0 });
7151 try testArgs(@Vector(3, i257), @Vector(3, i513), .{ -1 << 512, -1, 0 });
7152 try testArgs(@Vector(3, i511), @Vector(3, i513), .{ -1 << 512, -1, 0 });
7153 try testArgs(@Vector(3, i512), @Vector(3, i513), .{ -1 << 512, -1, 0 });
7154 try testArgs(@Vector(3, i513), @Vector(3, i513), .{ -1 << 512, -1, 0 });
7155 try testArgs(@Vector(3, i1023), @Vector(3, i513), .{ -1 << 512, -1, 0 });
7156 try testArgs(@Vector(3, i1024), @Vector(3, i513), .{ -1 << 512, -1, 0 });
7157 try testArgs(@Vector(3, i1025), @Vector(3, i513), .{ -1 << 512, -1, 0 });
7158 try testArgs(@Vector(3, u7), @Vector(3, u513), .{ 0, 1, 1 << 512 });
7159 try testArgs(@Vector(3, u8), @Vector(3, u513), .{ 0, 1, 1 << 512 });
7160 try testArgs(@Vector(3, u9), @Vector(3, u513), .{ 0, 1, 1 << 512 });
7161 try testArgs(@Vector(3, u15), @Vector(3, u513), .{ 0, 1, 1 << 512 });
7162 try testArgs(@Vector(3, u16), @Vector(3, u513), .{ 0, 1, 1 << 512 });
7163 try testArgs(@Vector(3, u17), @Vector(3, u513), .{ 0, 1, 1 << 512 });
7164 try testArgs(@Vector(3, u31), @Vector(3, u513), .{ 0, 1, 1 << 512 });
7165 try testArgs(@Vector(3, u32), @Vector(3, u513), .{ 0, 1, 1 << 512 });
7166 try testArgs(@Vector(3, u33), @Vector(3, u513), .{ 0, 1, 1 << 512 });
7167 try testArgs(@Vector(3, u63), @Vector(3, u513), .{ 0, 1, 1 << 512 });
7168 try testArgs(@Vector(3, u64), @Vector(3, u513), .{ 0, 1, 1 << 512 });
7169 try testArgs(@Vector(3, u65), @Vector(3, u513), .{ 0, 1, 1 << 512 });
7170 try testArgs(@Vector(3, u127), @Vector(3, u513), .{ 0, 1, 1 << 512 });
7171 try testArgs(@Vector(3, u128), @Vector(3, u513), .{ 0, 1, 1 << 512 });
7172 try testArgs(@Vector(3, u129), @Vector(3, u513), .{ 0, 1, 1 << 512 });
7173 try testArgs(@Vector(3, u255), @Vector(3, u513), .{ 0, 1, 1 << 512 });
7174 try testArgs(@Vector(3, u256), @Vector(3, u513), .{ 0, 1, 1 << 512 });
7175 try testArgs(@Vector(3, u257), @Vector(3, u513), .{ 0, 1, 1 << 512 });
7176 try testArgs(@Vector(3, u511), @Vector(3, u513), .{ 0, 1, 1 << 512 });
7177 try testArgs(@Vector(3, u512), @Vector(3, u513), .{ 0, 1, 1 << 512 });
7178 try testArgs(@Vector(3, u513), @Vector(3, u513), .{ 0, 1, 1 << 512 });
7179 try testArgs(@Vector(3, u1023), @Vector(3, u513), .{ 0, 1, 1 << 512 });
7180 try testArgs(@Vector(3, u1024), @Vector(3, u513), .{ 0, 1, 1 << 512 });
7181 try testArgs(@Vector(3, u1025), @Vector(3, u513), .{ 0, 1, 1 << 512 });
7182
7183 try testArgs(@Vector(3, i7), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
7184 try testArgs(@Vector(3, i8), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
7185 try testArgs(@Vector(3, i9), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
7186 try testArgs(@Vector(3, i15), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
7187 try testArgs(@Vector(3, i16), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
7188 try testArgs(@Vector(3, i17), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
7189 try testArgs(@Vector(3, i31), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
7190 try testArgs(@Vector(3, i32), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
7191 try testArgs(@Vector(3, i33), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
7192 try testArgs(@Vector(3, i63), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
7193 try testArgs(@Vector(3, i64), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
7194 try testArgs(@Vector(3, i65), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
7195 try testArgs(@Vector(3, i127), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
7196 try testArgs(@Vector(3, i128), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
7197 try testArgs(@Vector(3, i129), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
7198 try testArgs(@Vector(3, i255), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
7199 try testArgs(@Vector(3, i256), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
7200 try testArgs(@Vector(3, i257), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
7201 try testArgs(@Vector(3, i511), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
7202 try testArgs(@Vector(3, i512), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
7203 try testArgs(@Vector(3, i513), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
7204 try testArgs(@Vector(3, i1023), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
7205 try testArgs(@Vector(3, i1024), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
7206 try testArgs(@Vector(3, i1025), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
7207 try testArgs(@Vector(3, u7), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
7208 try testArgs(@Vector(3, u8), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
7209 try testArgs(@Vector(3, u9), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
7210 try testArgs(@Vector(3, u15), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
7211 try testArgs(@Vector(3, u16), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
7212 try testArgs(@Vector(3, u17), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
7213 try testArgs(@Vector(3, u31), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
7214 try testArgs(@Vector(3, u32), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
7215 try testArgs(@Vector(3, u33), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
7216 try testArgs(@Vector(3, u63), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
7217 try testArgs(@Vector(3, u64), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
7218 try testArgs(@Vector(3, u65), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
7219 try testArgs(@Vector(3, u127), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
7220 try testArgs(@Vector(3, u128), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
7221 try testArgs(@Vector(3, u129), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
7222 try testArgs(@Vector(3, u255), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
7223 try testArgs(@Vector(3, u256), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
7224 try testArgs(@Vector(3, u257), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
7225 try testArgs(@Vector(3, u511), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
7226 try testArgs(@Vector(3, u512), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
7227 try testArgs(@Vector(3, u513), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
7228 try testArgs(@Vector(3, u1023), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
7229 try testArgs(@Vector(3, u1024), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
7230 try testArgs(@Vector(3, u1025), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
7231
7232 try testArgs(@Vector(3, i7), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
7233 try testArgs(@Vector(3, i8), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
7234 try testArgs(@Vector(3, i9), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
7235 try testArgs(@Vector(3, i15), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
7236 try testArgs(@Vector(3, i16), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
7237 try testArgs(@Vector(3, i17), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
7238 try testArgs(@Vector(3, i31), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
7239 try testArgs(@Vector(3, i32), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
7240 try testArgs(@Vector(3, i33), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
7241 try testArgs(@Vector(3, i63), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
7242 try testArgs(@Vector(3, i64), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
7243 try testArgs(@Vector(3, i65), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
7244 try testArgs(@Vector(3, i127), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
7245 try testArgs(@Vector(3, i128), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
7246 try testArgs(@Vector(3, i129), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
7247 try testArgs(@Vector(3, i255), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
7248 try testArgs(@Vector(3, i256), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
7249 try testArgs(@Vector(3, i257), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
7250 try testArgs(@Vector(3, i511), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
7251 try testArgs(@Vector(3, i512), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
7252 try testArgs(@Vector(3, i513), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
7253 try testArgs(@Vector(3, i1023), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
7254 try testArgs(@Vector(3, i1024), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
7255 try testArgs(@Vector(3, i1025), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
7256 try testArgs(@Vector(3, u7), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
7257 try testArgs(@Vector(3, u8), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
7258 try testArgs(@Vector(3, u9), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
7259 try testArgs(@Vector(3, u15), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
7260 try testArgs(@Vector(3, u16), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
7261 try testArgs(@Vector(3, u17), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
7262 try testArgs(@Vector(3, u31), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
7263 try testArgs(@Vector(3, u32), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
7264 try testArgs(@Vector(3, u33), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
7265 try testArgs(@Vector(3, u63), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
7266 try testArgs(@Vector(3, u64), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
7267 try testArgs(@Vector(3, u65), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
7268 try testArgs(@Vector(3, u127), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
7269 try testArgs(@Vector(3, u128), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
7270 try testArgs(@Vector(3, u129), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
7271 try testArgs(@Vector(3, u255), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
7272 try testArgs(@Vector(3, u256), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
7273 try testArgs(@Vector(3, u257), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
7274 try testArgs(@Vector(3, u511), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
7275 try testArgs(@Vector(3, u512), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
7276 try testArgs(@Vector(3, u513), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
7277 try testArgs(@Vector(3, u1023), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
7278 try testArgs(@Vector(3, u1024), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
7279 try testArgs(@Vector(3, u1025), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
7280
7281 try testArgs(@Vector(3, i7), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
7282 try testArgs(@Vector(3, i8), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
7283 try testArgs(@Vector(3, i9), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
7284 try testArgs(@Vector(3, i15), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
7285 try testArgs(@Vector(3, i16), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
7286 try testArgs(@Vector(3, i17), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
7287 try testArgs(@Vector(3, i31), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
7288 try testArgs(@Vector(3, i32), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
7289 try testArgs(@Vector(3, i33), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
7290 try testArgs(@Vector(3, i63), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
7291 try testArgs(@Vector(3, i64), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
7292 try testArgs(@Vector(3, i65), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
7293 try testArgs(@Vector(3, i127), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
7294 try testArgs(@Vector(3, i128), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
7295 try testArgs(@Vector(3, i129), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
7296 try testArgs(@Vector(3, i255), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
7297 try testArgs(@Vector(3, i256), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
7298 try testArgs(@Vector(3, i257), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
7299 try testArgs(@Vector(3, i511), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
7300 try testArgs(@Vector(3, i512), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
7301 try testArgs(@Vector(3, i513), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
7302 try testArgs(@Vector(3, i1023), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
7303 try testArgs(@Vector(3, i1024), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
7304 try testArgs(@Vector(3, i1025), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
7305 try testArgs(@Vector(3, u7), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
7306 try testArgs(@Vector(3, u8), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
7307 try testArgs(@Vector(3, u9), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
7308 try testArgs(@Vector(3, u15), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
7309 try testArgs(@Vector(3, u16), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
7310 try testArgs(@Vector(3, u17), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
7311 try testArgs(@Vector(3, u31), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
7312 try testArgs(@Vector(3, u32), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
7313 try testArgs(@Vector(3, u33), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
7314 try testArgs(@Vector(3, u63), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
7315 try testArgs(@Vector(3, u64), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
7316 try testArgs(@Vector(3, u65), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
7317 try testArgs(@Vector(3, u127), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
7318 try testArgs(@Vector(3, u128), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
7319 try testArgs(@Vector(3, u129), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
7320 try testArgs(@Vector(3, u255), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
7321 try testArgs(@Vector(3, u256), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
7322 try testArgs(@Vector(3, u257), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
7323 try testArgs(@Vector(3, u511), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
7324 try testArgs(@Vector(3, u512), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
7325 try testArgs(@Vector(3, u513), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
7326 try testArgs(@Vector(3, u1023), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
7327 try testArgs(@Vector(3, u1024), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
7328 try testArgs(@Vector(3, u1025), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
7329 }
7330 fn testIntVectors() !void {
7331 try testSameSignednessIntVectors();
7332
7333 try testArgs(@Vector(1, u8), @Vector(1, i1), .{-1});
7334 try testArgs(@Vector(1, u16), @Vector(1, i1), .{-1});
7335 try testArgs(@Vector(1, u32), @Vector(1, i1), .{-1});
7336 try testArgs(@Vector(1, u64), @Vector(1, i1), .{-1});
7337 try testArgs(@Vector(1, u128), @Vector(1, i1), .{-1});
7338 try testArgs(@Vector(1, u256), @Vector(1, i1), .{-1});
7339 try testArgs(@Vector(1, u512), @Vector(1, i1), .{-1});
7340 try testArgs(@Vector(1, u1024), @Vector(1, i1), .{-1});
7341 try testArgs(@Vector(1, i8), @Vector(1, u1), .{1});
7342 try testArgs(@Vector(1, i16), @Vector(1, u1), .{1});
7343 try testArgs(@Vector(1, i32), @Vector(1, u1), .{1});
7344 try testArgs(@Vector(1, i64), @Vector(1, u1), .{1});
7345 try testArgs(@Vector(1, i128), @Vector(1, u1), .{1});
7346 try testArgs(@Vector(1, i256), @Vector(1, u1), .{1});
7347 try testArgs(@Vector(1, i512), @Vector(1, u1), .{1});
7348 try testArgs(@Vector(1, i1024), @Vector(1, u1), .{1});
7349
7350 try testArgs(@Vector(2, u8), @Vector(2, i1), .{ -1, 0 });
7351 try testArgs(@Vector(2, u16), @Vector(2, i1), .{ -1, 0 });
7352 try testArgs(@Vector(2, u32), @Vector(2, i1), .{ -1, 0 });
7353 try testArgs(@Vector(2, u64), @Vector(2, i1), .{ -1, 0 });
7354 try testArgs(@Vector(2, u128), @Vector(2, i1), .{ -1, 0 });
7355 try testArgs(@Vector(2, u256), @Vector(2, i1), .{ -1, 0 });
7356 try testArgs(@Vector(2, u512), @Vector(2, i1), .{ -1, 0 });
7357 try testArgs(@Vector(2, u1024), @Vector(2, i1), .{ -1, 0 });
7358 try testArgs(@Vector(2, i8), @Vector(2, u1), .{ 0, 1 });
7359 try testArgs(@Vector(2, i16), @Vector(2, u1), .{ 0, 1 });
7360 try testArgs(@Vector(2, i32), @Vector(2, u1), .{ 0, 1 });
7361 try testArgs(@Vector(2, i64), @Vector(2, u1), .{ 0, 1 });
7362 try testArgs(@Vector(2, i128), @Vector(2, u1), .{ 0, 1 });
7363 try testArgs(@Vector(2, i256), @Vector(2, u1), .{ 0, 1 });
7364 try testArgs(@Vector(2, i512), @Vector(2, u1), .{ 0, 1 });
7365 try testArgs(@Vector(2, i1024), @Vector(2, u1), .{ 0, 1 });
7366
7367 try testArgs(@Vector(3, u8), @Vector(3, i2), .{ -1 << 1, -1, 0 });
7368 try testArgs(@Vector(3, u16), @Vector(3, i2), .{ -1 << 1, -1, 0 });
7369 try testArgs(@Vector(3, u32), @Vector(3, i2), .{ -1 << 1, -1, 0 });
7370 try testArgs(@Vector(3, u64), @Vector(3, i2), .{ -1 << 1, -1, 0 });
7371 try testArgs(@Vector(3, u128), @Vector(3, i2), .{ -1 << 1, -1, 0 });
7372 try testArgs(@Vector(3, u256), @Vector(3, i2), .{ -1 << 1, -1, 0 });
7373 try testArgs(@Vector(3, u512), @Vector(3, i2), .{ -1 << 1, -1, 0 });
7374 try testArgs(@Vector(3, u1024), @Vector(3, i2), .{ -1 << 1, -1, 0 });
7375 try testArgs(@Vector(3, i8), @Vector(3, u2), .{ 0, 1, 1 << 1 });
7376 try testArgs(@Vector(3, i16), @Vector(3, u2), .{ 0, 1, 1 << 1 });
7377 try testArgs(@Vector(3, i32), @Vector(3, u2), .{ 0, 1, 1 << 1 });
7378 try testArgs(@Vector(3, i64), @Vector(3, u2), .{ 0, 1, 1 << 1 });
7379 try testArgs(@Vector(3, i128), @Vector(3, u2), .{ 0, 1, 1 << 1 });
7380 try testArgs(@Vector(3, i256), @Vector(3, u2), .{ 0, 1, 1 << 1 });
7381 try testArgs(@Vector(3, i512), @Vector(3, u2), .{ 0, 1, 1 << 1 });
7382 try testArgs(@Vector(3, i1024), @Vector(3, u2), .{ 0, 1, 1 << 1 });
7383
7384 try testArgs(@Vector(3, u8), @Vector(3, i3), .{ -1 << 2, -1, 0 });
7385 try testArgs(@Vector(3, u16), @Vector(3, i3), .{ -1 << 2, -1, 0 });
7386 try testArgs(@Vector(3, u32), @Vector(3, i3), .{ -1 << 2, -1, 0 });
7387 try testArgs(@Vector(3, u64), @Vector(3, i3), .{ -1 << 2, -1, 0 });
7388 try testArgs(@Vector(3, u128), @Vector(3, i3), .{ -1 << 2, -1, 0 });
7389 try testArgs(@Vector(3, u256), @Vector(3, i3), .{ -1 << 2, -1, 0 });
7390 try testArgs(@Vector(3, u512), @Vector(3, i3), .{ -1 << 2, -1, 0 });
7391 try testArgs(@Vector(3, u1024), @Vector(3, i3), .{ -1 << 2, -1, 0 });
7392 try testArgs(@Vector(3, i8), @Vector(3, u3), .{ 0, 1, 1 << 2 });
7393 try testArgs(@Vector(3, i16), @Vector(3, u3), .{ 0, 1, 1 << 2 });
7394 try testArgs(@Vector(3, i32), @Vector(3, u3), .{ 0, 1, 1 << 2 });
7395 try testArgs(@Vector(3, i64), @Vector(3, u3), .{ 0, 1, 1 << 2 });
7396 try testArgs(@Vector(3, i128), @Vector(3, u3), .{ 0, 1, 1 << 2 });
7397 try testArgs(@Vector(3, i256), @Vector(3, u3), .{ 0, 1, 1 << 2 });
7398 try testArgs(@Vector(3, i512), @Vector(3, u3), .{ 0, 1, 1 << 2 });
7399 try testArgs(@Vector(3, i1024), @Vector(3, u3), .{ 0, 1, 1 << 2 });
7400
7401 try testArgs(@Vector(3, u8), @Vector(3, i4), .{ -1 << 3, -1, 0 });
7402 try testArgs(@Vector(3, u16), @Vector(3, i4), .{ -1 << 3, -1, 0 });
7403 try testArgs(@Vector(3, u32), @Vector(3, i4), .{ -1 << 3, -1, 0 });
7404 try testArgs(@Vector(3, u64), @Vector(3, i4), .{ -1 << 3, -1, 0 });
7405 try testArgs(@Vector(3, u128), @Vector(3, i4), .{ -1 << 3, -1, 0 });
7406 try testArgs(@Vector(3, u256), @Vector(3, i4), .{ -1 << 3, -1, 0 });
7407 try testArgs(@Vector(3, u512), @Vector(3, i4), .{ -1 << 3, -1, 0 });
7408 try testArgs(@Vector(3, u1024), @Vector(3, i4), .{ -1 << 3, -1, 0 });
7409 try testArgs(@Vector(3, i8), @Vector(3, u4), .{ 0, 1, 1 << 3 });
7410 try testArgs(@Vector(3, i16), @Vector(3, u4), .{ 0, 1, 1 << 3 });
7411 try testArgs(@Vector(3, i32), @Vector(3, u4), .{ 0, 1, 1 << 3 });
7412 try testArgs(@Vector(3, i64), @Vector(3, u4), .{ 0, 1, 1 << 3 });
7413 try testArgs(@Vector(3, i128), @Vector(3, u4), .{ 0, 1, 1 << 3 });
7414 try testArgs(@Vector(3, i256), @Vector(3, u4), .{ 0, 1, 1 << 3 });
7415 try testArgs(@Vector(3, i512), @Vector(3, u4), .{ 0, 1, 1 << 3 });
7416 try testArgs(@Vector(3, i1024), @Vector(3, u4), .{ 0, 1, 1 << 3 });
7417
7418 try testArgs(@Vector(3, u8), @Vector(3, i5), .{ -1 << 4, -1, 0 });
7419 try testArgs(@Vector(3, u16), @Vector(3, i5), .{ -1 << 4, -1, 0 });
7420 try testArgs(@Vector(3, u32), @Vector(3, i5), .{ -1 << 4, -1, 0 });
7421 try testArgs(@Vector(3, u64), @Vector(3, i5), .{ -1 << 4, -1, 0 });
7422 try testArgs(@Vector(3, u128), @Vector(3, i5), .{ -1 << 4, -1, 0 });
7423 try testArgs(@Vector(3, u256), @Vector(3, i5), .{ -1 << 4, -1, 0 });
7424 try testArgs(@Vector(3, u512), @Vector(3, i5), .{ -1 << 4, -1, 0 });
7425 try testArgs(@Vector(3, u1024), @Vector(3, i5), .{ -1 << 4, -1, 0 });
7426 try testArgs(@Vector(3, i8), @Vector(3, u5), .{ 0, 1, 1 << 4 });
7427 try testArgs(@Vector(3, i16), @Vector(3, u5), .{ 0, 1, 1 << 4 });
7428 try testArgs(@Vector(3, i32), @Vector(3, u5), .{ 0, 1, 1 << 4 });
7429 try testArgs(@Vector(3, i64), @Vector(3, u5), .{ 0, 1, 1 << 4 });
7430 try testArgs(@Vector(3, i128), @Vector(3, u5), .{ 0, 1, 1 << 4 });
7431 try testArgs(@Vector(3, i256), @Vector(3, u5), .{ 0, 1, 1 << 4 });
7432 try testArgs(@Vector(3, i512), @Vector(3, u5), .{ 0, 1, 1 << 4 });
7433 try testArgs(@Vector(3, i1024), @Vector(3, u5), .{ 0, 1, 1 << 4 });
7434
7435 try testArgs(@Vector(3, u8), @Vector(3, i7), .{ -1 << 6, -1, 0 });
7436 try testArgs(@Vector(3, u16), @Vector(3, i7), .{ -1 << 6, -1, 0 });
7437 try testArgs(@Vector(3, u32), @Vector(3, i7), .{ -1 << 6, -1, 0 });
7438 try testArgs(@Vector(3, u64), @Vector(3, i7), .{ -1 << 6, -1, 0 });
7439 try testArgs(@Vector(3, u128), @Vector(3, i7), .{ -1 << 6, -1, 0 });
7440 try testArgs(@Vector(3, u256), @Vector(3, i7), .{ -1 << 6, -1, 0 });
7441 try testArgs(@Vector(3, u512), @Vector(3, i7), .{ -1 << 6, -1, 0 });
7442 try testArgs(@Vector(3, u1024), @Vector(3, i7), .{ -1 << 6, -1, 0 });
7443 try testArgs(@Vector(3, i8), @Vector(3, u7), .{ 0, 1, 1 << 6 });
7444 try testArgs(@Vector(3, i16), @Vector(3, u7), .{ 0, 1, 1 << 6 });
7445 try testArgs(@Vector(3, i32), @Vector(3, u7), .{ 0, 1, 1 << 6 });
7446 try testArgs(@Vector(3, i64), @Vector(3, u7), .{ 0, 1, 1 << 6 });
7447 try testArgs(@Vector(3, i128), @Vector(3, u7), .{ 0, 1, 1 << 6 });
7448 try testArgs(@Vector(3, i256), @Vector(3, u7), .{ 0, 1, 1 << 6 });
7449 try testArgs(@Vector(3, i512), @Vector(3, u7), .{ 0, 1, 1 << 6 });
7450 try testArgs(@Vector(3, i1024), @Vector(3, u7), .{ 0, 1, 1 << 6 });
7451
7452 try testArgs(@Vector(3, u8), @Vector(3, i8), .{ -1 << 7, -1, 0 });
7453 try testArgs(@Vector(3, u16), @Vector(3, i8), .{ -1 << 7, -1, 0 });
7454 try testArgs(@Vector(3, u32), @Vector(3, i8), .{ -1 << 7, -1, 0 });
7455 try testArgs(@Vector(3, u64), @Vector(3, i8), .{ -1 << 7, -1, 0 });
7456 try testArgs(@Vector(3, u128), @Vector(3, i8), .{ -1 << 7, -1, 0 });
7457 try testArgs(@Vector(3, u256), @Vector(3, i8), .{ -1 << 7, -1, 0 });
7458 try testArgs(@Vector(3, u512), @Vector(3, i8), .{ -1 << 7, -1, 0 });
7459 try testArgs(@Vector(3, u1024), @Vector(3, i8), .{ -1 << 7, -1, 0 });
7460 try testArgs(@Vector(3, i8), @Vector(3, u8), .{ 0, 1, 1 << 7 });
7461 try testArgs(@Vector(3, i16), @Vector(3, u8), .{ 0, 1, 1 << 7 });
7462 try testArgs(@Vector(3, i32), @Vector(3, u8), .{ 0, 1, 1 << 7 });
7463 try testArgs(@Vector(3, i64), @Vector(3, u8), .{ 0, 1, 1 << 7 });
7464 try testArgs(@Vector(3, i128), @Vector(3, u8), .{ 0, 1, 1 << 7 });
7465 try testArgs(@Vector(3, i256), @Vector(3, u8), .{ 0, 1, 1 << 7 });
7466 try testArgs(@Vector(3, i512), @Vector(3, u8), .{ 0, 1, 1 << 7 });
7467 try testArgs(@Vector(3, i1024), @Vector(3, u8), .{ 0, 1, 1 << 7 });
7468
7469 try testArgs(@Vector(3, u8), @Vector(3, i9), .{ -1 << 8, -1, 0 });
7470 try testArgs(@Vector(3, u16), @Vector(3, i9), .{ -1 << 8, -1, 0 });
7471 try testArgs(@Vector(3, u32), @Vector(3, i9), .{ -1 << 8, -1, 0 });
7472 try testArgs(@Vector(3, u64), @Vector(3, i9), .{ -1 << 8, -1, 0 });
7473 try testArgs(@Vector(3, u128), @Vector(3, i9), .{ -1 << 8, -1, 0 });
7474 try testArgs(@Vector(3, u256), @Vector(3, i9), .{ -1 << 8, -1, 0 });
7475 try testArgs(@Vector(3, u512), @Vector(3, i9), .{ -1 << 8, -1, 0 });
7476 try testArgs(@Vector(3, u1024), @Vector(3, i9), .{ -1 << 8, -1, 0 });
7477 try testArgs(@Vector(3, i8), @Vector(3, u9), .{ 0, 1, 1 << 8 });
7478 try testArgs(@Vector(3, i16), @Vector(3, u9), .{ 0, 1, 1 << 8 });
7479 try testArgs(@Vector(3, i32), @Vector(3, u9), .{ 0, 1, 1 << 8 });
7480 try testArgs(@Vector(3, i64), @Vector(3, u9), .{ 0, 1, 1 << 8 });
7481 try testArgs(@Vector(3, i128), @Vector(3, u9), .{ 0, 1, 1 << 8 });
7482 try testArgs(@Vector(3, i256), @Vector(3, u9), .{ 0, 1, 1 << 8 });
7483 try testArgs(@Vector(3, i512), @Vector(3, u9), .{ 0, 1, 1 << 8 });
7484 try testArgs(@Vector(3, i1024), @Vector(3, u9), .{ 0, 1, 1 << 8 });
7485
7486 try testArgs(@Vector(3, u8), @Vector(3, i15), .{ -1 << 14, -1, 0 });
7487 try testArgs(@Vector(3, u16), @Vector(3, i15), .{ -1 << 14, -1, 0 });
7488 try testArgs(@Vector(3, u32), @Vector(3, i15), .{ -1 << 14, -1, 0 });
7489 try testArgs(@Vector(3, u64), @Vector(3, i15), .{ -1 << 14, -1, 0 });
7490 try testArgs(@Vector(3, u128), @Vector(3, i15), .{ -1 << 14, -1, 0 });
7491 try testArgs(@Vector(3, u256), @Vector(3, i15), .{ -1 << 14, -1, 0 });
7492 try testArgs(@Vector(3, u512), @Vector(3, i15), .{ -1 << 14, -1, 0 });
7493 try testArgs(@Vector(3, u1024), @Vector(3, i15), .{ -1 << 14, -1, 0 });
7494 try testArgs(@Vector(3, i8), @Vector(3, u15), .{ 0, 1, 1 << 14 });
7495 try testArgs(@Vector(3, i16), @Vector(3, u15), .{ 0, 1, 1 << 14 });
7496 try testArgs(@Vector(3, i32), @Vector(3, u15), .{ 0, 1, 1 << 14 });
7497 try testArgs(@Vector(3, i64), @Vector(3, u15), .{ 0, 1, 1 << 14 });
7498 try testArgs(@Vector(3, i128), @Vector(3, u15), .{ 0, 1, 1 << 14 });
7499 try testArgs(@Vector(3, i256), @Vector(3, u15), .{ 0, 1, 1 << 14 });
7500 try testArgs(@Vector(3, i512), @Vector(3, u15), .{ 0, 1, 1 << 14 });
7501 try testArgs(@Vector(3, i1024), @Vector(3, u15), .{ 0, 1, 1 << 14 });
7502
7503 try testArgs(@Vector(3, u8), @Vector(3, i16), .{ -1 << 15, -1, 0 });
7504 try testArgs(@Vector(3, u16), @Vector(3, i16), .{ -1 << 15, -1, 0 });
7505 try testArgs(@Vector(3, u32), @Vector(3, i16), .{ -1 << 15, -1, 0 });
7506 try testArgs(@Vector(3, u64), @Vector(3, i16), .{ -1 << 15, -1, 0 });
7507 try testArgs(@Vector(3, u128), @Vector(3, i16), .{ -1 << 15, -1, 0 });
7508 try testArgs(@Vector(3, u256), @Vector(3, i16), .{ -1 << 15, -1, 0 });
7509 try testArgs(@Vector(3, u512), @Vector(3, i16), .{ -1 << 15, -1, 0 });
7510 try testArgs(@Vector(3, u1024), @Vector(3, i16), .{ -1 << 15, -1, 0 });
7511 try testArgs(@Vector(3, i8), @Vector(3, u16), .{ 0, 1, 1 << 15 });
7512 try testArgs(@Vector(3, i16), @Vector(3, u16), .{ 0, 1, 1 << 15 });
7513 try testArgs(@Vector(3, i32), @Vector(3, u16), .{ 0, 1, 1 << 15 });
7514 try testArgs(@Vector(3, i64), @Vector(3, u16), .{ 0, 1, 1 << 15 });
7515 try testArgs(@Vector(3, i128), @Vector(3, u16), .{ 0, 1, 1 << 15 });
7516 try testArgs(@Vector(3, i256), @Vector(3, u16), .{ 0, 1, 1 << 15 });
7517 try testArgs(@Vector(3, i512), @Vector(3, u16), .{ 0, 1, 1 << 15 });
7518 try testArgs(@Vector(3, i1024), @Vector(3, u16), .{ 0, 1, 1 << 15 });
7519
7520 try testArgs(@Vector(3, u8), @Vector(3, i17), .{ -1 << 16, -1, 0 });
7521 try testArgs(@Vector(3, u16), @Vector(3, i17), .{ -1 << 16, -1, 0 });
7522 try testArgs(@Vector(3, u32), @Vector(3, i17), .{ -1 << 16, -1, 0 });
7523 try testArgs(@Vector(3, u64), @Vector(3, i17), .{ -1 << 16, -1, 0 });
7524 try testArgs(@Vector(3, u128), @Vector(3, i17), .{ -1 << 16, -1, 0 });
7525 try testArgs(@Vector(3, u256), @Vector(3, i17), .{ -1 << 16, -1, 0 });
7526 try testArgs(@Vector(3, u512), @Vector(3, i17), .{ -1 << 16, -1, 0 });
7527 try testArgs(@Vector(3, u1024), @Vector(3, i17), .{ -1 << 16, -1, 0 });
7528 try testArgs(@Vector(3, i8), @Vector(3, u17), .{ 0, 1, 1 << 16 });
7529 try testArgs(@Vector(3, i16), @Vector(3, u17), .{ 0, 1, 1 << 16 });
7530 try testArgs(@Vector(3, i32), @Vector(3, u17), .{ 0, 1, 1 << 16 });
7531 try testArgs(@Vector(3, i64), @Vector(3, u17), .{ 0, 1, 1 << 16 });
7532 try testArgs(@Vector(3, i128), @Vector(3, u17), .{ 0, 1, 1 << 16 });
7533 try testArgs(@Vector(3, i256), @Vector(3, u17), .{ 0, 1, 1 << 16 });
7534 try testArgs(@Vector(3, i512), @Vector(3, u17), .{ 0, 1, 1 << 16 });
7535 try testArgs(@Vector(3, i1024), @Vector(3, u17), .{ 0, 1, 1 << 16 });
7536
7537 try testArgs(@Vector(3, u8), @Vector(3, i31), .{ -1 << 30, -1, 0 });
7538 try testArgs(@Vector(3, u16), @Vector(3, i31), .{ -1 << 30, -1, 0 });
7539 try testArgs(@Vector(3, u32), @Vector(3, i31), .{ -1 << 30, -1, 0 });
7540 try testArgs(@Vector(3, u64), @Vector(3, i31), .{ -1 << 30, -1, 0 });
7541 try testArgs(@Vector(3, u128), @Vector(3, i31), .{ -1 << 30, -1, 0 });
7542 try testArgs(@Vector(3, u256), @Vector(3, i31), .{ -1 << 30, -1, 0 });
7543 try testArgs(@Vector(3, u512), @Vector(3, i31), .{ -1 << 30, -1, 0 });
7544 try testArgs(@Vector(3, u1024), @Vector(3, i31), .{ -1 << 30, -1, 0 });
7545 try testArgs(@Vector(3, i8), @Vector(3, u31), .{ 0, 1, 1 << 30 });
7546 try testArgs(@Vector(3, i16), @Vector(3, u31), .{ 0, 1, 1 << 30 });
7547 try testArgs(@Vector(3, i32), @Vector(3, u31), .{ 0, 1, 1 << 30 });
7548 try testArgs(@Vector(3, i64), @Vector(3, u31), .{ 0, 1, 1 << 30 });
7549 try testArgs(@Vector(3, i128), @Vector(3, u31), .{ 0, 1, 1 << 30 });
7550 try testArgs(@Vector(3, i256), @Vector(3, u31), .{ 0, 1, 1 << 30 });
7551 try testArgs(@Vector(3, i512), @Vector(3, u31), .{ 0, 1, 1 << 30 });
7552 try testArgs(@Vector(3, i1024), @Vector(3, u31), .{ 0, 1, 1 << 30 });
7553
7554 try testArgs(@Vector(3, u8), @Vector(3, i32), .{ -1 << 31, -1, 0 });
7555 try testArgs(@Vector(3, u16), @Vector(3, i32), .{ -1 << 31, -1, 0 });
7556 try testArgs(@Vector(3, u32), @Vector(3, i32), .{ -1 << 31, -1, 0 });
7557 try testArgs(@Vector(3, u64), @Vector(3, i32), .{ -1 << 31, -1, 0 });
7558 try testArgs(@Vector(3, u128), @Vector(3, i32), .{ -1 << 31, -1, 0 });
7559 try testArgs(@Vector(3, u256), @Vector(3, i32), .{ -1 << 31, -1, 0 });
7560 try testArgs(@Vector(3, u512), @Vector(3, i32), .{ -1 << 31, -1, 0 });
7561 try testArgs(@Vector(3, u1024), @Vector(3, i32), .{ -1 << 31, -1, 0 });
7562 try testArgs(@Vector(3, i8), @Vector(3, u32), .{ 0, 1, 1 << 31 });
7563 try testArgs(@Vector(3, i16), @Vector(3, u32), .{ 0, 1, 1 << 31 });
7564 try testArgs(@Vector(3, i32), @Vector(3, u32), .{ 0, 1, 1 << 31 });
7565 try testArgs(@Vector(3, i64), @Vector(3, u32), .{ 0, 1, 1 << 31 });
7566 try testArgs(@Vector(3, i128), @Vector(3, u32), .{ 0, 1, 1 << 31 });
7567 try testArgs(@Vector(3, i256), @Vector(3, u32), .{ 0, 1, 1 << 31 });
7568 try testArgs(@Vector(3, i512), @Vector(3, u32), .{ 0, 1, 1 << 31 });
7569 try testArgs(@Vector(3, i1024), @Vector(3, u32), .{ 0, 1, 1 << 31 });
7570
7571 try testArgs(@Vector(3, u8), @Vector(3, i33), .{ -1 << 32, -1, 0 });
7572 try testArgs(@Vector(3, u16), @Vector(3, i33), .{ -1 << 32, -1, 0 });
7573 try testArgs(@Vector(3, u32), @Vector(3, i33), .{ -1 << 32, -1, 0 });
7574 try testArgs(@Vector(3, u64), @Vector(3, i33), .{ -1 << 32, -1, 0 });
7575 try testArgs(@Vector(3, u128), @Vector(3, i33), .{ -1 << 32, -1, 0 });
7576 try testArgs(@Vector(3, u256), @Vector(3, i33), .{ -1 << 32, -1, 0 });
7577 try testArgs(@Vector(3, u512), @Vector(3, i33), .{ -1 << 32, -1, 0 });
7578 try testArgs(@Vector(3, u1024), @Vector(3, i33), .{ -1 << 32, -1, 0 });
7579 try testArgs(@Vector(3, i8), @Vector(3, u33), .{ 0, 1, 1 << 32 });
7580 try testArgs(@Vector(3, i16), @Vector(3, u33), .{ 0, 1, 1 << 32 });
7581 try testArgs(@Vector(3, i32), @Vector(3, u33), .{ 0, 1, 1 << 32 });
7582 try testArgs(@Vector(3, i64), @Vector(3, u33), .{ 0, 1, 1 << 32 });
7583 try testArgs(@Vector(3, i128), @Vector(3, u33), .{ 0, 1, 1 << 32 });
7584 try testArgs(@Vector(3, i256), @Vector(3, u33), .{ 0, 1, 1 << 32 });
7585 try testArgs(@Vector(3, i512), @Vector(3, u33), .{ 0, 1, 1 << 32 });
7586 try testArgs(@Vector(3, i1024), @Vector(3, u33), .{ 0, 1, 1 << 32 });
7587
7588 try testArgs(@Vector(3, u8), @Vector(3, i63), .{ -1 << 62, -1, 0 });
7589 try testArgs(@Vector(3, u16), @Vector(3, i63), .{ -1 << 62, -1, 0 });
7590 try testArgs(@Vector(3, u32), @Vector(3, i63), .{ -1 << 62, -1, 0 });
7591 try testArgs(@Vector(3, u64), @Vector(3, i63), .{ -1 << 62, -1, 0 });
7592 try testArgs(@Vector(3, u128), @Vector(3, i63), .{ -1 << 62, -1, 0 });
7593 try testArgs(@Vector(3, u256), @Vector(3, i63), .{ -1 << 62, -1, 0 });
7594 try testArgs(@Vector(3, u512), @Vector(3, i63), .{ -1 << 62, -1, 0 });
7595 try testArgs(@Vector(3, u1024), @Vector(3, i63), .{ -1 << 62, -1, 0 });
7596 try testArgs(@Vector(3, i8), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5739 try testArgs(@Vector(3, i16), @Vector(3, u63), .{ 0, 1, 1 << 62 });7597 try testArgs(@Vector(3, i16), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5740 try testArgs(@Vector(3, u16), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5741 try testArgs(@Vector(3, i32), @Vector(3, u63), .{ 0, 1, 1 << 62 });7598 try testArgs(@Vector(3, i32), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5742 try testArgs(@Vector(3, u32), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5743 try testArgs(@Vector(3, i64), @Vector(3, u63), .{ 0, 1, 1 << 62 });7599 try testArgs(@Vector(3, i64), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5744 try testArgs(@Vector(3, u64), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5745 try testArgs(@Vector(3, i128), @Vector(3, u63), .{ 0, 1, 1 << 62 });7600 try testArgs(@Vector(3, i128), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5746 try testArgs(@Vector(3, u128), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5747 try testArgs(@Vector(3, i256), @Vector(3, u63), .{ 0, 1, 1 << 62 });7601 try testArgs(@Vector(3, i256), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5748 try testArgs(@Vector(3, u256), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5749 try testArgs(@Vector(3, i512), @Vector(3, u63), .{ 0, 1, 1 << 62 });7602 try testArgs(@Vector(3, i512), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5750 try testArgs(@Vector(3, u512), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5751 try testArgs(@Vector(3, i1024), @Vector(3, u63), .{ 0, 1, 1 << 62 });7603 try testArgs(@Vector(3, i1024), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5752 try testArgs(@Vector(3, u1024), @Vector(3, u63), .{ 0, 1, 1 << 62 });
57537604
5754 try testArgs(@Vector(3, i8), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5755 try testArgs(@Vector(3, u8), @Vector(3, i64), .{ -1 << 63, -1, 0 });7605 try testArgs(@Vector(3, u8), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5756 try testArgs(@Vector(3, i16), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5757 try testArgs(@Vector(3, u16), @Vector(3, i64), .{ -1 << 63, -1, 0 });7606 try testArgs(@Vector(3, u16), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5758 try testArgs(@Vector(3, i32), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5759 try testArgs(@Vector(3, u32), @Vector(3, i64), .{ -1 << 63, -1, 0 });7607 try testArgs(@Vector(3, u32), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5760 try testArgs(@Vector(3, i64), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5761 try testArgs(@Vector(3, u64), @Vector(3, i64), .{ -1 << 63, -1, 0 });7608 try testArgs(@Vector(3, u64), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5762 try testArgs(@Vector(3, i128), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5763 try testArgs(@Vector(3, u128), @Vector(3, i64), .{ -1 << 63, -1, 0 });7609 try testArgs(@Vector(3, u128), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5764 try testArgs(@Vector(3, i256), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5765 try testArgs(@Vector(3, u256), @Vector(3, i64), .{ -1 << 63, -1, 0 });7610 try testArgs(@Vector(3, u256), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5766 try testArgs(@Vector(3, i512), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5767 try testArgs(@Vector(3, u512), @Vector(3, i64), .{ -1 << 63, -1, 0 });7611 try testArgs(@Vector(3, u512), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5768 try testArgs(@Vector(3, i1024), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5769 try testArgs(@Vector(3, u1024), @Vector(3, i64), .{ -1 << 63, -1, 0 });7612 try testArgs(@Vector(3, u1024), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5770 try testArgs(@Vector(3, i8), @Vector(3, u64), .{ 0, 1, 1 << 63 });7613 try testArgs(@Vector(3, i8), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5771 try testArgs(@Vector(3, u8), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5772 try testArgs(@Vector(3, i16), @Vector(3, u64), .{ 0, 1, 1 << 63 });7614 try testArgs(@Vector(3, i16), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5773 try testArgs(@Vector(3, u16), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5774 try testArgs(@Vector(3, i32), @Vector(3, u64), .{ 0, 1, 1 << 63 });7615 try testArgs(@Vector(3, i32), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5775 try testArgs(@Vector(3, u32), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5776 try testArgs(@Vector(3, i64), @Vector(3, u64), .{ 0, 1, 1 << 63 });7616 try testArgs(@Vector(3, i64), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5777 try testArgs(@Vector(3, u64), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5778 try testArgs(@Vector(3, i128), @Vector(3, u64), .{ 0, 1, 1 << 63 });7617 try testArgs(@Vector(3, i128), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5779 try testArgs(@Vector(3, u128), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5780 try testArgs(@Vector(3, i256), @Vector(3, u64), .{ 0, 1, 1 << 63 });7618 try testArgs(@Vector(3, i256), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5781 try testArgs(@Vector(3, u256), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5782 try testArgs(@Vector(3, i512), @Vector(3, u64), .{ 0, 1, 1 << 63 });7619 try testArgs(@Vector(3, i512), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5783 try testArgs(@Vector(3, u512), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5784 try testArgs(@Vector(3, i1024), @Vector(3, u64), .{ 0, 1, 1 << 63 });7620 try testArgs(@Vector(3, i1024), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5785 try testArgs(@Vector(3, u1024), @Vector(3, u64), .{ 0, 1, 1 << 63 });
57867621
5787 try testArgs(@Vector(3, i8), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5788 try testArgs(@Vector(3, u8), @Vector(3, i65), .{ -1 << 64, -1, 0 });7622 try testArgs(@Vector(3, u8), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5789 try testArgs(@Vector(3, i16), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5790 try testArgs(@Vector(3, u16), @Vector(3, i65), .{ -1 << 64, -1, 0 });7623 try testArgs(@Vector(3, u16), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5791 try testArgs(@Vector(3, i32), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5792 try testArgs(@Vector(3, u32), @Vector(3, i65), .{ -1 << 64, -1, 0 });7624 try testArgs(@Vector(3, u32), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5793 try testArgs(@Vector(3, i64), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5794 try testArgs(@Vector(3, u64), @Vector(3, i65), .{ -1 << 64, -1, 0 });7625 try testArgs(@Vector(3, u64), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5795 try testArgs(@Vector(3, i128), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5796 try testArgs(@Vector(3, u128), @Vector(3, i65), .{ -1 << 64, -1, 0 });7626 try testArgs(@Vector(3, u128), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5797 try testArgs(@Vector(3, i256), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5798 try testArgs(@Vector(3, u256), @Vector(3, i65), .{ -1 << 64, -1, 0 });7627 try testArgs(@Vector(3, u256), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5799 try testArgs(@Vector(3, i512), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5800 try testArgs(@Vector(3, u512), @Vector(3, i65), .{ -1 << 64, -1, 0 });7628 try testArgs(@Vector(3, u512), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5801 try testArgs(@Vector(3, i1024), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5802 try testArgs(@Vector(3, u1024), @Vector(3, i65), .{ -1 << 64, -1, 0 });7629 try testArgs(@Vector(3, u1024), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5803 try testArgs(@Vector(3, i8), @Vector(3, u65), .{ 0, 1, 1 << 64 });7630 try testArgs(@Vector(3, i8), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5804 try testArgs(@Vector(3, u8), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5805 try testArgs(@Vector(3, i16), @Vector(3, u65), .{ 0, 1, 1 << 64 });7631 try testArgs(@Vector(3, i16), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5806 try testArgs(@Vector(3, u16), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5807 try testArgs(@Vector(3, i32), @Vector(3, u65), .{ 0, 1, 1 << 64 });7632 try testArgs(@Vector(3, i32), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5808 try testArgs(@Vector(3, u32), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5809 try testArgs(@Vector(3, i64), @Vector(3, u65), .{ 0, 1, 1 << 64 });7633 try testArgs(@Vector(3, i64), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5810 try testArgs(@Vector(3, u64), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5811 try testArgs(@Vector(3, i128), @Vector(3, u65), .{ 0, 1, 1 << 64 });7634 try testArgs(@Vector(3, i128), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5812 try testArgs(@Vector(3, u128), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5813 try testArgs(@Vector(3, i256), @Vector(3, u65), .{ 0, 1, 1 << 64 });7635 try testArgs(@Vector(3, i256), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5814 try testArgs(@Vector(3, u256), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5815 try testArgs(@Vector(3, i512), @Vector(3, u65), .{ 0, 1, 1 << 64 });7636 try testArgs(@Vector(3, i512), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5816 try testArgs(@Vector(3, u512), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5817 try testArgs(@Vector(3, i1024), @Vector(3, u65), .{ 0, 1, 1 << 64 });7637 try testArgs(@Vector(3, i1024), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5818 try testArgs(@Vector(3, u1024), @Vector(3, u65), .{ 0, 1, 1 << 64 });
58197638
5820 try testArgs(@Vector(3, i8), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5821 try testArgs(@Vector(3, u8), @Vector(3, i95), .{ -1 << 94, -1, 0 });7639 try testArgs(@Vector(3, u8), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5822 try testArgs(@Vector(3, i16), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5823 try testArgs(@Vector(3, u16), @Vector(3, i95), .{ -1 << 94, -1, 0 });7640 try testArgs(@Vector(3, u16), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5824 try testArgs(@Vector(3, i32), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5825 try testArgs(@Vector(3, u32), @Vector(3, i95), .{ -1 << 94, -1, 0 });7641 try testArgs(@Vector(3, u32), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5826 try testArgs(@Vector(3, i64), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5827 try testArgs(@Vector(3, u64), @Vector(3, i95), .{ -1 << 94, -1, 0 });7642 try testArgs(@Vector(3, u64), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5828 try testArgs(@Vector(3, i128), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5829 try testArgs(@Vector(3, u128), @Vector(3, i95), .{ -1 << 94, -1, 0 });7643 try testArgs(@Vector(3, u128), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5830 try testArgs(@Vector(3, i256), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5831 try testArgs(@Vector(3, u256), @Vector(3, i95), .{ -1 << 94, -1, 0 });7644 try testArgs(@Vector(3, u256), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5832 try testArgs(@Vector(3, i512), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5833 try testArgs(@Vector(3, u512), @Vector(3, i95), .{ -1 << 94, -1, 0 });7645 try testArgs(@Vector(3, u512), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5834 try testArgs(@Vector(3, i1024), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5835 try testArgs(@Vector(3, u1024), @Vector(3, i95), .{ -1 << 94, -1, 0 });7646 try testArgs(@Vector(3, u1024), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5836 try testArgs(@Vector(3, i8), @Vector(3, u95), .{ 0, 1, 1 << 94 });7647 try testArgs(@Vector(3, i8), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5837 try testArgs(@Vector(3, u8), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5838 try testArgs(@Vector(3, i16), @Vector(3, u95), .{ 0, 1, 1 << 94 });7648 try testArgs(@Vector(3, i16), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5839 try testArgs(@Vector(3, u16), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5840 try testArgs(@Vector(3, i32), @Vector(3, u95), .{ 0, 1, 1 << 94 });7649 try testArgs(@Vector(3, i32), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5841 try testArgs(@Vector(3, u32), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5842 try testArgs(@Vector(3, i64), @Vector(3, u95), .{ 0, 1, 1 << 94 });7650 try testArgs(@Vector(3, i64), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5843 try testArgs(@Vector(3, u64), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5844 try testArgs(@Vector(3, i128), @Vector(3, u95), .{ 0, 1, 1 << 94 });7651 try testArgs(@Vector(3, i128), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5845 try testArgs(@Vector(3, u128), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5846 try testArgs(@Vector(3, i256), @Vector(3, u95), .{ 0, 1, 1 << 94 });7652 try testArgs(@Vector(3, i256), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5847 try testArgs(@Vector(3, u256), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5848 try testArgs(@Vector(3, i512), @Vector(3, u95), .{ 0, 1, 1 << 94 });7653 try testArgs(@Vector(3, i512), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5849 try testArgs(@Vector(3, u512), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5850 try testArgs(@Vector(3, i1024), @Vector(3, u95), .{ 0, 1, 1 << 94 });7654 try testArgs(@Vector(3, i1024), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5851 try testArgs(@Vector(3, u1024), @Vector(3, u95), .{ 0, 1, 1 << 94 });
58527655
5853 try testArgs(@Vector(3, i8), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5854 try testArgs(@Vector(3, u8), @Vector(3, i96), .{ -1 << 95, -1, 0 });7656 try testArgs(@Vector(3, u8), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5855 try testArgs(@Vector(3, i16), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5856 try testArgs(@Vector(3, u16), @Vector(3, i96), .{ -1 << 95, -1, 0 });7657 try testArgs(@Vector(3, u16), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5857 try testArgs(@Vector(3, i32), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5858 try testArgs(@Vector(3, u32), @Vector(3, i96), .{ -1 << 95, -1, 0 });7658 try testArgs(@Vector(3, u32), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5859 try testArgs(@Vector(3, i64), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5860 try testArgs(@Vector(3, u64), @Vector(3, i96), .{ -1 << 95, -1, 0 });7659 try testArgs(@Vector(3, u64), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5861 try testArgs(@Vector(3, i128), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5862 try testArgs(@Vector(3, u128), @Vector(3, i96), .{ -1 << 95, -1, 0 });7660 try testArgs(@Vector(3, u128), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5863 try testArgs(@Vector(3, i256), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5864 try testArgs(@Vector(3, u256), @Vector(3, i96), .{ -1 << 95, -1, 0 });7661 try testArgs(@Vector(3, u256), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5865 try testArgs(@Vector(3, i512), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5866 try testArgs(@Vector(3, u512), @Vector(3, i96), .{ -1 << 95, -1, 0 });7662 try testArgs(@Vector(3, u512), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5867 try testArgs(@Vector(3, i1024), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5868 try testArgs(@Vector(3, u1024), @Vector(3, i96), .{ -1 << 95, -1, 0 });7663 try testArgs(@Vector(3, u1024), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5869 try testArgs(@Vector(3, i8), @Vector(3, u96), .{ 0, 1, 1 << 95 });7664 try testArgs(@Vector(3, i8), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5870 try testArgs(@Vector(3, u8), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5871 try testArgs(@Vector(3, i16), @Vector(3, u96), .{ 0, 1, 1 << 95 });7665 try testArgs(@Vector(3, i16), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5872 try testArgs(@Vector(3, u16), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5873 try testArgs(@Vector(3, i32), @Vector(3, u96), .{ 0, 1, 1 << 95 });7666 try testArgs(@Vector(3, i32), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5874 try testArgs(@Vector(3, u32), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5875 try testArgs(@Vector(3, i64), @Vector(3, u96), .{ 0, 1, 1 << 95 });7667 try testArgs(@Vector(3, i64), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5876 try testArgs(@Vector(3, u64), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5877 try testArgs(@Vector(3, i128), @Vector(3, u96), .{ 0, 1, 1 << 95 });7668 try testArgs(@Vector(3, i128), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5878 try testArgs(@Vector(3, u128), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5879 try testArgs(@Vector(3, i256), @Vector(3, u96), .{ 0, 1, 1 << 95 });7669 try testArgs(@Vector(3, i256), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5880 try testArgs(@Vector(3, u256), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5881 try testArgs(@Vector(3, i512), @Vector(3, u96), .{ 0, 1, 1 << 95 });7670 try testArgs(@Vector(3, i512), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5882 try testArgs(@Vector(3, u512), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5883 try testArgs(@Vector(3, i1024), @Vector(3, u96), .{ 0, 1, 1 << 95 });7671 try testArgs(@Vector(3, i1024), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5884 try testArgs(@Vector(3, u1024), @Vector(3, u96), .{ 0, 1, 1 << 95 });
58857672
5886 try testArgs(@Vector(3, i8), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5887 try testArgs(@Vector(3, u8), @Vector(3, i97), .{ -1 << 96, -1, 0 });7673 try testArgs(@Vector(3, u8), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5888 try testArgs(@Vector(3, i16), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5889 try testArgs(@Vector(3, u16), @Vector(3, i97), .{ -1 << 96, -1, 0 });7674 try testArgs(@Vector(3, u16), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5890 try testArgs(@Vector(3, i32), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5891 try testArgs(@Vector(3, u32), @Vector(3, i97), .{ -1 << 96, -1, 0 });7675 try testArgs(@Vector(3, u32), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5892 try testArgs(@Vector(3, i64), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5893 try testArgs(@Vector(3, u64), @Vector(3, i97), .{ -1 << 96, -1, 0 });7676 try testArgs(@Vector(3, u64), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5894 try testArgs(@Vector(3, i128), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5895 try testArgs(@Vector(3, u128), @Vector(3, i97), .{ -1 << 96, -1, 0 });7677 try testArgs(@Vector(3, u128), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5896 try testArgs(@Vector(3, i256), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5897 try testArgs(@Vector(3, u256), @Vector(3, i97), .{ -1 << 96, -1, 0 });7678 try testArgs(@Vector(3, u256), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5898 try testArgs(@Vector(3, i512), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5899 try testArgs(@Vector(3, u512), @Vector(3, i97), .{ -1 << 96, -1, 0 });7679 try testArgs(@Vector(3, u512), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5900 try testArgs(@Vector(3, i1024), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5901 try testArgs(@Vector(3, u1024), @Vector(3, i97), .{ -1 << 96, -1, 0 });7680 try testArgs(@Vector(3, u1024), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5902 try testArgs(@Vector(3, i8), @Vector(3, u97), .{ 0, 1, 1 << 96 });7681 try testArgs(@Vector(3, i8), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5903 try testArgs(@Vector(3, u8), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5904 try testArgs(@Vector(3, i16), @Vector(3, u97), .{ 0, 1, 1 << 96 });7682 try testArgs(@Vector(3, i16), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5905 try testArgs(@Vector(3, u16), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5906 try testArgs(@Vector(3, i32), @Vector(3, u97), .{ 0, 1, 1 << 96 });7683 try testArgs(@Vector(3, i32), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5907 try testArgs(@Vector(3, u32), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5908 try testArgs(@Vector(3, i64), @Vector(3, u97), .{ 0, 1, 1 << 96 });7684 try testArgs(@Vector(3, i64), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5909 try testArgs(@Vector(3, u64), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5910 try testArgs(@Vector(3, i128), @Vector(3, u97), .{ 0, 1, 1 << 96 });7685 try testArgs(@Vector(3, i128), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5911 try testArgs(@Vector(3, u128), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5912 try testArgs(@Vector(3, i256), @Vector(3, u97), .{ 0, 1, 1 << 96 });7686 try testArgs(@Vector(3, i256), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5913 try testArgs(@Vector(3, u256), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5914 try testArgs(@Vector(3, i512), @Vector(3, u97), .{ 0, 1, 1 << 96 });7687 try testArgs(@Vector(3, i512), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5915 try testArgs(@Vector(3, u512), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5916 try testArgs(@Vector(3, i1024), @Vector(3, u97), .{ 0, 1, 1 << 96 });7688 try testArgs(@Vector(3, i1024), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5917 try testArgs(@Vector(3, u1024), @Vector(3, u97), .{ 0, 1, 1 << 96 });
59187689
5919 try testArgs(@Vector(3, i8), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5920 try testArgs(@Vector(3, u8), @Vector(3, i127), .{ -1 << 126, -1, 0 });7690 try testArgs(@Vector(3, u8), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5921 try testArgs(@Vector(3, i16), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5922 try testArgs(@Vector(3, u16), @Vector(3, i127), .{ -1 << 126, -1, 0 });7691 try testArgs(@Vector(3, u16), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5923 try testArgs(@Vector(3, i32), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5924 try testArgs(@Vector(3, u32), @Vector(3, i127), .{ -1 << 126, -1, 0 });7692 try testArgs(@Vector(3, u32), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5925 try testArgs(@Vector(3, i64), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5926 try testArgs(@Vector(3, u64), @Vector(3, i127), .{ -1 << 126, -1, 0 });7693 try testArgs(@Vector(3, u64), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5927 try testArgs(@Vector(3, i128), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5928 try testArgs(@Vector(3, u128), @Vector(3, i127), .{ -1 << 126, -1, 0 });7694 try testArgs(@Vector(3, u128), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5929 try testArgs(@Vector(3, i256), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5930 try testArgs(@Vector(3, u256), @Vector(3, i127), .{ -1 << 126, -1, 0 });7695 try testArgs(@Vector(3, u256), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5931 try testArgs(@Vector(3, i512), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5932 try testArgs(@Vector(3, u512), @Vector(3, i127), .{ -1 << 126, -1, 0 });7696 try testArgs(@Vector(3, u512), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5933 try testArgs(@Vector(3, i1024), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5934 try testArgs(@Vector(3, u1024), @Vector(3, i127), .{ -1 << 126, -1, 0 });7697 try testArgs(@Vector(3, u1024), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5935 try testArgs(@Vector(3, i8), @Vector(3, u127), .{ 0, 1, 1 << 126 });7698 try testArgs(@Vector(3, i8), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5936 try testArgs(@Vector(3, u8), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5937 try testArgs(@Vector(3, i16), @Vector(3, u127), .{ 0, 1, 1 << 126 });7699 try testArgs(@Vector(3, i16), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5938 try testArgs(@Vector(3, u16), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5939 try testArgs(@Vector(3, i32), @Vector(3, u127), .{ 0, 1, 1 << 126 });7700 try testArgs(@Vector(3, i32), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5940 try testArgs(@Vector(3, u32), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5941 try testArgs(@Vector(3, i64), @Vector(3, u127), .{ 0, 1, 1 << 126 });7701 try testArgs(@Vector(3, i64), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5942 try testArgs(@Vector(3, u64), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5943 try testArgs(@Vector(3, i128), @Vector(3, u127), .{ 0, 1, 1 << 126 });7702 try testArgs(@Vector(3, i128), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5944 try testArgs(@Vector(3, u128), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5945 try testArgs(@Vector(3, i256), @Vector(3, u127), .{ 0, 1, 1 << 126 });7703 try testArgs(@Vector(3, i256), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5946 try testArgs(@Vector(3, u256), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5947 try testArgs(@Vector(3, i512), @Vector(3, u127), .{ 0, 1, 1 << 126 });7704 try testArgs(@Vector(3, i512), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5948 try testArgs(@Vector(3, u512), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5949 try testArgs(@Vector(3, i1024), @Vector(3, u127), .{ 0, 1, 1 << 126 });7705 try testArgs(@Vector(3, i1024), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5950 try testArgs(@Vector(3, u1024), @Vector(3, u127), .{ 0, 1, 1 << 126 });
59517706
5952 try testArgs(@Vector(3, i8), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5953 try testArgs(@Vector(3, u8), @Vector(3, i128), .{ -1 << 127, -1, 0 });7707 try testArgs(@Vector(3, u8), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5954 try testArgs(@Vector(3, i16), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5955 try testArgs(@Vector(3, u16), @Vector(3, i128), .{ -1 << 127, -1, 0 });7708 try testArgs(@Vector(3, u16), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5956 try testArgs(@Vector(3, i32), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5957 try testArgs(@Vector(3, u32), @Vector(3, i128), .{ -1 << 127, -1, 0 });7709 try testArgs(@Vector(3, u32), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5958 try testArgs(@Vector(3, i64), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5959 try testArgs(@Vector(3, u64), @Vector(3, i128), .{ -1 << 127, -1, 0 });7710 try testArgs(@Vector(3, u64), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5960 try testArgs(@Vector(3, i128), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5961 try testArgs(@Vector(3, u128), @Vector(3, i128), .{ -1 << 127, -1, 0 });7711 try testArgs(@Vector(3, u128), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5962 try testArgs(@Vector(3, i256), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5963 try testArgs(@Vector(3, u256), @Vector(3, i128), .{ -1 << 127, -1, 0 });7712 try testArgs(@Vector(3, u256), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5964 try testArgs(@Vector(3, i512), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5965 try testArgs(@Vector(3, u512), @Vector(3, i128), .{ -1 << 127, -1, 0 });7713 try testArgs(@Vector(3, u512), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5966 try testArgs(@Vector(3, i1024), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5967 try testArgs(@Vector(3, u1024), @Vector(3, i128), .{ -1 << 127, -1, 0 });7714 try testArgs(@Vector(3, u1024), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5968 try testArgs(@Vector(3, i8), @Vector(3, u128), .{ 0, 1, 1 << 127 });7715 try testArgs(@Vector(3, i8), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5969 try testArgs(@Vector(3, u8), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5970 try testArgs(@Vector(3, i16), @Vector(3, u128), .{ 0, 1, 1 << 127 });7716 try testArgs(@Vector(3, i16), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5971 try testArgs(@Vector(3, u16), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5972 try testArgs(@Vector(3, i32), @Vector(3, u128), .{ 0, 1, 1 << 127 });7717 try testArgs(@Vector(3, i32), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5973 try testArgs(@Vector(3, u32), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5974 try testArgs(@Vector(3, i64), @Vector(3, u128), .{ 0, 1, 1 << 127 });7718 try testArgs(@Vector(3, i64), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5975 try testArgs(@Vector(3, u64), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5976 try testArgs(@Vector(3, i128), @Vector(3, u128), .{ 0, 1, 1 << 127 });7719 try testArgs(@Vector(3, i128), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5977 try testArgs(@Vector(3, u128), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5978 try testArgs(@Vector(3, i256), @Vector(3, u128), .{ 0, 1, 1 << 127 });7720 try testArgs(@Vector(3, i256), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5979 try testArgs(@Vector(3, u256), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5980 try testArgs(@Vector(3, i512), @Vector(3, u128), .{ 0, 1, 1 << 127 });7721 try testArgs(@Vector(3, i512), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5981 try testArgs(@Vector(3, u512), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5982 try testArgs(@Vector(3, i1024), @Vector(3, u128), .{ 0, 1, 1 << 127 });7722 try testArgs(@Vector(3, i1024), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5983 try testArgs(@Vector(3, u1024), @Vector(3, u128), .{ 0, 1, 1 << 127 });
59847723
5985 try testArgs(@Vector(3, i8), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5986 try testArgs(@Vector(3, u8), @Vector(3, i129), .{ -1 << 128, -1, 0 });7724 try testArgs(@Vector(3, u8), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5987 try testArgs(@Vector(3, i16), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5988 try testArgs(@Vector(3, u16), @Vector(3, i129), .{ -1 << 128, -1, 0 });7725 try testArgs(@Vector(3, u16), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5989 try testArgs(@Vector(3, i32), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5990 try testArgs(@Vector(3, u32), @Vector(3, i129), .{ -1 << 128, -1, 0 });7726 try testArgs(@Vector(3, u32), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5991 try testArgs(@Vector(3, i64), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5992 try testArgs(@Vector(3, u64), @Vector(3, i129), .{ -1 << 128, -1, 0 });7727 try testArgs(@Vector(3, u64), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5993 try testArgs(@Vector(3, i128), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5994 try testArgs(@Vector(3, u128), @Vector(3, i129), .{ -1 << 128, -1, 0 });7728 try testArgs(@Vector(3, u128), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5995 try testArgs(@Vector(3, i256), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5996 try testArgs(@Vector(3, u256), @Vector(3, i129), .{ -1 << 128, -1, 0 });7729 try testArgs(@Vector(3, u256), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5997 try testArgs(@Vector(3, i512), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5998 try testArgs(@Vector(3, u512), @Vector(3, i129), .{ -1 << 128, -1, 0 });7730 try testArgs(@Vector(3, u512), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5999 try testArgs(@Vector(3, i1024), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6000 try testArgs(@Vector(3, u1024), @Vector(3, i129), .{ -1 << 128, -1, 0 });7731 try testArgs(@Vector(3, u1024), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6001 try testArgs(@Vector(3, i8), @Vector(3, u129), .{ 0, 1, 1 << 128 });7732 try testArgs(@Vector(3, i8), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6002 try testArgs(@Vector(3, u8), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6003 try testArgs(@Vector(3, i16), @Vector(3, u129), .{ 0, 1, 1 << 128 });7733 try testArgs(@Vector(3, i16), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6004 try testArgs(@Vector(3, u16), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6005 try testArgs(@Vector(3, i32), @Vector(3, u129), .{ 0, 1, 1 << 128 });7734 try testArgs(@Vector(3, i32), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6006 try testArgs(@Vector(3, u32), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6007 try testArgs(@Vector(3, i64), @Vector(3, u129), .{ 0, 1, 1 << 128 });7735 try testArgs(@Vector(3, i64), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6008 try testArgs(@Vector(3, u64), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6009 try testArgs(@Vector(3, i128), @Vector(3, u129), .{ 0, 1, 1 << 128 });7736 try testArgs(@Vector(3, i128), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6010 try testArgs(@Vector(3, u128), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6011 try testArgs(@Vector(3, i256), @Vector(3, u129), .{ 0, 1, 1 << 128 });7737 try testArgs(@Vector(3, i256), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6012 try testArgs(@Vector(3, u256), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6013 try testArgs(@Vector(3, i512), @Vector(3, u129), .{ 0, 1, 1 << 128 });7738 try testArgs(@Vector(3, i512), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6014 try testArgs(@Vector(3, u512), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6015 try testArgs(@Vector(3, i1024), @Vector(3, u129), .{ 0, 1, 1 << 128 });7739 try testArgs(@Vector(3, i1024), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6016 try testArgs(@Vector(3, u1024), @Vector(3, u129), .{ 0, 1, 1 << 128 });
60177740
6018 try testArgs(@Vector(3, i8), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6019 try testArgs(@Vector(3, u8), @Vector(3, i159), .{ -1 << 158, -1, 0 });7741 try testArgs(@Vector(3, u8), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6020 try testArgs(@Vector(3, i16), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6021 try testArgs(@Vector(3, u16), @Vector(3, i159), .{ -1 << 158, -1, 0 });7742 try testArgs(@Vector(3, u16), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6022 try testArgs(@Vector(3, i32), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6023 try testArgs(@Vector(3, u32), @Vector(3, i159), .{ -1 << 158, -1, 0 });7743 try testArgs(@Vector(3, u32), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6024 try testArgs(@Vector(3, i64), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6025 try testArgs(@Vector(3, u64), @Vector(3, i159), .{ -1 << 158, -1, 0 });7744 try testArgs(@Vector(3, u64), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6026 try testArgs(@Vector(3, i128), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6027 try testArgs(@Vector(3, u128), @Vector(3, i159), .{ -1 << 158, -1, 0 });7745 try testArgs(@Vector(3, u128), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6028 try testArgs(@Vector(3, i256), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6029 try testArgs(@Vector(3, u256), @Vector(3, i159), .{ -1 << 158, -1, 0 });7746 try testArgs(@Vector(3, u256), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6030 try testArgs(@Vector(3, i512), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6031 try testArgs(@Vector(3, u512), @Vector(3, i159), .{ -1 << 158, -1, 0 });7747 try testArgs(@Vector(3, u512), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6032 try testArgs(@Vector(3, i1024), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6033 try testArgs(@Vector(3, u1024), @Vector(3, i159), .{ -1 << 158, -1, 0 });7748 try testArgs(@Vector(3, u1024), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6034 try testArgs(@Vector(3, i8), @Vector(3, u159), .{ 0, 1, 1 << 158 });7749 try testArgs(@Vector(3, i8), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6035 try testArgs(@Vector(3, u8), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6036 try testArgs(@Vector(3, i16), @Vector(3, u159), .{ 0, 1, 1 << 158 });7750 try testArgs(@Vector(3, i16), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6037 try testArgs(@Vector(3, u16), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6038 try testArgs(@Vector(3, i32), @Vector(3, u159), .{ 0, 1, 1 << 158 });7751 try testArgs(@Vector(3, i32), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6039 try testArgs(@Vector(3, u32), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6040 try testArgs(@Vector(3, i64), @Vector(3, u159), .{ 0, 1, 1 << 158 });7752 try testArgs(@Vector(3, i64), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6041 try testArgs(@Vector(3, u64), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6042 try testArgs(@Vector(3, i128), @Vector(3, u159), .{ 0, 1, 1 << 158 });7753 try testArgs(@Vector(3, i128), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6043 try testArgs(@Vector(3, u128), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6044 try testArgs(@Vector(3, i256), @Vector(3, u159), .{ 0, 1, 1 << 158 });7754 try testArgs(@Vector(3, i256), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6045 try testArgs(@Vector(3, u256), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6046 try testArgs(@Vector(3, i512), @Vector(3, u159), .{ 0, 1, 1 << 158 });7755 try testArgs(@Vector(3, i512), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6047 try testArgs(@Vector(3, u512), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6048 try testArgs(@Vector(3, i1024), @Vector(3, u159), .{ 0, 1, 1 << 158 });7756 try testArgs(@Vector(3, i1024), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6049 try testArgs(@Vector(3, u1024), @Vector(3, u159), .{ 0, 1, 1 << 158 });
60507757
6051 try testArgs(@Vector(3, i8), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6052 try testArgs(@Vector(3, u8), @Vector(3, i160), .{ -1 << 159, -1, 0 });7758 try testArgs(@Vector(3, u8), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6053 try testArgs(@Vector(3, i16), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6054 try testArgs(@Vector(3, u16), @Vector(3, i160), .{ -1 << 159, -1, 0 });7759 try testArgs(@Vector(3, u16), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6055 try testArgs(@Vector(3, i32), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6056 try testArgs(@Vector(3, u32), @Vector(3, i160), .{ -1 << 159, -1, 0 });7760 try testArgs(@Vector(3, u32), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6057 try testArgs(@Vector(3, i64), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6058 try testArgs(@Vector(3, u64), @Vector(3, i160), .{ -1 << 159, -1, 0 });7761 try testArgs(@Vector(3, u64), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6059 try testArgs(@Vector(3, i128), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6060 try testArgs(@Vector(3, u128), @Vector(3, i160), .{ -1 << 159, -1, 0 });7762 try testArgs(@Vector(3, u128), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6061 try testArgs(@Vector(3, i256), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6062 try testArgs(@Vector(3, u256), @Vector(3, i160), .{ -1 << 159, -1, 0 });7763 try testArgs(@Vector(3, u256), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6063 try testArgs(@Vector(3, i512), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6064 try testArgs(@Vector(3, u512), @Vector(3, i160), .{ -1 << 159, -1, 0 });7764 try testArgs(@Vector(3, u512), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6065 try testArgs(@Vector(3, i1024), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6066 try testArgs(@Vector(3, u1024), @Vector(3, i160), .{ -1 << 159, -1, 0 });7765 try testArgs(@Vector(3, u1024), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6067 try testArgs(@Vector(3, i8), @Vector(3, u160), .{ 0, 1, 1 << 159 });7766 try testArgs(@Vector(3, i8), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6068 try testArgs(@Vector(3, u8), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6069 try testArgs(@Vector(3, i16), @Vector(3, u160), .{ 0, 1, 1 << 159 });7767 try testArgs(@Vector(3, i16), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6070 try testArgs(@Vector(3, u16), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6071 try testArgs(@Vector(3, i32), @Vector(3, u160), .{ 0, 1, 1 << 159 });7768 try testArgs(@Vector(3, i32), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6072 try testArgs(@Vector(3, u32), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6073 try testArgs(@Vector(3, i64), @Vector(3, u160), .{ 0, 1, 1 << 159 });7769 try testArgs(@Vector(3, i64), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6074 try testArgs(@Vector(3, u64), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6075 try testArgs(@Vector(3, i128), @Vector(3, u160), .{ 0, 1, 1 << 159 });7770 try testArgs(@Vector(3, i128), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6076 try testArgs(@Vector(3, u128), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6077 try testArgs(@Vector(3, i256), @Vector(3, u160), .{ 0, 1, 1 << 159 });7771 try testArgs(@Vector(3, i256), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6078 try testArgs(@Vector(3, u256), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6079 try testArgs(@Vector(3, i512), @Vector(3, u160), .{ 0, 1, 1 << 159 });7772 try testArgs(@Vector(3, i512), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6080 try testArgs(@Vector(3, u512), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6081 try testArgs(@Vector(3, i1024), @Vector(3, u160), .{ 0, 1, 1 << 159 });7773 try testArgs(@Vector(3, i1024), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6082 try testArgs(@Vector(3, u1024), @Vector(3, u160), .{ 0, 1, 1 << 159 });
60837774
6084 try testArgs(@Vector(3, i8), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6085 try testArgs(@Vector(3, u8), @Vector(3, i161), .{ -1 << 160, -1, 0 });7775 try testArgs(@Vector(3, u8), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6086 try testArgs(@Vector(3, i16), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6087 try testArgs(@Vector(3, u16), @Vector(3, i161), .{ -1 << 160, -1, 0 });7776 try testArgs(@Vector(3, u16), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6088 try testArgs(@Vector(3, i32), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6089 try testArgs(@Vector(3, u32), @Vector(3, i161), .{ -1 << 160, -1, 0 });7777 try testArgs(@Vector(3, u32), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6090 try testArgs(@Vector(3, i64), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6091 try testArgs(@Vector(3, u64), @Vector(3, i161), .{ -1 << 160, -1, 0 });7778 try testArgs(@Vector(3, u64), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6092 try testArgs(@Vector(3, i128), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6093 try testArgs(@Vector(3, u128), @Vector(3, i161), .{ -1 << 160, -1, 0 });7779 try testArgs(@Vector(3, u128), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6094 try testArgs(@Vector(3, i256), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6095 try testArgs(@Vector(3, u256), @Vector(3, i161), .{ -1 << 160, -1, 0 });7780 try testArgs(@Vector(3, u256), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6096 try testArgs(@Vector(3, i512), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6097 try testArgs(@Vector(3, u512), @Vector(3, i161), .{ -1 << 160, -1, 0 });7781 try testArgs(@Vector(3, u512), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6098 try testArgs(@Vector(3, i1024), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6099 try testArgs(@Vector(3, u1024), @Vector(3, i161), .{ -1 << 160, -1, 0 });7782 try testArgs(@Vector(3, u1024), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6100 try testArgs(@Vector(3, i8), @Vector(3, u161), .{ 0, 1, 1 << 160 });7783 try testArgs(@Vector(3, i8), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6101 try testArgs(@Vector(3, u8), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6102 try testArgs(@Vector(3, i16), @Vector(3, u161), .{ 0, 1, 1 << 160 });7784 try testArgs(@Vector(3, i16), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6103 try testArgs(@Vector(3, u16), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6104 try testArgs(@Vector(3, i32), @Vector(3, u161), .{ 0, 1, 1 << 160 });7785 try testArgs(@Vector(3, i32), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6105 try testArgs(@Vector(3, u32), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6106 try testArgs(@Vector(3, i64), @Vector(3, u161), .{ 0, 1, 1 << 160 });7786 try testArgs(@Vector(3, i64), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6107 try testArgs(@Vector(3, u64), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6108 try testArgs(@Vector(3, i128), @Vector(3, u161), .{ 0, 1, 1 << 160 });7787 try testArgs(@Vector(3, i128), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6109 try testArgs(@Vector(3, u128), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6110 try testArgs(@Vector(3, i256), @Vector(3, u161), .{ 0, 1, 1 << 160 });7788 try testArgs(@Vector(3, i256), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6111 try testArgs(@Vector(3, u256), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6112 try testArgs(@Vector(3, i512), @Vector(3, u161), .{ 0, 1, 1 << 160 });7789 try testArgs(@Vector(3, i512), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6113 try testArgs(@Vector(3, u512), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6114 try testArgs(@Vector(3, i1024), @Vector(3, u161), .{ 0, 1, 1 << 160 });7790 try testArgs(@Vector(3, i1024), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6115 try testArgs(@Vector(3, u1024), @Vector(3, u161), .{ 0, 1, 1 << 160 });
61167791
6117 try testArgs(@Vector(3, i8), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6118 try testArgs(@Vector(3, u8), @Vector(3, i191), .{ -1 << 190, -1, 0 });7792 try testArgs(@Vector(3, u8), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6119 try testArgs(@Vector(3, i16), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6120 try testArgs(@Vector(3, u16), @Vector(3, i191), .{ -1 << 190, -1, 0 });7793 try testArgs(@Vector(3, u16), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6121 try testArgs(@Vector(3, i32), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6122 try testArgs(@Vector(3, u32), @Vector(3, i191), .{ -1 << 190, -1, 0 });7794 try testArgs(@Vector(3, u32), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6123 try testArgs(@Vector(3, i64), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6124 try testArgs(@Vector(3, u64), @Vector(3, i191), .{ -1 << 190, -1, 0 });7795 try testArgs(@Vector(3, u64), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6125 try testArgs(@Vector(3, i128), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6126 try testArgs(@Vector(3, u128), @Vector(3, i191), .{ -1 << 190, -1, 0 });7796 try testArgs(@Vector(3, u128), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6127 try testArgs(@Vector(3, i256), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6128 try testArgs(@Vector(3, u256), @Vector(3, i191), .{ -1 << 190, -1, 0 });7797 try testArgs(@Vector(3, u256), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6129 try testArgs(@Vector(3, i512), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6130 try testArgs(@Vector(3, u512), @Vector(3, i191), .{ -1 << 190, -1, 0 });7798 try testArgs(@Vector(3, u512), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6131 try testArgs(@Vector(3, i1024), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6132 try testArgs(@Vector(3, u1024), @Vector(3, i191), .{ -1 << 190, -1, 0 });7799 try testArgs(@Vector(3, u1024), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6133 try testArgs(@Vector(3, i8), @Vector(3, u191), .{ 0, 1, 1 << 190 });7800 try testArgs(@Vector(3, i8), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6134 try testArgs(@Vector(3, u8), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6135 try testArgs(@Vector(3, i16), @Vector(3, u191), .{ 0, 1, 1 << 190 });7801 try testArgs(@Vector(3, i16), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6136 try testArgs(@Vector(3, u16), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6137 try testArgs(@Vector(3, i32), @Vector(3, u191), .{ 0, 1, 1 << 190 });7802 try testArgs(@Vector(3, i32), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6138 try testArgs(@Vector(3, u32), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6139 try testArgs(@Vector(3, i64), @Vector(3, u191), .{ 0, 1, 1 << 190 });7803 try testArgs(@Vector(3, i64), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6140 try testArgs(@Vector(3, u64), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6141 try testArgs(@Vector(3, i128), @Vector(3, u191), .{ 0, 1, 1 << 190 });7804 try testArgs(@Vector(3, i128), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6142 try testArgs(@Vector(3, u128), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6143 try testArgs(@Vector(3, i256), @Vector(3, u191), .{ 0, 1, 1 << 190 });7805 try testArgs(@Vector(3, i256), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6144 try testArgs(@Vector(3, u256), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6145 try testArgs(@Vector(3, i512), @Vector(3, u191), .{ 0, 1, 1 << 190 });7806 try testArgs(@Vector(3, i512), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6146 try testArgs(@Vector(3, u512), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6147 try testArgs(@Vector(3, i1024), @Vector(3, u191), .{ 0, 1, 1 << 190 });7807 try testArgs(@Vector(3, i1024), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6148 try testArgs(@Vector(3, u1024), @Vector(3, u191), .{ 0, 1, 1 << 190 });
61497808
6150 try testArgs(@Vector(3, i8), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6151 try testArgs(@Vector(3, u8), @Vector(3, i192), .{ -1 << 191, -1, 0 });7809 try testArgs(@Vector(3, u8), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6152 try testArgs(@Vector(3, i16), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6153 try testArgs(@Vector(3, u16), @Vector(3, i192), .{ -1 << 191, -1, 0 });7810 try testArgs(@Vector(3, u16), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6154 try testArgs(@Vector(3, i32), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6155 try testArgs(@Vector(3, u32), @Vector(3, i192), .{ -1 << 191, -1, 0 });7811 try testArgs(@Vector(3, u32), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6156 try testArgs(@Vector(3, i64), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6157 try testArgs(@Vector(3, u64), @Vector(3, i192), .{ -1 << 191, -1, 0 });7812 try testArgs(@Vector(3, u64), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6158 try testArgs(@Vector(3, i128), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6159 try testArgs(@Vector(3, u128), @Vector(3, i192), .{ -1 << 191, -1, 0 });7813 try testArgs(@Vector(3, u128), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6160 try testArgs(@Vector(3, i256), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6161 try testArgs(@Vector(3, u256), @Vector(3, i192), .{ -1 << 191, -1, 0 });7814 try testArgs(@Vector(3, u256), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6162 try testArgs(@Vector(3, i512), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6163 try testArgs(@Vector(3, u512), @Vector(3, i192), .{ -1 << 191, -1, 0 });7815 try testArgs(@Vector(3, u512), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6164 try testArgs(@Vector(3, i1024), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6165 try testArgs(@Vector(3, u1024), @Vector(3, i192), .{ -1 << 191, -1, 0 });7816 try testArgs(@Vector(3, u1024), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6166 try testArgs(@Vector(3, i8), @Vector(3, u192), .{ 0, 1, 1 << 191 });7817 try testArgs(@Vector(3, i8), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6167 try testArgs(@Vector(3, u8), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6168 try testArgs(@Vector(3, i16), @Vector(3, u192), .{ 0, 1, 1 << 191 });7818 try testArgs(@Vector(3, i16), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6169 try testArgs(@Vector(3, u16), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6170 try testArgs(@Vector(3, i32), @Vector(3, u192), .{ 0, 1, 1 << 191 });7819 try testArgs(@Vector(3, i32), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6171 try testArgs(@Vector(3, u32), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6172 try testArgs(@Vector(3, i64), @Vector(3, u192), .{ 0, 1, 1 << 191 });7820 try testArgs(@Vector(3, i64), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6173 try testArgs(@Vector(3, u64), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6174 try testArgs(@Vector(3, i128), @Vector(3, u192), .{ 0, 1, 1 << 191 });7821 try testArgs(@Vector(3, i128), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6175 try testArgs(@Vector(3, u128), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6176 try testArgs(@Vector(3, i256), @Vector(3, u192), .{ 0, 1, 1 << 191 });7822 try testArgs(@Vector(3, i256), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6177 try testArgs(@Vector(3, u256), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6178 try testArgs(@Vector(3, i512), @Vector(3, u192), .{ 0, 1, 1 << 191 });7823 try testArgs(@Vector(3, i512), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6179 try testArgs(@Vector(3, u512), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6180 try testArgs(@Vector(3, i1024), @Vector(3, u192), .{ 0, 1, 1 << 191 });7824 try testArgs(@Vector(3, i1024), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6181 try testArgs(@Vector(3, u1024), @Vector(3, u192), .{ 0, 1, 1 << 191 });
61827825
6183 try testArgs(@Vector(3, i8), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6184 try testArgs(@Vector(3, u8), @Vector(3, i193), .{ -1 << 192, -1, 0 });7826 try testArgs(@Vector(3, u8), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6185 try testArgs(@Vector(3, i16), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6186 try testArgs(@Vector(3, u16), @Vector(3, i193), .{ -1 << 192, -1, 0 });7827 try testArgs(@Vector(3, u16), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6187 try testArgs(@Vector(3, i32), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6188 try testArgs(@Vector(3, u32), @Vector(3, i193), .{ -1 << 192, -1, 0 });7828 try testArgs(@Vector(3, u32), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6189 try testArgs(@Vector(3, i64), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6190 try testArgs(@Vector(3, u64), @Vector(3, i193), .{ -1 << 192, -1, 0 });7829 try testArgs(@Vector(3, u64), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6191 try testArgs(@Vector(3, i128), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6192 try testArgs(@Vector(3, u128), @Vector(3, i193), .{ -1 << 192, -1, 0 });7830 try testArgs(@Vector(3, u128), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6193 try testArgs(@Vector(3, i256), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6194 try testArgs(@Vector(3, u256), @Vector(3, i193), .{ -1 << 192, -1, 0 });7831 try testArgs(@Vector(3, u256), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6195 try testArgs(@Vector(3, i512), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6196 try testArgs(@Vector(3, u512), @Vector(3, i193), .{ -1 << 192, -1, 0 });7832 try testArgs(@Vector(3, u512), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6197 try testArgs(@Vector(3, i1024), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6198 try testArgs(@Vector(3, u1024), @Vector(3, i193), .{ -1 << 192, -1, 0 });7833 try testArgs(@Vector(3, u1024), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6199 try testArgs(@Vector(3, i8), @Vector(3, u193), .{ 0, 1, 1 << 192 });7834 try testArgs(@Vector(3, i8), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6200 try testArgs(@Vector(3, u8), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6201 try testArgs(@Vector(3, i16), @Vector(3, u193), .{ 0, 1, 1 << 192 });7835 try testArgs(@Vector(3, i16), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6202 try testArgs(@Vector(3, u16), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6203 try testArgs(@Vector(3, i32), @Vector(3, u193), .{ 0, 1, 1 << 192 });7836 try testArgs(@Vector(3, i32), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6204 try testArgs(@Vector(3, u32), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6205 try testArgs(@Vector(3, i64), @Vector(3, u193), .{ 0, 1, 1 << 192 });7837 try testArgs(@Vector(3, i64), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6206 try testArgs(@Vector(3, u64), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6207 try testArgs(@Vector(3, i128), @Vector(3, u193), .{ 0, 1, 1 << 192 });7838 try testArgs(@Vector(3, i128), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6208 try testArgs(@Vector(3, u128), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6209 try testArgs(@Vector(3, i256), @Vector(3, u193), .{ 0, 1, 1 << 192 });7839 try testArgs(@Vector(3, i256), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6210 try testArgs(@Vector(3, u256), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6211 try testArgs(@Vector(3, i512), @Vector(3, u193), .{ 0, 1, 1 << 192 });7840 try testArgs(@Vector(3, i512), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6212 try testArgs(@Vector(3, u512), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6213 try testArgs(@Vector(3, i1024), @Vector(3, u193), .{ 0, 1, 1 << 192 });7841 try testArgs(@Vector(3, i1024), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6214 try testArgs(@Vector(3, u1024), @Vector(3, u193), .{ 0, 1, 1 << 192 });
62157842
6216 try testArgs(@Vector(3, i8), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6217 try testArgs(@Vector(3, u8), @Vector(3, i223), .{ -1 << 222, -1, 0 });7843 try testArgs(@Vector(3, u8), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6218 try testArgs(@Vector(3, i16), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6219 try testArgs(@Vector(3, u16), @Vector(3, i223), .{ -1 << 222, -1, 0 });7844 try testArgs(@Vector(3, u16), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6220 try testArgs(@Vector(3, i32), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6221 try testArgs(@Vector(3, u32), @Vector(3, i223), .{ -1 << 222, -1, 0 });7845 try testArgs(@Vector(3, u32), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6222 try testArgs(@Vector(3, i64), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6223 try testArgs(@Vector(3, u64), @Vector(3, i223), .{ -1 << 222, -1, 0 });7846 try testArgs(@Vector(3, u64), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6224 try testArgs(@Vector(3, i128), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6225 try testArgs(@Vector(3, u128), @Vector(3, i223), .{ -1 << 222, -1, 0 });7847 try testArgs(@Vector(3, u128), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6226 try testArgs(@Vector(3, i256), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6227 try testArgs(@Vector(3, u256), @Vector(3, i223), .{ -1 << 222, -1, 0 });7848 try testArgs(@Vector(3, u256), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6228 try testArgs(@Vector(3, i512), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6229 try testArgs(@Vector(3, u512), @Vector(3, i223), .{ -1 << 222, -1, 0 });7849 try testArgs(@Vector(3, u512), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6230 try testArgs(@Vector(3, i1024), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6231 try testArgs(@Vector(3, u1024), @Vector(3, i223), .{ -1 << 222, -1, 0 });7850 try testArgs(@Vector(3, u1024), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6232 try testArgs(@Vector(3, i8), @Vector(3, u223), .{ 0, 1, 1 << 222 });7851 try testArgs(@Vector(3, i8), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6233 try testArgs(@Vector(3, u8), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6234 try testArgs(@Vector(3, i16), @Vector(3, u223), .{ 0, 1, 1 << 222 });7852 try testArgs(@Vector(3, i16), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6235 try testArgs(@Vector(3, u16), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6236 try testArgs(@Vector(3, i32), @Vector(3, u223), .{ 0, 1, 1 << 222 });7853 try testArgs(@Vector(3, i32), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6237 try testArgs(@Vector(3, u32), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6238 try testArgs(@Vector(3, i64), @Vector(3, u223), .{ 0, 1, 1 << 222 });7854 try testArgs(@Vector(3, i64), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6239 try testArgs(@Vector(3, u64), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6240 try testArgs(@Vector(3, i128), @Vector(3, u223), .{ 0, 1, 1 << 222 });7855 try testArgs(@Vector(3, i128), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6241 try testArgs(@Vector(3, u128), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6242 try testArgs(@Vector(3, i256), @Vector(3, u223), .{ 0, 1, 1 << 222 });7856 try testArgs(@Vector(3, i256), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6243 try testArgs(@Vector(3, u256), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6244 try testArgs(@Vector(3, i512), @Vector(3, u223), .{ 0, 1, 1 << 222 });7857 try testArgs(@Vector(3, i512), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6245 try testArgs(@Vector(3, u512), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6246 try testArgs(@Vector(3, i1024), @Vector(3, u223), .{ 0, 1, 1 << 222 });7858 try testArgs(@Vector(3, i1024), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6247 try testArgs(@Vector(3, u1024), @Vector(3, u223), .{ 0, 1, 1 << 222 });
62487859
6249 try testArgs(@Vector(3, i8), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6250 try testArgs(@Vector(3, u8), @Vector(3, i224), .{ -1 << 223, -1, 0 });7860 try testArgs(@Vector(3, u8), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6251 try testArgs(@Vector(3, i16), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6252 try testArgs(@Vector(3, u16), @Vector(3, i224), .{ -1 << 223, -1, 0 });7861 try testArgs(@Vector(3, u16), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6253 try testArgs(@Vector(3, i32), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6254 try testArgs(@Vector(3, u32), @Vector(3, i224), .{ -1 << 223, -1, 0 });7862 try testArgs(@Vector(3, u32), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6255 try testArgs(@Vector(3, i64), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6256 try testArgs(@Vector(3, u64), @Vector(3, i224), .{ -1 << 223, -1, 0 });7863 try testArgs(@Vector(3, u64), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6257 try testArgs(@Vector(3, i128), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6258 try testArgs(@Vector(3, u128), @Vector(3, i224), .{ -1 << 223, -1, 0 });7864 try testArgs(@Vector(3, u128), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6259 try testArgs(@Vector(3, i256), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6260 try testArgs(@Vector(3, u256), @Vector(3, i224), .{ -1 << 223, -1, 0 });7865 try testArgs(@Vector(3, u256), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6261 try testArgs(@Vector(3, i512), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6262 try testArgs(@Vector(3, u512), @Vector(3, i224), .{ -1 << 223, -1, 0 });7866 try testArgs(@Vector(3, u512), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6263 try testArgs(@Vector(3, i1024), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6264 try testArgs(@Vector(3, u1024), @Vector(3, i224), .{ -1 << 223, -1, 0 });7867 try testArgs(@Vector(3, u1024), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6265 try testArgs(@Vector(3, i8), @Vector(3, u224), .{ 0, 1, 1 << 223 });7868 try testArgs(@Vector(3, i8), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6266 try testArgs(@Vector(3, u8), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6267 try testArgs(@Vector(3, i16), @Vector(3, u224), .{ 0, 1, 1 << 223 });7869 try testArgs(@Vector(3, i16), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6268 try testArgs(@Vector(3, u16), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6269 try testArgs(@Vector(3, i32), @Vector(3, u224), .{ 0, 1, 1 << 223 });7870 try testArgs(@Vector(3, i32), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6270 try testArgs(@Vector(3, u32), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6271 try testArgs(@Vector(3, i64), @Vector(3, u224), .{ 0, 1, 1 << 223 });7871 try testArgs(@Vector(3, i64), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6272 try testArgs(@Vector(3, u64), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6273 try testArgs(@Vector(3, i128), @Vector(3, u224), .{ 0, 1, 1 << 223 });7872 try testArgs(@Vector(3, i128), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6274 try testArgs(@Vector(3, u128), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6275 try testArgs(@Vector(3, i256), @Vector(3, u224), .{ 0, 1, 1 << 223 });7873 try testArgs(@Vector(3, i256), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6276 try testArgs(@Vector(3, u256), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6277 try testArgs(@Vector(3, i512), @Vector(3, u224), .{ 0, 1, 1 << 223 });7874 try testArgs(@Vector(3, i512), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6278 try testArgs(@Vector(3, u512), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6279 try testArgs(@Vector(3, i1024), @Vector(3, u224), .{ 0, 1, 1 << 223 });7875 try testArgs(@Vector(3, i1024), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6280 try testArgs(@Vector(3, u1024), @Vector(3, u224), .{ 0, 1, 1 << 223 });
62817876
6282 try testArgs(@Vector(3, i8), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6283 try testArgs(@Vector(3, u8), @Vector(3, i225), .{ -1 << 224, -1, 0 });7877 try testArgs(@Vector(3, u8), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6284 try testArgs(@Vector(3, i16), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6285 try testArgs(@Vector(3, u16), @Vector(3, i225), .{ -1 << 224, -1, 0 });7878 try testArgs(@Vector(3, u16), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6286 try testArgs(@Vector(3, i32), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6287 try testArgs(@Vector(3, u32), @Vector(3, i225), .{ -1 << 224, -1, 0 });7879 try testArgs(@Vector(3, u32), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6288 try testArgs(@Vector(3, i64), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6289 try testArgs(@Vector(3, u64), @Vector(3, i225), .{ -1 << 224, -1, 0 });7880 try testArgs(@Vector(3, u64), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6290 try testArgs(@Vector(3, i128), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6291 try testArgs(@Vector(3, u128), @Vector(3, i225), .{ -1 << 224, -1, 0 });7881 try testArgs(@Vector(3, u128), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6292 try testArgs(@Vector(3, i256), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6293 try testArgs(@Vector(3, u256), @Vector(3, i225), .{ -1 << 224, -1, 0 });7882 try testArgs(@Vector(3, u256), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6294 try testArgs(@Vector(3, i512), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6295 try testArgs(@Vector(3, u512), @Vector(3, i225), .{ -1 << 224, -1, 0 });7883 try testArgs(@Vector(3, u512), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6296 try testArgs(@Vector(3, i1024), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6297 try testArgs(@Vector(3, u1024), @Vector(3, i225), .{ -1 << 224, -1, 0 });7884 try testArgs(@Vector(3, u1024), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6298 try testArgs(@Vector(3, i8), @Vector(3, u225), .{ 0, 1, 1 << 224 });7885 try testArgs(@Vector(3, i8), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6299 try testArgs(@Vector(3, u8), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6300 try testArgs(@Vector(3, i16), @Vector(3, u225), .{ 0, 1, 1 << 224 });7886 try testArgs(@Vector(3, i16), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6301 try testArgs(@Vector(3, u16), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6302 try testArgs(@Vector(3, i32), @Vector(3, u225), .{ 0, 1, 1 << 224 });7887 try testArgs(@Vector(3, i32), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6303 try testArgs(@Vector(3, u32), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6304 try testArgs(@Vector(3, i64), @Vector(3, u225), .{ 0, 1, 1 << 224 });7888 try testArgs(@Vector(3, i64), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6305 try testArgs(@Vector(3, u64), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6306 try testArgs(@Vector(3, i128), @Vector(3, u225), .{ 0, 1, 1 << 224 });7889 try testArgs(@Vector(3, i128), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6307 try testArgs(@Vector(3, u128), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6308 try testArgs(@Vector(3, i256), @Vector(3, u225), .{ 0, 1, 1 << 224 });7890 try testArgs(@Vector(3, i256), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6309 try testArgs(@Vector(3, u256), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6310 try testArgs(@Vector(3, i512), @Vector(3, u225), .{ 0, 1, 1 << 224 });7891 try testArgs(@Vector(3, i512), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6311 try testArgs(@Vector(3, u512), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6312 try testArgs(@Vector(3, i1024), @Vector(3, u225), .{ 0, 1, 1 << 224 });7892 try testArgs(@Vector(3, i1024), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6313 try testArgs(@Vector(3, u1024), @Vector(3, u225), .{ 0, 1, 1 << 224 });
63147893
6315 try testArgs(@Vector(3, i8), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6316 try testArgs(@Vector(3, u8), @Vector(3, i255), .{ -1 << 254, -1, 0 });7894 try testArgs(@Vector(3, u8), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6317 try testArgs(@Vector(3, i16), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6318 try testArgs(@Vector(3, u16), @Vector(3, i255), .{ -1 << 254, -1, 0 });7895 try testArgs(@Vector(3, u16), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6319 try testArgs(@Vector(3, i32), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6320 try testArgs(@Vector(3, u32), @Vector(3, i255), .{ -1 << 254, -1, 0 });7896 try testArgs(@Vector(3, u32), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6321 try testArgs(@Vector(3, i64), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6322 try testArgs(@Vector(3, u64), @Vector(3, i255), .{ -1 << 254, -1, 0 });7897 try testArgs(@Vector(3, u64), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6323 try testArgs(@Vector(3, i128), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6324 try testArgs(@Vector(3, u128), @Vector(3, i255), .{ -1 << 254, -1, 0 });7898 try testArgs(@Vector(3, u128), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6325 try testArgs(@Vector(3, i256), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6326 try testArgs(@Vector(3, u256), @Vector(3, i255), .{ -1 << 254, -1, 0 });7899 try testArgs(@Vector(3, u256), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6327 try testArgs(@Vector(3, i512), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6328 try testArgs(@Vector(3, u512), @Vector(3, i255), .{ -1 << 254, -1, 0 });7900 try testArgs(@Vector(3, u512), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6329 try testArgs(@Vector(3, i1024), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6330 try testArgs(@Vector(3, u1024), @Vector(3, i255), .{ -1 << 254, -1, 0 });7901 try testArgs(@Vector(3, u1024), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6331 try testArgs(@Vector(3, i8), @Vector(3, u255), .{ 0, 1, 1 << 254 });7902 try testArgs(@Vector(3, i8), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6332 try testArgs(@Vector(3, u8), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6333 try testArgs(@Vector(3, i16), @Vector(3, u255), .{ 0, 1, 1 << 254 });7903 try testArgs(@Vector(3, i16), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6334 try testArgs(@Vector(3, u16), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6335 try testArgs(@Vector(3, i32), @Vector(3, u255), .{ 0, 1, 1 << 254 });7904 try testArgs(@Vector(3, i32), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6336 try testArgs(@Vector(3, u32), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6337 try testArgs(@Vector(3, i64), @Vector(3, u255), .{ 0, 1, 1 << 254 });7905 try testArgs(@Vector(3, i64), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6338 try testArgs(@Vector(3, u64), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6339 try testArgs(@Vector(3, i128), @Vector(3, u255), .{ 0, 1, 1 << 254 });7906 try testArgs(@Vector(3, i128), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6340 try testArgs(@Vector(3, u128), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6341 try testArgs(@Vector(3, i256), @Vector(3, u255), .{ 0, 1, 1 << 254 });7907 try testArgs(@Vector(3, i256), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6342 try testArgs(@Vector(3, u256), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6343 try testArgs(@Vector(3, i512), @Vector(3, u255), .{ 0, 1, 1 << 254 });7908 try testArgs(@Vector(3, i512), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6344 try testArgs(@Vector(3, u512), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6345 try testArgs(@Vector(3, i1024), @Vector(3, u255), .{ 0, 1, 1 << 254 });7909 try testArgs(@Vector(3, i1024), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6346 try testArgs(@Vector(3, u1024), @Vector(3, u255), .{ 0, 1, 1 << 254 });
63477910
6348 try testArgs(@Vector(3, i8), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6349 try testArgs(@Vector(3, u8), @Vector(3, i256), .{ -1 << 255, -1, 0 });7911 try testArgs(@Vector(3, u8), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6350 try testArgs(@Vector(3, i16), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6351 try testArgs(@Vector(3, u16), @Vector(3, i256), .{ -1 << 255, -1, 0 });7912 try testArgs(@Vector(3, u16), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6352 try testArgs(@Vector(3, i32), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6353 try testArgs(@Vector(3, u32), @Vector(3, i256), .{ -1 << 255, -1, 0 });7913 try testArgs(@Vector(3, u32), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6354 try testArgs(@Vector(3, i64), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6355 try testArgs(@Vector(3, u64), @Vector(3, i256), .{ -1 << 255, -1, 0 });7914 try testArgs(@Vector(3, u64), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6356 try testArgs(@Vector(3, i128), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6357 try testArgs(@Vector(3, u128), @Vector(3, i256), .{ -1 << 255, -1, 0 });7915 try testArgs(@Vector(3, u128), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6358 try testArgs(@Vector(3, i256), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6359 try testArgs(@Vector(3, u256), @Vector(3, i256), .{ -1 << 255, -1, 0 });7916 try testArgs(@Vector(3, u256), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6360 try testArgs(@Vector(3, i512), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6361 try testArgs(@Vector(3, u512), @Vector(3, i256), .{ -1 << 255, -1, 0 });7917 try testArgs(@Vector(3, u512), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6362 try testArgs(@Vector(3, i1024), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6363 try testArgs(@Vector(3, u1024), @Vector(3, i256), .{ -1 << 255, -1, 0 });7918 try testArgs(@Vector(3, u1024), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6364 try testArgs(@Vector(3, i8), @Vector(3, u256), .{ 0, 1, 1 << 255 });7919 try testArgs(@Vector(3, i8), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6365 try testArgs(@Vector(3, u8), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6366 try testArgs(@Vector(3, i16), @Vector(3, u256), .{ 0, 1, 1 << 255 });7920 try testArgs(@Vector(3, i16), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6367 try testArgs(@Vector(3, u16), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6368 try testArgs(@Vector(3, i32), @Vector(3, u256), .{ 0, 1, 1 << 255 });7921 try testArgs(@Vector(3, i32), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6369 try testArgs(@Vector(3, u32), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6370 try testArgs(@Vector(3, i64), @Vector(3, u256), .{ 0, 1, 1 << 255 });7922 try testArgs(@Vector(3, i64), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6371 try testArgs(@Vector(3, u64), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6372 try testArgs(@Vector(3, i128), @Vector(3, u256), .{ 0, 1, 1 << 255 });7923 try testArgs(@Vector(3, i128), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6373 try testArgs(@Vector(3, u128), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6374 try testArgs(@Vector(3, i256), @Vector(3, u256), .{ 0, 1, 1 << 255 });7924 try testArgs(@Vector(3, i256), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6375 try testArgs(@Vector(3, u256), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6376 try testArgs(@Vector(3, i512), @Vector(3, u256), .{ 0, 1, 1 << 255 });7925 try testArgs(@Vector(3, i512), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6377 try testArgs(@Vector(3, u512), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6378 try testArgs(@Vector(3, i1024), @Vector(3, u256), .{ 0, 1, 1 << 255 });7926 try testArgs(@Vector(3, i1024), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6379 try testArgs(@Vector(3, u1024), @Vector(3, u256), .{ 0, 1, 1 << 255 });
63807927
6381 try testArgs(@Vector(3, i8), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6382 try testArgs(@Vector(3, u8), @Vector(3, i257), .{ -1 << 256, -1, 0 });7928 try testArgs(@Vector(3, u8), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6383 try testArgs(@Vector(3, i16), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6384 try testArgs(@Vector(3, u16), @Vector(3, i257), .{ -1 << 256, -1, 0 });7929 try testArgs(@Vector(3, u16), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6385 try testArgs(@Vector(3, i32), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6386 try testArgs(@Vector(3, u32), @Vector(3, i257), .{ -1 << 256, -1, 0 });7930 try testArgs(@Vector(3, u32), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6387 try testArgs(@Vector(3, i64), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6388 try testArgs(@Vector(3, u64), @Vector(3, i257), .{ -1 << 256, -1, 0 });7931 try testArgs(@Vector(3, u64), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6389 try testArgs(@Vector(3, i128), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6390 try testArgs(@Vector(3, u128), @Vector(3, i257), .{ -1 << 256, -1, 0 });7932 try testArgs(@Vector(3, u128), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6391 try testArgs(@Vector(3, i256), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6392 try testArgs(@Vector(3, u256), @Vector(3, i257), .{ -1 << 256, -1, 0 });7933 try testArgs(@Vector(3, u256), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6393 try testArgs(@Vector(3, i512), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6394 try testArgs(@Vector(3, u512), @Vector(3, i257), .{ -1 << 256, -1, 0 });7934 try testArgs(@Vector(3, u512), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6395 try testArgs(@Vector(3, i1024), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6396 try testArgs(@Vector(3, u1024), @Vector(3, i257), .{ -1 << 256, -1, 0 });7935 try testArgs(@Vector(3, u1024), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6397 try testArgs(@Vector(3, i8), @Vector(3, u257), .{ 0, 1, 1 << 256 });7936 try testArgs(@Vector(3, i8), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6398 try testArgs(@Vector(3, u8), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6399 try testArgs(@Vector(3, i16), @Vector(3, u257), .{ 0, 1, 1 << 256 });7937 try testArgs(@Vector(3, i16), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6400 try testArgs(@Vector(3, u16), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6401 try testArgs(@Vector(3, i32), @Vector(3, u257), .{ 0, 1, 1 << 256 });7938 try testArgs(@Vector(3, i32), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6402 try testArgs(@Vector(3, u32), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6403 try testArgs(@Vector(3, i64), @Vector(3, u257), .{ 0, 1, 1 << 256 });7939 try testArgs(@Vector(3, i64), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6404 try testArgs(@Vector(3, u64), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6405 try testArgs(@Vector(3, i128), @Vector(3, u257), .{ 0, 1, 1 << 256 });7940 try testArgs(@Vector(3, i128), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6406 try testArgs(@Vector(3, u128), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6407 try testArgs(@Vector(3, i256), @Vector(3, u257), .{ 0, 1, 1 << 256 });7941 try testArgs(@Vector(3, i256), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6408 try testArgs(@Vector(3, u256), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6409 try testArgs(@Vector(3, i512), @Vector(3, u257), .{ 0, 1, 1 << 256 });7942 try testArgs(@Vector(3, i512), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6410 try testArgs(@Vector(3, u512), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6411 try testArgs(@Vector(3, i1024), @Vector(3, u257), .{ 0, 1, 1 << 256 });7943 try testArgs(@Vector(3, i1024), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6412 try testArgs(@Vector(3, u1024), @Vector(3, u257), .{ 0, 1, 1 << 256 });
64137944
6414 try testArgs(@Vector(3, i8), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6415 try testArgs(@Vector(3, u8), @Vector(3, i511), .{ -1 << 510, -1, 0 });7945 try testArgs(@Vector(3, u8), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6416 try testArgs(@Vector(3, i16), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6417 try testArgs(@Vector(3, u16), @Vector(3, i511), .{ -1 << 510, -1, 0 });7946 try testArgs(@Vector(3, u16), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6418 try testArgs(@Vector(3, i32), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6419 try testArgs(@Vector(3, u32), @Vector(3, i511), .{ -1 << 510, -1, 0 });7947 try testArgs(@Vector(3, u32), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6420 try testArgs(@Vector(3, i64), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6421 try testArgs(@Vector(3, u64), @Vector(3, i511), .{ -1 << 510, -1, 0 });7948 try testArgs(@Vector(3, u64), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6422 try testArgs(@Vector(3, i128), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6423 try testArgs(@Vector(3, u128), @Vector(3, i511), .{ -1 << 510, -1, 0 });7949 try testArgs(@Vector(3, u128), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6424 try testArgs(@Vector(3, i256), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6425 try testArgs(@Vector(3, u256), @Vector(3, i511), .{ -1 << 510, -1, 0 });7950 try testArgs(@Vector(3, u256), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6426 try testArgs(@Vector(3, i512), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6427 try testArgs(@Vector(3, u512), @Vector(3, i511), .{ -1 << 510, -1, 0 });7951 try testArgs(@Vector(3, u512), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6428 try testArgs(@Vector(3, i1024), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6429 try testArgs(@Vector(3, u1024), @Vector(3, i511), .{ -1 << 510, -1, 0 });7952 try testArgs(@Vector(3, u1024), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6430 try testArgs(@Vector(3, i8), @Vector(3, u511), .{ 0, 1, 1 << 510 });7953 try testArgs(@Vector(3, i8), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6431 try testArgs(@Vector(3, u8), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6432 try testArgs(@Vector(3, i16), @Vector(3, u511), .{ 0, 1, 1 << 510 });7954 try testArgs(@Vector(3, i16), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6433 try testArgs(@Vector(3, u16), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6434 try testArgs(@Vector(3, i32), @Vector(3, u511), .{ 0, 1, 1 << 510 });7955 try testArgs(@Vector(3, i32), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6435 try testArgs(@Vector(3, u32), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6436 try testArgs(@Vector(3, i64), @Vector(3, u511), .{ 0, 1, 1 << 510 });7956 try testArgs(@Vector(3, i64), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6437 try testArgs(@Vector(3, u64), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6438 try testArgs(@Vector(3, i128), @Vector(3, u511), .{ 0, 1, 1 << 510 });7957 try testArgs(@Vector(3, i128), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6439 try testArgs(@Vector(3, u128), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6440 try testArgs(@Vector(3, i256), @Vector(3, u511), .{ 0, 1, 1 << 510 });7958 try testArgs(@Vector(3, i256), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6441 try testArgs(@Vector(3, u256), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6442 try testArgs(@Vector(3, i512), @Vector(3, u511), .{ 0, 1, 1 << 510 });7959 try testArgs(@Vector(3, i512), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6443 try testArgs(@Vector(3, u512), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6444 try testArgs(@Vector(3, i1024), @Vector(3, u511), .{ 0, 1, 1 << 510 });7960 try testArgs(@Vector(3, i1024), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6445 try testArgs(@Vector(3, u1024), @Vector(3, u511), .{ 0, 1, 1 << 510 });
64467961
6447 try testArgs(@Vector(3, i8), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6448 try testArgs(@Vector(3, u8), @Vector(3, i512), .{ -1 << 511, -1, 0 });7962 try testArgs(@Vector(3, u8), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6449 try testArgs(@Vector(3, i16), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6450 try testArgs(@Vector(3, u16), @Vector(3, i512), .{ -1 << 511, -1, 0 });7963 try testArgs(@Vector(3, u16), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6451 try testArgs(@Vector(3, i32), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6452 try testArgs(@Vector(3, u32), @Vector(3, i512), .{ -1 << 511, -1, 0 });7964 try testArgs(@Vector(3, u32), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6453 try testArgs(@Vector(3, i64), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6454 try testArgs(@Vector(3, u64), @Vector(3, i512), .{ -1 << 511, -1, 0 });7965 try testArgs(@Vector(3, u64), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6455 try testArgs(@Vector(3, i128), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6456 try testArgs(@Vector(3, u128), @Vector(3, i512), .{ -1 << 511, -1, 0 });7966 try testArgs(@Vector(3, u128), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6457 try testArgs(@Vector(3, i256), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6458 try testArgs(@Vector(3, u256), @Vector(3, i512), .{ -1 << 511, -1, 0 });7967 try testArgs(@Vector(3, u256), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6459 try testArgs(@Vector(3, i512), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6460 try testArgs(@Vector(3, u512), @Vector(3, i512), .{ -1 << 511, -1, 0 });7968 try testArgs(@Vector(3, u512), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6461 try testArgs(@Vector(3, i1024), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6462 try testArgs(@Vector(3, u1024), @Vector(3, i512), .{ -1 << 511, -1, 0 });7969 try testArgs(@Vector(3, u1024), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6463 try testArgs(@Vector(3, i8), @Vector(3, u512), .{ 0, 1, 1 << 511 });7970 try testArgs(@Vector(3, i8), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6464 try testArgs(@Vector(3, u8), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6465 try testArgs(@Vector(3, i16), @Vector(3, u512), .{ 0, 1, 1 << 511 });7971 try testArgs(@Vector(3, i16), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6466 try testArgs(@Vector(3, u16), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6467 try testArgs(@Vector(3, i32), @Vector(3, u512), .{ 0, 1, 1 << 511 });7972 try testArgs(@Vector(3, i32), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6468 try testArgs(@Vector(3, u32), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6469 try testArgs(@Vector(3, i64), @Vector(3, u512), .{ 0, 1, 1 << 511 });7973 try testArgs(@Vector(3, i64), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6470 try testArgs(@Vector(3, u64), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6471 try testArgs(@Vector(3, i128), @Vector(3, u512), .{ 0, 1, 1 << 511 });7974 try testArgs(@Vector(3, i128), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6472 try testArgs(@Vector(3, u128), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6473 try testArgs(@Vector(3, i256), @Vector(3, u512), .{ 0, 1, 1 << 511 });7975 try testArgs(@Vector(3, i256), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6474 try testArgs(@Vector(3, u256), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6475 try testArgs(@Vector(3, i512), @Vector(3, u512), .{ 0, 1, 1 << 511 });7976 try testArgs(@Vector(3, i512), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6476 try testArgs(@Vector(3, u512), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6477 try testArgs(@Vector(3, i1024), @Vector(3, u512), .{ 0, 1, 1 << 511 });7977 try testArgs(@Vector(3, i1024), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6478 try testArgs(@Vector(3, u1024), @Vector(3, u512), .{ 0, 1, 1 << 511 });
64797978
6480 try testArgs(@Vector(3, i8), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6481 try testArgs(@Vector(3, u8), @Vector(3, i513), .{ -1 << 512, -1, 0 });7979 try testArgs(@Vector(3, u8), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6482 try testArgs(@Vector(3, i16), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6483 try testArgs(@Vector(3, u16), @Vector(3, i513), .{ -1 << 512, -1, 0 });7980 try testArgs(@Vector(3, u16), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6484 try testArgs(@Vector(3, i32), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6485 try testArgs(@Vector(3, u32), @Vector(3, i513), .{ -1 << 512, -1, 0 });7981 try testArgs(@Vector(3, u32), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6486 try testArgs(@Vector(3, i64), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6487 try testArgs(@Vector(3, u64), @Vector(3, i513), .{ -1 << 512, -1, 0 });7982 try testArgs(@Vector(3, u64), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6488 try testArgs(@Vector(3, i128), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6489 try testArgs(@Vector(3, u128), @Vector(3, i513), .{ -1 << 512, -1, 0 });7983 try testArgs(@Vector(3, u128), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6490 try testArgs(@Vector(3, i256), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6491 try testArgs(@Vector(3, u256), @Vector(3, i513), .{ -1 << 512, -1, 0 });7984 try testArgs(@Vector(3, u256), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6492 try testArgs(@Vector(3, i512), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6493 try testArgs(@Vector(3, u512), @Vector(3, i513), .{ -1 << 512, -1, 0 });7985 try testArgs(@Vector(3, u512), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6494 try testArgs(@Vector(3, i1024), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6495 try testArgs(@Vector(3, u1024), @Vector(3, i513), .{ -1 << 512, -1, 0 });7986 try testArgs(@Vector(3, u1024), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6496 try testArgs(@Vector(3, i8), @Vector(3, u513), .{ 0, 1, 1 << 512 });7987 try testArgs(@Vector(3, i8), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6497 try testArgs(@Vector(3, u8), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6498 try testArgs(@Vector(3, i16), @Vector(3, u513), .{ 0, 1, 1 << 512 });7988 try testArgs(@Vector(3, i16), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6499 try testArgs(@Vector(3, u16), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6500 try testArgs(@Vector(3, i32), @Vector(3, u513), .{ 0, 1, 1 << 512 });7989 try testArgs(@Vector(3, i32), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6501 try testArgs(@Vector(3, u32), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6502 try testArgs(@Vector(3, i64), @Vector(3, u513), .{ 0, 1, 1 << 512 });7990 try testArgs(@Vector(3, i64), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6503 try testArgs(@Vector(3, u64), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6504 try testArgs(@Vector(3, i128), @Vector(3, u513), .{ 0, 1, 1 << 512 });7991 try testArgs(@Vector(3, i128), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6505 try testArgs(@Vector(3, u128), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6506 try testArgs(@Vector(3, i256), @Vector(3, u513), .{ 0, 1, 1 << 512 });7992 try testArgs(@Vector(3, i256), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6507 try testArgs(@Vector(3, u256), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6508 try testArgs(@Vector(3, i512), @Vector(3, u513), .{ 0, 1, 1 << 512 });7993 try testArgs(@Vector(3, i512), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6509 try testArgs(@Vector(3, u512), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6510 try testArgs(@Vector(3, i1024), @Vector(3, u513), .{ 0, 1, 1 << 512 });7994 try testArgs(@Vector(3, i1024), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6511 try testArgs(@Vector(3, u1024), @Vector(3, u513), .{ 0, 1, 1 << 512 });
65127995
6513 try testArgs(@Vector(3, i8), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6514 try testArgs(@Vector(3, u8), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });7996 try testArgs(@Vector(3, u8), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6515 try testArgs(@Vector(3, i16), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6516 try testArgs(@Vector(3, u16), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });7997 try testArgs(@Vector(3, u16), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6517 try testArgs(@Vector(3, i32), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6518 try testArgs(@Vector(3, u32), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });7998 try testArgs(@Vector(3, u32), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6519 try testArgs(@Vector(3, i64), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6520 try testArgs(@Vector(3, u64), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });7999 try testArgs(@Vector(3, u64), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6521 try testArgs(@Vector(3, i128), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6522 try testArgs(@Vector(3, u128), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });8000 try testArgs(@Vector(3, u128), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6523 try testArgs(@Vector(3, i256), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6524 try testArgs(@Vector(3, u256), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });8001 try testArgs(@Vector(3, u256), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6525 try testArgs(@Vector(3, i512), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6526 try testArgs(@Vector(3, u512), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });8002 try testArgs(@Vector(3, u512), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6527 try testArgs(@Vector(3, i1024), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6528 try testArgs(@Vector(3, u1024), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });8003 try testArgs(@Vector(3, u1024), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6529 try testArgs(@Vector(3, i8), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });8004 try testArgs(@Vector(3, i8), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6530 try testArgs(@Vector(3, u8), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6531 try testArgs(@Vector(3, i16), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });8005 try testArgs(@Vector(3, i16), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6532 try testArgs(@Vector(3, u16), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6533 try testArgs(@Vector(3, i32), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });8006 try testArgs(@Vector(3, i32), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6534 try testArgs(@Vector(3, u32), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6535 try testArgs(@Vector(3, i64), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });8007 try testArgs(@Vector(3, i64), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6536 try testArgs(@Vector(3, u64), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6537 try testArgs(@Vector(3, i128), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });8008 try testArgs(@Vector(3, i128), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6538 try testArgs(@Vector(3, u128), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6539 try testArgs(@Vector(3, i256), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });8009 try testArgs(@Vector(3, i256), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6540 try testArgs(@Vector(3, u256), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6541 try testArgs(@Vector(3, i512), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });8010 try testArgs(@Vector(3, i512), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6542 try testArgs(@Vector(3, u512), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6543 try testArgs(@Vector(3, i1024), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });8011 try testArgs(@Vector(3, i1024), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6544 try testArgs(@Vector(3, u1024), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
65458012
6546 try testArgs(@Vector(3, i8), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6547 try testArgs(@Vector(3, u8), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });8013 try testArgs(@Vector(3, u8), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6548 try testArgs(@Vector(3, i16), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6549 try testArgs(@Vector(3, u16), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });8014 try testArgs(@Vector(3, u16), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6550 try testArgs(@Vector(3, i32), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6551 try testArgs(@Vector(3, u32), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });8015 try testArgs(@Vector(3, u32), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6552 try testArgs(@Vector(3, i64), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6553 try testArgs(@Vector(3, u64), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });8016 try testArgs(@Vector(3, u64), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6554 try testArgs(@Vector(3, i128), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6555 try testArgs(@Vector(3, u128), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });8017 try testArgs(@Vector(3, u128), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6556 try testArgs(@Vector(3, i256), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6557 try testArgs(@Vector(3, u256), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });8018 try testArgs(@Vector(3, u256), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6558 try testArgs(@Vector(3, i512), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6559 try testArgs(@Vector(3, u512), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });8019 try testArgs(@Vector(3, u512), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6560 try testArgs(@Vector(3, i1024), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6561 try testArgs(@Vector(3, u1024), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });8020 try testArgs(@Vector(3, u1024), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6562 try testArgs(@Vector(3, i8), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });8021 try testArgs(@Vector(3, i8), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6563 try testArgs(@Vector(3, u8), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6564 try testArgs(@Vector(3, i16), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });8022 try testArgs(@Vector(3, i16), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6565 try testArgs(@Vector(3, u16), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6566 try testArgs(@Vector(3, i32), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });8023 try testArgs(@Vector(3, i32), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6567 try testArgs(@Vector(3, u32), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6568 try testArgs(@Vector(3, i64), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });8024 try testArgs(@Vector(3, i64), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6569 try testArgs(@Vector(3, u64), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6570 try testArgs(@Vector(3, i128), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });8025 try testArgs(@Vector(3, i128), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6571 try testArgs(@Vector(3, u128), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6572 try testArgs(@Vector(3, i256), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });8026 try testArgs(@Vector(3, i256), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6573 try testArgs(@Vector(3, u256), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6574 try testArgs(@Vector(3, i512), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });8027 try testArgs(@Vector(3, i512), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6575 try testArgs(@Vector(3, u512), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6576 try testArgs(@Vector(3, i1024), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });8028 try testArgs(@Vector(3, i1024), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6577 try testArgs(@Vector(3, u1024), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
65788029
6579 try testArgs(@Vector(3, i8), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6580 try testArgs(@Vector(3, u8), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });8030 try testArgs(@Vector(3, u8), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6581 try testArgs(@Vector(3, i16), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6582 try testArgs(@Vector(3, u16), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });8031 try testArgs(@Vector(3, u16), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6583 try testArgs(@Vector(3, i32), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6584 try testArgs(@Vector(3, u32), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });8032 try testArgs(@Vector(3, u32), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6585 try testArgs(@Vector(3, i64), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6586 try testArgs(@Vector(3, u64), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });8033 try testArgs(@Vector(3, u64), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6587 try testArgs(@Vector(3, i128), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6588 try testArgs(@Vector(3, u128), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });8034 try testArgs(@Vector(3, u128), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6589 try testArgs(@Vector(3, i256), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6590 try testArgs(@Vector(3, u256), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });8035 try testArgs(@Vector(3, u256), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6591 try testArgs(@Vector(3, i512), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6592 try testArgs(@Vector(3, u512), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });8036 try testArgs(@Vector(3, u512), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6593 try testArgs(@Vector(3, i1024), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6594 try testArgs(@Vector(3, u1024), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });8037 try testArgs(@Vector(3, u1024), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6595 try testArgs(@Vector(3, i8), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });8038 try testArgs(@Vector(3, i8), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6596 try testArgs(@Vector(3, u8), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6597 try testArgs(@Vector(3, i16), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });8039 try testArgs(@Vector(3, i16), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6598 try testArgs(@Vector(3, u16), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6599 try testArgs(@Vector(3, i32), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });8040 try testArgs(@Vector(3, i32), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6600 try testArgs(@Vector(3, u32), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6601 try testArgs(@Vector(3, i64), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });8041 try testArgs(@Vector(3, i64), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6602 try testArgs(@Vector(3, u64), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6603 try testArgs(@Vector(3, i128), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });8042 try testArgs(@Vector(3, i128), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6604 try testArgs(@Vector(3, u128), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6605 try testArgs(@Vector(3, i256), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });8043 try testArgs(@Vector(3, i256), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6606 try testArgs(@Vector(3, u256), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6607 try testArgs(@Vector(3, i512), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });8044 try testArgs(@Vector(3, i512), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6608 try testArgs(@Vector(3, u512), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6609 try testArgs(@Vector(3, i1024), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });8045 try testArgs(@Vector(3, i1024), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6610 try testArgs(@Vector(3, u1024), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6611 }8046 }
6612 fn testFloatVectors() !void {8047 fn testFloatVectors() !void {
6613 @setEvalBranchQuota(6_700);8048 @setEvalBranchQuota(6_700);
...@@ -7115,7 +8550,7 @@ fn cast(comptime op: anytype, comptime opts: struct { strict: bool = false }) ty...@@ -7115,7 +8550,7 @@ fn cast(comptime op: anytype, comptime opts: struct { strict: bool = false }) ty
7115 };8550 };
7116}8551}
71178552
7118fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false }) type {8553fn binary(comptime op: anytype, comptime opts: struct { compare: Compare = .relaxed }) type {
7119 return struct {8554 return struct {
7120 // noinline so that `mem_lhs` and `mem_rhs` are on the stack8555 // noinline so that `mem_lhs` and `mem_rhs` are on the stack
7121 noinline fn testArgKinds(8556 noinline fn testArgKinds(
...@@ -7145,14 +8580,14 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -7145,14 +8580,14 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
7145 var reg_lhs = mem_lhs;8580 var reg_lhs = mem_lhs;
7146 var reg_rhs = mem_rhs;8581 var reg_rhs = mem_rhs;
7147 _ = .{ &reg_lhs, &reg_rhs };8582 _ = .{ &reg_lhs, &reg_rhs };
7148 try checkExpected(expected, op(Type, reg_lhs, reg_rhs), opts.strict);8583 try checkExpected(expected, op(Type, reg_lhs, reg_rhs), opts.compare);
7149 try checkExpected(expected, op(Type, reg_lhs, mem_rhs), opts.strict);8584 try checkExpected(expected, op(Type, reg_lhs, mem_rhs), opts.compare);
7150 try checkExpected(expected, op(Type, reg_lhs, imm_rhs), opts.strict);8585 try checkExpected(expected, op(Type, reg_lhs, imm_rhs), opts.compare);
7151 try checkExpected(expected, op(Type, mem_lhs, reg_rhs), opts.strict);8586 try checkExpected(expected, op(Type, mem_lhs, reg_rhs), opts.compare);
7152 try checkExpected(expected, op(Type, mem_lhs, mem_rhs), opts.strict);8587 try checkExpected(expected, op(Type, mem_lhs, mem_rhs), opts.compare);
7153 try checkExpected(expected, op(Type, mem_lhs, imm_rhs), opts.strict);8588 try checkExpected(expected, op(Type, mem_lhs, imm_rhs), opts.compare);
7154 try checkExpected(expected, op(Type, imm_lhs, reg_rhs), opts.strict);8589 try checkExpected(expected, op(Type, imm_lhs, reg_rhs), opts.compare);
7155 try checkExpected(expected, op(Type, imm_lhs, mem_rhs), opts.strict);8590 try checkExpected(expected, op(Type, imm_lhs, mem_rhs), opts.compare);
7156 }8591 }
7157 // noinline for a more helpful stack trace8592 // noinline for a more helpful stack trace
7158 noinline fn testArgs(comptime Type: type, comptime imm_lhs: Type, comptime imm_rhs: Type) !void {8593 noinline fn testArgs(comptime Type: type, comptime imm_lhs: Type, comptime imm_rhs: Type) !void {
...@@ -9926,6 +11361,163 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -9926,6 +11361,163 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
9926 };11361 };
9927}11362}
992811363
11364inline fn add(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs + rhs) {
11365 return lhs + rhs;
11366}
11367test add {
11368 const test_add = binary(add, .{});
11369 try test_add.testFloats();
11370 try test_add.testFloatVectors();
11371}
11372
11373inline fn subtract(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs - rhs) {
11374 return lhs - rhs;
11375}
11376test subtract {
11377 const test_subtract = binary(subtract, .{});
11378 try test_subtract.testFloats();
11379 try test_subtract.testFloatVectors();
11380}
11381
11382inline fn multiply(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs * rhs) {
11383 if (@inComptime() and @typeInfo(Type) == .vector) {
11384 // workaround https://github.com/ziglang/zig/issues/22743
11385 // TODO: return @select(Scalar(Type), boolAnd(lhs == lhs, rhs == rhs), lhs * rhs, lhs + rhs);
11386 // workaround https://github.com/ziglang/zig/issues/22744
11387 var res: Type = undefined;
11388 for (0..@typeInfo(Type).vector.len) |i| res[i] = lhs[i] * rhs[i];
11389 return res;
11390 }
11391 // workaround https://github.com/ziglang/zig/issues/22745
11392 // TODO: return lhs * rhs;
11393 var rt_lhs = lhs;
11394 var rt_rhs = rhs;
11395 _ = .{ &rt_lhs, &rt_rhs };
11396 return rt_lhs * rt_rhs;
11397}
11398test multiply {
11399 const test_multiply = binary(multiply, .{});
11400 try test_multiply.testFloats();
11401 try test_multiply.testFloatVectors();
11402}
11403
11404inline fn divide(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs / rhs) {
11405 return lhs / rhs;
11406}
11407test divide {
11408 const test_divide = binary(divide, .{ .compare = .approx });
11409 try test_divide.testFloats();
11410 try test_divide.testFloatVectors();
11411}
11412
11413// workaround https://github.com/ziglang/zig/issues/22748
11414// TODO: @TypeOf(@divTrunc(lhs, rhs))
11415inline fn divTrunc(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs / rhs) {
11416 if (@inComptime()) {
11417 // workaround https://github.com/ziglang/zig/issues/22748
11418 return @trunc(lhs / rhs);
11419 }
11420 // workaround https://github.com/ziglang/zig/issues/22748
11421 // workaround https://github.com/ziglang/zig/issues/22749
11422 // TODO: return @divTrunc(lhs, rhs);
11423 var rt_lhs = lhs;
11424 var rt_rhs = rhs;
11425 _ = .{ &rt_lhs, &rt_rhs };
11426 return @divTrunc(rt_lhs, rt_rhs);
11427}
11428test divTrunc {
11429 const test_div_trunc = binary(divTrunc, .{ .compare = .approx_int });
11430 try test_div_trunc.testFloats();
11431 try test_div_trunc.testFloatVectors();
11432}
11433
11434// workaround https://github.com/ziglang/zig/issues/22748
11435// TODO: @TypeOf(@divFloor(lhs, rhs))
11436inline fn divFloor(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs / rhs) {
11437 if (@inComptime()) {
11438 // workaround https://github.com/ziglang/zig/issues/22748
11439 return @floor(lhs / rhs);
11440 }
11441 // workaround https://github.com/ziglang/zig/issues/22748
11442 // workaround https://github.com/ziglang/zig/issues/22749
11443 // TODO: return @divFloor(lhs, rhs);
11444 var rt_lhs = lhs;
11445 var rt_rhs = rhs;
11446 _ = &rt_lhs;
11447 _ = &rt_rhs;
11448 return @divFloor(rt_lhs, rt_rhs);
11449}
11450test divFloor {
11451 const test_div_floor = binary(divFloor, .{ .compare = .approx_int });
11452 try test_div_floor.testFloats();
11453 try test_div_floor.testFloatVectors();
11454}
11455
11456// workaround https://github.com/ziglang/zig/issues/22748
11457// TODO: @TypeOf(@rem(lhs, rhs))
11458inline fn rem(comptime Type: type, lhs: Type, rhs: Type) Type {
11459 if (@inComptime()) {
11460 // workaround https://github.com/ziglang/zig/issues/22748
11461 switch (@typeInfo(Type)) {
11462 else => return if (rhs != 0) @rem(lhs, rhs) else nan(Type),
11463 .vector => |info| {
11464 var res: Type = undefined;
11465 inline for (0..info.len) |i| res[i] = if (rhs[i] != 0) @rem(lhs[i], rhs[i]) else nan(Scalar(Type));
11466 return res;
11467 },
11468 }
11469 }
11470 // workaround https://github.com/ziglang/zig/issues/22748
11471 // TODO: return @rem(lhs, rhs);
11472 var rt_rhs = rhs;
11473 _ = &rt_rhs;
11474 return @rem(lhs, rt_rhs);
11475}
11476test rem {
11477 const test_rem = binary(rem, .{});
11478 try test_rem.testFloats();
11479 try test_rem.testFloatVectors();
11480}
11481
11482inline fn mod(comptime Type: type, lhs: Type, rhs: Type) Type {
11483 if (@inComptime()) {
11484 const scalarMod = struct {
11485 fn scalarMod(scalar_lhs: Scalar(Type), scalar_rhs: Scalar(Type)) Scalar(Type) {
11486 // workaround https://github.com/ziglang/zig/issues/22748
11487 if (scalar_rhs == 0) return nan(Scalar(Type));
11488 const scalar_rem = @rem(scalar_lhs, scalar_rhs);
11489 return if (scalar_rem == 0 or math.signbit(scalar_rem) == math.signbit(scalar_rhs)) scalar_rem else scalar_rem + scalar_rhs;
11490 }
11491 }.scalarMod;
11492 // workaround https://github.com/ziglang/zig/issues/22748
11493 switch (@typeInfo(Type)) {
11494 // workaround llvm backend bugs
11495 // TODO: else => return if (rhs != 0) @mod(lhs, rhs) else nan(Type),
11496 // TODO: .vector => |info| {
11497 // TODO: var res: Type = undefined;
11498 // TODO: inline for (0..info.len) |i| res[i] = if (rhs[i] != 0) @mod(lhs[i], rhs[i]) else nan(Scalar(Type));
11499 // TODO: return res;
11500 // TODO: },
11501 else => return scalarMod(lhs, rhs),
11502 .vector => |info| {
11503 var res: Type = undefined;
11504 inline for (0..info.len) |i| res[i] = scalarMod(lhs[i], rhs[i]);
11505 return res;
11506 },
11507 }
11508 }
11509 // workaround https://github.com/ziglang/zig/issues/22748
11510 // TODO: return @mod(lhs, rhs);
11511 var rt_rhs = rhs;
11512 _ = &rt_rhs;
11513 return @mod(lhs, rt_rhs);
11514}
11515test mod {
11516 const test_mod = binary(mod, .{});
11517 try test_mod.testFloats();
11518 try test_mod.testFloatVectors();
11519}
11520
9929inline fn bitNot(comptime Type: type, rhs: Type) @TypeOf(~rhs) {11521inline fn bitNot(comptime Type: type, rhs: Type) @TypeOf(~rhs) {
9930 return ~rhs;11522 return ~rhs;
9931}11523}
...@@ -9935,24 +11527,150 @@ test bitNot {...@@ -9935,24 +11527,150 @@ test bitNot {
9935 try test_bit_not.testIntVectors();11527 try test_bit_not.testIntVectors();
9936}11528}
993711529
11530inline fn clz(comptime Type: type, rhs: Type) @TypeOf(@clz(rhs)) {
11531 return @clz(rhs);
11532}
11533test clz {
11534 const test_clz = unary(clz, .{});
11535 try test_clz.testInts();
11536 try test_clz.testIntVectors();
11537}
11538
11539inline fn sqrt(comptime Type: type, rhs: Type) @TypeOf(@sqrt(rhs)) {
11540 return @sqrt(rhs);
11541}
11542test sqrt {
11543 const test_sqrt = unary(sqrt, .{ .libc_name = "sqrt", .compare = .approx });
11544 try test_sqrt.testFloats();
11545 try test_sqrt.testFloatVectors();
11546}
11547
11548inline fn sin(comptime Type: type, rhs: Type) @TypeOf(@sin(rhs)) {
11549 return @sin(rhs);
11550}
11551test sin {
11552 const test_sin = unary(sin, .{ .libc_name = "sin", .compare = .strict });
11553 try test_sin.testFloats();
11554 try test_sin.testFloatVectors();
11555}
11556
11557inline fn cos(comptime Type: type, rhs: Type) @TypeOf(@cos(rhs)) {
11558 return @cos(rhs);
11559}
11560test cos {
11561 const test_cos = unary(cos, .{ .libc_name = "cos", .compare = .strict });
11562 try test_cos.testFloats();
11563 try test_cos.testFloatVectors();
11564}
11565
11566inline fn tan(comptime Type: type, rhs: Type) @TypeOf(@tan(rhs)) {
11567 return @tan(rhs);
11568}
11569test tan {
11570 const test_tan = unary(tan, .{ .libc_name = "tan", .compare = .strict });
11571 try test_tan.testFloats();
11572 try test_tan.testFloatVectors();
11573}
11574
11575inline fn exp(comptime Type: type, rhs: Type) @TypeOf(@exp(rhs)) {
11576 return @exp(rhs);
11577}
11578test exp {
11579 const test_exp = unary(exp, .{ .libc_name = "exp", .compare = .strict });
11580 try test_exp.testFloats();
11581 try test_exp.testFloatVectors();
11582}
11583
11584inline fn exp2(comptime Type: type, rhs: Type) @TypeOf(@exp2(rhs)) {
11585 return @exp2(rhs);
11586}
11587test exp2 {
11588 const test_exp2 = unary(exp2, .{ .libc_name = "exp2", .compare = .strict });
11589 try test_exp2.testFloats();
11590 try test_exp2.testFloatVectors();
11591}
11592
11593inline fn log(comptime Type: type, rhs: Type) @TypeOf(@log(rhs)) {
11594 return @log(rhs);
11595}
11596test log {
11597 const test_log = unary(log, .{ .libc_name = "log", .compare = .strict });
11598 try test_log.testFloats();
11599 try test_log.testFloatVectors();
11600}
11601
11602inline fn log2(comptime Type: type, rhs: Type) @TypeOf(@log2(rhs)) {
11603 return @log2(rhs);
11604}
11605test log2 {
11606 const test_log2 = unary(log2, .{ .libc_name = "log2", .compare = .strict });
11607 try test_log2.testFloats();
11608 try test_log2.testFloatVectors();
11609}
11610
11611inline fn log10(comptime Type: type, rhs: Type) @TypeOf(@log10(rhs)) {
11612 return @log10(rhs);
11613}
11614test log10 {
11615 const test_log10 = unary(log10, .{ .libc_name = "log10", .compare = .strict });
11616 try test_log10.testFloats();
11617 try test_log10.testFloatVectors();
11618}
11619
9938inline fn abs(comptime Type: type, rhs: Type) @TypeOf(@abs(rhs)) {11620inline fn abs(comptime Type: type, rhs: Type) @TypeOf(@abs(rhs)) {
9939 return @abs(rhs);11621 return @abs(rhs);
9940}11622}
9941test abs {11623test abs {
9942 const test_abs = unary(abs, .{ .strict = true });11624 const test_abs = unary(abs, .{ .compare = .strict });
9943 try test_abs.testInts();11625 try test_abs.testInts();
9944 try test_abs.testIntVectors();11626 try test_abs.testIntVectors();
9945 try test_abs.testFloats();11627 try test_abs.testFloats();
9946 try test_abs.testFloatVectors();11628 try test_abs.testFloatVectors();
9947}11629}
994811630
9949inline fn clz(comptime Type: type, rhs: Type) @TypeOf(@clz(rhs)) {11631inline fn floor(comptime Type: type, rhs: Type) @TypeOf(@floor(rhs)) {
9950 return @clz(rhs);11632 return @floor(rhs);
9951}11633}
9952test clz {11634test floor {
9953 const test_clz = unary(clz, .{});11635 const test_floor = unary(floor, .{ .libc_name = "floor", .compare = .strict });
9954 try test_clz.testInts();11636 try test_floor.testFloats();
9955 try test_clz.testIntVectors();11637 try test_floor.testFloatVectors();
11638}
11639
11640inline fn ceil(comptime Type: type, rhs: Type) @TypeOf(@ceil(rhs)) {
11641 return @ceil(rhs);
11642}
11643test ceil {
11644 const test_ceil = unary(ceil, .{ .libc_name = "ceil", .compare = .strict });
11645 try test_ceil.testFloats();
11646 try test_ceil.testFloatVectors();
11647}
11648
11649inline fn round(comptime Type: type, rhs: Type) @TypeOf(@round(rhs)) {
11650 return @round(rhs);
11651}
11652test round {
11653 const test_round = unary(round, .{ .libc_name = "round", .compare = .strict });
11654 try test_round.testFloats();
11655 try test_round.testFloatVectors();
11656}
11657
11658inline fn trunc(comptime Type: type, rhs: Type) @TypeOf(@trunc(rhs)) {
11659 return @trunc(rhs);
11660}
11661test trunc {
11662 const test_trunc = unary(trunc, .{ .libc_name = "trunc", .compare = .strict });
11663 try test_trunc.testFloats();
11664 try test_trunc.testFloatVectors();
11665}
11666
11667inline fn negate(comptime Type: type, rhs: Type) @TypeOf(-rhs) {
11668 return -rhs;
11669}
11670test negate {
11671 const test_negate = unary(negate, .{ .compare = .strict });
11672 try test_negate.testFloats();
11673 try test_negate.testFloatVectors();
9956}11674}
995711675
9958inline fn intCast(comptime Result: type, comptime Type: type, rhs: Type, comptime ct_rhs: Type) Result {11676inline fn intCast(comptime Result: type, comptime Type: type, rhs: Type, comptime ct_rhs: Type) Result {
...@@ -10005,11 +11723,20 @@ test intCast {...@@ -10005,11 +11723,20 @@ test intCast {
10005 try test_int_cast.testIntVectors();11723 try test_int_cast.testIntVectors();
10006}11724}
1000711725
11726inline fn truncate(comptime Result: type, comptime Type: type, rhs: Type, comptime _: Type) Result {
11727 return if (@typeInfo(Scalar(Result)).int.bits <= @typeInfo(Scalar(Type)).int.bits) @truncate(rhs) else rhs;
11728}
11729test truncate {
11730 const test_truncate = cast(truncate, .{});
11731 try test_truncate.testSameSignednessInts();
11732 try test_truncate.testSameSignednessIntVectors();
11733}
11734
10008inline fn floatCast(comptime Result: type, comptime Type: type, rhs: Type, comptime _: Type) Result {11735inline fn floatCast(comptime Result: type, comptime Type: type, rhs: Type, comptime _: Type) Result {
10009 return @floatCast(rhs);11736 return @floatCast(rhs);
10010}11737}
10011test floatCast {11738test floatCast {
10012 const test_float_cast = cast(floatCast, .{ .strict = true });11739 const test_float_cast = cast(floatCast, .{ .compare = .strict });
10013 try test_float_cast.testFloats();11740 try test_float_cast.testFloats();
10014 try test_float_cast.testFloatVectors();11741 try test_float_cast.testFloatVectors();
10015}11742}
...@@ -10212,3 +11939,12 @@ test optionalsNotEqual {...@@ -10212,3 +11939,12 @@ test optionalsNotEqual {
10212 try test_optionals_not_equal.testInts();11939 try test_optionals_not_equal.testInts();
10213 try test_optionals_not_equal.testFloats();11940 try test_optionals_not_equal.testFloats();
10214}11941}
11942
11943inline fn mulAdd(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(@mulAdd(Type, lhs, rhs, rhs)) {
11944 return @mulAdd(Type, lhs, rhs, rhs);
11945}
11946test mulAdd {
11947 const test_mul_add = binary(mulAdd, .{ .compare = .approx });
11948 try test_mul_add.testFloats();
11949 try test_mul_add.testFloatVectors();
11950}