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 {
450450 .skip_non_native = skip_non_native,
451451 .skip_libc = skip_libc,
452452 .use_llvm = use_llvm,
453 .max_rss = 1.25 * 1024 * 1024 * 1024,
453 .max_rss = 2 * 1024 * 1024 * 1024,
454454 }));
455455
456456 test_modules_step.dependOn(tests.addModuleTests(b, .{
lib/std/math/big/int.zig+10-17
......@@ -1793,9 +1793,13 @@ pub const Mutable = struct {
17931793 /// The upper bound is `calcTwosCompLimbCount(a.len)`.
17941794 pub fn truncate(r: *Mutable, a: Const, signedness: Signedness, bit_count: usize) void {
17951795 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
17971801 // Handle 0-bit integers.
1798 if (req_limbs == 0 or a.eqlZero()) {
1802 if (req_limbs == 0 or abs_trunc_a.eqlZero()) {
17991803 r.set(0);
18001804 return;
18011805 }
......@@ -1810,15 +1814,10 @@ pub const Mutable = struct {
18101814 // Note, we simply take req_limbs * @bitSizeOf(Limb) as the
18111815 // target bit count.
18121816
1813 r.addScalar(a.abs(), -1);
1817 r.addScalar(abs_trunc_a, -1);
18141818
18151819 // Zero-extend the result
1816 if (req_limbs > r.len) {
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);
1820 @memset(r.limbs[r.len..req_limbs], 0);
18221821 r.len = req_limbs;
18231822
18241823 // Without truncating, we can already peek at the sign bit of the result here.
......@@ -1846,16 +1845,10 @@ pub const Mutable = struct {
18461845 r.normalize(r.len);
18471846 }
18481847 } else {
1849 if (a.limbs.len < req_limbs) {
1850 // Integer fits within target bits, no wrapping required.
1851 r.copy(a);
1852 return;
1853 }
1848 r.copy(abs_trunc_a);
1849 // If the integer fits within target bits, no wrapping is required.
1850 if (r.len < req_limbs) return;
18541851
1855 r.copy(.{
1856 .positive = a.positive,
1857 .limbs = a.limbs[0..req_limbs],
1858 });
18591852 r.limbs[r.len - 1] &= mask;
18601853 r.normalize(r.len);
18611854
lib/std/math/big/int_test.zig+25
......@@ -1934,6 +1934,31 @@ test "truncate multi unsigned many" {
19341934 try testing.expect((try b.toInt(i1)) == 0);
19351935}
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
19371962test "saturate single signed positive" {
19381963 var a = try Managed.initSet(testing.allocator, 0xBBBB_BBBB);
19391964 defer a.deinit();
src/Air.zig+1-1
......@@ -573,7 +573,7 @@ pub const Inst = struct {
573573 /// and the operand is not a valid value of this type; i.e. equivalent to
574574 /// a safety check based on `.is_named_enum_value`
575575 intcast_safe,
576 /// Truncate higher bits from an integer, resulting in an integer with the same
576 /// Truncate higher bits from an integer, resulting in an integer type with the same
577577 /// sign but an equal or smaller number of bits.
578578 /// Uses the `ty_op` field.
579579 trunc,
src/Sema.zig+21-17
......@@ -23842,23 +23842,27 @@ fn zirTruncate(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
2384223842 @tagName(dest_info.signedness), operand_ty.fmt(pt),
2384323843 });
2384423844 }
23845 if (operand_info.bits < dest_info.bits) {
23846 const msg = msg: {
23847 const msg = try sema.errMsg(
23848 src,
23849 "destination type '{}' has more bits than source type '{}'",
23850 .{ dest_ty.fmt(pt), operand_ty.fmt(pt) },
23851 );
23852 errdefer msg.destroy(sema.gpa);
23853 try sema.errNote(src, msg, "destination type has {d} bits", .{
23854 dest_info.bits,
23855 });
23856 try sema.errNote(operand_src, msg, "operand type has {d} bits", .{
23857 operand_info.bits,
23858 });
23859 break :msg msg;
23860 };
23861 return sema.failWithOwnedErrorMsg(block, msg);
23845 switch (std.math.order(dest_info.bits, operand_info.bits)) {
23846 .gt => {
23847 const msg = msg: {
23848 const msg = try sema.errMsg(
23849 src,
23850 "destination type '{}' has more bits than source type '{}'",
23851 .{ dest_ty.fmt(pt), operand_ty.fmt(pt) },
23852 );
23853 errdefer msg.destroy(sema.gpa);
23854 try sema.errNote(src, msg, "destination type has {d} bits", .{
23855 dest_info.bits,
23856 });
23857 try sema.errNote(operand_src, msg, "operand type has {d} bits", .{
23858 operand_info.bits,
23859 });
23860 break :msg msg;
23861 };
23862 return sema.failWithOwnedErrorMsg(block, msg);
23863 },
23864 .eq => return operand,
23865 .lt => {},
2386223866 }
2386323867 }
2386423868
src/arch/x86_64/CodeGen.zig+30016-9357
......@@ -2414,7 +2414,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24142414}
24152415
24162416fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2417 @setEvalBranchQuota(4_500);
2417 @setEvalBranchQuota(9_600);
24182418 const pt = cg.pt;
24192419 const zcu = pt.zcu;
24202420 const ip = &zcu.intern_pool;
......@@ -2450,23 +2450,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24502450 try cg.inst_tracking.ensureUnusedCapacity(cg.gpa, 1);
24512451 switch (air_tags[@intFromEnum(inst)]) {
24522452 // zig fmt: off
2453 .add,
24542453 .add_wrap,
2455 .sub,
24562454 .sub_wrap,
24572455 => |air_tag| try cg.airBinOp(inst, air_tag),
24582456
24592457 .shr, .shr_exact => try cg.airShlShrBinOp(inst),
24602458 .shl, .shl_exact => try cg.airShlShrBinOp(inst),
24612459
2462 .mul,
24632460 .mul_wrap,
2464 .rem,
2465 .mod,
2466 .div_float,
2467 .div_trunc,
2468 .div_floor,
2469 .div_exact,
24702461 => |air_tag| try cg.airMulDivBinOp(inst, air_tag),
24712462
24722463 .add_sat => try cg.airAddSat(inst),
......@@ -2474,23 +2465,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24742465 .mul_sat => try cg.airMulSat(inst),
24752466 .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
24942468 .add_with_overflow => try cg.airAddSubWithOverflow(inst),
24952469 .sub_with_overflow => try cg.airAddSubWithOverflow(inst),
24962470 .mul_with_overflow => try cg.airMulWithOverflow(inst),
......@@ -2499,7 +2473,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24992473 .cmp_lt_errors_len => try cg.airCmpLtErrorsLen(inst),
25002474
25012475 .bitcast => try cg.airBitCast(inst),
2502 .trunc => try cg.airTrunc(inst),
25032476 .is_non_null => try cg.airIsNonNull(inst),
25042477 .is_null => try cg.airIsNull(inst),
25052478 .is_non_err => try cg.airIsNonErr(inst),
......@@ -2525,7 +2498,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25252498 .reduce => try cg.airReduce(inst),
25262499 .aggregate_init => try cg.airAggregateInit(inst),
25272500 .prefetch => try cg.airPrefetch(inst),
2528 .mul_add => try cg.airMulAdd(inst),
25292501
25302502 .atomic_store_unordered => try cg.airAtomicStore(inst, .unordered),
25312503 .atomic_store_monotonic => try cg.airAtomicStore(inst, .monotonic),
......@@ -2549,16 +2521,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25492521 .intcast_safe,
25502522 => 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),
25622524 .reduce_optimized => try cg.airReduce(inst),
25632525 .int_from_float_optimized => try cg.airIntFromFloat(inst),
25642526
......@@ -2576,490 +2538,630 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25762538 if (arg != .none) break;
25772539 } else try cg.airDbgVarArgs();
25782540 },
2579 .ptr_add => |air_tag| if (use_old) try cg.airPtrArithmetic(inst, air_tag) else {
2580 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
2581 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
2541 .add, .add_optimized => |air_tag| if (use_old) try cg.airBinOp(inst, .add) else fallback: {
2542 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
2543 if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airBinOp(inst, air_tag);
25822544 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
2583 try ops[0].toSlicePtr(cg);
25842545 var res: [1]Temp = undefined;
2585 if (ty_pl.ty.toType().elemType2(zcu).hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{ty_pl.ty.toType()}, &ops, comptime &.{ .{
2586 .patterns = &.{
2587 .{ .src = .{ .to_gpr, .simm32 } },
2546 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
2547 .required_features = .{ .f16c, null, null, null },
2548 .src_constraints = .{
2549 .{ .scalar_float = .{ .of = .word, .is = .word } },
2550 .{ .scalar_float = .{ .of = .word, .is = .word } },
2551 .any,
25882552 },
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 }},
25952553 .patterns = &.{
2596 .{ .src = .{ .to_gpr, .to_gpr } },
2554 .{ .src = .{ .to_sse, .to_sse, .none } },
25972555 },
2598 .dst_temps = .{.{ .rc = .general_purpose }},
2599 .each = .{ .once = &.{
2600 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
2601 } },
2602 }, .{
2603 .dst_constraints = .{.{ .elem_size_is = 2 }},
2604 .patterns = &.{
2605 .{ .src = .{ .to_gpr, .to_gpr } },
2556 .extra_temps = .{
2557 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
2558 .unused,
2559 .unused,
2560 .unused,
2561 .unused,
2562 .unused,
2563 .unused,
2564 .unused,
2565 .unused,
26062566 },
2607 .dst_temps = .{.{ .rc = .general_purpose }},
2567 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26082568 .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(.{}), ._ },
26102573 } },
26112574 }, .{
2612 .dst_constraints = .{.{ .elem_size_is = 2 + 1 }},
2613 .patterns = &.{
2614 .{ .src = .{ .to_gpr, .to_gpr } },
2575 .required_features = .{ .sse, null, null, null },
2576 .src_constraints = .{
2577 .{ .scalar_float = .{ .of = .word, .is = .word } },
2578 .{ .scalar_float = .{ .of = .word, .is = .word } },
2579 .any,
26152580 },
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 }},
26232581 .patterns = &.{
2624 .{ .src = .{ .to_gpr, .to_gpr } },
2582 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
26252583 },
2626 .dst_temps = .{.{ .rc = .general_purpose }},
2627 .each = .{ .once = &.{
2628 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"4", .src1), ._, ._ },
2629 } },
2630 }, .{
2631 .dst_constraints = .{.{ .elem_size_is = 4 + 1 }},
2632 .patterns = &.{
2633 .{ .src = .{ .to_gpr, .to_gpr } },
2584 .call_frame = .{ .alignment = .@"16" },
2585 .extra_temps = .{
2586 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
2587 .unused,
2588 .unused,
2589 .unused,
2590 .unused,
2591 .unused,
2592 .unused,
2593 .unused,
2594 .unused,
26342595 },
2635 .dst_temps = .{.{ .ref = .src1 }},
2596 .dst_temps = .{.{ .ref = .src0 }},
2597 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
26362598 .each = .{ .once = &.{
2637 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ },
2638 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2599 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
26392600 } },
26402601 }, .{
2641 .required_features = .{ .@"64bit", null, null, null },
2642 .dst_constraints = .{.{ .elem_size_is = 8 }},
2602 .required_features = .{ .f16c, null, null, null },
2603 .src_constraints = .{
2604 .{ .scalar_float = .{ .of = .qword, .is = .word } },
2605 .{ .scalar_float = .{ .of = .qword, .is = .word } },
2606 .any,
2607 },
26432608 .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 } },
26452613 },
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 } }},
26472626 .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(.{}), ._ },
26492631 } },
26502632 }, .{
2651 .required_features = .{ .@"64bit", null, null, null },
2652 .dst_constraints = .{.{ .elem_size_is = 8 + 1 }},
2633 .required_features = .{ .f16c, null, null, null },
2634 .src_constraints = .{
2635 .{ .scalar_float = .{ .of = .xword, .is = .word } },
2636 .{ .scalar_float = .{ .of = .xword, .is = .word } },
2637 .any,
2638 },
26532639 .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 } },
26552644 },
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 } }},
26572657 .each = .{ .once = &.{
2658 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ },
2659 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2658 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
2659 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
2660 .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp0y, ._ },
2661 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
26602662 } },
26612663 }, .{
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 },
26632670 .patterns = &.{
2664 .{ .src = .{ .to_gpr, .to_mut_gpr } },
2671 .{ .src = .{ .to_mem, .to_mem, .none } },
26652672 },
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},
26672685 .clobbers = .{ .eflags = true },
26682686 .each = .{ .once = &.{
2669 .{ ._, ._l, .sh, .src1p, .sa(.none, .add_log2_src0_elem_size), ._, ._ },
2670 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
2687 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
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", ._, ._, ._ },
26712694 } },
26722695 }, .{
2673 .patterns = &.{
2674 .{ .src = .{ .to_gpr, .to_gpr } },
2696 .required_features = .{ .avx, null, null, null },
2697 .src_constraints = .{
2698 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2699 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2700 .any,
26752701 },
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 &.{ .{
27022702 .patterns = &.{
2703 .{ .src = .{ .to_gpr, .simm32 } },
2703 .{ .src = .{ .to_mem, .to_mem, .none } },
27042704 },
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 },
27062719 .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", ._, ._, ._ },
27082728 } },
27092729 }, .{
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 },
27112736 .patterns = &.{
2712 .{ .src = .{ .to_gpr, .to_mut_gpr } },
2737 .{ .src = .{ .to_mem, .to_mem, .none } },
27132738 },
2714 .dst_temps = .{.{ .ref = .src1 }},
2715 .clobbers = .{ .eflags = true },
2739 .call_frame = .{ .alignment = .@"16" },
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 },
27162753 .each = .{ .once = &.{
2717 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
2718 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
2754 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
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", ._, ._, ._ },
27192763 } },
27202764 }, .{
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 },
27222771 .patterns = &.{
2723 .{ .src = .{ .to_gpr, .to_mut_gpr } },
2772 .{ .src = .{ .to_mem, .to_mem, .none } },
27242773 },
2725 .dst_temps = .{.{ .ref = .src1 }},
2726 .clobbers = .{ .eflags = true },
2774 .call_frame = .{ .alignment = .@"16" },
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 },
27272788 .each = .{ .once = &.{
2728 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
2729 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"2", .src1), ._, ._ },
2789 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
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", ._, ._, ._ },
27302799 } },
27312800 }, .{
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 },
27332807 .patterns = &.{
2734 .{ .src = .{ .to_gpr, .to_gpr } },
2808 .{ .src = .{ .to_mem, .to_mem, .none } },
27352809 },
2736 .dst_temps = .{.{ .rc = .general_purpose }},
2737 .clobbers = .{ .eflags = true },
2810 .call_frame = .{ .alignment = .@"16" },
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 },
27382824 .each = .{ .once = &.{
2739 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"2", .src1), ._, ._ },
2740 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },
2741 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2825 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2826 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
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", ._, ._, ._ },
27422838 } },
27432839 }, .{
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 },
27452846 .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 } },
27472850 },
2748 .dst_temps = .{.{ .ref = .src1 }},
2749 .clobbers = .{ .eflags = true },
2851 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27502852 .each = .{ .once = &.{
2751 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
2752 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"4", .src1), ._, ._ },
2853 .{ ._, .v_ss, .add, .dst0x, .src0x, .src1d, ._ },
27532854 } },
27542855 }, .{
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 },
27562862 .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 } },
27582866 },
2759 .dst_temps = .{.{ .rc = .general_purpose }},
2760 .clobbers = .{ .eflags = true },
2867 .dst_temps = .{.{ .ref = .src0 }},
27612868 .each = .{ .once = &.{
2762 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ },
2763 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },
2764 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2869 .{ ._, ._ss, .add, .dst0x, .src1d, ._, ._ },
27652870 } },
27662871 }, .{
2767 .required_features = .{ .@"64bit", null, null, null },
2768 .dst_constraints = .{.{ .elem_size_is = 8 }},
2872 .required_features = .{ .avx, null, null, null },
2873 .src_constraints = .{
2874 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
2875 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
2876 .any,
2877 },
27692878 .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 } },
27712882 },
2772 .dst_temps = .{.{ .ref = .src1 }},
2773 .clobbers = .{ .eflags = true },
2883 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27742884 .each = .{ .once = &.{
2775 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
2776 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"8", .src1), ._, ._ },
2885 .{ ._, .v_ps, .add, .dst0x, .src0x, .src1x, ._ },
27772886 } },
27782887 }, .{
2779 .required_features = .{ .@"64bit", null, null, null },
2780 .dst_constraints = .{.{ .elem_size_is = 8 + 1 }},
2888 .required_features = .{ .sse, null, null, null },
2889 .src_constraints = .{
2890 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
2891 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
2892 .any,
2893 },
27812894 .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 } },
27832898 },
2784 .dst_temps = .{.{ .rc = .general_purpose }},
2785 .clobbers = .{ .eflags = true },
2899 .dst_temps = .{.{ .ref = .src0 }},
27862900 .each = .{ .once = &.{
2787 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ },
2788 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },
2789 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2901 .{ ._, ._ps, .add, .dst0x, .src1x, ._, ._ },
27902902 } },
27912903 }, .{
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 },
27932910 .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 } },
27952914 },
2796 .dst_temps = .{.{ .ref = .src1 }},
2797 .clobbers = .{ .eflags = true },
2915 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27982916 .each = .{ .once = &.{
2799 .{ ._, ._l, .sa, .src1p, .sa(.none, .add_log2_src0_elem_size), ._, ._ },
2800 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
2801 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
2917 .{ ._, .v_ps, .add, .dst0y, .src0y, .src1y, ._ },
28022918 } },
28032919 }, .{
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 },
28042926 .patterns = &.{
2805 .{ .src = .{ .to_gpr, .to_gpr } },
2927 .{ .src = .{ .to_mem, .to_mem, .none } },
28062928 },
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},
28082941 .clobbers = .{ .eflags = true },
28092942 .each = .{ .once = &.{
2810 .{ ._, .i_, .mul, .dst0p, .src1p, .sa(.none, .sub_src0_elem_size), ._ },
2811 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2943 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
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", ._, ._, ._ },
28122949 } },
2813 } }) catch |err| switch (err) {
2814 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
2815 @tagName(air_tag),
2816 cg.typeOf(bin_op.lhs).fmt(pt),
2817 ops[0].tracking(cg),
2818 ops[1].tracking(cg),
2819 }),
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 } },
2950 }, .{
2951 .required_features = .{ .sse, null, null, null },
2952 .src_constraints = .{
2953 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
2954 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
2955 .any,
2956 },
28342957 .patterns = &.{
2835 .{ .src = .{ .to_mut_gpr, .to_gpr } },
2958 .{ .src = .{ .to_mem, .to_mem, .none } },
28362959 },
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},
28382972 .clobbers = .{ .eflags = true },
28392973 .each = .{ .once = &.{
2840 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
2841 .{ ._, ._l, .cmov, .dst0d, .src1d, ._, ._ },
2974 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
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", ._, ._, ._ },
28422980 } },
28432981 }, .{
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 },
28452988 .patterns = &.{
2846 .{ .src = .{ .to_mut_gpr, .mem } },
2847 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2848 .{ .src = .{ .to_mut_gpr, .to_gpr } },
2989 .{ .src = .{ .to_sse, .mem, .none } },
2990 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
2991 .{ .src = .{ .to_sse, .to_sse, .none } },
28492992 },
2850 .dst_temps = .{.{ .ref = .src0 }},
2851 .clobbers = .{ .eflags = true },
2993 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28522994 .each = .{ .once = &.{
2853 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
2854 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },
2855 .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ },
2995 .{ ._, .v_sd, .add, .dst0x, .src0x, .src1q, ._ },
28562996 } },
28572997 }, .{
2858 .required_features = .{ .cmov, null, null, null },
2859 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } },
2998 .required_features = .{ .sse2, null, null, null },
2999 .src_constraints = .{
3000 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3001 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3002 .any,
3003 },
28603004 .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 } },
28623008 },
28633009 .dst_temps = .{.{ .ref = .src0 }},
2864 .clobbers = .{ .eflags = true },
28653010 .each = .{ .once = &.{
2866 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
2867 .{ ._, ._b, .cmov, .dst0d, .src1d, ._, ._ },
3011 .{ ._, ._sd, .add, .dst0x, .src1q, ._, ._ },
28683012 } },
28693013 }, .{
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 },
28713020 .patterns = &.{
2872 .{ .src = .{ .to_mut_gpr, .mem } },
2873 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2874 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3021 .{ .src = .{ .mem, .mem, .none } },
28753022 },
2876 .dst_temps = .{.{ .ref = .src0 }},
2877 .clobbers = .{ .eflags = true },
3023 .extra_temps = .{
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},
28783035 .each = .{ .once = &.{
2879 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
2880 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },
2881 .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ },
3036 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
3037 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
3038 .{ ._, .f_p, .add, ._, ._, ._, ._ },
3039 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
28823040 } },
28833041 }, .{
2884 .required_features = .{ .cmov, null, null, null },
2885 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } },
3042 .required_features = .{ .avx, null, null, null },
3043 .src_constraints = .{
3044 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3045 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3046 .any,
3047 },
28863048 .patterns = &.{
2887 .{ .src = .{ .to_mut_gpr, .mem } },
2888 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2889 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3049 .{ .src = .{ .to_sse, .mem, .none } },
3050 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
3051 .{ .src = .{ .to_sse, .to_sse, .none } },
28903052 },
2891 .dst_temps = .{.{ .ref = .src0 }},
2892 .clobbers = .{ .eflags = true },
3053 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28933054 .each = .{ .once = &.{
2894 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
2895 .{ ._, ._l, .cmov, .dst0w, .src1w, ._, ._ },
3055 .{ ._, .v_pd, .add, .dst0x, .src0x, .src1x, ._ },
28963056 } },
28973057 }, .{
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 },
28993064 .patterns = &.{
2900 .{ .src = .{ .to_mut_gpr, .mem } },
2901 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2902 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3065 .{ .src = .{ .to_mut_sse, .mem, .none } },
3066 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
3067 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
29033068 },
29043069 .dst_temps = .{.{ .ref = .src0 }},
2905 .clobbers = .{ .eflags = true },
29063070 .each = .{ .once = &.{
2907 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
2908 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },
2909 .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ },
3071 .{ ._, ._pd, .add, .dst0x, .src1x, ._, ._ },
29103072 } },
29113073 }, .{
2912 .required_features = .{ .cmov, null, null, null },
2913 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } },
3074 .required_features = .{ .avx, null, null, null },
3075 .src_constraints = .{
3076 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
3077 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
3078 .any,
3079 },
29143080 .patterns = &.{
2915 .{ .src = .{ .to_mut_gpr, .mem } },
2916 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2917 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3081 .{ .src = .{ .to_sse, .mem, .none } },
3082 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
3083 .{ .src = .{ .to_sse, .to_sse, .none } },
29183084 },
2919 .dst_temps = .{.{ .ref = .src0 }},
2920 .clobbers = .{ .eflags = true },
3085 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
29213086 .each = .{ .once = &.{
2922 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
2923 .{ ._, ._b, .cmov, .dst0w, .src1w, ._, ._ },
3087 .{ ._, .v_pd, .add, .dst0y, .src0y, .src1y, ._ },
29243088 } },
29253089 }, .{
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 },
29273096 .patterns = &.{
2928 .{ .src = .{ .to_mut_gpr, .mem } },
2929 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2930 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3097 .{ .src = .{ .to_mem, .to_mem, .none } },
29313098 },
2932 .dst_temps = .{.{ .ref = .src0 }},
2933 .clobbers = .{ .eflags = true },
2934 .each = .{ .once = &.{
2935 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
2936 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },
2937 .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ },
2938 } },
2939 }, .{
2940 .required_features = .{ .cmov, null, null, null },
2941 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } },
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 } },
3099 .extra_temps = .{
3100 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3101 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
3102 .unused,
3103 .unused,
3104 .unused,
3105 .unused,
3106 .unused,
3107 .unused,
3108 .unused,
29873109 },
2988 .dst_temps = .{.{ .ref = .src0 }},
3110 .dst_temps = .{.mem},
29893111 .clobbers = .{ .eflags = true },
29903112 .each = .{ .once = &.{
2991 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
2992 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },
2993 .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ },
3113 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3114 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
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", ._, ._, ._ },
29943119 } },
29953120 }, .{
2996 .required_features = .{ .@"64bit", .cmov, null, null },
2997 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } },
2998 .patterns = &.{
2999 .{ .src = .{ .to_mut_gpr, .mem } },
3000 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
3001 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3121 .required_features = .{ .sse2, null, null, null },
3122 .src_constraints = .{
3123 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
3124 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
3125 .any,
30023126 },
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 } },
30123127 .patterns = &.{
3013 .{ .src = .{ .to_mut_gpr, .mem } },
3014 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
3015 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3128 .{ .src = .{ .to_mem, .to_mem, .none } },
30163129 },
3017 .dst_temps = .{.{ .ref = .src0 }},
3018 .clobbers = .{ .eflags = true },
3019 .each = .{ .once = &.{
3020 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
3021 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },
3022 .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ },
3023 } },
3024 }, .{
3025 .required_features = .{ .@"64bit", .cmov, null, null },
3026 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } },
3027 .patterns = &.{
3028 .{ .src = .{ .to_mut_gpr, .mem } },
3029 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
3030 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3130 .extra_temps = .{
3131 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3132 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
3133 .unused,
3134 .unused,
3135 .unused,
3136 .unused,
3137 .unused,
3138 .unused,
3139 .unused,
30313140 },
3032 .dst_temps = .{.{ .ref = .src0 }},
3141 .dst_temps = .{.mem},
30333142 .clobbers = .{ .eflags = true },
30343143 .each = .{ .once = &.{
3035 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
3036 .{ ._, ._b, .cmov, .dst0q, .src1q, ._, ._ },
3144 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
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", ._, ._, ._ },
30373150 } },
30383151 }, .{
3039 .required_features = .{ .@"64bit", null, null, null },
3040 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } },
3041 .patterns = &.{
3042 .{ .src = .{ .to_mut_gpr, .mem } },
3043 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
3044 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3152 .required_features = .{ .x87, null, null, null },
3153 .src_constraints = .{
3154 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
3155 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
3156 .any,
30453157 },
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 },
30563158 .patterns = &.{
3057 .{ .src = .{ .to_mem, .to_mem } },
3159 .{ .src = .{ .to_mem, .to_mem, .none } },
30583160 },
30593161 .extra_temps = .{
3060 .{ .type = .isize, .kind = .{ .reg = .rsi } },
3061 .{ .type = .u64, .kind = .{ .reg = .rdi } },
3062 .{ .type = .u64, .kind = .{ .reg = .rcx } },
3162 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3163 .{ .type = .f64, .kind = .{ .reg = .st6 } },
3164 .{ .type = .f64, .kind = .{ .reg = .st7 } },
30633165 .unused,
30643166 .unused,
30653167 .unused,
......@@ -3068,33 +3170,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30683170 .unused,
30693171 },
30703172 .dst_temps = .{.mem},
3071 .clobbers = .{ .eflags = true },
30723173 .each = .{ .once = &.{
3073 .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ },
3074 .{ ._, ._c, .cl, ._, ._, ._, ._ },
3075 .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
3076 .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
3077 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
3078 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3079 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
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, ._, ._, ._, ._ },
3174 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3175 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
3176 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ },
3177 .{ ._, .f_p, .add, ._, ._, ._, ._ },
3178 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
3179 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
3180 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30873181 } },
30883182 }, .{
3089 .required_features = .{ .@"64bit", null, null, null },
3090 .src_constraints = .{ .any_signed_int, .any_signed_int },
3183 .required_features = .{ .x87, null, null, null },
3184 .src_constraints = .{
3185 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
3186 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
3187 .any,
3188 },
30913189 .patterns = &.{
3092 .{ .src = .{ .to_mem, .to_mem } },
3190 .{ .src = .{ .mem, .mem, .none } },
30933191 },
30943192 .extra_temps = .{
3095 .{ .type = .isize, .kind = .{ .reg = .rsi } },
3096 .{ .type = .u64, .kind = .{ .reg = .rdi } },
3097 .{ .type = .u64, .kind = .{ .reg = .rcx } },
3193 .{ .type = .f80, .kind = .{ .reg = .st6 } },
3194 .{ .type = .f80, .kind = .{ .reg = .st7 } },
3195 .unused,
30983196 .unused,
30993197 .unused,
31003198 .unused,
......@@ -3102,34 +3200,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31023200 .unused,
31033201 .unused,
31043202 },
3105 .dst_temps = .{.mem},
3106 .clobbers = .{ .eflags = true },
3203 .dst_temps = .{.{ .rc = .x87 }},
31073204 .each = .{ .once = &.{
3108 .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ },
3109 .{ ._, ._c, .cl, ._, ._, ._, ._ },
3110 .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
3111 .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
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, ._, ._, ._, ._ },
3205 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
3206 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
3207 .{ ._, .f_p, .add, ._, ._, ._, ._ },
3208 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
31223209 } },
31233210 }, .{
3124 .required_features = .{ .@"64bit", .cmov, null, null },
3125 .src_constraints = .{ .any_unsigned_int, .any_unsigned_int },
3211 .required_features = .{ .x87, null, null, null },
3212 .src_constraints = .{
3213 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
3214 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
3215 .any,
3216 },
31263217 .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 } },
31283221 },
31293222 .extra_temps = .{
3130 .{ .type = .isize, .kind = .{ .reg = .rsi } },
3131 .{ .type = .u64, .kind = .{ .reg = .rdi } },
3132 .{ .type = .u64, .kind = .{ .reg = .rcx } },
3223 .{ .type = .f80, .kind = .{ .reg = .st7 } },
3224 .unused,
3225 .unused,
31333226 .unused,
31343227 .unused,
31353228 .unused,
......@@ -3137,32 +3230,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31373230 .unused,
31383231 .unused,
31393232 },
3140 .dst_temps = .{.mem},
3141 .clobbers = .{ .eflags = true },
3233 .dst_temps = .{.{ .rc = .x87 }},
31423234 .each = .{ .once = &.{
3143 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ },
3144 .{ ._, ._c, .cl, ._, ._, ._, ._ },
3145 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ },
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, ._, ._, ._, ._ },
3235 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
3236 .{ ._, .f_, .add, .tmp0t, .src1t, ._, ._ },
3237 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
31553238 } },
31563239 }, .{
3157 .required_features = .{ .@"64bit", null, null, null },
3158 .src_constraints = .{ .any_unsigned_int, .any_unsigned_int },
3240 .required_features = .{ .x87, null, null, null },
3241 .src_constraints = .{
3242 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
3243 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
3244 .any,
3245 },
31593246 .patterns = &.{
3160 .{ .src = .{ .to_mem, .to_mem } },
3247 .{ .src = .{ .to_mem, .to_mem, .none } },
31613248 },
31623249 .extra_temps = .{
3163 .{ .type = .isize, .kind = .{ .reg = .rsi } },
3164 .{ .type = .u64, .kind = .{ .reg = .rdi } },
3165 .{ .type = .u64, .kind = .{ .reg = .rcx } },
3250 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3251 .{ .type = .f80, .kind = .{ .reg = .st6 } },
3252 .{ .type = .f80, .kind = .{ .reg = .st7 } },
31663253 .unused,
31673254 .unused,
31683255 .unused,
......@@ -3171,99 +3258,91 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31713258 .unused,
31723259 },
31733260 .dst_temps = .{.mem},
3174 .clobbers = .{ .eflags = true },
31753261 .each = .{ .once = &.{
3176 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ },
3177 .{ ._, ._c, .cl, ._, ._, ._, ._ },
3178 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ },
3179 .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ },
3180 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
3181 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3182 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
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, ._, ._, ._, ._ },
3262 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3263 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
3264 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
3265 .{ ._, .f_p, .add, ._, ._, ._, ._ },
3266 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
3267 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3268 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31883269 } },
31893270 }, .{
3190 .required_features = .{ .avx, null, null, null },
3271 .required_features = .{ .sse, null, null, null },
31913272 .src_constraints = .{
3192 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
3193 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
3273 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
3274 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
3275 .any,
31943276 },
31953277 .patterns = &.{
3196 .{ .src = .{ .to_sse, .mem } },
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 } },
3278 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
32093279 },
3210 .patterns = &.{
3211 .{ .src = .{ .to_mut_sse, .mem } },
3212 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
3213 .{ .src = .{ .to_mut_sse, .to_sse } },
3280 .call_frame = .{ .alignment = .@"16" },
3281 .extra_temps = .{
3282 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
3283 .unused,
3284 .unused,
3285 .unused,
3286 .unused,
3287 .unused,
3288 .unused,
3289 .unused,
3290 .unused,
32143291 },
32153292 .dst_temps = .{.{ .ref = .src0 }},
3293 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
32163294 .each = .{ .once = &.{
3217 .{ ._, .p_b, .maxs, .dst0x, .src1x, ._, ._ },
3295 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
32183296 } },
32193297 }, .{
3220 .required_features = .{ .sse2, null, null, null },
3298 .required_features = .{ .avx, null, null, null },
32213299 .src_constraints = .{
3222 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
3223 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
3300 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
3301 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
3302 .any,
32243303 },
32253304 .patterns = &.{
3226 .{ .src = .{ .to_mut_sse, .mem } },
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 } },
3305 .{ .src = .{ .to_mem, .to_mem, .none } },
32433306 },
3244 .patterns = &.{
3245 .{ .src = .{ .to_sse, .mem } },
3246 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
3247 .{ .src = .{ .to_sse, .to_sse } },
3307 .call_frame = .{ .alignment = .@"16" },
3308 .extra_temps = .{
3309 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
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,
32483318 },
3249 .dst_temps = .{.{ .rc = .sse }},
3319 .dst_temps = .{.mem},
3320 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
32503321 .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", ._, ._, ._ },
32523329 } },
32533330 }, .{
3254 .required_features = .{ .avx2, null, null, null },
3331 .required_features = .{ .sse2, null, null, null },
32553332 .src_constraints = .{
3256 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } },
3257 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } },
3333 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
3334 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
3335 .any,
32583336 },
32593337 .patterns = &.{
3260 .{ .src = .{ .to_mem, .to_mem } },
3338 .{ .src = .{ .to_mem, .to_mem, .none } },
32613339 },
3340 .call_frame = .{ .alignment = .@"16" },
32623341 .extra_temps = .{
32633342 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3264 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
3265 .unused,
3266 .unused,
3343 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
3344 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
3345 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
32673346 .unused,
32683347 .unused,
32693348 .unused,
......@@ -3271,29 +3350,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32713350 .unused,
32723351 },
32733352 .dst_temps = .{.mem},
3274 .clobbers = .{ .eflags = true },
3353 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
32753354 .each = .{ .once = &.{
3276 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3277 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
3278 .{ ._, .vp_b, .maxs, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
3279 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
3280 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
3355 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3356 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
3357 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
3358 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
3359 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
3360 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
32813361 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32823362 } },
32833363 }, .{
3284 .required_features = .{ .avx, null, null, null },
3364 .required_features = .{ .sse, null, null, null },
32853365 .src_constraints = .{
3286 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
3287 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
3366 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
3367 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
3368 .any,
32883369 },
32893370 .patterns = &.{
3290 .{ .src = .{ .to_mem, .to_mem } },
3371 .{ .src = .{ .to_mem, .to_mem, .none } },
32913372 },
3373 .call_frame = .{ .alignment = .@"16" },
32923374 .extra_temps = .{
32933375 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3294 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
3295 .unused,
3296 .unused,
3376 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
3377 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
3378 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
32973379 .unused,
32983380 .unused,
32993381 .unused,
......@@ -3301,27 +3383,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33013383 .unused,
33023384 },
33033385 .dst_temps = .{.mem},
3304 .clobbers = .{ .eflags = true },
3386 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33053387 .each = .{ .once = &.{
3306 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3307 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
3308 .{ ._, .vp_b, .maxs, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },
3309 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
3388 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3389 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
3390 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
3391 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
3392 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
33103393 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
33113394 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33123395 } },
3313 }, .{
3314 .required_features = .{ .sse4_1, null, null, null },
3396 } }) catch |err| switch (err) {
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 },
33153414 .src_constraints = .{
3316 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
3317 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
3415 .{ .scalar_float = .{ .of = .word, .is = .word } },
3416 .{ .scalar_float = .{ .of = .word, .is = .word } },
3417 .any,
33183418 },
33193419 .patterns = &.{
3320 .{ .src = .{ .to_mem, .to_mem } },
3420 .{ .src = .{ .to_sse, .to_sse, .none } },
33213421 },
33223422 .extra_temps = .{
3323 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3324 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
3423 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
3424 .unused,
33253425 .unused,
33263426 .unused,
33273427 .unused,
......@@ -3330,29 +3430,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33303430 .unused,
33313431 .unused,
33323432 },
3333 .dst_temps = .{.mem},
3334 .clobbers = .{ .eflags = true },
3433 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
33353434 .each = .{ .once = &.{
3336 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3337 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
3338 .{ ._, .p_b, .maxs, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
3339 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
3340 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3341 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3435 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
3436 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
3437 .{ ._, .v_ss, .sub, .dst0x, .dst0x, .tmp0d, ._ },
3438 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
33423439 } },
33433440 }, .{
3344 .required_features = .{ .sse2, null, null, null },
3441 .required_features = .{ .sse, null, null, null },
33453442 .src_constraints = .{
3346 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
3347 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
3443 .{ .scalar_float = .{ .of = .word, .is = .word } },
3444 .{ .scalar_float = .{ .of = .word, .is = .word } },
3445 .any,
33483446 },
33493447 .patterns = &.{
3350 .{ .src = .{ .to_mem, .to_mem } },
3448 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
33513449 },
3450 .call_frame = .{ .alignment = .@"16" },
33523451 .extra_temps = .{
3353 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3354 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
3355 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
3452 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },
3453 .unused,
3454 .unused,
33563455 .unused,
33573456 .unused,
33583457 .unused,
......@@ -3360,33 +3459,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33603459 .unused,
33613460 .unused,
33623461 },
3363 .dst_temps = .{.mem},
3364 .clobbers = .{ .eflags = true },
3462 .dst_temps = .{.{ .ref = .src0 }},
3463 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33653464 .each = .{ .once = &.{
3366 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
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", ._, ._, ._ },
3465 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
33763466 } },
33773467 }, .{
3378 .required_features = .{ .cmov, .slow_incdec, null, null },
3468 .required_features = .{ .f16c, null, null, null },
33793469 .src_constraints = .{
3380 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
3381 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
3470 .{ .scalar_float = .{ .of = .qword, .is = .word } },
3471 .{ .scalar_float = .{ .of = .qword, .is = .word } },
3472 .any,
33823473 },
33833474 .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 } },
33853479 },
33863480 .extra_temps = .{
3387 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3388 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
3389 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
3481 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
3482 .unused,
3483 .unused,
33903484 .unused,
33913485 .unused,
33923486 .unused,
......@@ -3394,31 +3488,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33943488 .unused,
33953489 .unused,
33963490 },
3397 .dst_temps = .{.mem},
3398 .clobbers = .{ .eflags = true },
3491 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
33993492 .each = .{ .once = &.{
3400 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3401 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
3402 .{ ._, ._, .movsx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ },
3403 .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ },
3404 .{ ._, ._l, .cmov, .tmp1d, .tmp2d, ._, ._ },
3405 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
3406 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
3407 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3493 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
3494 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
3495 .{ ._, .v_ps, .sub, .dst0x, .dst0x, .tmp0x, ._ },
3496 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
34083497 } },
34093498 }, .{
3410 .required_features = .{ .cmov, null, null, null },
3499 .required_features = .{ .f16c, null, null, null },
34113500 .src_constraints = .{
3412 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
3413 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
3501 .{ .scalar_float = .{ .of = .xword, .is = .word } },
3502 .{ .scalar_float = .{ .of = .xword, .is = .word } },
3503 .any,
34143504 },
34153505 .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 } },
34173510 },
34183511 .extra_temps = .{
3419 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3420 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
3421 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
3512 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
3513 .unused,
3514 .unused,
34223515 .unused,
34233516 .unused,
34243517 .unused,
......@@ -3426,31 +3519,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34263519 .unused,
34273520 .unused,
34283521 },
3429 .dst_temps = .{.mem},
3430 .clobbers = .{ .eflags = true },
3522 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
34313523 .each = .{ .once = &.{
3432 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3433 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
3434 .{ ._, ._, .movsx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ },
3435 .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ },
3436 .{ ._, ._l, .cmov, .tmp1d, .tmp2d, ._, ._ },
3437 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
3438 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
3439 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3524 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
3525 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
3526 .{ ._, .v_ps, .sub, .dst0y, .dst0y, .tmp0y, ._ },
3527 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
34403528 } },
34413529 }, .{
3442 .required_features = .{ .slow_incdec, null, null, null },
3530 .required_features = .{ .f16c, null, null, null },
34433531 .src_constraints = .{
3444 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
3445 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
3532 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
3533 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
3534 .any,
34463535 },
34473536 .patterns = &.{
3448 .{ .src = .{ .to_mem, .to_mem } },
3537 .{ .src = .{ .to_mem, .to_mem, .none } },
34493538 },
34503539 .extra_temps = .{
34513540 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3452 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
3453 .unused,
3541 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
3542 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
34543543 .unused,
34553544 .unused,
34563545 .unused,
......@@ -3461,28 +3550,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34613550 .dst_temps = .{.mem},
34623551 .clobbers = .{ .eflags = true },
34633552 .each = .{ .once = &.{
3464 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3465 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
3466 .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
3467 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },
3468 .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
3469 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
3470 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
3553 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3554 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
3555 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
3556 .{ ._, .v_ps, .sub, .tmp1y, .tmp1y, .tmp2y, ._ },
3557 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
3558 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
34713559 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34723560 } },
34733561 }, .{
3562 .required_features = .{ .avx, null, null, null },
34743563 .src_constraints = .{
3475 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
3476 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
3564 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3565 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3566 .any,
34773567 },
34783568 .patterns = &.{
3479 .{ .src = .{ .to_mem, .to_mem } },
3569 .{ .src = .{ .to_mem, .to_mem, .none } },
34803570 },
3571 .call_frame = .{ .alignment = .@"16" },
34813572 .extra_temps = .{
34823573 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3483 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
3484 .unused,
3485 .unused,
3574 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3575 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
3576 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },
34863577 .unused,
34873578 .unused,
34883579 .unused,
......@@ -3490,149 +3581,215 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34903581 .unused,
34913582 },
34923583 .dst_temps = .{.mem},
3493 .clobbers = .{ .eflags = true },
3584 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34943585 .each = .{ .once = &.{
3495 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3496 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
3497 .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
3498 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },
3499 .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
3500 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
3501 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
3502 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3586 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3587 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
3588 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
3589 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
3590 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
3591 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
3592 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3593 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
35033594 } },
35043595 }, .{
3505 .required_features = .{ .sse, .mmx, null, null },
3596 .required_features = .{ .sse4_1, null, null, null },
35063597 .src_constraints = .{
3507 .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } },
3508 .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } },
3598 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3599 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3600 .any,
35093601 },
35103602 .patterns = &.{
3511 .{ .src = .{ .to_mut_mmx, .mem } },
3512 .{ .src = .{ .mem, .to_mut_mmx }, .commute = .{ 0, 1 } },
3513 .{ .src = .{ .to_mut_mmx, .to_mmx } },
3603 .{ .src = .{ .to_mem, .to_mem, .none } },
35143604 },
3515 .dst_temps = .{.{ .ref = .src0 }},
3516 .each = .{ .once = &.{
3517 .{ ._, .p_b, .maxu, .dst0q, .src1q, ._, ._ },
3605 .call_frame = .{ .alignment = .@"16" },
3606 .extra_temps = .{
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", ._, ._, ._ },
35183704 } },
35193705 }, .{
35203706 .required_features = .{ .avx, null, null, null },
35213707 .src_constraints = .{
3522 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
3523 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
3708 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
3709 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
3710 .any,
35243711 },
35253712 .patterns = &.{
3526 .{ .src = .{ .to_sse, .mem } },
3527 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
3528 .{ .src = .{ .to_sse, .to_sse } },
3713 .{ .src = .{ .to_sse, .mem, .none } },
3714 .{ .src = .{ .to_sse, .to_sse, .none } },
35293715 },
3530 .dst_temps = .{.{ .rc = .sse }},
3716 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
35313717 .each = .{ .once = &.{
3532 .{ ._, .vp_b, .maxu, .dst0x, .src0x, .src1x, ._ },
3718 .{ ._, .v_ss, .sub, .dst0x, .src0x, .src1d, ._ },
35333719 } },
35343720 }, .{
3535 .required_features = .{ .sse2, null, null, null },
3721 .required_features = .{ .sse, null, null, null },
35363722 .src_constraints = .{
3537 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
3538 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
3723 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
3724 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
3725 .any,
35393726 },
35403727 .patterns = &.{
3541 .{ .src = .{ .to_mut_sse, .mem } },
3542 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
3543 .{ .src = .{ .to_mut_sse, .to_sse } },
3728 .{ .src = .{ .to_mut_sse, .mem, .none } },
3729 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
35443730 },
35453731 .dst_temps = .{.{ .ref = .src0 }},
35463732 .each = .{ .once = &.{
3547 .{ ._, .p_b, .maxu, .dst0x, .src1x, ._, ._ },
3733 .{ ._, ._ss, .sub, .dst0x, .src1d, ._, ._ },
35483734 } },
35493735 }, .{
3550 .required_features = .{ .avx2, null, null, null },
3736 .required_features = .{ .avx, null, null, null },
35513737 .src_constraints = .{
3552 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
3553 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
3738 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
3739 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
3740 .any,
35543741 },
35553742 .patterns = &.{
3556 .{ .src = .{ .to_sse, .mem } },
3557 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
3558 .{ .src = .{ .to_sse, .to_sse } },
3743 .{ .src = .{ .to_sse, .mem, .none } },
3744 .{ .src = .{ .to_sse, .to_sse, .none } },
35593745 },
3560 .dst_temps = .{.{ .rc = .sse }},
3746 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
35613747 .each = .{ .once = &.{
3562 .{ ._, .vp_b, .maxu, .dst0y, .src0y, .src1y, ._ },
3748 .{ ._, .v_ps, .sub, .dst0x, .src0x, .src1x, ._ },
35633749 } },
35643750 }, .{
3565 .required_features = .{ .avx2, null, null, null },
3751 .required_features = .{ .sse, null, null, null },
35663752 .src_constraints = .{
3567 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
3568 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
3753 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
3754 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
3755 .any,
35693756 },
35703757 .patterns = &.{
3571 .{ .src = .{ .to_mem, .to_mem } },
3572 },
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,
3758 .{ .src = .{ .to_mut_sse, .mem, .none } },
3759 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
35833760 },
3584 .dst_temps = .{.mem},
3585 .clobbers = .{ .eflags = true },
3761 .dst_temps = .{.{ .ref = .src0 }},
35863762 .each = .{ .once = &.{
3587 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
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", ._, ._, ._ },
3763 .{ ._, ._ps, .sub, .dst0x, .src1x, ._, ._ },
35933764 } },
35943765 }, .{
35953766 .required_features = .{ .avx, null, null, null },
35963767 .src_constraints = .{
3597 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
3598 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
3768 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
3769 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
3770 .any,
35993771 },
36003772 .patterns = &.{
3601 .{ .src = .{ .to_mem, .to_mem } },
3602 },
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,
3773 .{ .src = .{ .to_sse, .mem, .none } },
3774 .{ .src = .{ .to_sse, .to_sse, .none } },
36133775 },
3614 .dst_temps = .{.mem},
3615 .clobbers = .{ .eflags = true },
3776 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
36163777 .each = .{ .once = &.{
3617 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
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", ._, ._, ._ },
3778 .{ ._, .v_ps, .sub, .dst0y, .src0y, .src1y, ._ },
36233779 } },
36243780 }, .{
3625 .required_features = .{ .sse2, null, null, null },
3781 .required_features = .{ .avx, null, null, null },
36263782 .src_constraints = .{
3627 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
3628 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
3783 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
3784 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
3785 .any,
36293786 },
36303787 .patterns = &.{
3631 .{ .src = .{ .to_mem, .to_mem } },
3788 .{ .src = .{ .to_mem, .to_mem, .none } },
36323789 },
36333790 .extra_temps = .{
36343791 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3635 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
3792 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
36363793 .unused,
36373794 .unused,
36383795 .unused,
......@@ -3644,26 +3801,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36443801 .dst_temps = .{.mem},
36453802 .clobbers = .{ .eflags = true },
36463803 .each = .{ .once = &.{
3647 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3648 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
3649 .{ ._, .p_b, .maxu, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
3650 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
3651 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3804 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3805 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
3806 .{ ._, .v_ps, .sub, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
3807 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
3808 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
36523809 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36533810 } },
36543811 }, .{
3655 .required_features = .{ .cmov, .slow_incdec, null, null },
3812 .required_features = .{ .sse, null, null, null },
36563813 .src_constraints = .{
3657 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
3658 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
3814 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
3815 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
3816 .any,
36593817 },
36603818 .patterns = &.{
3661 .{ .src = .{ .to_mem, .to_mem } },
3819 .{ .src = .{ .to_mem, .to_mem, .none } },
36623820 },
36633821 .extra_temps = .{
36643822 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3665 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
3666 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
3823 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
3824 .unused,
36673825 .unused,
36683826 .unused,
36693827 .unused,
......@@ -3674,90 +3832,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36743832 .dst_temps = .{.mem},
36753833 .clobbers = .{ .eflags = true },
36763834 .each = .{ .once = &.{
3677 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3678 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
3679 .{ ._, ._, .movzx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ },
3680 .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ },
3681 .{ ._, ._b, .cmov, .tmp1d, .tmp2d, ._, ._ },
3682 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
3683 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
3835 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3836 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
3837 .{ ._, ._ps, .sub, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
3838 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
3839 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
36843840 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36853841 } },
36863842 }, .{
3687 .required_features = .{ .cmov, null, null, null },
3843 .required_features = .{ .avx, null, null, null },
36883844 .src_constraints = .{
3689 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
3690 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
3845 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3846 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3847 .any,
36913848 },
36923849 .patterns = &.{
3693 .{ .src = .{ .to_mem, .to_mem } },
3694 },
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,
3850 .{ .src = .{ .to_sse, .mem, .none } },
3851 .{ .src = .{ .to_sse, .to_sse, .none } },
37053852 },
3706 .dst_temps = .{.mem},
3707 .clobbers = .{ .eflags = true },
3853 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
37083854 .each = .{ .once = &.{
3709 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
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", ._, ._, ._ },
3855 .{ ._, .v_sd, .sub, .dst0x, .src0x, .src1q, ._ },
37173856 } },
37183857 }, .{
3719 .required_features = .{ .slow_incdec, null, null, null },
3858 .required_features = .{ .sse2, null, null, null },
37203859 .src_constraints = .{
3721 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
3722 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
3860 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3861 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3862 .any,
37233863 },
37243864 .patterns = &.{
3725 .{ .src = .{ .to_mem, .to_mem } },
3726 },
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,
3865 .{ .src = .{ .to_mut_sse, .mem, .none } },
3866 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
37373867 },
3738 .dst_temps = .{.mem},
3739 .clobbers = .{ .eflags = true },
3868 .dst_temps = .{.{ .ref = .src0 }},
37403869 .each = .{ .once = &.{
3741 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
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", ._, ._, ._ },
3870 .{ ._, ._sd, .sub, .dst0x, .src1q, ._, ._ },
37493871 } },
37503872 }, .{
3873 .required_features = .{ .x87, null, null, null },
37513874 .src_constraints = .{
3752 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
3753 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
3875 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3876 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3877 .any,
37543878 },
37553879 .patterns = &.{
3756 .{ .src = .{ .to_mem, .to_mem } },
3880 .{ .src = .{ .mem, .mem, .none } },
37573881 },
37583882 .extra_temps = .{
3759 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3760 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
3883 .{ .type = .f64, .kind = .{ .reg = .st6 } },
3884 .{ .type = .f64, .kind = .{ .reg = .st7 } },
37613885 .unused,
37623886 .unused,
37633887 .unused,
......@@ -3767,89 +3891,70 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37673891 .unused,
37683892 },
37693893 .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 }},
37933894 .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, ._, ._, ._ },
37953899 } },
37963900 }, .{
37973901 .required_features = .{ .avx, null, null, null },
37983902 .src_constraints = .{
3799 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
3800 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
3903 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3904 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3905 .any,
38013906 },
38023907 .patterns = &.{
3803 .{ .src = .{ .to_sse, .mem } },
3804 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
3805 .{ .src = .{ .to_sse, .to_sse } },
3908 .{ .src = .{ .to_sse, .mem, .none } },
3909 .{ .src = .{ .to_sse, .to_sse, .none } },
38063910 },
3807 .dst_temps = .{.{ .rc = .sse }},
3911 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
38083912 .each = .{ .once = &.{
3809 .{ ._, .vp_w, .maxs, .dst0x, .src0x, .src1x, ._ },
3913 .{ ._, .v_pd, .sub, .dst0x, .src0x, .src1x, ._ },
38103914 } },
38113915 }, .{
38123916 .required_features = .{ .sse2, null, null, null },
38133917 .src_constraints = .{
3814 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
3815 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
3918 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3919 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3920 .any,
38163921 },
38173922 .patterns = &.{
3818 .{ .src = .{ .to_mut_sse, .mem } },
3819 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
3820 .{ .src = .{ .to_mut_sse, .to_sse } },
3923 .{ .src = .{ .to_mut_sse, .mem, .none } },
3924 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
38213925 },
38223926 .dst_temps = .{.{ .ref = .src0 }},
38233927 .each = .{ .once = &.{
3824 .{ ._, .p_w, .maxs, .dst0x, .src1x, ._, ._ },
3928 .{ ._, ._pd, .sub, .dst0x, .src1x, ._, ._ },
38253929 } },
38263930 }, .{
3827 .required_features = .{ .avx2, null, null, null },
3931 .required_features = .{ .avx, null, null, null },
38283932 .src_constraints = .{
3829 .{ .scalar_signed_int = .{ .of = .yword, .is = .word } },
3830 .{ .scalar_signed_int = .{ .of = .yword, .is = .word } },
3933 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
3934 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
3935 .any,
38313936 },
38323937 .patterns = &.{
3833 .{ .src = .{ .to_sse, .mem } },
3834 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
3835 .{ .src = .{ .to_sse, .to_sse } },
3938 .{ .src = .{ .to_sse, .mem, .none } },
3939 .{ .src = .{ .to_sse, .to_sse, .none } },
38363940 },
3837 .dst_temps = .{.{ .rc = .sse }},
3941 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
38383942 .each = .{ .once = &.{
3839 .{ ._, .vp_w, .maxs, .dst0y, .src0y, .src1y, ._ },
3943 .{ ._, .v_pd, .sub, .dst0y, .src0y, .src1y, ._ },
38403944 } },
38413945 }, .{
3842 .required_features = .{ .avx2, null, null, null },
3946 .required_features = .{ .avx, null, null, null },
38433947 .src_constraints = .{
3844 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } },
3845 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } },
3948 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
3949 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
3950 .any,
38463951 },
38473952 .patterns = &.{
3848 .{ .src = .{ .to_mem, .to_mem } },
3953 .{ .src = .{ .to_mem, .to_mem, .none } },
38493954 },
38503955 .extra_temps = .{
38513956 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3852 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
3957 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
38533958 .unused,
38543959 .unused,
38553960 .unused,
......@@ -3861,25 +3966,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38613966 .dst_temps = .{.mem},
38623967 .clobbers = .{ .eflags = true },
38633968 .each = .{ .once = &.{
3864 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3865 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
3866 .{ ._, .vp_w, .maxs, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
3867 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
3969 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3970 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
3971 .{ ._, .v_pd, .sub, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
3972 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
38683973 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
38693974 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38703975 } },
38713976 }, .{
3872 .required_features = .{ .avx, null, null, null },
3977 .required_features = .{ .sse2, null, null, null },
38733978 .src_constraints = .{
3874 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
3875 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
3979 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
3980 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
3981 .any,
38763982 },
38773983 .patterns = &.{
3878 .{ .src = .{ .to_mem, .to_mem } },
3984 .{ .src = .{ .to_mem, .to_mem, .none } },
38793985 },
38803986 .extra_temps = .{
38813987 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3882 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
3988 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
38833989 .unused,
38843990 .unused,
38853991 .unused,
......@@ -3891,26 +3997,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38913997 .dst_temps = .{.mem},
38923998 .clobbers = .{ .eflags = true },
38933999 .each = .{ .once = &.{
3894 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3895 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
3896 .{ ._, .vp_w, .maxs, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },
3897 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
4000 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4001 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4002 .{ ._, ._pd, .sub, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4003 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
38984004 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
38994005 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
39004006 } },
39014007 }, .{
3902 .required_features = .{ .sse2, null, null, null },
4008 .required_features = .{ .x87, null, null, null },
39034009 .src_constraints = .{
3904 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
3905 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
4010 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
4011 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
4012 .any,
39064013 },
39074014 .patterns = &.{
3908 .{ .src = .{ .to_mem, .to_mem } },
4015 .{ .src = .{ .to_mem, .to_mem, .none } },
39094016 },
39104017 .extra_temps = .{
39114018 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3912 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
3913 .unused,
4019 .{ .type = .f64, .kind = .{ .reg = .st6 } },
4020 .{ .type = .f64, .kind = .{ .reg = .st7 } },
39144021 .unused,
39154022 .unused,
39164023 .unused,
......@@ -3919,27 +4026,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39194026 .unused,
39204027 },
39214028 .dst_temps = .{.mem},
3922 .clobbers = .{ .eflags = true },
39234029 .each = .{ .once = &.{
3924 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3925 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
3926 .{ ._, .p_w, .maxs, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
3927 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
3928 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4030 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4031 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
4032 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ },
4033 .{ ._, .f_p, .sub, ._, ._, ._, ._ },
4034 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
4035 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
39294036 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
39304037 } },
39314038 }, .{
3932 .required_features = .{ .cmov, null, null, null },
4039 .required_features = .{ .x87, null, null, null },
39334040 .src_constraints = .{
3934 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
3935 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
4041 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4042 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4043 .any,
39364044 },
39374045 .patterns = &.{
3938 .{ .src = .{ .to_mem, .to_mem } },
4046 .{ .src = .{ .mem, .mem, .none } },
39394047 },
39404048 .extra_temps = .{
3941 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3942 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
4049 .{ .type = .f80, .kind = .{ .reg = .st6 } },
4050 .{ .type = .f80, .kind = .{ .reg = .st7 } },
39434051 .unused,
39444052 .unused,
39454053 .unused,
......@@ -3948,28 +4056,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39484056 .unused,
39494057 .unused,
39504058 },
3951 .dst_temps = .{.mem},
3952 .clobbers = .{ .eflags = true },
4059 .dst_temps = .{.{ .rc = .x87 }},
39534060 .each = .{ .once = &.{
3954 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3955 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
3956 .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
3957 .{ ._, ._l, .cmov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
3958 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
3959 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3960 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4061 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
4062 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
4063 .{ ._, .f_p, .sub, ._, ._, ._, ._ },
4064 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
39614065 } },
39624066 }, .{
4067 .required_features = .{ .x87, null, null, null },
39634068 .src_constraints = .{
3964 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
3965 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
4069 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4070 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4071 .any,
39664072 },
39674073 .patterns = &.{
3968 .{ .src = .{ .to_mem, .to_mem } },
4074 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
39694075 },
39704076 .extra_temps = .{
3971 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3972 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
4077 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4078 .unused,
39734079 .unused,
39744080 .unused,
39754081 .unused,
......@@ -3978,91 +4084,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39784084 .unused,
39794085 .unused,
39804086 },
3981 .dst_temps = .{.mem},
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 }},
4087 .dst_temps = .{.{ .rc = .x87 }},
40514088 .each = .{ .once = &.{
4052 .{ ._, .vp_w, .maxu, .dst0y, .src0y, .src1y, ._ },
4089 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
4090 .{ ._, .f_, .subr, .tmp0t, .src1t, ._, ._ },
4091 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
40534092 } },
40544093 }, .{
4055 .required_features = .{ .avx2, null, null, null },
4094 .required_features = .{ .x87, null, null, null },
40564095 .src_constraints = .{
4057 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } },
4058 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } },
4096 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4097 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4098 .any,
40594099 },
40604100 .patterns = &.{
4061 .{ .src = .{ .to_mem, .to_mem } },
4101 .{ .src = .{ .mem, .to_x87, .none } },
4102 .{ .src = .{ .to_x87, .to_x87, .none } },
40624103 },
40634104 .extra_temps = .{
4064 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4065 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
4105 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4106 .unused,
40664107 .unused,
40674108 .unused,
40684109 .unused,
......@@ -4071,29 +4112,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40714112 .unused,
40724113 .unused,
40734114 },
4074 .dst_temps = .{.mem},
4075 .clobbers = .{ .eflags = true },
4115 .dst_temps = .{.{ .rc = .x87 }},
40764116 .each = .{ .once = &.{
4077 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4078 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
4079 .{ ._, .vp_w, .maxu, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
4080 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
4081 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
4082 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4117 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
4118 .{ ._, .f_, .sub, .tmp0t, .src1t, ._, ._ },
4119 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
40834120 } },
40844121 }, .{
4085 .required_features = .{ .avx, null, null, null },
4122 .required_features = .{ .x87, null, null, null },
40864123 .src_constraints = .{
4087 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
4088 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
4124 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
4125 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
4126 .any,
40894127 },
40904128 .patterns = &.{
4091 .{ .src = .{ .to_mem, .to_mem } },
4129 .{ .src = .{ .to_mem, .to_mem, .none } },
40924130 },
40934131 .extra_temps = .{
40944132 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4095 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
4096 .unused,
4133 .{ .type = .f80, .kind = .{ .reg = .st6 } },
4134 .{ .type = .f80, .kind = .{ .reg = .st7 } },
40974135 .unused,
40984136 .unused,
40994137 .unused,
......@@ -4102,27 +4140,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
41024140 .unused,
41034141 },
41044142 .dst_temps = .{.mem},
4105 .clobbers = .{ .eflags = true },
41064143 .each = .{ .once = &.{
4107 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4108 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
4109 .{ ._, .vp_w, .maxu, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },
4110 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
4144 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4145 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
4146 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
4147 .{ ._, .f_p, .sub, ._, ._, ._, ._ },
4148 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
41114149 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
41124150 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41134151 } },
41144152 }, .{
4115 .required_features = .{ .sse4_1, null, null, null },
4153 .required_features = .{ .sse, null, null, null },
41164154 .src_constraints = .{
4117 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
4118 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
4155 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
4156 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
4157 .any,
41194158 },
41204159 .patterns = &.{
4121 .{ .src = .{ .to_mem, .to_mem } },
4160 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
41224161 },
4162 .call_frame = .{ .alignment = .@"16" },
41234163 .extra_temps = .{
4124 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4125 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
4164 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },
4165 .unused,
41264166 .unused,
41274167 .unused,
41284168 .unused,
......@@ -4131,30 +4171,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
41314171 .unused,
41324172 .unused,
41334173 },
4134 .dst_temps = .{.mem},
4135 .clobbers = .{ .eflags = true },
4174 .dst_temps = .{.{ .ref = .src0 }},
4175 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
41364176 .each = .{ .once = &.{
4137 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
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", ._, ._, ._ },
4177 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
41434178 } },
41444179 }, .{
4145 .required_features = .{ .sse2, null, null, null },
4180 .required_features = .{ .avx, null, null, null },
41464181 .src_constraints = .{
4147 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
4148 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
4182 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4183 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4184 .any,
41494185 },
41504186 .patterns = &.{
4151 .{ .src = .{ .to_mem, .to_mem } },
4187 .{ .src = .{ .to_mem, .to_mem, .none } },
41524188 },
4189 .call_frame = .{ .alignment = .@"16" },
41534190 .extra_temps = .{
41544191 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4155 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
4156 .unused,
4157 .unused,
4192 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4193 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4194 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },
41584195 .unused,
41594196 .unused,
41604197 .unused,
......@@ -4162,30 +4199,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
41624199 .unused,
41634200 },
41644201 .dst_temps = .{.mem},
4165 .clobbers = .{ .eflags = true },
4202 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
41664203 .each = .{ .once = &.{
4167 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4168 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
4169 .{ ._, .p_w, .subus, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
4170 .{ ._, .p_w, .add, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
4171 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
4204 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4205 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4206 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4207 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4208 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
41724209 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
41734210 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41744211 } },
41754212 }, .{
4176 .required_features = .{ .cmov, null, null, null },
4213 .required_features = .{ .sse2, null, null, null },
41774214 .src_constraints = .{
4178 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
4179 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
4215 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4216 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4217 .any,
41804218 },
41814219 .patterns = &.{
4182 .{ .src = .{ .to_mem, .to_mem } },
4220 .{ .src = .{ .to_mem, .to_mem, .none } },
41834221 },
4222 .call_frame = .{ .alignment = .@"16" },
41844223 .extra_temps = .{
41854224 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4186 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
4187 .unused,
4188 .unused,
4225 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4226 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4227 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },
41894228 .unused,
41904229 .unused,
41914230 .unused,
......@@ -4193,29 +4232,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
41934232 .unused,
41944233 },
41954234 .dst_temps = .{.mem},
4196 .clobbers = .{ .eflags = true },
4235 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
41974236 .each = .{ .once = &.{
4198 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4199 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
4200 .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
4201 .{ ._, ._b, .cmov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
4202 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
4203 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
4237 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4238 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4239 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4240 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4241 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
4242 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
42044243 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
42054244 } },
42064245 }, .{
4246 .required_features = .{ .sse, null, null, null },
42074247 .src_constraints = .{
4208 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
4209 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
4248 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4249 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4250 .any,
42104251 },
42114252 .patterns = &.{
4212 .{ .src = .{ .to_mem, .to_mem } },
4253 .{ .src = .{ .to_mem, .to_mem, .none } },
42134254 },
4255 .call_frame = .{ .alignment = .@"16" },
42144256 .extra_temps = .{
42154257 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4216 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
4217 .unused,
4218 .unused,
4258 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4259 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4260 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },
42194261 .unused,
42204262 .unused,
42214263 .unused,
......@@ -4223,94 +4265,163 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
42234265 .unused,
42244266 },
42254267 .dst_temps = .{.mem},
4226 .clobbers = .{ .eflags = true },
4268 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
42274269 .each = .{ .once = &.{
4228 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4229 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
4230 .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
4231 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
4232 .{ ._, ._, .mov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
4233 .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
4234 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
4270 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4271 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4272 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4273 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4274 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
4275 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
42354276 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
42364277 } },
4237 }, .{
4238 .required_features = .{ .avx, null, null, null },
4278 } }) catch |err| switch (err) {
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 },
42394296 .src_constraints = .{
4240 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
4241 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
4297 .{ .scalar_float = .{ .of = .word, .is = .word } },
4298 .{ .scalar_float = .{ .of = .word, .is = .word } },
4299 .any,
42424300 },
42434301 .patterns = &.{
4244 .{ .src = .{ .to_sse, .mem } },
4245 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
4246 .{ .src = .{ .to_sse, .to_sse } },
4302 .{ .src = .{ .to_sse, .to_sse, .none } },
42474303 },
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 } }},
42494316 .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(.{}), ._ },
42514321 } },
42524322 }, .{
4253 .required_features = .{ .sse4_1, null, null, null },
4323 .required_features = .{ .sse, null, null, null },
42544324 .src_constraints = .{
4255 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
4256 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
4325 .{ .scalar_float = .{ .of = .word, .is = .word } },
4326 .{ .scalar_float = .{ .of = .word, .is = .word } },
4327 .any,
42574328 },
42584329 .patterns = &.{
4259 .{ .src = .{ .to_mut_sse, .mem } },
4260 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
4261 .{ .src = .{ .to_mut_sse, .to_sse } },
4330 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
4331 },
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,
42624343 },
42634344 .dst_temps = .{.{ .ref = .src0 }},
4345 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
42644346 .each = .{ .once = &.{
4265 .{ ._, .p_d, .maxs, .dst0x, .src1x, ._, ._ },
4347 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
42664348 } },
42674349 }, .{
4268 .required_features = .{ .sse2, null, null, null },
4350 .required_features = .{ .f16c, null, null, null },
42694351 .src_constraints = .{
4270 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
4271 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
4352 .{ .scalar_float = .{ .of = .qword, .is = .word } },
4353 .{ .scalar_float = .{ .of = .qword, .is = .word } },
4354 .any,
42724355 },
42734356 .patterns = &.{
4274 .{ .src = .{ .to_mut_sse, .mem } },
4275 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
4276 .{ .src = .{ .to_mut_sse, .to_sse } },
4357 .{ .src = .{ .mem, .mem, .none } },
4358 .{ .src = .{ .to_sse, .mem, .none } },
4359 .{ .src = .{ .mem, .to_sse, .none } },
4360 .{ .src = .{ .to_sse, .to_sse, .none } },
42774361 },
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 } }},
42794374 .each = .{ .once = &.{
4280 .{ ._, ._dqa, .mov, .dst0x, .src0x, ._, ._ },
4281 .{ ._, .p_d, .cmpgt, .dst0x, .src1x, ._, ._ },
4282 .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ },
4283 .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ },
4284 .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ },
4375 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
4376 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
4377 .{ ._, .v_ps, .mul, .dst0x, .dst0x, .tmp0x, ._ },
4378 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
42854379 } },
42864380 }, .{
4287 .required_features = .{ .avx2, null, null, null },
4381 .required_features = .{ .f16c, null, null, null },
42884382 .src_constraints = .{
4289 .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } },
4290 .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } },
4383 .{ .scalar_float = .{ .of = .xword, .is = .word } },
4384 .{ .scalar_float = .{ .of = .xword, .is = .word } },
4385 .any,
42914386 },
42924387 .patterns = &.{
4293 .{ .src = .{ .to_sse, .mem } },
4294 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
4295 .{ .src = .{ .to_sse, .to_sse } },
4388 .{ .src = .{ .mem, .mem, .none } },
4389 .{ .src = .{ .to_sse, .mem, .none } },
4390 .{ .src = .{ .mem, .to_sse, .none } },
4391 .{ .src = .{ .to_sse, .to_sse, .none } },
42964392 },
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 } }},
42984405 .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(.{}), ._ },
43004410 } },
43014411 }, .{
4302 .required_features = .{ .avx2, null, null, null },
4412 .required_features = .{ .f16c, null, null, null },
43034413 .src_constraints = .{
4304 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } },
4305 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } },
4414 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
4415 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
4416 .any,
43064417 },
43074418 .patterns = &.{
4308 .{ .src = .{ .to_mem, .to_mem } },
4419 .{ .src = .{ .to_mem, .to_mem, .none } },
43094420 },
43104421 .extra_temps = .{
43114422 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4312 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
4313 .unused,
4423 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
4424 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
43144425 .unused,
43154426 .unused,
43164427 .unused,
......@@ -4321,27 +4432,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
43214432 .dst_temps = .{.mem},
43224433 .clobbers = .{ .eflags = true },
43234434 .each = .{ .once = &.{
4324 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4325 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
4326 .{ ._, .vp_d, .maxs, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
4327 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
4328 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
4435 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4436 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4437 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4438 .{ ._, .v_ps, .mul, .tmp1y, .tmp1y, .tmp2y, ._ },
4439 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
4440 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
43294441 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
43304442 } },
43314443 }, .{
43324444 .required_features = .{ .avx, null, null, null },
43334445 .src_constraints = .{
4334 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
4335 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
4446 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4447 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4448 .any,
43364449 },
43374450 .patterns = &.{
4338 .{ .src = .{ .to_mem, .to_mem } },
4451 .{ .src = .{ .to_mem, .to_mem, .none } },
43394452 },
4453 .call_frame = .{ .alignment = .@"16" },
43404454 .extra_temps = .{
43414455 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4342 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
4343 .unused,
4344 .unused,
4456 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
4457 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
4458 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
43454459 .unused,
43464460 .unused,
43474461 .unused,
......@@ -4349,29 +4463,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
43494463 .unused,
43504464 },
43514465 .dst_temps = .{.mem},
4352 .clobbers = .{ .eflags = true },
4466 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43534467 .each = .{ .once = &.{
4354 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4355 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
4356 .{ ._, .vp_d, .maxs, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },
4357 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
4358 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4468 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4469 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
4470 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
4471 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
4472 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4473 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
4474 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
43594475 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
43604476 } },
43614477 }, .{
43624478 .required_features = .{ .sse4_1, null, null, null },
43634479 .src_constraints = .{
4364 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
4365 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
4480 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4481 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4482 .any,
43664483 },
43674484 .patterns = &.{
4368 .{ .src = .{ .to_mem, .to_mem } },
4485 .{ .src = .{ .to_mem, .to_mem, .none } },
43694486 },
4487 .call_frame = .{ .alignment = .@"16" },
43704488 .extra_temps = .{
43714489 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4372 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
4373 .unused,
4374 .unused,
4490 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
4491 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
4492 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
43754493 .unused,
43764494 .unused,
43774495 .unused,
......@@ -4379,61 +4497,186 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
43794497 .unused,
43804498 },
43814499 .dst_temps = .{.mem},
4382 .clobbers = .{ .eflags = true },
4500 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43834501 .each = .{ .once = &.{
4384 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4385 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
4386 .{ ._, .p_d, .maxs, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
4387 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
4388 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4502 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4503 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
4504 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
4505 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
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), ._, ._ },
43894510 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
43904511 } },
43914512 }, .{
43924513 .required_features = .{ .sse2, null, null, null },
43934514 .src_constraints = .{
4394 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
4395 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
4515 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4516 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4517 .any,
43964518 },
43974519 .patterns = &.{
4398 .{ .src = .{ .to_mem, .to_mem } },
4520 .{ .src = .{ .to_mem, .to_mem, .none } },
43994521 },
4522 .call_frame = .{ .alignment = .@"16" },
44004523 .extra_temps = .{
44014524 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4402 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
4403 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
4525 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
4526 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
4527 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
4528 .{ .type = .f16, .kind = .{ .reg = .ax } },
4529 .unused,
44044530 .unused,
44054531 .unused,
44064532 .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" } } },
44074566 .unused,
44084567 .unused,
44094568 .unused,
44104569 },
44114570 .dst_temps = .{.mem},
4412 .clobbers = .{ .eflags = true },
4571 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44134572 .each = .{ .once = &.{
4414 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4415 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
4416 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
4417 .{ ._, .p_d, .cmpgt, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
4418 .{ ._, .p_, .@"and", .tmp2x, .tmp1x, ._, ._ },
4419 .{ ._, .p_, .andn, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
4420 .{ ._, .p_, .@"or", .tmp1x, .tmp2x, ._, ._ },
4421 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
4422 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4573 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4574 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
4575 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
4576 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
4577 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
4578 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
4579 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
4580 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
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), ._, ._ },
44234585 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
44244586 } },
44254587 }, .{
4426 .required_features = .{ .cmov, null, null, null },
4588 .required_features = .{ .avx, null, null, null },
44274589 .src_constraints = .{
4428 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
4429 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
4590 .{ .scalar_float = .{ .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,
44304673 },
44314674 .patterns = &.{
4432 .{ .src = .{ .to_mem, .to_mem } },
4675 .{ .src = .{ .to_mem, .to_mem, .none } },
44334676 },
44344677 .extra_temps = .{
44354678 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4436 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
4679 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
44374680 .unused,
44384681 .unused,
44394682 .unused,
......@@ -4445,25 +4688,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
44454688 .dst_temps = .{.mem},
44464689 .clobbers = .{ .eflags = true },
44474690 .each = .{ .once = &.{
4448 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4449 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
4450 .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
4451 .{ ._, ._l, .cmov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
4452 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
4453 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
4691 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4692 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
4693 .{ ._, .v_ps, .mul, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
4694 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
4695 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
44544696 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
44554697 } },
44564698 }, .{
4699 .required_features = .{ .sse, null, null, null },
44574700 .src_constraints = .{
4458 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
4459 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
4701 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
4702 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
4703 .any,
44604704 },
44614705 .patterns = &.{
4462 .{ .src = .{ .to_mem, .to_mem } },
4706 .{ .src = .{ .to_mem, .to_mem, .none } },
44634707 },
44644708 .extra_temps = .{
44654709 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4466 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
4710 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
44674711 .unused,
44684712 .unused,
44694713 .unused,
......@@ -4475,60 +4719,59 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
44754719 .dst_temps = .{.mem},
44764720 .clobbers = .{ .eflags = true },
44774721 .each = .{ .once = &.{
4478 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4479 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
4480 .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
4481 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },
4482 .{ ._, ._, .mov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
4483 .{ .@"1:", ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
4484 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
4722 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4723 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4724 .{ ._, ._ps, .mul, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4725 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
4726 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
44854727 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
44864728 } },
44874729 }, .{
44884730 .required_features = .{ .avx, null, null, null },
44894731 .src_constraints = .{
4490 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
4491 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
4732 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
4733 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
4734 .any,
44924735 },
44934736 .patterns = &.{
4494 .{ .src = .{ .to_sse, .mem } },
4495 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
4496 .{ .src = .{ .to_sse, .to_sse } },
4737 .{ .src = .{ .to_sse, .mem, .none } },
4738 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
4739 .{ .src = .{ .to_sse, .to_sse, .none } },
44974740 },
4498 .dst_temps = .{.{ .rc = .sse }},
4741 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
44994742 .each = .{ .once = &.{
4500 .{ ._, .vp_d, .maxu, .dst0x, .src0x, .src1x, ._ },
4743 .{ ._, .v_sd, .mul, .dst0x, .src0x, .src1q, ._ },
45014744 } },
45024745 }, .{
4503 .required_features = .{ .sse4_1, null, null, null },
4746 .required_features = .{ .sse2, null, null, null },
45044747 .src_constraints = .{
4505 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
4506 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
4748 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
4749 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
4750 .any,
45074751 },
45084752 .patterns = &.{
4509 .{ .src = .{ .to_mut_sse, .mem } },
4510 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
4511 .{ .src = .{ .to_mut_sse, .to_sse } },
4753 .{ .src = .{ .to_mut_sse, .mem, .none } },
4754 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
4755 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
45124756 },
45134757 .dst_temps = .{.{ .ref = .src0 }},
45144758 .each = .{ .once = &.{
4515 .{ ._, .p_d, .maxu, .dst0x, .src1x, ._, ._ },
4759 .{ ._, ._sd, .mul, .dst0x, .src1q, ._, ._ },
45164760 } },
45174761 }, .{
4518 .required_features = .{ .sse2, null, null, null },
4762 .required_features = .{ .x87, null, null, null },
45194763 .src_constraints = .{
4520 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
4521 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
4764 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
4765 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
4766 .any,
45224767 },
45234768 .patterns = &.{
4524 .{ .src = .{ .to_mut_sse, .mem } },
4525 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
4526 .{ .src = .{ .to_mut_sse, .to_sse } },
4769 .{ .src = .{ .mem, .mem, .none } },
45274770 },
45284771 .extra_temps = .{
4529 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
4530 .{ .type = .vector_4_u32, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
4531 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
4772 .{ .type = .f64, .kind = .{ .reg = .st6 } },
4773 .{ .type = .f64, .kind = .{ .reg = .st7 } },
4774 .unused,
45324775 .unused,
45334776 .unused,
45344777 .unused,
......@@ -4536,45 +4779,74 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
45364779 .unused,
45374780 .unused,
45384781 },
4539 .dst_temps = .{.{ .rc = .sse }},
4782 .dst_temps = .{.mem},
45404783 .each = .{ .once = &.{
4541 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
4542 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
4543 .{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ },
4544 .{ ._, .p_, .xor, .dst0x, .src0x, ._, ._ },
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, ._, ._ },
4784 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
4785 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
4786 .{ ._, .f_p, .mul, ._, ._, ._, ._ },
4787 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
45504788 } },
45514789 }, .{
4552 .required_features = .{ .avx2, null, null, null },
4790 .required_features = .{ .avx, null, null, null },
45534791 .src_constraints = .{
4554 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
4555 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
4792 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
4793 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
4794 .any,
45564795 },
45574796 .patterns = &.{
4558 .{ .src = .{ .to_sse, .mem } },
4559 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
4560 .{ .src = .{ .to_sse, .to_sse } },
4797 .{ .src = .{ .to_sse, .mem, .none } },
4798 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
4799 .{ .src = .{ .to_sse, .to_sse, .none } },
45614800 },
4562 .dst_temps = .{.{ .rc = .sse }},
4801 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
45634802 .each = .{ .once = &.{
4564 .{ ._, .vp_d, .maxu, .dst0y, .src0y, .src1y, ._ },
4803 .{ ._, .v_pd, .mul, .dst0x, .src0x, .src1x, ._ },
45654804 } },
45664805 }, .{
4567 .required_features = .{ .avx2, null, null, null },
4806 .required_features = .{ .sse2, null, null, null },
45684807 .src_constraints = .{
4569 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
4570 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
4808 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
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,
45714843 },
45724844 .patterns = &.{
4573 .{ .src = .{ .to_mem, .to_mem } },
4845 .{ .src = .{ .to_mem, .to_mem, .none } },
45744846 },
45754847 .extra_temps = .{
45764848 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4577 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
4849 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
45784850 .unused,
45794851 .unused,
45804852 .unused,
......@@ -4586,25 +4858,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
45864858 .dst_temps = .{.mem},
45874859 .clobbers = .{ .eflags = true },
45884860 .each = .{ .once = &.{
4589 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4590 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
4591 .{ ._, .vp_d, .maxu, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
4592 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
4861 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4862 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
4863 .{ ._, .v_pd, .mul, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
4864 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
45934865 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
45944866 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
45954867 } },
45964868 }, .{
4597 .required_features = .{ .avx, null, null, null },
4869 .required_features = .{ .sse2, null, null, null },
45984870 .src_constraints = .{
4599 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
4600 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
4871 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
4872 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
4873 .any,
46014874 },
46024875 .patterns = &.{
4603 .{ .src = .{ .to_mem, .to_mem } },
4876 .{ .src = .{ .to_mem, .to_mem, .none } },
46044877 },
46054878 .extra_temps = .{
46064879 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4607 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
4880 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
46084881 .unused,
46094882 .unused,
46104883 .unused,
......@@ -4616,26 +4889,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
46164889 .dst_temps = .{.mem},
46174890 .clobbers = .{ .eflags = true },
46184891 .each = .{ .once = &.{
4619 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4620 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
4621 .{ ._, .vp_d, .maxu, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },
4622 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
4892 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4893 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4894 .{ ._, ._pd, .mul, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4895 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
46234896 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
46244897 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
46254898 } },
46264899 }, .{
4627 .required_features = .{ .sse4_1, null, null, null },
4900 .required_features = .{ .x87, null, null, null },
46284901 .src_constraints = .{
4629 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
4630 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
4902 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
4903 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
4904 .any,
46314905 },
46324906 .patterns = &.{
4633 .{ .src = .{ .to_mem, .to_mem } },
4907 .{ .src = .{ .to_mem, .to_mem, .none } },
46344908 },
46354909 .extra_temps = .{
46364910 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4637 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
4638 .unused,
4911 .{ .type = .f64, .kind = .{ .reg = .st6 } },
4912 .{ .type = .f64, .kind = .{ .reg = .st7 } },
46394913 .unused,
46404914 .unused,
46414915 .unused,
......@@ -4644,67 +4918,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
46444918 .unused,
46454919 },
46464920 .dst_temps = .{.mem},
4647 .clobbers = .{ .eflags = true },
46484921 .each = .{ .once = &.{
4649 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4650 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
4651 .{ ._, .p_d, .maxu, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
4652 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
4653 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4922 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4923 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
4924 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ },
4925 .{ ._, .f_p, .mul, ._, ._, ._, ._ },
4926 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
4927 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
46544928 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
46554929 } },
46564930 }, .{
4657 .required_features = .{ .sse2, null, null, null },
4931 .required_features = .{ .x87, null, null, null },
46584932 .src_constraints = .{
4659 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
4660 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
4933 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4934 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4935 .any,
46614936 },
46624937 .patterns = &.{
4663 .{ .src = .{ .to_mem, .to_mem } },
4938 .{ .src = .{ .mem, .mem, .none } },
46644939 },
46654940 .extra_temps = .{
4666 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4667 .{ .type = .vector_4_u32, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
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 } },
4941 .{ .type = .f80, .kind = .{ .reg = .st6 } },
4942 .{ .type = .f80, .kind = .{ .reg = .st7 } },
46734943 .unused,
46744944 .unused,
4675 },
4676 .dst_temps = .{.mem},
4677 .clobbers = .{ .eflags = true },
4945 .unused,
4946 .unused,
4947 .unused,
4948 .unused,
4949 .unused,
4950 },
4951 .dst_temps = .{.{ .rc = .x87 }},
46784952 .each = .{ .once = &.{
4679 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
4680 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
4681 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4682 .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
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", ._, ._, ._ },
4953 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
4954 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
4955 .{ ._, .f_p, .mul, ._, ._, ._, ._ },
4956 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
46954957 } },
46964958 }, .{
4697 .required_features = .{ .cmov, null, null, null },
4959 .required_features = .{ .x87, null, null, null },
46984960 .src_constraints = .{
4699 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
4700 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
4961 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4962 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4963 .any,
47014964 },
47024965 .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 } },
47044969 },
47054970 .extra_temps = .{
4706 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4707 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
4971 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4972 .unused,
47084973 .unused,
47094974 .unused,
47104975 .unused,
......@@ -4713,29 +4978,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
47134978 .unused,
47144979 .unused,
47154980 },
4716 .dst_temps = .{.mem},
4717 .clobbers = .{ .eflags = true },
4981 .dst_temps = .{.{ .rc = .x87 }},
47184982 .each = .{ .once = &.{
4719 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4720 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
4721 .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
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", ._, ._, ._ },
4983 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
4984 .{ ._, .f_, .mul, .tmp0t, .src1t, ._, ._ },
4985 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
47264986 } },
47274987 }, .{
4988 .required_features = .{ .x87, null, null, null },
47284989 .src_constraints = .{
4729 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
4730 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
4990 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
4991 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
4992 .any,
47314993 },
47324994 .patterns = &.{
4733 .{ .src = .{ .to_mem, .to_mem } },
4995 .{ .src = .{ .to_mem, .to_mem, .none } },
47344996 },
47354997 .extra_temps = .{
47364998 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4737 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
4738 .unused,
4999 .{ .type = .f80, .kind = .{ .reg = .st6 } },
5000 .{ .type = .f80, .kind = .{ .reg = .st7 } },
47395001 .unused,
47405002 .unused,
47415003 .unused,
......@@ -4744,44 +5006,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
47445006 .unused,
47455007 },
47465008 .dst_temps = .{.mem},
4747 .clobbers = .{ .eflags = true },
47485009 .each = .{ .once = &.{
4749 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4750 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
4751 .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
4752 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
4753 .{ ._, ._, .mov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
4754 .{ .@"1:", ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
4755 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
5010 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5011 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
5012 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
5013 .{ ._, .f_p, .mul, ._, ._, ._, ._ },
5014 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
5015 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
47565016 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
47575017 } },
47585018 }, .{
4759 .required_features = .{ .avx, 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 },
5019 .required_features = .{ .sse, null, null, null },
47745020 .src_constraints = .{
4775 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
4776 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
5021 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
5022 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
5023 .any,
47775024 },
47785025 .patterns = &.{
4779 .{ .src = .{ .to_mut_sse, .mem } },
4780 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
4781 .{ .src = .{ .to_mut_sse, .to_sse } },
5026 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
47825027 },
5028 .call_frame = .{ .alignment = .@"16" },
47835029 .extra_temps = .{
4784 .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } },
5030 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
47855031 .unused,
47865032 .unused,
47875033 .unused,
......@@ -4792,39 +5038,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
47925038 .unused,
47935039 },
47945040 .dst_temps = .{.{ .ref = .src0 }},
5041 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
47955042 .each = .{ .once = &.{
4796 .{ ._, ._dqa, .mov, .tmp0x, .src1x, ._, ._ },
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 },
5043 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
48135044 } },
48145045 }, .{
4815 .required_features = .{ .avx2, null, null, null },
5046 .required_features = .{ .avx, null, null, null },
48165047 .src_constraints = .{
4817 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } },
4818 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } },
5048 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5049 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5050 .any,
48195051 },
48205052 .patterns = &.{
4821 .{ .src = .{ .to_mem, .to_mem } },
5053 .{ .src = .{ .to_mem, .to_mem, .none } },
48225054 },
5055 .call_frame = .{ .alignment = .@"16" },
48235056 .extra_temps = .{
48245057 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4825 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
4826 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
4827 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
5058 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
5059 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
5060 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
48285061 .unused,
48295062 .unused,
48305063 .unused,
......@@ -4832,31 +5065,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
48325065 .unused,
48335066 },
48345067 .dst_temps = .{.mem},
4835 .clobbers = .{ .eflags = true },
5068 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
48365069 .each = .{ .once = &.{
4837 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4838 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
4839 .{ ._, .v_dqa, .mov, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
4840 .{ ._, .vp_q, .cmpgt, .tmp3y, .tmp2y, .tmp1y, ._ },
4841 .{ ._, .vp_b, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },
4842 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
4843 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
5070 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5071 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5072 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5073 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5074 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
5075 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
48445076 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
48455077 } },
48465078 }, .{
4847 .required_features = .{ .avx, null, null, null },
5079 .required_features = .{ .sse2, null, null, null },
48485080 .src_constraints = .{
4849 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
4850 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
5081 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5082 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5083 .any,
48515084 },
48525085 .patterns = &.{
4853 .{ .src = .{ .to_mem, .to_mem } },
5086 .{ .src = .{ .to_mem, .to_mem, .none } },
48545087 },
5088 .call_frame = .{ .alignment = .@"16" },
48555089 .extra_temps = .{
48565090 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4857 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
4858 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
4859 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
5091 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
5092 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
5093 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
48605094 .unused,
48615095 .unused,
48625096 .unused,
......@@ -4864,31 +5098,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
48645098 .unused,
48655099 },
48665100 .dst_temps = .{.mem},
4867 .clobbers = .{ .eflags = true },
5101 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
48685102 .each = .{ .once = &.{
4869 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4870 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
4871 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
4872 .{ ._, .vp_q, .cmpgt, .tmp3x, .tmp2x, .tmp1x, ._ },
4873 .{ ._, .vp_b, .blendv, .tmp1x, .tmp1x, .tmp2x, .tmp3x },
4874 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
5103 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5104 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5105 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5106 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5107 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
48755108 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
48765109 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
48775110 } },
48785111 }, .{
4879 .required_features = .{ .sse4_2, null, null, null },
5112 .required_features = .{ .sse, null, null, null },
48805113 .src_constraints = .{
4881 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
4882 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
5114 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5115 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5116 .any,
48835117 },
48845118 .patterns = &.{
4885 .{ .src = .{ .to_mem, .to_mem } },
5119 .{ .src = .{ .to_mem, .to_mem, .none } },
48865120 },
5121 .call_frame = .{ .alignment = .@"16" },
48875122 .extra_temps = .{
48885123 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4889 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
4890 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
4891 .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } },
5124 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
5125 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
5126 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
48925127 .unused,
48935128 .unused,
48945129 .unused,
......@@ -4896,30 +5131,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
48965131 .unused,
48975132 },
48985133 .dst_temps = .{.mem},
4899 .clobbers = .{ .eflags = true },
5134 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
49005135 .each = .{ .once = &.{
4901 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4902 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
4903 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
4904 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
4905 .{ ._, .p_q, .cmpgt, .tmp3x, .tmp1x, ._, ._ },
4906 .{ ._, .p_b, .blendv, .tmp1x, .tmp2x, .tmp3x, ._ },
4907 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
5136 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5137 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5138 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5139 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5140 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
49085141 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
49095142 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
49105143 } },
4911 }, .{
4912 .required_features = .{ .@"64bit", .cmov, null, null },
5144 } }) catch |err| switch (err) {
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 },
49135166 .src_constraints = .{
4914 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
4915 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
5167 .{ .scalar_float = .{ .of = .word, .is = .word } },
5168 .{ .scalar_float = .{ .of = .word, .is = .word } },
5169 .any,
49165170 },
49175171 .patterns = &.{
4918 .{ .src = .{ .to_mem, .to_mem } },
5172 .{ .src = .{ .to_sse, .to_sse, .none } },
49195173 },
49205174 .extra_temps = .{
4921 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4922 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
5175 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
5176 .unused,
49235177 .unused,
49245178 .unused,
49255179 .unused,
......@@ -4928,29 +5182,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
49285182 .unused,
49295183 .unused,
49305184 },
4931 .dst_temps = .{.mem},
4932 .clobbers = .{ .eflags = true },
5185 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
49335186 .each = .{ .once = &.{
4934 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4935 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
4936 .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
4937 .{ ._, ._l, .cmov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
4938 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
4939 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
4940 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5187 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
5188 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
5189 .{ ._, .v_ss, .div, .dst0x, .dst0x, .tmp0d, ._ },
5190 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
49415191 } },
49425192 }, .{
4943 .required_features = .{ .@"64bit", null, null, null },
5193 .required_features = .{ .sse, null, null, null },
49445194 .src_constraints = .{
4945 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
4946 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
5195 .{ .scalar_float = .{ .of = .word, .is = .word } },
5196 .{ .scalar_float = .{ .of = .word, .is = .word } },
5197 .any,
49475198 },
49485199 .patterns = &.{
4949 .{ .src = .{ .to_mem, .to_mem } },
5200 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
49505201 },
5202 .call_frame = .{ .alignment = .@"16" },
49515203 .extra_temps = .{
4952 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4953 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
5204 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
5205 .unused,
49545206 .unused,
49555207 .unused,
49565208 .unused,
......@@ -4959,33 +5211,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
49595211 .unused,
49605212 .unused,
49615213 },
4962 .dst_temps = .{.mem},
4963 .clobbers = .{ .eflags = true },
5214 .dst_temps = .{.{ .ref = .src0 }},
5215 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
49645216 .each = .{ .once = &.{
4965 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
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", ._, ._, ._ },
5217 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
49735218 } },
49745219 }, .{
4975 .required_features = .{ .avx, null, null, null },
5220 .required_features = .{ .f16c, null, null, null },
49765221 .src_constraints = .{
4977 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
4978 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
5222 .{ .scalar_float = .{ .of = .qword, .is = .word } },
5223 .{ .scalar_float = .{ .of = .qword, .is = .word } },
5224 .any,
49795225 },
49805226 .patterns = &.{
4981 .{ .src = .{ .to_sse, .mem } },
4982 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
4983 .{ .src = .{ .to_sse, .to_sse } },
5227 .{ .src = .{ .mem, .mem, .none } },
5228 .{ .src = .{ .to_sse, .mem, .none } },
5229 .{ .src = .{ .mem, .to_sse, .none } },
5230 .{ .src = .{ .to_sse, .to_sse, .none } },
49845231 },
49855232 .extra_temps = .{
4986 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
4987 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },
4988 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
5233 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
5234 .unused,
5235 .unused,
49895236 .unused,
49905237 .unused,
49915238 .unused,
......@@ -4993,62 +5240,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
49935240 .unused,
49945241 .unused,
49955242 },
4996 .dst_temps = .{.{ .rc = .sse }},
5243 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
49975244 .each = .{ .once = &.{
4998 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
4999 .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
5000 .{ ._, .vp_, .xor, .dst0x, .tmp2x, .src0x, ._ },
5001 .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .src1x, ._ },
5002 .{ ._, .vp_q, .cmpgt, .dst0x, .tmp2x, .dst0x, ._ },
5003 .{ ._, .vp_b, .blendv, .dst0x, .src0x, .src1x, .dst0x },
5245 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
5246 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
5247 .{ ._, .v_ps, .div, .dst0x, .dst0x, .tmp0x, ._ },
5248 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
50045249 } },
50055250 }, .{
5006 .required_features = .{ .sse4_2, null, null, null },
5251 .required_features = .{ .f16c, null, null, null },
50075252 .src_constraints = .{
5008 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
5009 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
5253 .{ .scalar_float = .{ .of = .xword, .is = .word } },
5254 .{ .scalar_float = .{ .of = .xword, .is = .word } },
5255 .any,
50105256 },
50115257 .patterns = &.{
5012 .{ .src = .{ .to_mut_sse, .mem } },
5013 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
5014 .{ .src = .{ .to_mut_sse, .to_sse } },
5258 .{ .src = .{ .mem, .mem, .none } },
5259 .{ .src = .{ .to_sse, .mem, .none } },
5260 .{ .src = .{ .mem, .to_sse, .none } },
5261 .{ .src = .{ .to_sse, .to_sse, .none } },
50155262 },
50165263 .extra_temps = .{
5017 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
5018 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },
5019 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
5020 .{ .type = .vector_2_u64, .kind = .{ .reg = .xmm0 } },
5264 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
5265 .unused,
5266 .unused,
5267 .unused,
50215268 .unused,
50225269 .unused,
50235270 .unused,
50245271 .unused,
50255272 .unused,
50265273 },
5027 .dst_temps = .{.{ .ref = .src0 }},
5274 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
50285275 .each = .{ .once = &.{
5029 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
5030 .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
5031 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
5032 .{ ._, .p_, .xor, .tmp2x, .src0x, ._, ._ },
5033 .{ ._, .p_, .xor, .tmp3x, .src1x, ._, ._ },
5034 .{ ._, .p_q, .cmpgt, .tmp3x, .tmp2x, ._, ._ },
5035 .{ ._, .p_b, .blendv, .dst0x, .src1x, .tmp3x, ._ },
5276 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
5277 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
5278 .{ ._, .v_ps, .div, .dst0y, .dst0y, .tmp0y, ._ },
5279 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
50365280 } },
50375281 }, .{
5038 .required_features = .{ .avx2, null, null, null },
5282 .required_features = .{ .f16c, null, null, null },
50395283 .src_constraints = .{
5040 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
5041 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
5284 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
5285 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
5286 .any,
50425287 },
50435288 .patterns = &.{
5044 .{ .src = .{ .to_sse, .mem } },
5045 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
5046 .{ .src = .{ .to_sse, .to_sse } },
5289 .{ .src = .{ .to_mem, .to_mem, .none } },
50475290 },
50485291 .extra_temps = .{
5049 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
5050 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },
5051 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
5292 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5293 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
5294 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
50525295 .unused,
50535296 .unused,
50545297 .unused,
......@@ -5056,277 +5299,251 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
50565299 .unused,
50575300 .unused,
50585301 },
5059 .dst_temps = .{.{ .rc = .sse }},
5302 .dst_temps = .{.mem},
5303 .clobbers = .{ .eflags = true },
50605304 .each = .{ .once = &.{
5061 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
5062 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ },
5063 .{ ._, .vp_, .xor, .dst0y, .tmp2y, .src0y, ._ },
5064 .{ ._, .vp_, .xor, .tmp2y, .tmp2y, .src1y, ._ },
5065 .{ ._, .vp_q, .cmpgt, .dst0y, .tmp2y, .dst0y, ._ },
5066 .{ ._, .vp_b, .blendv, .dst0y, .src0y, .src1y, .dst0y },
5305 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5306 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5307 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5308 .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .tmp2y, ._ },
5309 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
5310 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5311 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
50675312 } },
50685313 }, .{
5069 .required_features = .{ .avx2, null, null, null },
5314 .required_features = .{ .avx, null, null, null },
50705315 .src_constraints = .{
5071 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
5072 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
5316 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5317 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5318 .any,
50735319 },
50745320 .patterns = &.{
5075 .{ .src = .{ .to_mem, .to_mem } },
5321 .{ .src = .{ .to_mem, .to_mem, .none } },
50765322 },
5323 .call_frame = .{ .alignment = .@"16" },
50775324 .extra_temps = .{
50785325 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5079 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },
5080 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
5081 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
5082 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
5083 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
5084 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
5326 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5327 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
5328 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
5329 .unused,
5330 .unused,
5331 .unused,
50855332 .unused,
50865333 .unused,
50875334 },
50885335 .dst_temps = .{.mem},
5089 .clobbers = .{ .eflags = true },
5336 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
50905337 .each = .{ .once = &.{
5091 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
5092 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ },
5093 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5094 .{ .@"0:", .v_dqa, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
5095 .{ ._, .v_dqa, .mov, .tmp4y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
5096 .{ ._, .vp_, .xor, .tmp5y, .tmp3y, .tmp2y, ._ },
5097 .{ ._, .vp_, .xor, .tmp6y, .tmp4y, .tmp2y, ._ },
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), ._, ._ },
5338 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5339 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
5340 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
5341 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
5342 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5343 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
5344 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
51025345 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
51035346 } },
51045347 }, .{
5105 .required_features = .{ .avx, null, null, null },
5348 .required_features = .{ .sse4_1, null, null, null },
51065349 .src_constraints = .{
5107 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
5108 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
5350 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5351 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5352 .any,
51095353 },
51105354 .patterns = &.{
5111 .{ .src = .{ .to_mem, .to_mem } },
5355 .{ .src = .{ .to_mem, .to_mem, .none } },
51125356 },
5357 .call_frame = .{ .alignment = .@"16" },
51135358 .extra_temps = .{
51145359 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5115 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },
5116 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
5117 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
5118 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
5119 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
5120 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
5360 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5361 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
5362 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
5363 .unused,
5364 .unused,
5365 .unused,
51215366 .unused,
51225367 .unused,
51235368 },
51245369 .dst_temps = .{.mem},
5125 .clobbers = .{ .eflags = true },
5370 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
51265371 .each = .{ .once = &.{
5127 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
5128 .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
5129 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5130 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
5131 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
5132 .{ ._, .vp_, .xor, .tmp5x, .tmp3x, .tmp2x, ._ },
5133 .{ ._, .vp_, .xor, .tmp6x, .tmp4x, .tmp2x, ._ },
5134 .{ ._, .vp_q, .cmpgt, .tmp5x, .tmp6x, .tmp5x, ._ },
5135 .{ ._, .vp_b, .blendv, .tmp3x, .tmp3x, .tmp4x, .tmp5x },
5136 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
5137 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5372 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5373 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
5374 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
5375 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
5376 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
5377 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5378 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
5379 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
51385380 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
51395381 } },
51405382 }, .{
5141 .required_features = .{ .sse4_2, null, null, null },
5383 .required_features = .{ .sse2, null, null, null },
51425384 .src_constraints = .{
5143 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
5144 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
5385 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5386 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5387 .any,
51455388 },
51465389 .patterns = &.{
5147 .{ .src = .{ .to_mem, .to_mem } },
5390 .{ .src = .{ .to_mem, .to_mem, .none } },
51485391 },
5392 .call_frame = .{ .alignment = .@"16" },
51495393 .extra_temps = .{
51505394 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5151 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },
5152 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
5153 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
5154 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
5155 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
5156 .{ .type = .vector_2_u64, .kind = .{ .reg = .xmm0 } },
5395 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5396 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
5397 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
5398 .{ .type = .f16, .kind = .{ .reg = .ax } },
5399 .unused,
5400 .unused,
51575401 .unused,
51585402 .unused,
51595403 },
51605404 .dst_temps = .{.mem},
5161 .clobbers = .{ .eflags = true },
5405 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
51625406 .each = .{ .once = &.{
5163 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
5164 .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
5165 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5166 .{ .@"0:", ._dqa, .mov, .tmp5x, .tmp2x, ._, ._ },
5167 .{ ._, ._dqa, .mov, .tmp6x, .tmp2x, ._, ._ },
5168 .{ ._, ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
5169 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
5170 .{ ._, .p_, .xor, .tmp5x, .tmp3x, ._, ._ },
5171 .{ ._, .p_, .xor, .tmp6x, .tmp4x, ._, ._ },
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), ._, ._ },
5407 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5408 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
5409 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
5410 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
5411 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
5412 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5413 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
5414 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
5415 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
51765416 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
51775417 } },
51785418 }, .{
5179 .required_features = .{ .@"64bit", .cmov, null, null },
5419 .required_features = .{ .sse, null, null, null },
51805420 .src_constraints = .{
5181 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
5182 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
5421 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5422 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5423 .any,
51835424 },
51845425 .patterns = &.{
5185 .{ .src = .{ .to_mem, .to_mem } },
5426 .{ .src = .{ .to_mem, .to_mem, .none } },
51865427 },
5428 .call_frame = .{ .alignment = .@"16" },
51875429 .extra_temps = .{
51885430 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5189 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
5190 .unused,
5191 .unused,
5192 .unused,
5193 .unused,
5431 .{ .type = .f16, .kind = .{ .reg = .ax } },
5432 .{ .type = .f32, .kind = .mem },
5433 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5434 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
5435 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
51945436 .unused,
51955437 .unused,
51965438 .unused,
51975439 },
51985440 .dst_temps = .{.mem},
5199 .clobbers = .{ .eflags = true },
5441 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
52005442 .each = .{ .once = &.{
5201 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5202 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
5203 .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5204 .{ ._, ._b, .cmov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5205 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
5206 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
5443 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5444 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
5445 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
5446 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
5447 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
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), ._, ._ },
52075455 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
52085456 } },
52095457 }, .{
5210 .required_features = .{ .@"64bit", null, null, null },
5458 .required_features = .{ .avx, null, null, null },
52115459 .src_constraints = .{
5212 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
5213 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
5460 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5461 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5462 .any,
52145463 },
52155464 .patterns = &.{
5216 .{ .src = .{ .to_mem, .to_mem } },
5465 .{ .src = .{ .to_sse, .mem, .none } },
5466 .{ .src = .{ .to_sse, .to_sse, .none } },
52175467 },
5218 .extra_temps = .{
5219 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5220 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
5221 .unused,
5222 .unused,
5223 .unused,
5224 .unused,
5225 .unused,
5226 .unused,
5227 .unused,
5468 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5469 .each = .{ .once = &.{
5470 .{ ._, .v_ss, .div, .dst0x, .src0x, .src1d, ._ },
5471 } },
5472 }, .{
5473 .required_features = .{ .sse, null, null, null },
5474 .src_constraints = .{
5475 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5476 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5477 .any,
52285478 },
5229 .dst_temps = .{.mem},
5230 .clobbers = .{ .eflags = true },
5479 .patterns = &.{
5480 .{ .src = .{ .to_mut_sse, .mem, .none } },
5481 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
5482 },
5483 .dst_temps = .{.{ .ref = .src0 }},
52315484 .each = .{ .once = &.{
5232 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
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", ._, ._, ._ },
5485 .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ },
52405486 } },
52415487 }, .{
5242 .required_features = .{ .@"64bit", .cmov, null, null },
5243 .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int },
5488 .required_features = .{ .avx, null, null, null },
5489 .src_constraints = .{
5490 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5491 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5492 .any,
5493 },
52445494 .patterns = &.{
5245 .{ .src = .{ .to_mem, .to_mem } },
5495 .{ .src = .{ .to_sse, .mem, .none } },
5496 .{ .src = .{ .to_sse, .to_sse, .none } },
52465497 },
5247 .extra_temps = .{
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 },
5498 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
52605499 .each = .{ .once = &.{
5261 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
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", ._, ._, ._ },
5500 .{ ._, .v_ps, .div, .dst0x, .src0x, .src1x, ._ },
52795501 } },
52805502 }, .{
5281 .required_features = .{ .@"64bit", null, null, null },
5282 .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int },
5503 .required_features = .{ .sse, null, null, null },
5504 .src_constraints = .{
5505 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5506 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5507 .any,
5508 },
52835509 .patterns = &.{
5284 .{ .src = .{ .to_mem, .to_mem } },
5510 .{ .src = .{ .to_mut_sse, .mem, .none } },
5511 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
52855512 },
5286 .extra_temps = .{
5287 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5288 .{ .type = .isize, .kind = .{ .reg = .rsi } },
5289 .{ .type = .u64, .kind = .{ .reg = .rdi } },
5290 .{ .type = .u64, .kind = .{ .reg = .rcx } },
5291 .unused,
5292 .unused,
5293 .unused,
5294 .unused,
5295 .unused,
5513 .dst_temps = .{.{ .ref = .src0 }},
5514 .each = .{ .once = &.{
5515 .{ ._, ._ps, .div, .dst0x, .src1x, ._, ._ },
5516 } },
5517 }, .{
5518 .required_features = .{ .avx, null, null, null },
5519 .src_constraints = .{
5520 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
5521 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
5522 .any,
52965523 },
5297 .dst_temps = .{.mem},
5298 .clobbers = .{ .eflags = true },
5524 .patterns = &.{
5525 .{ .src = .{ .to_sse, .mem, .none } },
5526 .{ .src = .{ .to_sse, .to_sse, .none } },
5527 },
5528 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
52995529 .each = .{ .once = &.{
5300 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
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", ._, ._, ._ },
5530 .{ ._, .v_ps, .div, .dst0y, .src0y, .src1y, ._ },
53185531 } },
53195532 }, .{
5320 .required_features = .{ .@"64bit", .cmov, null, null },
5321 .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int },
5533 .required_features = .{ .avx, null, null, null },
5534 .src_constraints = .{
5535 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
5536 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
5537 .any,
5538 },
53225539 .patterns = &.{
5323 .{ .src = .{ .to_mem, .to_mem } },
5540 .{ .src = .{ .to_mem, .to_mem, .none } },
53245541 },
53255542 .extra_temps = .{
53265543 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5327 .{ .type = .isize, .kind = .{ .reg = .rsi } },
5328 .{ .type = .u64, .kind = .{ .reg = .rdi } },
5329 .{ .type = .u64, .kind = .{ .reg = .rcx } },
5544 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
5545 .unused,
5546 .unused,
53305547 .unused,
53315548 .unused,
53325549 .unused,
......@@ -5336,34 +5553,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
53365553 .dst_temps = .{.mem},
53375554 .clobbers = .{ .eflags = true },
53385555 .each = .{ .once = &.{
5339 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5340 .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },
5341 .{ ._, ._c, .cl, ._, ._, ._, ._ },
5342 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
5343 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5344 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
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", ._, ._, ._ },
5556 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5557 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
5558 .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
5559 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
5560 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
5561 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
53555562 } },
53565563 }, .{
5357 .required_features = .{ .@"64bit", null, null, null },
5358 .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int },
5564 .required_features = .{ .sse, null, null, null },
5565 .src_constraints = .{
5566 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
5567 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
5568 .any,
5569 },
53595570 .patterns = &.{
5360 .{ .src = .{ .to_mem, .to_mem } },
5571 .{ .src = .{ .to_mem, .to_mem, .none } },
53615572 },
53625573 .extra_temps = .{
53635574 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5364 .{ .type = .isize, .kind = .{ .reg = .rsi } },
5365 .{ .type = .u64, .kind = .{ .reg = .rdi } },
5366 .{ .type = .u64, .kind = .{ .reg = .rcx } },
5575 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
5576 .unused,
5577 .unused,
53675578 .unused,
53685579 .unused,
53695580 .unused,
......@@ -5373,93 +5584,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
53735584 .dst_temps = .{.mem},
53745585 .clobbers = .{ .eflags = true },
53755586 .each = .{ .once = &.{
5376 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5377 .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },
5378 .{ ._, ._c, .cl, ._, ._, ._, ._ },
5379 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
5380 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5381 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
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", ._, ._, ._ },
5587 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5588 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5589 .{ ._, ._ps, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5590 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
5591 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5592 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
53925593 } },
53935594 }, .{
5394 .required_features = .{ .f16c, null, null, null },
5595 .required_features = .{ .avx, null, null, null },
53955596 .src_constraints = .{
5396 .{ .scalar_float = .{ .of = .word, .is = .word } },
5397 .{ .scalar_float = .{ .of = .word, .is = .word } },
5597 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5598 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5599 .any,
53985600 },
53995601 .patterns = &.{
5400 .{ .src = .{ .to_sse, .to_sse } },
5401 },
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,
5602 .{ .src = .{ .to_sse, .mem, .none } },
5603 .{ .src = .{ .to_sse, .to_sse, .none } },
54125604 },
54135605 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
54145606 .each = .{ .once = &.{
5415 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
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(.{}), ._ },
5607 .{ ._, .v_sd, .div, .dst0x, .src0x, .src1q, ._ },
54215608 } },
54225609 }, .{
5423 .required_features = .{ .sse, null, null, null },
5610 .required_features = .{ .sse2, null, null, null },
54245611 .src_constraints = .{
5425 .{ .scalar_float = .{ .of = .word, .is = .word } },
5426 .{ .scalar_float = .{ .of = .word, .is = .word } },
5612 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5613 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5614 .any,
54275615 },
54285616 .patterns = &.{
5429 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },
5430 },
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,
5617 .{ .src = .{ .to_mut_sse, .mem, .none } },
5618 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
54425619 },
54435620 .dst_temps = .{.{ .ref = .src0 }},
5444 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
54455621 .each = .{ .once = &.{
5446 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
5622 .{ ._, ._sd, .div, .dst0x, .src1q, ._, ._ },
54475623 } },
54485624 }, .{
5449 .required_features = .{ .f16c, null, null, null },
5625 .required_features = .{ .x87, null, null, null },
54505626 .src_constraints = .{
5451 .{ .scalar_float = .{ .of = .qword, .is = .word } },
5452 .{ .scalar_float = .{ .of = .qword, .is = .word } },
5627 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5628 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5629 .any,
54535630 },
54545631 .patterns = &.{
5455 .{ .src = .{ .mem, .mem } },
5456 .{ .src = .{ .to_sse, .mem } },
5457 .{ .src = .{ .mem, .to_sse } },
5458 .{ .src = .{ .to_sse, .to_sse } },
5632 .{ .src = .{ .mem, .mem, .none } },
54595633 },
54605634 .extra_temps = .{
5461 .{ .type = .vector_4_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
5462 .{ .type = .vector_4_f16, .kind = .{ .rc = .sse } },
5635 .{ .type = .f64, .kind = .{ .reg = .st6 } },
5636 .{ .type = .f64, .kind = .{ .reg = .st7 } },
54635637 .unused,
54645638 .unused,
54655639 .unused,
......@@ -5468,128 +5642,73 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
54685642 .unused,
54695643 .unused,
54705644 },
5471 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5645 .dst_temps = .{.mem},
54725646 .each = .{ .once = &.{
5473 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
5474 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
5475 .{ ._, .v_ps, .cmp, .tmp1x, .dst0x, .dst0x, .vp(.unord) },
5476 .{ ._, .v_ps, .max, .dst0x, .tmp0x, .dst0x, ._ },
5477 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x },
5478 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
5647 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
5648 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
5649 .{ ._, .f_p, .div, ._, ._, ._, ._ },
5650 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
54795651 } },
54805652 }, .{
5481 .required_features = .{ .f16c, null, null, null },
5653 .required_features = .{ .avx, null, null, null },
54825654 .src_constraints = .{
5483 .{ .scalar_float = .{ .of = .xword, .is = .word } },
5484 .{ .scalar_float = .{ .of = .xword, .is = .word } },
5655 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
5656 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
5657 .any,
54855658 },
54865659 .patterns = &.{
5487 .{ .src = .{ .mem, .mem } },
5488 .{ .src = .{ .to_sse, .mem } },
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,
5660 .{ .src = .{ .to_sse, .mem, .none } },
5661 .{ .src = .{ .to_sse, .to_sse, .none } },
55025662 },
55035663 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
55045664 .each = .{ .once = &.{
5505 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
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(.{}), ._ },
5665 .{ ._, .v_pd, .div, .dst0x, .src0x, .src1x, ._ },
55115666 } },
55125667 }, .{
5513 .required_features = .{ .f16c, null, null, null },
5668 .required_features = .{ .sse2, null, null, null },
55145669 .src_constraints = .{
5515 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
5516 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
5670 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
5671 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
5672 .any,
55175673 },
55185674 .patterns = &.{
5519 .{ .src = .{ .to_mem, .to_mem } },
5675 .{ .src = .{ .to_mut_sse, .mem, .none } },
5676 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
55205677 },
5521 .extra_temps = .{
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 },
5678 .dst_temps = .{.{ .ref = .src0 }},
55345679 .each = .{ .once = &.{
5535 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
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", ._, ._, ._ },
5680 .{ ._, ._pd, .div, .dst0x, .src1x, ._, ._ },
55445681 } },
55455682 }, .{
55465683 .required_features = .{ .avx, null, null, null },
55475684 .src_constraints = .{
5548 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5549 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5685 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
5686 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
5687 .any,
55505688 },
55515689 .patterns = &.{
5552 .{ .src = .{ .to_mem, .to_mem } },
5553 },
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,
5690 .{ .src = .{ .to_sse, .mem, .none } },
5691 .{ .src = .{ .to_sse, .to_sse, .none } },
55655692 },
5566 .dst_temps = .{.mem},
5567 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5693 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
55685694 .each = .{ .once = &.{
5569 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
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", ._, ._, ._ },
5695 .{ ._, .v_pd, .div, .dst0y, .src0y, .src1y, ._ },
55775696 } },
55785697 }, .{
5579 .required_features = .{ .sse4_1, null, null, null },
5698 .required_features = .{ .avx, null, null, null },
55805699 .src_constraints = .{
5581 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5582 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5700 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
5701 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
5702 .any,
55835703 },
55845704 .patterns = &.{
5585 .{ .src = .{ .to_mem, .to_mem } },
5705 .{ .src = .{ .to_mem, .to_mem, .none } },
55865706 },
5587 .call_frame = .{ .alignment = .@"16" },
55885707 .extra_temps = .{
55895708 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5590 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5591 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
5592 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
5709 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
5710 .unused,
5711 .unused,
55935712 .unused,
55945713 .unused,
55955714 .unused,
......@@ -5597,103 +5716,90 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
55975716 .unused,
55985717 },
55995718 .dst_temps = .{.mem},
5600 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5719 .clobbers = .{ .eflags = true },
56015720 .each = .{ .once = &.{
5602 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5603 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
5604 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
5605 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ },
5606 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ },
5607 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5608 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ },
5609 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
5721 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5722 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
5723 .{ ._, .v_pd, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
5724 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
5725 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
56105726 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
56115727 } },
56125728 }, .{
56135729 .required_features = .{ .sse2, null, null, null },
56145730 .src_constraints = .{
5615 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5616 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5731 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
5732 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
5733 .any,
56175734 },
56185735 .patterns = &.{
5619 .{ .src = .{ .to_mem, .to_mem } },
5736 .{ .src = .{ .to_mem, .to_mem, .none } },
56205737 },
5621 .call_frame = .{ .alignment = .@"16" },
56225738 .extra_temps = .{
56235739 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5624 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5625 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
5626 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
5627 .{ .type = .f16, .kind = .{ .reg = .ax } },
5740 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
5741 .unused,
5742 .unused,
5743 .unused,
56285744 .unused,
56295745 .unused,
56305746 .unused,
56315747 .unused,
56325748 },
56335749 .dst_temps = .{.mem},
5634 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5750 .clobbers = .{ .eflags = true },
56355751 .each = .{ .once = &.{
5636 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5637 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
5638 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
5639 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ },
5640 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ },
5641 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5642 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
5643 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp4w, ._, ._ },
5644 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
5752 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5753 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5754 .{ ._, ._pd, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5755 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
5756 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
56455757 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
56465758 } },
56475759 }, .{
5648 .required_features = .{ .sse, null, null, null },
5760 .required_features = .{ .x87, null, null, null },
56495761 .src_constraints = .{
5650 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5651 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5762 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
5763 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
5764 .any,
56525765 },
56535766 .patterns = &.{
5654 .{ .src = .{ .to_mem, .to_mem } },
5767 .{ .src = .{ .to_mem, .to_mem, .none } },
56555768 },
5656 .call_frame = .{ .alignment = .@"16" },
56575769 .extra_temps = .{
56585770 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5659 .{ .type = .f16, .kind = .{ .reg = .ax } },
5660 .{ .type = .f32, .kind = .mem },
5661 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5662 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
5663 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
5771 .{ .type = .f64, .kind = .{ .reg = .st6 } },
5772 .{ .type = .f64, .kind = .{ .reg = .st7 } },
5773 .unused,
5774 .unused,
5775 .unused,
56645776 .unused,
56655777 .unused,
56665778 .unused,
56675779 },
56685780 .dst_temps = .{.mem},
5669 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
56705781 .each = .{ .once = &.{
5671 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5672 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
5673 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
5674 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
5675 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_size), ._, ._ },
5676 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
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), ._, ._ },
5782 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5783 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
5784 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ },
5785 .{ ._, .f_p, .div, ._, ._, ._, ._ },
5786 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
5787 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
56835788 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
56845789 } },
56855790 }, .{
5686 .required_features = .{ .avx, null, null, null },
5791 .required_features = .{ .x87, null, null, null },
56875792 .src_constraints = .{
5688 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5689 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5793 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
5794 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
5795 .any,
56905796 },
56915797 .patterns = &.{
5692 .{ .src = .{ .to_sse, .to_sse } },
5798 .{ .src = .{ .mem, .mem, .none } },
56935799 },
56945800 .extra_temps = .{
5695 .{ .type = .f32, .kind = .{ .rc = .sse } },
5696 .unused,
5801 .{ .type = .f80, .kind = .{ .reg = .st6 } },
5802 .{ .type = .f80, .kind = .{ .reg = .st7 } },
56975803 .unused,
56985804 .unused,
56995805 .unused,
......@@ -5702,39 +5808,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
57025808 .unused,
57035809 .unused,
57045810 },
5705 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
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 }},
5811 .dst_temps = .{.{ .rc = .x87 }},
57215812 .each = .{ .once = &.{
5722 .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ },
5723 .{ ._, ._ss, .max, .dst0x, .src0x, ._, ._ },
5724 .{ ._, ._ss, .cmp, .src0x, .src0x, .vp(.unord), ._ },
5725 .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ },
5813 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
5814 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
5815 .{ ._, .f_p, .div, ._, ._, ._, ._ },
5816 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
57265817 } },
57275818 }, .{
5728 .required_features = .{ .sse, null, null, null },
5819 .required_features = .{ .x87, null, null, null },
57295820 .src_constraints = .{
5730 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5731 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5821 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
5822 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
5823 .any,
57325824 },
57335825 .patterns = &.{
5734 .{ .src = .{ .to_mut_sse, .to_sse } },
5826 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
57355827 },
57365828 .extra_temps = .{
5737 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
5829 .{ .type = .f80, .kind = .{ .reg = .st7 } },
57385830 .unused,
57395831 .unused,
57405832 .unused,
......@@ -5744,26 +5836,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
57445836 .unused,
57455837 .unused,
57465838 },
5747 .dst_temps = .{.{ .ref = .src0 }},
5839 .dst_temps = .{.{ .rc = .x87 }},
57485840 .each = .{ .once = &.{
5749 .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ },
5750 .{ ._, ._ss, .max, .tmp0x, .src0x, ._, ._ },
5751 .{ ._, ._ss, .cmp, .dst0x, .src0x, .vp(.ord), ._ },
5752 .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ },
5753 .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ },
5754 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },
5841 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
5842 .{ ._, .f_, .divr, .tmp0t, .src1t, ._, ._ },
5843 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
57555844 } },
57565845 }, .{
5757 .required_features = .{ .avx, null, null, null },
5846 .required_features = .{ .x87, null, null, null },
57585847 .src_constraints = .{
5759 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5760 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5848 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
5849 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
5850 .any,
57615851 },
57625852 .patterns = &.{
5763 .{ .src = .{ .to_sse, .to_sse } },
5853 .{ .src = .{ .mem, .to_x87, .none } },
5854 .{ .src = .{ .to_x87, .to_x87, .none } },
57645855 },
57655856 .extra_temps = .{
5766 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
5857 .{ .type = .f80, .kind = .{ .reg = .st7 } },
57675858 .unused,
57685859 .unused,
57695860 .unused,
......@@ -5773,45 +5864,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
57735864 .unused,
57745865 .unused,
57755866 },
5776 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
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 }},
5867 .dst_temps = .{.{ .rc = .x87 }},
57945868 .each = .{ .once = &.{
5795 .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ },
5796 .{ ._, ._ps, .max, .dst0x, .src0x, ._, ._ },
5797 .{ ._, ._ps, .cmp, .src0x, .src0x, .vp(.unord), ._ },
5798 .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ },
5869 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
5870 .{ ._, .f_, .div, .tmp0t, .src1t, ._, ._ },
5871 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
57995872 } },
58005873 }, .{
5801 .required_features = .{ .sse, null, null, null },
5874 .required_features = .{ .x87, null, null, null },
58025875 .src_constraints = .{
5803 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5804 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5876 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
5877 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
5878 .any,
58055879 },
58065880 .patterns = &.{
5807 .{ .src = .{ .to_mut_sse, .mem } },
5808 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
5809 .{ .src = .{ .to_mut_sse, .to_sse } },
5881 .{ .src = .{ .to_mem, .to_mem, .none } },
58105882 },
58115883 .extra_temps = .{
5812 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
5813 .unused,
5814 .unused,
5884 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5885 .{ .type = .f80, .kind = .{ .reg = .st6 } },
5886 .{ .type = .f80, .kind = .{ .reg = .st7 } },
58155887 .unused,
58165888 .unused,
58175889 .unused,
......@@ -5819,26 +5891,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
58195891 .unused,
58205892 .unused,
58215893 },
5822 .dst_temps = .{.{ .ref = .src0 }},
5894 .dst_temps = .{.mem},
58235895 .each = .{ .once = &.{
5824 .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ },
5825 .{ ._, ._ps, .max, .tmp0x, .src0x, ._, ._ },
5826 .{ ._, ._ps, .cmp, .dst0x, .src0x, .vp(.ord), ._ },
5827 .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ },
5828 .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ },
5829 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },
5896 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5897 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
5898 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
5899 .{ ._, .f_p, .div, ._, ._, ._, ._ },
5900 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
5901 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5902 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
58305903 } },
58315904 }, .{
5832 .required_features = .{ .avx, null, null, null },
5905 .required_features = .{ .sse, null, null, null },
58335906 .src_constraints = .{
5834 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
5835 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
5907 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
5908 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
5909 .any,
58365910 },
58375911 .patterns = &.{
5838 .{ .src = .{ .to_sse, .to_sse } },
5912 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
58395913 },
5914 .call_frame = .{ .alignment = .@"16" },
58405915 .extra_temps = .{
5841 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
5916 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
58425917 .unused,
58435918 .unused,
58445919 .unused,
......@@ -5848,26 +5923,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
58485923 .unused,
58495924 .unused,
58505925 },
5851 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5926 .dst_temps = .{.{ .ref = .src0 }},
5927 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
58525928 .each = .{ .once = &.{
5853 .{ ._, .v_ps, .cmp, .tmp0y, .src0y, .src0y, .vp(.unord) },
5854 .{ ._, .v_ps, .max, .dst0y, .src1y, .src0y, ._ },
5855 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .src1y, .tmp0y },
5929 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
58565930 } },
58575931 }, .{
58585932 .required_features = .{ .avx, null, null, null },
58595933 .src_constraints = .{
5860 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
5861 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
5934 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5935 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5936 .any,
58625937 },
58635938 .patterns = &.{
5864 .{ .src = .{ .to_mem, .to_mem } },
5939 .{ .src = .{ .to_mem, .to_mem, .none } },
58655940 },
5941 .call_frame = .{ .alignment = .@"16" },
58665942 .extra_temps = .{
58675943 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5868 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
5869 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
5870 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
5944 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
5945 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
5946 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
58715947 .unused,
58725948 .unused,
58735949 .unused,
......@@ -5875,32 +5951,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
58755951 .unused,
58765952 },
58775953 .dst_temps = .{.mem},
5878 .clobbers = .{ .eflags = true },
5954 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
58795955 .each = .{ .once = &.{
5880 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5881 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
5882 .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
5883 .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },
5884 .{ ._, .v_ps, .max, .tmp1y, .tmp2y, .tmp1y, ._ },
5885 .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },
5886 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
5887 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
5956 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5957 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5958 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5959 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5960 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
5961 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
58885962 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
58895963 } },
58905964 }, .{
5891 .required_features = .{ .sse4_1, null, null, null },
5965 .required_features = .{ .sse2, null, null, null },
58925966 .src_constraints = .{
5893 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
5894 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
5967 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5968 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5969 .any,
58955970 },
58965971 .patterns = &.{
5897 .{ .src = .{ .to_mem, .to_mem } },
5972 .{ .src = .{ .to_mem, .to_mem, .none } },
58985973 },
5974 .call_frame = .{ .alignment = .@"16" },
58995975 .extra_temps = .{
59005976 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5901 .{ .type = .vector_4_f32, .kind = .{ .reg = .xmm0 } },
5902 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
5903 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
5977 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
5978 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
5979 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
59045980 .unused,
59055981 .unused,
59065982 .unused,
......@@ -5908,371 +5984,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
59085984 .unused,
59095985 },
59105986 .dst_temps = .{.mem},
5911 .clobbers = .{ .eflags = true },
5987 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
59125988 .each = .{ .once = &.{
5913 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5914 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
5915 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
5916 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
5917 .{ ._, ._ps, .max, .tmp3x, .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, ._, ._ },
5989 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5990 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5991 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5992 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5993 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
62585994 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
62595995 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
62605996 } },
62615997 }, .{
62625998 .required_features = .{ .sse, null, null, null },
62635999 .src_constraints = .{
6264 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
6265 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
6000 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
6001 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
6002 .any,
62666003 },
62676004 .patterns = &.{
6268 .{ .src = .{ .to_mem, .to_mem } },
6005 .{ .src = .{ .to_mem, .to_mem, .none } },
62696006 },
62706007 .call_frame = .{ .alignment = .@"16" },
62716008 .extra_temps = .{
62726009 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6273 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
6274 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
6275 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmax" } } },
6010 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
6011 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
6012 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
62766013 .unused,
62776014 .unused,
62786015 .unused,
......@@ -6282,372 +6019,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
62826019 .dst_temps = .{.mem},
62836020 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
62846021 .each = .{ .once = &.{
6285 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6286 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
6287 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },
6288 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
6289 .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_size), ._, ._ },
6022 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6023 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
6024 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
62906025 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6291 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
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, ._, ._ },
6026 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
66516027 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
66526028 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
66536029 } },
......@@ -6662,440 +6038,9683 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
66626038 };
66636039 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
66646040 },
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: {
66666042 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);
66676044 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
66686045 var res: [1]Temp = undefined;
6669 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
6670 .required_features = .{ .cmov, null, null, null },
6671 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } },
6672 .patterns = &.{
6673 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6674 },
6675 .dst_temps = .{.{ .ref = .src0 }},
6676 .clobbers = .{ .eflags = true },
6677 .each = .{ .once = &.{
6678 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
6679 .{ ._, ._ge, .cmov, .dst0d, .src1d, ._, ._ },
6680 } },
6681 }, .{
6682 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } },
6683 .patterns = &.{
6684 .{ .src = .{ .to_mut_gpr, .mem } },
6685 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6686 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6687 },
6688 .dst_temps = .{.{ .ref = .src0 }},
6689 .clobbers = .{ .eflags = true },
6690 .each = .{ .once = &.{
6691 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
6692 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },
6693 .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ },
6694 } },
6695 }, .{
6696 .required_features = .{ .cmov, null, null, null },
6697 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } },
6698 .patterns = &.{
6699 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6700 },
6701 .dst_temps = .{.{ .ref = .src0 }},
6702 .clobbers = .{ .eflags = true },
6703 .each = .{ .once = &.{
6704 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
6705 .{ ._, ._ae, .cmov, .dst0d, .src1d, ._, ._ },
6706 } },
6707 }, .{
6708 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } },
6709 .patterns = &.{
6710 .{ .src = .{ .to_mut_gpr, .mem } },
6711 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6712 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6713 },
6714 .dst_temps = .{.{ .ref = .src0 }},
6715 .clobbers = .{ .eflags = true },
6716 .each = .{ .once = &.{
6717 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
6718 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
6719 .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ },
6720 } },
6721 }, .{
6722 .required_features = .{ .cmov, null, null, null },
6723 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } },
6724 .patterns = &.{
6725 .{ .src = .{ .to_mut_gpr, .mem } },
6726 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6727 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6728 },
6729 .dst_temps = .{.{ .ref = .src0 }},
6730 .clobbers = .{ .eflags = true },
6731 .each = .{ .once = &.{
6732 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
6733 .{ ._, ._ge, .cmov, .dst0w, .src1w, ._, ._ },
6734 } },
6735 }, .{
6736 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } },
6737 .patterns = &.{
6738 .{ .src = .{ .to_mut_gpr, .mem } },
6739 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6740 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6741 },
6742 .dst_temps = .{.{ .ref = .src0 }},
6743 .clobbers = .{ .eflags = true },
6744 .each = .{ .once = &.{
6745 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
6746 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },
6747 .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ },
6748 } },
6749 }, .{
6750 .required_features = .{ .cmov, null, null, null },
6751 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } },
6752 .patterns = &.{
6753 .{ .src = .{ .to_mut_gpr, .mem } },
6754 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6755 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6756 },
6757 .dst_temps = .{.{ .ref = .src0 }},
6758 .clobbers = .{ .eflags = true },
6759 .each = .{ .once = &.{
6760 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
6761 .{ ._, ._ae, .cmov, .dst0w, .src1w, ._, ._ },
6762 } },
6763 }, .{
6764 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } },
6765 .patterns = &.{
6766 .{ .src = .{ .to_mut_gpr, .mem } },
6767 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6768 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6769 },
6770 .dst_temps = .{.{ .ref = .src0 }},
6771 .clobbers = .{ .eflags = true },
6772 .each = .{ .once = &.{
6773 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
6774 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
6775 .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ },
6776 } },
6777 }, .{
6778 .required_features = .{ .cmov, null, null, null },
6779 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } },
6780 .patterns = &.{
6781 .{ .src = .{ .to_mut_gpr, .mem } },
6782 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6783 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6784 },
6785 .dst_temps = .{.{ .ref = .src0 }},
6786 .clobbers = .{ .eflags = true },
6787 .each = .{ .once = &.{
6788 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
6789 .{ ._, ._ge, .cmov, .dst0d, .src1d, ._, ._ },
6790 } },
6791 }, .{
6792 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } },
6793 .patterns = &.{
6794 .{ .src = .{ .to_mut_gpr, .mem } },
6795 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6796 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6797 },
6798 .dst_temps = .{.{ .ref = .src0 }},
6799 .clobbers = .{ .eflags = true },
6800 .each = .{ .once = &.{
6801 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
6802 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },
6803 .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ },
6804 } },
6805 }, .{
6806 .required_features = .{ .cmov, null, null, null },
6807 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } },
6808 .patterns = &.{
6809 .{ .src = .{ .to_mut_gpr, .mem } },
6810 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6811 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6812 },
6813 .dst_temps = .{.{ .ref = .src0 }},
6814 .clobbers = .{ .eflags = true },
6815 .each = .{ .once = &.{
6816 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
6817 .{ ._, ._ae, .cmov, .dst0d, .src1d, ._, ._ },
6818 } },
6819 }, .{
6820 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } },
6821 .patterns = &.{
6822 .{ .src = .{ .to_mut_gpr, .mem } },
6823 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6824 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6825 },
6826 .dst_temps = .{.{ .ref = .src0 }},
6827 .clobbers = .{ .eflags = true },
6828 .each = .{ .once = &.{
6829 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
6830 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
6831 .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ },
6832 } },
6833 }, .{
6834 .required_features = .{ .@"64bit", .cmov, null, null },
6835 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } },
6836 .patterns = &.{
6837 .{ .src = .{ .to_mut_gpr, .mem } },
6838 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6839 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6840 },
6841 .dst_temps = .{.{ .ref = .src0 }},
6842 .clobbers = .{ .eflags = true },
6843 .each = .{ .once = &.{
6844 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
6845 .{ ._, ._ge, .cmov, .dst0q, .src1q, ._, ._ },
6846 } },
6847 }, .{
6848 .required_features = .{ .@"64bit", null, null, null },
6849 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } },
6850 .patterns = &.{
6851 .{ .src = .{ .to_mut_gpr, .mem } },
6852 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6853 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6854 },
6855 .dst_temps = .{.{ .ref = .src0 }},
6856 .clobbers = .{ .eflags = true },
6857 .each = .{ .once = &.{
6858 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
6859 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },
6860 .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ },
6861 } },
6862 }, .{
6863 .required_features = .{ .@"64bit", .cmov, null, null },
6864 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } },
6865 .patterns = &.{
6866 .{ .src = .{ .to_mut_gpr, .mem } },
6867 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6868 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6869 },
6870 .dst_temps = .{.{ .ref = .src0 }},
6871 .clobbers = .{ .eflags = true },
6872 .each = .{ .once = &.{
6873 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
6874 .{ ._, ._ae, .cmov, .dst0q, .src1q, ._, ._ },
6875 } },
6876 }, .{
6877 .required_features = .{ .@"64bit", null, null, null },
6878 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } },
6879 .patterns = &.{
6880 .{ .src = .{ .to_mut_gpr, .mem } },
6881 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6882 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6883 },
6884 .dst_temps = .{.{ .ref = .src0 }},
6885 .clobbers = .{ .eflags = true },
6886 .each = .{ .once = &.{
6887 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
6888 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
6889 .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ },
6890 } },
6891 }, .{
6892 .required_features = .{ .@"64bit", .cmov, null, null },
6893 .src_constraints = .{ .any_signed_int, .any_signed_int },
6894 .patterns = &.{
6895 .{ .src = .{ .to_mem, .to_mem } },
6896 },
6897 .extra_temps = .{
6898 .{ .type = .isize, .kind = .{ .reg = .rsi } },
6899 .{ .type = .u64, .kind = .{ .reg = .rdi } },
6900 .{ .type = .u64, .kind = .{ .reg = .rcx } },
6901 .unused,
6902 .unused,
6903 .unused,
6904 .unused,
6905 .unused,
6906 .unused,
6907 },
6908 .dst_temps = .{.mem},
6909 .clobbers = .{ .eflags = true },
6910 .each = .{ .once = &.{
6911 .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ },
6912 .{ ._, ._c, .cl, ._, ._, ._, ._ },
6913 .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
6914 .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
6915 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
6916 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
6917 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
6918 .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ },
6919 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
6920 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
6921 .{ ._, ._ge, .cmov, .tmp0p, .tmp1p, ._, ._ },
6922 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
6923 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
6924 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
6925 } },
6926 }, .{
6927 .required_features = .{ .@"64bit", null, null, null },
6928 .src_constraints = .{ .any_signed_int, .any_signed_int },
6929 .patterns = &.{
6930 .{ .src = .{ .to_mem, .to_mem } },
6931 },
6932 .extra_temps = .{
6933 .{ .type = .isize, .kind = .{ .reg = .rsi } },
6934 .{ .type = .u64, .kind = .{ .reg = .rdi } },
6935 .{ .type = .u64, .kind = .{ .reg = .rcx } },
6936 .unused,
6937 .unused,
6938 .unused,
6939 .unused,
6940 .unused,
6941 .unused,
6942 },
6943 .dst_temps = .{.mem},
6944 .clobbers = .{ .eflags = true },
6945 .each = .{ .once = &.{
6946 .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ },
6947 .{ ._, ._c, .cl, ._, ._, ._, ._ },
6948 .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
6949 .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
6950 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
6951 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
6952 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
6953 .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ },
6954 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
6955 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },
6956 .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ },
6957 .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
6958 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
6959 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
6960 } },
6961 }, .{
6962 .required_features = .{ .@"64bit", .cmov, null, null },
6963 .src_constraints = .{ .any_unsigned_int, .any_unsigned_int },
6964 .patterns = &.{
6965 .{ .src = .{ .to_mem, .to_mem } },
6966 },
6967 .extra_temps = .{
6968 .{ .type = .isize, .kind = .{ .reg = .rsi } },
6969 .{ .type = .u64, .kind = .{ .reg = .rdi } },
6970 .{ .type = .u64, .kind = .{ .reg = .rcx } },
6971 .unused,
6972 .unused,
6973 .unused,
6974 .unused,
6975 .unused,
6976 .unused,
6977 },
6978 .dst_temps = .{.mem},
6979 .clobbers = .{ .eflags = true },
6980 .each = .{ .once = &.{
6981 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ },
6982 .{ ._, ._c, .cl, ._, ._, ._, ._ },
6983 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ },
6984 .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ },
6985 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
6986 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
6987 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
6988 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
6989 .{ ._, ._ae, .cmov, .tmp0p, .tmp1p, ._, ._ },
6990 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
6991 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
6992 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
6993 } },
6994 }, .{
6995 .required_features = .{ .@"64bit", null, null, null },
6996 .src_constraints = .{ .any_unsigned_int, .any_unsigned_int },
6997 .patterns = &.{
6998 .{ .src = .{ .to_mem, .to_mem } },
6999 },
7000 .extra_temps = .{
7001 .{ .type = .isize, .kind = .{ .reg = .rsi } },
7002 .{ .type = .u64, .kind = .{ .reg = .rdi } },
7003 .{ .type = .u64, .kind = .{ .reg = .rcx } },
7004 .unused,
7005 .unused,
7006 .unused,
7007 .unused,
7008 .unused,
7009 .unused,
7010 },
7011 .dst_temps = .{.mem},
7012 .clobbers = .{ .eflags = true },
7013 .each = .{ .once = &.{
7014 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ },
7015 .{ ._, ._c, .cl, ._, ._, ._, ._ },
7016 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ },
7017 .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ },
7018 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
7019 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
7020 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
7021 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
7022 .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ },
7023 .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
7024 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
7025 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
7026 } },
7027 }, .{
7028 .required_features = .{ .avx, null, null, null },
7029 .src_constraints = .{
7030 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
7031 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
7032 },
7033 .patterns = &.{
7034 .{ .src = .{ .to_sse, .mem } },
7035 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
7036 .{ .src = .{ .to_sse, .to_sse } },
7037 },
7038 .dst_temps = .{.{ .rc = .sse }},
7039 .each = .{ .once = &.{
7040 .{ ._, .vp_b, .mins, .dst0x, .src0x, .src1x, ._ },
7041 } },
7042 }, .{
7043 .required_features = .{ .sse4_1, null, null, null },
7044 .src_constraints = .{
7045 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
7046 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
7047 },
7048 .patterns = &.{
7049 .{ .src = .{ .to_mut_sse, .mem } },
7050 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
7051 .{ .src = .{ .to_mut_sse, .to_sse } },
7052 },
7053 .dst_temps = .{.{ .ref = .src0 }},
7054 .each = .{ .once = &.{
7055 .{ ._, .p_b, .mins, .dst0x, .src1x, ._, ._ },
7056 } },
7057 }, .{
7058 .required_features = .{ .sse2, null, null, null },
7059 .src_constraints = .{
7060 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
7061 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
7062 },
7063 .patterns = &.{
7064 .{ .src = .{ .to_mut_sse, .mem } },
7065 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
7066 .{ .src = .{ .to_mut_sse, .to_sse } },
7067 },
7068 .dst_temps = .{.{ .rc = .sse }},
7069 .each = .{ .once = &.{
7070 .{ ._, ._dqa, .mov, .dst0x, .src1x, ._, ._ },
7071 .{ ._, .p_b, .cmpgt, .dst0x, .src0x, ._, ._ },
7072 .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ },
7073 .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ },
7074 .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ },
7075 } },
7076 }, .{
7077 .required_features = .{ .avx2, null, null, null },
7078 .src_constraints = .{
7079 .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } },
7080 .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } },
7081 },
7082 .patterns = &.{
7083 .{ .src = .{ .to_sse, .mem } },
7084 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
7085 .{ .src = .{ .to_sse, .to_sse } },
7086 },
7087 .dst_temps = .{.{ .rc = .sse }},
7088 .each = .{ .once = &.{
7089 .{ ._, .vp_b, .mins, .dst0y, .src0y, .src1y, ._ },
7090 } },
7091 }, .{
7092 .required_features = .{ .avx2, null, null, null },
7093 .src_constraints = .{
7094 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } },
7095 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } },
7096 },
6046 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, switch (@as(bits.RoundMode.Direction, switch (air_tag) {
6047 else => unreachable,
6048 .div_trunc => .zero,
6049 .div_floor => .down,
6050 })) {
6051 else => unreachable,
6052 inline .zero, .down => |direction| comptime &.{ .{
6053 .required_features = .{ .f16c, null, null, null },
6054 .src_constraints = .{
6055 .{ .scalar_float = .{ .of = .word, .is = .word } },
6056 .{ .scalar_float = .{ .of = .word, .is = .word } },
6057 .any,
6058 },
6059 .patterns = &.{
6060 .{ .src = .{ .to_sse, .to_sse, .none } },
6061 },
6062 .extra_temps = .{
6063 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
6064 .unused,
6065 .unused,
6066 .unused,
6067 .unused,
6068 .unused,
6069 .unused,
6070 .unused,
6071 .unused,
6072 },
6073 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6074 .each = .{ .once = &.{
6075 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
6076 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
6077 .{ ._, .v_ss, .div, .dst0x, .dst0x, .tmp0d, ._ },
6078 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
6079 .{ ._, .v_ps, .cvtph2, .dst0x, .dst0q, ._, ._ },
6080 .{ ._, .v_ss, .round, .dst0x, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }) },
6081 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
6082 } },
6083 }, .{
6084 .required_features = .{ .sse, null, null, null },
6085 .src_constraints = .{
6086 .{ .scalar_float = .{ .of = .word, .is = .word } },
6087 .{ .scalar_float = .{ .of = .word, .is = .word } },
6088 .any,
6089 },
6090 .patterns = &.{
6091 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
6092 },
6093 .call_frame = .{ .alignment = .@"16" },
6094 .extra_temps = .{
6095 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
6096 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6097 else => unreachable,
6098 .zero => "__trunch",
6099 .down => "__floorh",
6100 } } } },
6101 .unused,
6102 .unused,
6103 .unused,
6104 .unused,
6105 .unused,
6106 .unused,
6107 .unused,
6108 },
6109 .dst_temps = .{.{ .ref = .src0 }},
6110 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6111 .each = .{ .once = &.{
6112 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
6113 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
6114 } },
6115 }, .{
6116 .required_features = .{ .f16c, null, null, null },
6117 .src_constraints = .{
6118 .{ .scalar_float = .{ .of = .qword, .is = .word } },
6119 .{ .scalar_float = .{ .of = .qword, .is = .word } },
6120 .any,
6121 },
6122 .patterns = &.{
6123 .{ .src = .{ .mem, .mem, .none } },
6124 .{ .src = .{ .to_sse, .mem, .none } },
6125 .{ .src = .{ .mem, .to_sse, .none } },
6126 .{ .src = .{ .to_sse, .to_sse, .none } },
6127 },
6128 .extra_temps = .{
6129 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
6130 .unused,
6131 .unused,
6132 .unused,
6133 .unused,
6134 .unused,
6135 .unused,
6136 .unused,
6137 .unused,
6138 },
6139 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6140 .each = .{ .once = &.{
6141 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
6142 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
6143 .{ ._, .v_ps, .div, .dst0x, .dst0x, .tmp0x, ._ },
6144 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
6145 .{ ._, .v_ps, .cvtph2, .dst0x, .dst0q, ._, ._ },
6146 .{ ._, .v_ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6147 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
6148 } },
6149 }, .{
6150 .required_features = .{ .f16c, null, null, null },
6151 .src_constraints = .{
6152 .{ .scalar_float = .{ .of = .xword, .is = .word } },
6153 .{ .scalar_float = .{ .of = .xword, .is = .word } },
6154 .any,
6155 },
6156 .patterns = &.{
6157 .{ .src = .{ .mem, .mem, .none } },
6158 .{ .src = .{ .to_sse, .mem, .none } },
6159 .{ .src = .{ .mem, .to_sse, .none } },
6160 .{ .src = .{ .to_sse, .to_sse, .none } },
6161 },
6162 .extra_temps = .{
6163 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
6164 .unused,
6165 .unused,
6166 .unused,
6167 .unused,
6168 .unused,
6169 .unused,
6170 .unused,
6171 .unused,
6172 },
6173 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6174 .each = .{ .once = &.{
6175 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
6176 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
6177 .{ ._, .v_ps, .div, .dst0y, .dst0y, .tmp0y, ._ },
6178 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
6179 .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ },
6180 .{ ._, .v_ps, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6181 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
6182 } },
6183 }, .{
6184 .required_features = .{ .f16c, null, null, null },
6185 .src_constraints = .{
6186 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
6187 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
6188 .any,
6189 },
6190 .patterns = &.{
6191 .{ .src = .{ .to_mem, .to_mem, .none } },
6192 },
6193 .extra_temps = .{
6194 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6195 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
6196 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
6197 .unused,
6198 .unused,
6199 .unused,
6200 .unused,
6201 .unused,
6202 .unused,
6203 },
6204 .dst_temps = .{.mem},
6205 .clobbers = .{ .eflags = true },
6206 .each = .{ .once = &.{
6207 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6208 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
6209 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
6210 .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .tmp2y, ._ },
6211 .{ ._, .v_, .cvtps2ph, .tmp1x, .tmp1y, .rm(.{}), ._ },
6212 .{ ._, .v_ps, .cvtph2, .tmp1y, .tmp1x, ._, ._ },
6213 .{ ._, .v_ps, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6214 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
6215 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6216 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6217 } },
6218 }, .{
6219 .required_features = .{ .avx, null, null, null },
6220 .src_constraints = .{
6221 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6222 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6223 .any,
6224 },
6225 .patterns = &.{
6226 .{ .src = .{ .to_mem, .to_mem, .none } },
6227 },
6228 .call_frame = .{ .alignment = .@"16" },
6229 .extra_temps = .{
6230 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6231 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
6232 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
6233 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
6234 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6235 else => unreachable,
6236 .zero => "__trunch",
6237 .down => "__floorh",
6238 } } } },
6239 .unused,
6240 .unused,
6241 .unused,
6242 .unused,
6243 },
6244 .dst_temps = .{.mem},
6245 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6246 .each = .{ .once = &.{
6247 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6248 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
6249 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
6250 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
6251 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6252 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
6253 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
6254 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
6255 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6256 } },
6257 }, .{
6258 .required_features = .{ .sse4_1, null, null, null },
6259 .src_constraints = .{
6260 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6261 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6262 .any,
6263 },
6264 .patterns = &.{
6265 .{ .src = .{ .to_mem, .to_mem, .none } },
6266 },
6267 .call_frame = .{ .alignment = .@"16" },
6268 .extra_temps = .{
6269 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6270 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
6271 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
6272 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
6273 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6274 else => unreachable,
6275 .zero => "__trunch",
6276 .down => "__floorh",
6277 } } } },
6278 .unused,
6279 .unused,
6280 .unused,
6281 .unused,
6282 },
6283 .dst_temps = .{.mem},
6284 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6285 .each = .{ .once = &.{
6286 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6287 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
6288 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
6289 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
6290 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
6291 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6292 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
6293 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
6294 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
6295 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6296 } },
6297 }, .{
6298 .required_features = .{ .sse2, null, null, null },
6299 .src_constraints = .{
6300 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6301 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6302 .any,
6303 },
6304 .patterns = &.{
6305 .{ .src = .{ .to_mem, .to_mem, .none } },
6306 },
6307 .call_frame = .{ .alignment = .@"16" },
6308 .extra_temps = .{
6309 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6310 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
6311 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
6312 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
6313 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6314 else => unreachable,
6315 .zero => "__trunch",
6316 .down => "__floorh",
6317 } } } },
6318 .{ .type = .f16, .kind = .{ .reg = .ax } },
6319 .unused,
6320 .unused,
6321 .unused,
6322 },
6323 .dst_temps = .{.mem},
6324 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6325 .each = .{ .once = &.{
6326 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6327 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
6328 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
6329 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
6330 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
6331 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6332 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
6333 .{ ._, .p_w, .extr, .tmp5d, .tmp1x, .ui(0), ._ },
6334 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp5w, ._, ._ },
6335 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
6336 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6337 } },
6338 }, .{
6339 .required_features = .{ .sse, null, null, null },
6340 .src_constraints = .{
6341 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6342 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6343 .any,
6344 },
6345 .patterns = &.{
6346 .{ .src = .{ .to_mem, .to_mem, .none } },
6347 },
6348 .call_frame = .{ .alignment = .@"16" },
6349 .extra_temps = .{
6350 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6351 .{ .type = .f16, .kind = .{ .reg = .ax } },
6352 .{ .type = .f32, .kind = .mem },
6353 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
6354 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
6355 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
6356 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6357 else => unreachable,
6358 .zero => "__trunch",
6359 .down => "__floorh",
6360 } } } },
6361 .unused,
6362 .unused,
6363 },
6364 .dst_temps = .{.mem},
6365 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6366 .each = .{ .once = &.{
6367 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6368 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
6369 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
6370 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
6371 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
6372 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
6373 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
6374 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
6375 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
6376 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
6377 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
6378 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
6379 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
6380 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6381 } },
6382 }, .{
6383 .required_features = .{ .avx, null, null, null },
6384 .src_constraints = .{
6385 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
6386 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
6387 .any,
6388 },
6389 .patterns = &.{
6390 .{ .src = .{ .to_sse, .mem, .none } },
6391 .{ .src = .{ .to_sse, .to_sse, .none } },
6392 },
6393 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6394 .each = .{ .once = &.{
6395 .{ ._, .v_ss, .div, .dst0x, .src0x, .src1d, ._ },
6396 .{ ._, .v_ss, .round, .dst0x, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }) },
6397 } },
6398 }, .{
6399 .required_features = .{ .sse4_1, null, null, null },
6400 .src_constraints = .{
6401 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
6402 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
6403 .any,
6404 },
6405 .patterns = &.{
6406 .{ .src = .{ .to_mut_sse, .mem, .none } },
6407 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
6408 },
6409 .dst_temps = .{.{ .ref = .src0 }},
6410 .each = .{ .once = &.{
6411 .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ },
6412 .{ ._, ._ss, .round, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6413 } },
6414 }, .{
6415 .required_features = .{ .sse, null, null, null },
6416 .src_constraints = .{
6417 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
6418 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
6419 .any,
6420 },
6421 .patterns = &.{
6422 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } },
6423 },
6424 .call_frame = .{ .alignment = .@"16" },
6425 .extra_temps = .{
6426 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6427 else => unreachable,
6428 .zero => "truncf",
6429 .down => "floorf",
6430 } } } },
6431 .unused,
6432 .unused,
6433 .unused,
6434 .unused,
6435 .unused,
6436 .unused,
6437 .unused,
6438 .unused,
6439 },
6440 .dst_temps = .{.{ .ref = .src0 }},
6441 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6442 .each = .{ .once = &.{
6443 .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ },
6444 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
6445 } },
6446 }, .{
6447 .required_features = .{ .avx, null, null, null },
6448 .src_constraints = .{
6449 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
6450 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
6451 .any,
6452 },
6453 .patterns = &.{
6454 .{ .src = .{ .to_sse, .mem, .none } },
6455 .{ .src = .{ .to_sse, .to_sse, .none } },
6456 },
6457 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6458 .each = .{ .once = &.{
6459 .{ ._, .v_ps, .div, .dst0x, .src0x, .src1x, ._ },
6460 .{ ._, .v_ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6461 } },
6462 }, .{
6463 .required_features = .{ .sse4_1, null, null, null },
6464 .src_constraints = .{
6465 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
6466 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
6467 .any,
6468 },
6469 .patterns = &.{
6470 .{ .src = .{ .to_mut_sse, .mem, .none } },
6471 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
6472 },
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 },
709715716 .patterns = &.{
7098 .{ .src = .{ .to_mem, .to_mem } },
15717 .{ .src = .{ .to_mem, .to_mem, .none } },
709915718 },
710015719 .extra_temps = .{
710115720 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7123,9 +15742,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
712315742 .src_constraints = .{
712415743 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
712515744 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
15745 .any,
712615746 },
712715747 .patterns = &.{
7128 .{ .src = .{ .to_mem, .to_mem } },
15748 .{ .src = .{ .to_mem, .to_mem, .none } },
712915749 },
713015750 .extra_temps = .{
713115751 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7153,9 +15773,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
715315773 .src_constraints = .{
715415774 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
715515775 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
15776 .any,
715615777 },
715715778 .patterns = &.{
7158 .{ .src = .{ .to_mem, .to_mem } },
15779 .{ .src = .{ .to_mem, .to_mem, .none } },
715915780 },
716015781 .extra_temps = .{
716115782 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7183,9 +15804,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
718315804 .src_constraints = .{
718415805 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
718515806 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
15807 .any,
718615808 },
718715809 .patterns = &.{
7188 .{ .src = .{ .to_mem, .to_mem } },
15810 .{ .src = .{ .to_mem, .to_mem, .none } },
718915811 },
719015812 .extra_temps = .{
719115813 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7217,9 +15839,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
721715839 .src_constraints = .{
721815840 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
721915841 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
15842 .any,
722015843 },
722115844 .patterns = &.{
7222 .{ .src = .{ .to_mem, .to_mem } },
15845 .{ .src = .{ .to_mem, .to_mem, .none } },
722315846 },
722415847 .extra_temps = .{
722515848 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7249,9 +15872,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
724915872 .src_constraints = .{
725015873 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
725115874 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
15875 .any,
725215876 },
725315877 .patterns = &.{
7254 .{ .src = .{ .to_mem, .to_mem } },
15878 .{ .src = .{ .to_mem, .to_mem, .none } },
725515879 },
725615880 .extra_temps = .{
725715881 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7281,9 +15905,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
728115905 .src_constraints = .{
728215906 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
728315907 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
15908 .any,
728415909 },
728515910 .patterns = &.{
7286 .{ .src = .{ .to_mem, .to_mem } },
15911 .{ .src = .{ .to_mem, .to_mem, .none } },
728715912 },
728815913 .extra_temps = .{
728915914 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7312,9 +15937,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
731215937 .src_constraints = .{
731315938 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
731415939 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
15940 .any,
731515941 },
731615942 .patterns = &.{
7317 .{ .src = .{ .to_mem, .to_mem } },
15943 .{ .src = .{ .to_mem, .to_mem, .none } },
731815944 },
731915945 .extra_temps = .{
732015946 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7344,11 +15970,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
734415970 .src_constraints = .{
734515971 .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } },
734615972 .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } },
15973 .any,
734715974 },
734815975 .patterns = &.{
7349 .{ .src = .{ .to_mut_mmx, .mem } },
7350 .{ .src = .{ .mem, .to_mut_mmx }, .commute = .{ 0, 1 } },
7351 .{ .src = .{ .to_mut_mmx, .to_mmx } },
15976 .{ .src = .{ .to_mut_mmx, .mem, .none } },
15977 .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } },
15978 .{ .src = .{ .to_mut_mmx, .to_mmx, .none } },
735215979 },
735315980 .dst_temps = .{.{ .ref = .src0 }},
735415981 .each = .{ .once = &.{
......@@ -7359,11 +15986,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
735915986 .src_constraints = .{
736015987 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
736115988 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
15989 .any,
736215990 },
736315991 .patterns = &.{
7364 .{ .src = .{ .to_sse, .mem } },
7365 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
7366 .{ .src = .{ .to_sse, .to_sse } },
15992 .{ .src = .{ .to_sse, .mem, .none } },
15993 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
15994 .{ .src = .{ .to_sse, .to_sse, .none } },
736715995 },
736815996 .dst_temps = .{.{ .rc = .sse }},
736915997 .each = .{ .once = &.{
......@@ -7374,11 +16002,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
737416002 .src_constraints = .{
737516003 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
737616004 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
16005 .any,
737716006 },
737816007 .patterns = &.{
7379 .{ .src = .{ .to_mut_sse, .mem } },
7380 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
7381 .{ .src = .{ .to_mut_sse, .to_sse } },
16008 .{ .src = .{ .to_mut_sse, .mem, .none } },
16009 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
16010 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
738216011 },
738316012 .dst_temps = .{.{ .ref = .src0 }},
738416013 .each = .{ .once = &.{
......@@ -7389,11 +16018,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
738916018 .src_constraints = .{
739016019 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
739116020 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
16021 .any,
739216022 },
739316023 .patterns = &.{
7394 .{ .src = .{ .to_sse, .mem } },
7395 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
7396 .{ .src = .{ .to_sse, .to_sse } },
16024 .{ .src = .{ .to_sse, .mem, .none } },
16025 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
16026 .{ .src = .{ .to_sse, .to_sse, .none } },
739716027 },
739816028 .dst_temps = .{.{ .rc = .sse }},
739916029 .each = .{ .once = &.{
......@@ -7404,9 +16034,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
740416034 .src_constraints = .{
740516035 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
740616036 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
16037 .any,
740716038 },
740816039 .patterns = &.{
7409 .{ .src = .{ .to_mem, .to_mem } },
16040 .{ .src = .{ .to_mem, .to_mem, .none } },
741016041 },
741116042 .extra_temps = .{
741216043 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7434,9 +16065,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
743416065 .src_constraints = .{
743516066 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
743616067 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
16068 .any,
743716069 },
743816070 .patterns = &.{
7439 .{ .src = .{ .to_mem, .to_mem } },
16071 .{ .src = .{ .to_mem, .to_mem, .none } },
744016072 },
744116073 .extra_temps = .{
744216074 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7464,9 +16096,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
746416096 .src_constraints = .{
746516097 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
746616098 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
16099 .any,
746716100 },
746816101 .patterns = &.{
7469 .{ .src = .{ .to_mem, .to_mem } },
16102 .{ .src = .{ .to_mem, .to_mem, .none } },
747016103 },
747116104 .extra_temps = .{
747216105 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7494,9 +16127,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
749416127 .src_constraints = .{
749516128 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
749616129 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
16130 .any,
749716131 },
749816132 .patterns = &.{
7499 .{ .src = .{ .to_mem, .to_mem } },
16133 .{ .src = .{ .to_mem, .to_mem, .none } },
750016134 },
750116135 .extra_temps = .{
750216136 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7526,9 +16160,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
752616160 .src_constraints = .{
752716161 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
752816162 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
16163 .any,
752916164 },
753016165 .patterns = &.{
7531 .{ .src = .{ .to_mem, .to_mem } },
16166 .{ .src = .{ .to_mem, .to_mem, .none } },
753216167 },
753316168 .extra_temps = .{
753416169 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7558,9 +16193,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
755816193 .src_constraints = .{
755916194 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
756016195 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
16196 .any,
756116197 },
756216198 .patterns = &.{
7563 .{ .src = .{ .to_mem, .to_mem } },
16199 .{ .src = .{ .to_mem, .to_mem, .none } },
756416200 },
756516201 .extra_temps = .{
756616202 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7589,9 +16225,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
758916225 .src_constraints = .{
759016226 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
759116227 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
16228 .any,
759216229 },
759316230 .patterns = &.{
7594 .{ .src = .{ .to_mem, .to_mem } },
16231 .{ .src = .{ .to_mem, .to_mem, .none } },
759516232 },
759616233 .extra_temps = .{
759716234 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7621,11 +16258,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
762116258 .src_constraints = .{
762216259 .{ .scalar_signed_int = .{ .of = .qword, .is = .word } },
762316260 .{ .scalar_signed_int = .{ .of = .qword, .is = .word } },
16261 .any,
762416262 },
762516263 .patterns = &.{
7626 .{ .src = .{ .to_mut_mmx, .mem } },
7627 .{ .src = .{ .mem, .to_mut_mmx }, .commute = .{ 0, 1 } },
7628 .{ .src = .{ .to_mut_mmx, .to_mmx } },
16264 .{ .src = .{ .to_mut_mmx, .mem, .none } },
16265 .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } },
16266 .{ .src = .{ .to_mut_mmx, .to_mmx, .none } },
762916267 },
763016268 .dst_temps = .{.{ .ref = .src0 }},
763116269 .each = .{ .once = &.{
......@@ -7636,11 +16274,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
763616274 .src_constraints = .{
763716275 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
763816276 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
16277 .any,
763916278 },
764016279 .patterns = &.{
7641 .{ .src = .{ .to_sse, .mem } },
7642 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
7643 .{ .src = .{ .to_sse, .to_sse } },
16280 .{ .src = .{ .to_sse, .mem, .none } },
16281 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
16282 .{ .src = .{ .to_sse, .to_sse, .none } },
764416283 },
764516284 .dst_temps = .{.{ .rc = .sse }},
764616285 .each = .{ .once = &.{
......@@ -7651,11 +16290,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
765116290 .src_constraints = .{
765216291 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
765316292 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
16293 .any,
765416294 },
765516295 .patterns = &.{
7656 .{ .src = .{ .to_mut_sse, .mem } },
7657 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
7658 .{ .src = .{ .to_mut_sse, .to_sse } },
16296 .{ .src = .{ .to_mut_sse, .mem, .none } },
16297 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
16298 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
765916299 },
766016300 .dst_temps = .{.{ .ref = .src0 }},
766116301 .each = .{ .once = &.{
......@@ -7666,11 +16306,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
766616306 .src_constraints = .{
766716307 .{ .scalar_signed_int = .{ .of = .yword, .is = .word } },
766816308 .{ .scalar_signed_int = .{ .of = .yword, .is = .word } },
16309 .any,
766916310 },
767016311 .patterns = &.{
7671 .{ .src = .{ .to_sse, .mem } },
7672 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
7673 .{ .src = .{ .to_sse, .to_sse } },
16312 .{ .src = .{ .to_sse, .mem, .none } },
16313 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
16314 .{ .src = .{ .to_sse, .to_sse, .none } },
767416315 },
767516316 .dst_temps = .{.{ .rc = .sse }},
767616317 .each = .{ .once = &.{
......@@ -7681,9 +16322,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
768116322 .src_constraints = .{
768216323 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } },
768316324 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } },
16325 .any,
768416326 },
768516327 .patterns = &.{
7686 .{ .src = .{ .to_mem, .to_mem } },
16328 .{ .src = .{ .to_mem, .to_mem, .none } },
768716329 },
768816330 .extra_temps = .{
768916331 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7711,9 +16353,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
771116353 .src_constraints = .{
771216354 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
771316355 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
16356 .any,
771416357 },
771516358 .patterns = &.{
7716 .{ .src = .{ .to_mem, .to_mem } },
16359 .{ .src = .{ .to_mem, .to_mem, .none } },
771716360 },
771816361 .extra_temps = .{
771916362 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7741,9 +16384,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
774116384 .src_constraints = .{
774216385 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
774316386 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
16387 .any,
774416388 },
774516389 .patterns = &.{
7746 .{ .src = .{ .to_mem, .to_mem } },
16390 .{ .src = .{ .to_mem, .to_mem, .none } },
774716391 },
774816392 .extra_temps = .{
774916393 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7771,9 +16415,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
777116415 .src_constraints = .{
777216416 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
777316417 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
16418 .any,
777416419 },
777516420 .patterns = &.{
7776 .{ .src = .{ .to_mem, .to_mem } },
16421 .{ .src = .{ .to_mem, .to_mem, .none } },
777716422 },
777816423 .extra_temps = .{
777916424 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7801,9 +16446,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
780116446 .src_constraints = .{
780216447 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
780316448 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
16449 .any,
780416450 },
780516451 .patterns = &.{
7806 .{ .src = .{ .to_mem, .to_mem } },
16452 .{ .src = .{ .to_mem, .to_mem, .none } },
780716453 },
780816454 .extra_temps = .{
780916455 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7833,11 +16479,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
783316479 .src_constraints = .{
783416480 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
783516481 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
16482 .any,
783616483 },
783716484 .patterns = &.{
7838 .{ .src = .{ .to_sse, .mem } },
7839 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
7840 .{ .src = .{ .to_sse, .to_sse } },
16485 .{ .src = .{ .to_sse, .mem, .none } },
16486 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
16487 .{ .src = .{ .to_sse, .to_sse, .none } },
784116488 },
784216489 .dst_temps = .{.{ .rc = .sse }},
784316490 .each = .{ .once = &.{
......@@ -7848,11 +16495,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
784816495 .src_constraints = .{
784916496 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
785016497 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
16498 .any,
785116499 },
785216500 .patterns = &.{
7853 .{ .src = .{ .to_mut_sse, .mem } },
7854 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
7855 .{ .src = .{ .to_mut_sse, .to_sse } },
16501 .{ .src = .{ .to_mut_sse, .mem, .none } },
16502 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
16503 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
785616504 },
785716505 .dst_temps = .{.{ .ref = .src0 }},
785816506 .each = .{ .once = &.{
......@@ -7863,11 +16511,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
786316511 .src_constraints = .{
786416512 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
786516513 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
16514 .any,
786616515 },
786716516 .patterns = &.{
7868 .{ .src = .{ .to_mut_sse, .mem } },
7869 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
7870 .{ .src = .{ .to_mut_sse, .to_sse } },
16517 .{ .src = .{ .to_mut_sse, .mem, .none } },
16518 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
16519 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
787116520 },
787216521 .dst_temps = .{.{ .rc = .sse }},
787316522 .each = .{ .once = &.{
......@@ -7880,11 +16529,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
788016529 .src_constraints = .{
788116530 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } },
788216531 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } },
16532 .any,
788316533 },
788416534 .patterns = &.{
7885 .{ .src = .{ .to_sse, .mem } },
7886 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
7887 .{ .src = .{ .to_sse, .to_sse } },
16535 .{ .src = .{ .to_sse, .mem, .none } },
16536 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
16537 .{ .src = .{ .to_sse, .to_sse, .none } },
788816538 },
788916539 .dst_temps = .{.{ .rc = .sse }},
789016540 .each = .{ .once = &.{
......@@ -7895,9 +16545,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
789516545 .src_constraints = .{
789616546 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } },
789716547 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } },
16548 .any,
789816549 },
789916550 .patterns = &.{
7900 .{ .src = .{ .to_mem, .to_mem } },
16551 .{ .src = .{ .to_mem, .to_mem, .none } },
790116552 },
790216553 .extra_temps = .{
790316554 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7925,9 +16576,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
792516576 .src_constraints = .{
792616577 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
792716578 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
16579 .any,
792816580 },
792916581 .patterns = &.{
7930 .{ .src = .{ .to_mem, .to_mem } },
16582 .{ .src = .{ .to_mem, .to_mem, .none } },
793116583 },
793216584 .extra_temps = .{
793316585 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7955,9 +16607,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
795516607 .src_constraints = .{
795616608 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
795716609 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
16610 .any,
795816611 },
795916612 .patterns = &.{
7960 .{ .src = .{ .to_mem, .to_mem } },
16613 .{ .src = .{ .to_mem, .to_mem, .none } },
796116614 },
796216615 .extra_temps = .{
796316616 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7985,9 +16638,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
798516638 .src_constraints = .{
798616639 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
798716640 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
16641 .any,
798816642 },
798916643 .patterns = &.{
7990 .{ .src = .{ .to_mem, .to_mem } },
16644 .{ .src = .{ .to_mem, .to_mem, .none } },
799116645 },
799216646 .extra_temps = .{
799316647 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8017,9 +16671,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
801716671 .src_constraints = .{
801816672 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
801916673 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
16674 .any,
802016675 },
802116676 .patterns = &.{
8022 .{ .src = .{ .to_mem, .to_mem } },
16677 .{ .src = .{ .to_mem, .to_mem, .none } },
802316678 },
802416679 .extra_temps = .{
802516680 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8047,9 +16702,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
804716702 .src_constraints = .{
804816703 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
804916704 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
16705 .any,
805016706 },
805116707 .patterns = &.{
8052 .{ .src = .{ .to_mem, .to_mem } },
16708 .{ .src = .{ .to_mem, .to_mem, .none } },
805316709 },
805416710 .extra_temps = .{
805516711 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8079,11 +16735,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
807916735 .src_constraints = .{
808016736 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
808116737 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
16738 .any,
808216739 },
808316740 .patterns = &.{
8084 .{ .src = .{ .to_sse, .mem } },
8085 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
8086 .{ .src = .{ .to_sse, .to_sse } },
16741 .{ .src = .{ .to_sse, .mem, .none } },
16742 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
16743 .{ .src = .{ .to_sse, .to_sse, .none } },
808716744 },
808816745 .dst_temps = .{.{ .rc = .sse }},
808916746 .each = .{ .once = &.{
......@@ -8094,11 +16751,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
809416751 .src_constraints = .{
809516752 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
809616753 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
16754 .any,
809716755 },
809816756 .patterns = &.{
8099 .{ .src = .{ .to_mut_sse, .mem } },
8100 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
8101 .{ .src = .{ .to_mut_sse, .to_sse } },
16757 .{ .src = .{ .to_mut_sse, .mem, .none } },
16758 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
16759 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
810216760 },
810316761 .dst_temps = .{.{ .ref = .src0 }},
810416762 .each = .{ .once = &.{
......@@ -8109,11 +16767,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
810916767 .src_constraints = .{
811016768 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
811116769 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
16770 .any,
811216771 },
811316772 .patterns = &.{
8114 .{ .src = .{ .to_mut_sse, .mem } },
8115 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
8116 .{ .src = .{ .to_mut_sse, .to_sse } },
16773 .{ .src = .{ .to_mut_sse, .mem, .none } },
16774 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
16775 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
811716776 },
811816777 .dst_temps = .{.{ .rc = .sse }},
811916778 .each = .{ .once = &.{
......@@ -8128,11 +16787,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
812816787 .src_constraints = .{
812916788 .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } },
813016789 .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } },
16790 .any,
813116791 },
813216792 .patterns = &.{
8133 .{ .src = .{ .to_sse, .mem } },
8134 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
8135 .{ .src = .{ .to_sse, .to_sse } },
16793 .{ .src = .{ .to_sse, .mem, .none } },
16794 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
16795 .{ .src = .{ .to_sse, .to_sse, .none } },
813616796 },
813716797 .dst_temps = .{.{ .rc = .sse }},
813816798 .each = .{ .once = &.{
......@@ -8143,9 +16803,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
814316803 .src_constraints = .{
814416804 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } },
814516805 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } },
16806 .any,
814616807 },
814716808 .patterns = &.{
8148 .{ .src = .{ .to_mem, .to_mem } },
16809 .{ .src = .{ .to_mem, .to_mem, .none } },
814916810 },
815016811 .extra_temps = .{
815116812 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8173,9 +16834,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
817316834 .src_constraints = .{
817416835 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
817516836 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
16837 .any,
817616838 },
817716839 .patterns = &.{
8178 .{ .src = .{ .to_mem, .to_mem } },
16840 .{ .src = .{ .to_mem, .to_mem, .none } },
817916841 },
818016842 .extra_temps = .{
818116843 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8203,9 +16865,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
820316865 .src_constraints = .{
820416866 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
820516867 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
16868 .any,
820616869 },
820716870 .patterns = &.{
8208 .{ .src = .{ .to_mem, .to_mem } },
16871 .{ .src = .{ .to_mem, .to_mem, .none } },
820916872 },
821016873 .extra_temps = .{
821116874 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8233,9 +16896,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
823316896 .src_constraints = .{
823416897 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
823516898 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
16899 .any,
823616900 },
823716901 .patterns = &.{
8238 .{ .src = .{ .to_mem, .to_mem } },
16902 .{ .src = .{ .to_mem, .to_mem, .none } },
823916903 },
824016904 .extra_temps = .{
824116905 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8267,9 +16931,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
826716931 .src_constraints = .{
826816932 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
826916933 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
16934 .any,
827016935 },
827116936 .patterns = &.{
8272 .{ .src = .{ .to_mem, .to_mem } },
16937 .{ .src = .{ .to_mem, .to_mem, .none } },
827316938 },
827416939 .extra_temps = .{
827516940 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8297,9 +16962,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
829716962 .src_constraints = .{
829816963 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
829916964 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
16965 .any,
830016966 },
830116967 .patterns = &.{
8302 .{ .src = .{ .to_mem, .to_mem } },
16968 .{ .src = .{ .to_mem, .to_mem, .none } },
830316969 },
830416970 .extra_temps = .{
830516971 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8329,11 +16995,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
832916995 .src_constraints = .{
833016996 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
833116997 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
16998 .any,
833216999 },
833317000 .patterns = &.{
8334 .{ .src = .{ .to_sse, .mem } },
8335 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
8336 .{ .src = .{ .to_sse, .to_sse } },
17001 .{ .src = .{ .to_sse, .mem, .none } },
17002 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
17003 .{ .src = .{ .to_sse, .to_sse, .none } },
833717004 },
833817005 .dst_temps = .{.{ .rc = .sse }},
833917006 .each = .{ .once = &.{
......@@ -8344,11 +17011,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
834417011 .src_constraints = .{
834517012 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
834617013 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
17014 .any,
834717015 },
834817016 .patterns = &.{
8349 .{ .src = .{ .to_mut_sse, .mem } },
8350 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
8351 .{ .src = .{ .to_mut_sse, .to_sse } },
17017 .{ .src = .{ .to_mut_sse, .mem, .none } },
17018 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
17019 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
835217020 },
835317021 .dst_temps = .{.{ .ref = .src0 }},
835417022 .each = .{ .once = &.{
......@@ -8359,11 +17027,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
835917027 .src_constraints = .{
836017028 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
836117029 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
17030 .any,
836217031 },
836317032 .patterns = &.{
8364 .{ .src = .{ .to_mut_sse, .mem } },
8365 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
8366 .{ .src = .{ .to_mut_sse, .to_sse } },
17033 .{ .src = .{ .to_mut_sse, .mem, .none } },
17034 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
17035 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
836717036 },
836817037 .extra_temps = .{
836917038 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -8393,11 +17062,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
839317062 .src_constraints = .{
839417063 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
839517064 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
17065 .any,
839617066 },
839717067 .patterns = &.{
8398 .{ .src = .{ .to_sse, .mem } },
8399 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
8400 .{ .src = .{ .to_sse, .to_sse } },
17068 .{ .src = .{ .to_sse, .mem, .none } },
17069 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
17070 .{ .src = .{ .to_sse, .to_sse, .none } },
840117071 },
840217072 .dst_temps = .{.{ .rc = .sse }},
840317073 .each = .{ .once = &.{
......@@ -8408,9 +17078,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
840817078 .src_constraints = .{
840917079 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
841017080 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
17081 .any,
841117082 },
841217083 .patterns = &.{
8413 .{ .src = .{ .to_mem, .to_mem } },
17084 .{ .src = .{ .to_mem, .to_mem, .none } },
841417085 },
841517086 .extra_temps = .{
841617087 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8438,9 +17109,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
843817109 .src_constraints = .{
843917110 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
844017111 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
17112 .any,
844117113 },
844217114 .patterns = &.{
8443 .{ .src = .{ .to_mem, .to_mem } },
17115 .{ .src = .{ .to_mem, .to_mem, .none } },
844417116 },
844517117 .extra_temps = .{
844617118 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8468,9 +17140,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
846817140 .src_constraints = .{
846917141 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
847017142 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
17143 .any,
847117144 },
847217145 .patterns = &.{
8473 .{ .src = .{ .to_mem, .to_mem } },
17146 .{ .src = .{ .to_mem, .to_mem, .none } },
847417147 },
847517148 .extra_temps = .{
847617149 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8498,9 +17171,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
849817171 .src_constraints = .{
849917172 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
850017173 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
17174 .any,
850117175 },
850217176 .patterns = &.{
8503 .{ .src = .{ .to_mem, .to_mem } },
17177 .{ .src = .{ .to_mem, .to_mem, .none } },
850417178 },
850517179 .extra_temps = .{
850617180 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8538,9 +17212,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
853817212 .src_constraints = .{
853917213 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
854017214 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
17215 .any,
854117216 },
854217217 .patterns = &.{
8543 .{ .src = .{ .to_mem, .to_mem } },
17218 .{ .src = .{ .to_mem, .to_mem, .none } },
854417219 },
854517220 .extra_temps = .{
854617221 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8568,9 +17243,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
856817243 .src_constraints = .{
856917244 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
857017245 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
17246 .any,
857117247 },
857217248 .patterns = &.{
8573 .{ .src = .{ .to_mem, .to_mem } },
17249 .{ .src = .{ .to_mem, .to_mem, .none } },
857417250 },
857517251 .extra_temps = .{
857617252 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8600,11 +17276,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
860017276 .src_constraints = .{
860117277 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
860217278 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
17279 .any,
860317280 },
860417281 .patterns = &.{
8605 .{ .src = .{ .to_sse, .mem } },
8606 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
8607 .{ .src = .{ .to_sse, .to_sse } },
17282 .{ .src = .{ .to_sse, .mem, .none } },
17283 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
17284 .{ .src = .{ .to_sse, .to_sse, .none } },
860817285 },
860917286 .dst_temps = .{.{ .rc = .sse }},
861017287 .each = .{ .once = &.{
......@@ -8616,11 +17293,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
861617293 .src_constraints = .{
861717294 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
861817295 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
17296 .any,
861917297 },
862017298 .patterns = &.{
8621 .{ .src = .{ .to_mut_sse, .mem } },
8622 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
8623 .{ .src = .{ .to_mut_sse, .to_sse } },
17299 .{ .src = .{ .to_mut_sse, .mem, .none } },
17300 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
17301 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
862417302 },
862517303 .extra_temps = .{
862617304 .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } },
......@@ -8644,11 +17322,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
864417322 .src_constraints = .{
864517323 .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } },
864617324 .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } },
17325 .any,
864717326 },
864817327 .patterns = &.{
8649 .{ .src = .{ .to_sse, .mem } },
8650 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
8651 .{ .src = .{ .to_sse, .to_sse } },
17328 .{ .src = .{ .to_sse, .mem, .none } },
17329 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
17330 .{ .src = .{ .to_sse, .to_sse, .none } },
865217331 },
865317332 .dst_temps = .{.{ .rc = .sse }},
865417333 .each = .{ .once = &.{
......@@ -8660,9 +17339,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
866017339 .src_constraints = .{
866117340 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } },
866217341 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } },
17342 .any,
866317343 },
866417344 .patterns = &.{
8665 .{ .src = .{ .to_mem, .to_mem } },
17345 .{ .src = .{ .to_mem, .to_mem, .none } },
866617346 },
866717347 .extra_temps = .{
866817348 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8692,9 +17372,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
869217372 .src_constraints = .{
869317373 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
869417374 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
17375 .any,
869517376 },
869617377 .patterns = &.{
8697 .{ .src = .{ .to_mem, .to_mem } },
17378 .{ .src = .{ .to_mem, .to_mem, .none } },
869817379 },
869917380 .extra_temps = .{
870017381 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8724,9 +17405,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
872417405 .src_constraints = .{
872517406 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
872617407 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
17408 .any,
872717409 },
872817410 .patterns = &.{
8729 .{ .src = .{ .to_mem, .to_mem } },
17411 .{ .src = .{ .to_mem, .to_mem, .none } },
873017412 },
873117413 .extra_temps = .{
873217414 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8757,9 +17439,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
875717439 .src_constraints = .{
875817440 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
875917441 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
17442 .any,
876017443 },
876117444 .patterns = &.{
8762 .{ .src = .{ .to_mem, .to_mem } },
17445 .{ .src = .{ .to_mem, .to_mem, .none } },
876317446 },
876417447 .extra_temps = .{
876517448 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8788,9 +17471,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
878817471 .src_constraints = .{
878917472 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
879017473 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
17474 .any,
879117475 },
879217476 .patterns = &.{
8793 .{ .src = .{ .to_mem, .to_mem } },
17477 .{ .src = .{ .to_mem, .to_mem, .none } },
879417478 },
879517479 .extra_temps = .{
879617480 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8820,11 +17504,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
882017504 .src_constraints = .{
882117505 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
882217506 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
17507 .any,
882317508 },
882417509 .patterns = &.{
8825 .{ .src = .{ .to_sse, .mem } },
8826 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
8827 .{ .src = .{ .to_sse, .to_sse } },
17510 .{ .src = .{ .to_sse, .mem, .none } },
17511 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
17512 .{ .src = .{ .to_sse, .to_sse, .none } },
882817513 },
882917514 .extra_temps = .{
883017515 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -8851,11 +17536,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
885117536 .src_constraints = .{
885217537 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
885317538 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
17539 .any,
885417540 },
885517541 .patterns = &.{
8856 .{ .src = .{ .to_mut_sse, .mem } },
8857 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
8858 .{ .src = .{ .to_mut_sse, .to_sse } },
17542 .{ .src = .{ .to_mut_sse, .mem, .none } },
17543 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
17544 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
885917545 },
886017546 .extra_temps = .{
886117547 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -8883,11 +17569,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
888317569 .src_constraints = .{
888417570 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
888517571 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
17572 .any,
888617573 },
888717574 .patterns = &.{
8888 .{ .src = .{ .to_sse, .mem } },
8889 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
8890 .{ .src = .{ .to_sse, .to_sse } },
17575 .{ .src = .{ .to_sse, .mem, .none } },
17576 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
17577 .{ .src = .{ .to_sse, .to_sse, .none } },
889117578 },
889217579 .extra_temps = .{
889317580 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -8914,9 +17601,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
891417601 .src_constraints = .{
891517602 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
891617603 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
17604 .any,
891717605 },
891817606 .patterns = &.{
8919 .{ .src = .{ .to_mem, .to_mem } },
17607 .{ .src = .{ .to_mem, .to_mem, .none } },
892017608 },
892117609 .extra_temps = .{
892217610 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8950,9 +17638,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
895017638 .src_constraints = .{
895117639 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
895217640 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
17641 .any,
895317642 },
895417643 .patterns = &.{
8955 .{ .src = .{ .to_mem, .to_mem } },
17644 .{ .src = .{ .to_mem, .to_mem, .none } },
895617645 },
895717646 .extra_temps = .{
895817647 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8986,9 +17675,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
898617675 .src_constraints = .{
898717676 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
898817677 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
17678 .any,
898917679 },
899017680 .patterns = &.{
8991 .{ .src = .{ .to_mem, .to_mem } },
17681 .{ .src = .{ .to_mem, .to_mem, .none } },
899217682 },
899317683 .extra_temps = .{
899417684 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -9024,9 +17714,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
902417714 .src_constraints = .{
902517715 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
902617716 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
17717 .any,
902717718 },
902817719 .patterns = &.{
9029 .{ .src = .{ .to_mem, .to_mem } },
17720 .{ .src = .{ .to_mem, .to_mem, .none } },
903017721 },
903117722 .extra_temps = .{
903217723 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -9055,9 +17746,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
905517746 .src_constraints = .{
905617747 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
905717748 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
17749 .any,
905817750 },
905917751 .patterns = &.{
9060 .{ .src = .{ .to_mem, .to_mem } },
17752 .{ .src = .{ .to_mem, .to_mem, .none } },
906117753 },
906217754 .extra_temps = .{
906317755 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -9084,9 +17776,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
908417776 } },
908517777 }, .{
908617778 .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 },
908817780 .patterns = &.{
9089 .{ .src = .{ .to_mem, .to_mem } },
17781 .{ .src = .{ .to_mem, .to_mem, .none } },
909017782 },
909117783 .extra_temps = .{
909217784 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -9123,9 +17815,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
912317815 } },
912417816 }, .{
912517817 .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 },
912717819 .patterns = &.{
9128 .{ .src = .{ .to_mem, .to_mem } },
17820 .{ .src = .{ .to_mem, .to_mem, .none } },
912917821 },
913017822 .extra_temps = .{
913117823 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -9162,9 +17854,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
916217854 } },
916317855 }, .{
916417856 .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 },
916617858 .patterns = &.{
9167 .{ .src = .{ .to_mem, .to_mem } },
17859 .{ .src = .{ .to_mem, .to_mem, .none } },
916817860 },
916917861 .extra_temps = .{
917017862 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -9199,9 +17891,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
919917891 } },
920017892 }, .{
920117893 .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 },
920317895 .patterns = &.{
9204 .{ .src = .{ .to_mem, .to_mem } },
17896 .{ .src = .{ .to_mem, .to_mem, .none } },
920517897 },
920617898 .extra_temps = .{
920717899 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -9239,9 +17931,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
923917931 .src_constraints = .{
924017932 .{ .scalar_float = .{ .of = .word, .is = .word } },
924117933 .{ .scalar_float = .{ .of = .word, .is = .word } },
17934 .any,
924217935 },
924317936 .patterns = &.{
9244 .{ .src = .{ .to_sse, .to_sse } },
17937 .{ .src = .{ .to_sse, .to_sse, .none } },
924517938 },
924617939 .extra_temps = .{
924717940 .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
......@@ -9258,8 +17951,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
925817951 .each = .{ .once = &.{
925917952 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
926017953 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
9261 .{ ._, .v_ss, .cmp, .tmp1x, .dst0x, .dst0x, .vp(.unord) },
9262 .{ ._, .v_ss, .min, .dst0x, .tmp0x, .dst0x, ._ },
17954 .{ ._, .v_ss, .cmp, .tmp1x, .dst0x, .dst0d, .vp(.unord) },
17955 .{ ._, .v_ss, .min, .dst0x, .tmp0x, .dst0d, ._ },
926317956 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x },
926417957 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
926517958 } },
......@@ -9268,9 +17961,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
926817961 .src_constraints = .{
926917962 .{ .scalar_float = .{ .of = .word, .is = .word } },
927017963 .{ .scalar_float = .{ .of = .word, .is = .word } },
17964 .any,
927117965 },
927217966 .patterns = &.{
9273 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },
17967 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
927417968 },
927517969 .call_frame = .{ .alignment = .@"16" },
927617970 .extra_temps = .{
......@@ -9294,16 +17988,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
929417988 .src_constraints = .{
929517989 .{ .scalar_float = .{ .of = .qword, .is = .word } },
929617990 .{ .scalar_float = .{ .of = .qword, .is = .word } },
17991 .any,
929717992 },
929817993 .patterns = &.{
9299 .{ .src = .{ .mem, .mem } },
9300 .{ .src = .{ .to_sse, .mem } },
9301 .{ .src = .{ .mem, .to_sse } },
9302 .{ .src = .{ .to_sse, .to_sse } },
17994 .{ .src = .{ .mem, .mem, .none } },
17995 .{ .src = .{ .to_sse, .mem, .none } },
17996 .{ .src = .{ .mem, .to_sse, .none } },
17997 .{ .src = .{ .to_sse, .to_sse, .none } },
930317998 },
930417999 .extra_temps = .{
9305 .{ .type = .vector_4_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
9306 .{ .type = .vector_4_f16, .kind = .{ .rc = .sse } },
18000 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
18001 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
930718002 .unused,
930818003 .unused,
930918004 .unused,
......@@ -9326,16 +18021,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
932618021 .src_constraints = .{
932718022 .{ .scalar_float = .{ .of = .xword, .is = .word } },
932818023 .{ .scalar_float = .{ .of = .xword, .is = .word } },
18024 .any,
932918025 },
933018026 .patterns = &.{
9331 .{ .src = .{ .mem, .mem } },
9332 .{ .src = .{ .to_sse, .mem } },
9333 .{ .src = .{ .mem, .to_sse } },
9334 .{ .src = .{ .to_sse, .to_sse } },
18027 .{ .src = .{ .mem, .mem, .none } },
18028 .{ .src = .{ .to_sse, .mem, .none } },
18029 .{ .src = .{ .mem, .to_sse, .none } },
18030 .{ .src = .{ .to_sse, .to_sse, .none } },
933518031 },
933618032 .extra_temps = .{
9337 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
9338 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },
18033 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
18034 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
933918035 .unused,
934018036 .unused,
934118037 .unused,
......@@ -9351,22 +18047,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
935118047 .{ ._, .v_ps, .cmp, .tmp1y, .dst0y, .dst0y, .vp(.unord) },
935218048 .{ ._, .v_ps, .min, .dst0y, .tmp0y, .dst0y, ._ },
935318049 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp0y, .tmp1y },
9354 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0y, .rm(.{}), ._ },
18050 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
935518051 } },
935618052 }, .{
935718053 .required_features = .{ .f16c, null, null, null },
935818054 .src_constraints = .{
935918055 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
936018056 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
18057 .any,
936118058 },
936218059 .patterns = &.{
9363 .{ .src = .{ .to_mem, .to_mem } },
18060 .{ .src = .{ .to_mem, .to_mem, .none } },
936418061 },
936518062 .extra_temps = .{
936618063 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9367 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },
9368 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },
9369 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },
18064 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
18065 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
18066 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
937018067 .unused,
937118068 .unused,
937218069 .unused,
......@@ -9391,9 +18088,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
939118088 .src_constraints = .{
939218089 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
939318090 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
18091 .any,
939418092 },
939518093 .patterns = &.{
9396 .{ .src = .{ .to_mem, .to_mem } },
18094 .{ .src = .{ .to_mem, .to_mem, .none } },
939718095 },
939818096 .call_frame = .{ .alignment = .@"16" },
939918097 .extra_temps = .{
......@@ -9424,9 +18122,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
942418122 .src_constraints = .{
942518123 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
942618124 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
18125 .any,
942718126 },
942818127 .patterns = &.{
9429 .{ .src = .{ .to_mem, .to_mem } },
18128 .{ .src = .{ .to_mem, .to_mem, .none } },
943018129 },
943118130 .call_frame = .{ .alignment = .@"16" },
943218131 .extra_temps = .{
......@@ -9458,9 +18157,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
945818157 .src_constraints = .{
945918158 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
946018159 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
18160 .any,
946118161 },
946218162 .patterns = &.{
9463 .{ .src = .{ .to_mem, .to_mem } },
18163 .{ .src = .{ .to_mem, .to_mem, .none } },
946418164 },
946518165 .call_frame = .{ .alignment = .@"16" },
946618166 .extra_temps = .{
......@@ -9493,9 +18193,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
949318193 .src_constraints = .{
949418194 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
949518195 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
18196 .any,
949618197 },
949718198 .patterns = &.{
9498 .{ .src = .{ .to_mem, .to_mem } },
18199 .{ .src = .{ .to_mem, .to_mem, .none } },
949918200 },
950018201 .call_frame = .{ .alignment = .@"16" },
950118202 .extra_temps = .{
......@@ -9531,9 +18232,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
953118232 .src_constraints = .{
953218233 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
953318234 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
18235 .any,
953418236 },
953518237 .patterns = &.{
9536 .{ .src = .{ .to_sse, .to_sse } },
18238 .{ .src = .{ .to_sse, .to_sse, .none } },
953718239 },
953818240 .extra_temps = .{
953918241 .{ .type = .f32, .kind = .{ .rc = .sse } },
......@@ -9548,8 +18250,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
954818250 },
954918251 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
955018252 .each = .{ .once = &.{
9551 .{ ._, .v_ss, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) },
9552 .{ ._, .v_ss, .min, .dst0x, .src1x, .src0x, ._ },
18253 .{ ._, .v_ss, .cmp, .tmp0x, .src0x, .src0d, .vp(.unord) },
18254 .{ ._, .v_ss, .min, .dst0x, .src1x, .src0d, ._ },
955318255 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },
955418256 } },
955518257 }, .{
......@@ -9557,15 +18259,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
955718259 .src_constraints = .{
955818260 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
955918261 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
18262 .any,
956018263 },
956118264 .patterns = &.{
9562 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } },
18265 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } },
956318266 },
956418267 .dst_temps = .{.{ .rc = .sse }},
956518268 .each = .{ .once = &.{
956618269 .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ },
9567 .{ ._, ._ss, .min, .dst0x, .src0x, ._, ._ },
9568 .{ ._, ._ss, .cmp, .src0x, .src0x, .vp(.unord), ._ },
18270 .{ ._, ._ss, .min, .dst0x, .src0d, ._, ._ },
18271 .{ ._, ._ss, .cmp, .src0x, .src0d, .sp(.unord), ._ },
956918272 .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ },
957018273 } },
957118274 }, .{
......@@ -9573,9 +18276,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
957318276 .src_constraints = .{
957418277 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
957518278 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
18279 .any,
957618280 },
957718281 .patterns = &.{
9578 .{ .src = .{ .to_mut_sse, .to_sse } },
18282 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
957918283 },
958018284 .extra_temps = .{
958118285 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
......@@ -9591,8 +18295,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
959118295 .dst_temps = .{.{ .ref = .src0 }},
959218296 .each = .{ .once = &.{
959318297 .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ },
9594 .{ ._, ._ss, .min, .tmp0x, .src0x, ._, ._ },
9595 .{ ._, ._ss, .cmp, .dst0x, .src0x, .vp(.ord), ._ },
18298 .{ ._, ._ss, .min, .tmp0x, .src0d, ._, ._ },
18299 .{ ._, ._ss, .cmp, .dst0x, .src0d, .sp(.ord), ._ },
959618300 .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ },
959718301 .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ },
959818302 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },
......@@ -9602,9 +18306,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
960218306 .src_constraints = .{
960318307 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
960418308 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
18309 .any,
960518310 },
960618311 .patterns = &.{
9607 .{ .src = .{ .to_sse, .to_sse } },
18312 .{ .src = .{ .to_sse, .to_sse, .none } },
960818313 },
960918314 .extra_temps = .{
961018315 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
......@@ -9628,17 +18333,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
962818333 .src_constraints = .{
962918334 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
963018335 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
18336 .any,
963118337 },
963218338 .patterns = &.{
9633 .{ .src = .{ .{ .to_reg = .xmm0 }, .mem } },
9634 .{ .src = .{ .mem, .{ .to_reg = .xmm0 } }, .commute = .{ 0, 1 } },
9635 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } },
18339 .{ .src = .{ .{ .to_reg = .xmm0 }, .mem, .none } },
18340 .{ .src = .{ .mem, .{ .to_reg = .xmm0 }, .none }, .commute = .{ 0, 1 } },
18341 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } },
963618342 },
963718343 .dst_temps = .{.{ .rc = .sse }},
963818344 .each = .{ .once = &.{
963918345 .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ },
964018346 .{ ._, ._ps, .min, .dst0x, .src0x, ._, ._ },
9641 .{ ._, ._ps, .cmp, .src0x, .src0x, .vp(.unord), ._ },
18347 .{ ._, ._ps, .cmp, .src0x, .src0x, .sp(.unord), ._ },
964218348 .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ },
964318349 } },
964418350 }, .{
......@@ -9646,11 +18352,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
964618352 .src_constraints = .{
964718353 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
964818354 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
18355 .any,
964918356 },
965018357 .patterns = &.{
9651 .{ .src = .{ .to_mut_sse, .mem } },
9652 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
9653 .{ .src = .{ .to_mut_sse, .to_sse } },
18358 .{ .src = .{ .to_mut_sse, .mem, .none } },
18359 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
18360 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
965418361 },
965518362 .extra_temps = .{
965618363 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
......@@ -9667,7 +18374,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
966718374 .each = .{ .once = &.{
966818375 .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ },
966918376 .{ ._, ._ps, .min, .tmp0x, .src0x, ._, ._ },
9670 .{ ._, ._ps, .cmp, .dst0x, .src0x, .vp(.ord), ._ },
18377 .{ ._, ._ps, .cmp, .dst0x, .src0x, .sp(.ord), ._ },
967118378 .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ },
967218379 .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ },
967318380 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },
......@@ -9677,9 +18384,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
967718384 .src_constraints = .{
967818385 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
967918386 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
18387 .any,
968018388 },
968118389 .patterns = &.{
9682 .{ .src = .{ .to_sse, .to_sse } },
18390 .{ .src = .{ .to_sse, .to_sse, .none } },
968318391 },
968418392 .extra_temps = .{
968518393 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
......@@ -9703,9 +18411,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
970318411 .src_constraints = .{
970418412 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
970518413 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
18414 .any,
970618415 },
970718416 .patterns = &.{
9708 .{ .src = .{ .to_mem, .to_mem } },
18417 .{ .src = .{ .to_mem, .to_mem, .none } },
970918418 },
971018419 .extra_temps = .{
971118420 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -9736,9 +18445,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
973618445 .src_constraints = .{
973718446 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
973818447 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
18448 .any,
973918449 },
974018450 .patterns = &.{
9741 .{ .src = .{ .to_mem, .to_mem } },
18451 .{ .src = .{ .to_mem, .to_mem, .none } },
974218452 },
974318453 .extra_temps = .{
974418454 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -9759,7 +18469,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
975918469 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
976018470 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
976118471 .{ ._, ._ps, .min, .tmp3x, .tmp1x, ._, ._ },
9762 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },
18472 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ },
976318473 .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
976418474 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
976518475 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
......@@ -9770,9 +18480,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
977018480 .src_constraints = .{
977118481 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
977218482 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
18483 .any,
977318484 },
977418485 .patterns = &.{
9775 .{ .src = .{ .to_mem, .to_mem } },
18486 .{ .src = .{ .to_mem, .to_mem, .none } },
977618487 },
977718488 .extra_temps = .{
977818489 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -9793,7 +18504,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
979318504 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
979418505 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
979518506 .{ ._, ._ps, .min, .tmp3x, .tmp1x, ._, ._ },
9796 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.ord), ._ },
18507 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ },
979718508 .{ ._, ._ps, .@"and", .tmp3x, .tmp1x, ._, ._ },
979818509 .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ },
979918510 .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ },
......@@ -9806,9 +18517,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
980618517 .src_constraints = .{
980718518 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
980818519 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
18520 .any,
980918521 },
981018522 .patterns = &.{
9811 .{ .src = .{ .to_sse, .to_sse } },
18523 .{ .src = .{ .to_sse, .to_sse, .none } },
981218524 },
981318525 .extra_temps = .{
981418526 .{ .type = .f64, .kind = .{ .rc = .sse } },
......@@ -9823,8 +18535,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
982318535 },
982418536 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
982518537 .each = .{ .once = &.{
9826 .{ ._, .v_sd, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) },
9827 .{ ._, .v_sd, .min, .dst0x, .src1x, .src0x, ._ },
18538 .{ ._, .v_sd, .cmp, .tmp0x, .src0x, .src0q, .vp(.unord) },
18539 .{ ._, .v_sd, .min, .dst0x, .src1x, .src0q, ._ },
982818540 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },
982918541 } },
983018542 }, .{
......@@ -9832,15 +18544,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
983218544 .src_constraints = .{
983318545 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
983418546 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
18547 .any,
983518548 },
983618549 .patterns = &.{
9837 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } },
18550 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } },
983818551 },
983918552 .dst_temps = .{.{ .rc = .sse }},
984018553 .each = .{ .once = &.{
984118554 .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ },
9842 .{ ._, ._sd, .min, .dst0x, .src0x, ._, ._ },
9843 .{ ._, ._sd, .cmp, .src0x, .src0x, .vp(.unord), ._ },
18555 .{ ._, ._sd, .min, .dst0x, .src0q, ._, ._ },
18556 .{ ._, ._sd, .cmp, .src0x, .src0q, .sp(.unord), ._ },
984418557 .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ },
984518558 } },
984618559 }, .{
......@@ -9848,9 +18561,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
984818561 .src_constraints = .{
984918562 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
985018563 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
18564 .any,
985118565 },
985218566 .patterns = &.{
9853 .{ .src = .{ .to_mut_sse, .to_sse } },
18567 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
985418568 },
985518569 .extra_temps = .{
985618570 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
......@@ -9866,8 +18580,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
986618580 .dst_temps = .{.{ .ref = .src0 }},
986718581 .each = .{ .once = &.{
986818582 .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ },
9869 .{ ._, ._sd, .min, .tmp0x, .src0x, ._, ._ },
9870 .{ ._, ._sd, .cmp, .dst0x, .src0x, .vp(.ord), ._ },
18583 .{ ._, ._sd, .min, .tmp0x, .src0q, ._, ._ },
18584 .{ ._, ._sd, .cmp, .dst0x, .src0q, .sp(.ord), ._ },
987118585 .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ },
987218586 .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ },
987318587 .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ },
......@@ -9877,9 +18591,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
987718591 .src_constraints = .{
987818592 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
987918593 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
18594 .any,
988018595 },
988118596 .patterns = &.{
9882 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },
18597 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
988318598 },
988418599 .call_frame = .{ .alignment = .@"16" },
988518600 .extra_temps = .{
......@@ -9903,9 +18618,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
990318618 .src_constraints = .{
990418619 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
990518620 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
18621 .any,
990618622 },
990718623 .patterns = &.{
9908 .{ .src = .{ .to_sse, .to_sse } },
18624 .{ .src = .{ .to_sse, .to_sse, .none } },
990918625 },
991018626 .extra_temps = .{
991118627 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
......@@ -9929,17 +18645,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
992918645 .src_constraints = .{
993018646 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
993118647 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
18648 .any,
993218649 },
993318650 .patterns = &.{
9934 .{ .src = .{ .{ .to_reg = .xmm0 }, .mem } },
9935 .{ .src = .{ .mem, .{ .to_reg = .xmm0 } }, .commute = .{ 0, 1 } },
9936 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } },
18651 .{ .src = .{ .{ .to_reg = .xmm0 }, .mem, .none } },
18652 .{ .src = .{ .mem, .{ .to_reg = .xmm0 }, .none }, .commute = .{ 0, 1 } },
18653 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } },
993718654 },
993818655 .dst_temps = .{.{ .rc = .sse }},
993918656 .each = .{ .once = &.{
994018657 .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ },
994118658 .{ ._, ._pd, .min, .dst0x, .src0x, ._, ._ },
9942 .{ ._, ._pd, .cmp, .src0x, .src0x, .vp(.unord), ._ },
18659 .{ ._, ._pd, .cmp, .src0x, .src0x, .sp(.unord), ._ },
994318660 .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ },
994418661 } },
994518662 }, .{
......@@ -9947,11 +18664,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
994718664 .src_constraints = .{
994818665 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
994918666 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
18667 .any,
995018668 },
995118669 .patterns = &.{
9952 .{ .src = .{ .to_mut_sse, .mem } },
9953 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
9954 .{ .src = .{ .to_mut_sse, .to_sse } },
18670 .{ .src = .{ .to_mut_sse, .mem, .none } },
18671 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
18672 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
995518673 },
995618674 .extra_temps = .{
995718675 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
......@@ -9968,7 +18686,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
996818686 .each = .{ .once = &.{
996918687 .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ },
997018688 .{ ._, ._pd, .min, .tmp0x, .src0x, ._, ._ },
9971 .{ ._, ._pd, .cmp, .dst0x, .src0x, .vp(.ord), ._ },
18689 .{ ._, ._pd, .cmp, .dst0x, .src0x, .sp(.ord), ._ },
997218690 .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ },
997318691 .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ },
997418692 .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ },
......@@ -9978,9 +18696,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
997818696 .src_constraints = .{
997918697 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
998018698 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
18699 .any,
998118700 },
998218701 .patterns = &.{
9983 .{ .src = .{ .to_sse, .to_sse } },
18702 .{ .src = .{ .to_sse, .to_sse, .none } },
998418703 },
998518704 .extra_temps = .{
998618705 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
......@@ -10004,9 +18723,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1000418723 .src_constraints = .{
1000518724 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
1000618725 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
18726 .any,
1000718727 },
1000818728 .patterns = &.{
10009 .{ .src = .{ .to_mem, .to_mem } },
18729 .{ .src = .{ .to_mem, .to_mem, .none } },
1001018730 },
1001118731 .extra_temps = .{
1001218732 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10037,9 +18757,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1003718757 .src_constraints = .{
1003818758 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
1003918759 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
18760 .any,
1004018761 },
1004118762 .patterns = &.{
10042 .{ .src = .{ .to_mem, .to_mem } },
18763 .{ .src = .{ .to_mem, .to_mem, .none } },
1004318764 },
1004418765 .extra_temps = .{
1004518766 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10060,7 +18781,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1006018781 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
1006118782 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
1006218783 .{ ._, ._pd, .min, .tmp3x, .tmp1x, ._, ._ },
10063 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },
18784 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ },
1006418785 .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
1006518786 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
1006618787 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
......@@ -10071,9 +18792,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1007118792 .src_constraints = .{
1007218793 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
1007318794 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
18795 .any,
1007418796 },
1007518797 .patterns = &.{
10076 .{ .src = .{ .to_mem, .to_mem } },
18798 .{ .src = .{ .to_mem, .to_mem, .none } },
1007718799 },
1007818800 .extra_temps = .{
1007918801 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10094,7 +18816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1009418816 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
1009518817 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
1009618818 .{ ._, ._pd, .min, .tmp3x, .tmp1x, ._, ._ },
10097 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.ord), ._ },
18819 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ },
1009818820 .{ ._, ._pd, .@"and", .tmp3x, .tmp1x, ._, ._ },
1009918821 .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ },
1010018822 .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ },
......@@ -10107,9 +18829,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1010718829 .src_constraints = .{
1010818830 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
1010918831 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
18832 .any,
1011018833 },
1011118834 .patterns = &.{
10112 .{ .src = .{ .to_mem, .to_mem } },
18835 .{ .src = .{ .to_mem, .to_mem, .none } },
1011318836 },
1011418837 .call_frame = .{ .alignment = .@"16" },
1011518838 .extra_temps = .{
......@@ -10141,11 +18864,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1014118864 .src_constraints = .{
1014218865 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
1014318866 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
18867 .any,
1014418868 },
1014518869 .patterns = &.{
10146 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },
10147 .{ .src = .{ .mem, .to_x87 } },
10148 .{ .src = .{ .to_x87, .to_x87 } },
18870 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
18871 .{ .src = .{ .mem, .to_x87, .none } },
18872 .{ .src = .{ .to_x87, .to_x87, .none } },
1014918873 },
1015018874 .extra_temps = .{
1015118875 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -10173,11 +18897,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1017318897 .src_constraints = .{
1017418898 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
1017518899 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
18900 .any,
1017618901 },
1017718902 .patterns = &.{
10178 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },
10179 .{ .src = .{ .mem, .to_x87 } },
10180 .{ .src = .{ .to_x87, .to_x87 } },
18903 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
18904 .{ .src = .{ .mem, .to_x87, .none } },
18905 .{ .src = .{ .to_x87, .to_x87, .none } },
1018118906 },
1018218907 .extra_temps = .{
1018318908 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -10211,11 +18936,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1021118936 .src_constraints = .{
1021218937 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
1021318938 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
18939 .any,
1021418940 },
1021518941 .patterns = &.{
10216 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },
10217 .{ .src = .{ .mem, .to_x87 } },
10218 .{ .src = .{ .to_x87, .to_x87 } },
18942 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
18943 .{ .src = .{ .mem, .to_x87, .none } },
18944 .{ .src = .{ .to_x87, .to_x87, .none } },
1021918945 },
1022018946 .extra_temps = .{
1022118947 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -10249,9 +18975,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1024918975 .src_constraints = .{
1025018976 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
1025118977 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
18978 .any,
1025218979 },
1025318980 .patterns = &.{
10254 .{ .src = .{ .to_mem, .to_mem } },
18981 .{ .src = .{ .to_mem, .to_mem, .none } },
1025518982 },
1025618983 .extra_temps = .{
1025718984 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10284,9 +19011,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1028419011 .src_constraints = .{
1028519012 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
1028619013 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
19014 .any,
1028719015 },
1028819016 .patterns = &.{
10289 .{ .src = .{ .to_mem, .to_mem } },
19017 .{ .src = .{ .to_mem, .to_mem, .none } },
1029019018 },
1029119019 .extra_temps = .{
1029219020 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10325,9 +19053,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1032519053 .src_constraints = .{
1032619054 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
1032719055 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
19056 .any,
1032819057 },
1032919058 .patterns = &.{
10330 .{ .src = .{ .to_mem, .to_mem } },
19059 .{ .src = .{ .to_mem, .to_mem, .none } },
1033119060 },
1033219061 .extra_temps = .{
1033319062 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10366,9 +19095,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1036619095 .src_constraints = .{
1036719096 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
1036819097 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
19098 .any,
1036919099 },
1037019100 .patterns = &.{
10371 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },
19101 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
1037219102 },
1037319103 .call_frame = .{ .alignment = .@"16" },
1037419104 .extra_temps = .{
......@@ -10392,9 +19122,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1039219122 .src_constraints = .{
1039319123 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1039419124 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
19125 .any,
1039519126 },
1039619127 .patterns = &.{
10397 .{ .src = .{ .to_mem, .to_mem } },
19128 .{ .src = .{ .to_mem, .to_mem, .none } },
1039819129 },
1039919130 .call_frame = .{ .alignment = .@"16" },
1040019131 .extra_temps = .{
......@@ -10424,9 +19155,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1042419155 .src_constraints = .{
1042519156 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1042619157 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
19158 .any,
1042719159 },
1042819160 .patterns = &.{
10429 .{ .src = .{ .to_mem, .to_mem } },
19161 .{ .src = .{ .to_mem, .to_mem, .none } },
1043019162 },
1043119163 .call_frame = .{ .alignment = .@"16" },
1043219164 .extra_temps = .{
......@@ -10456,9 +19188,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1045619188 .src_constraints = .{
1045719189 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1045819190 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
19191 .any,
1045919192 },
1046019193 .patterns = &.{
10461 .{ .src = .{ .to_mem, .to_mem } },
19194 .{ .src = .{ .to_mem, .to_mem, .none } },
1046219195 },
1046319196 .call_frame = .{ .alignment = .@"16" },
1046419197 .extra_temps = .{
......@@ -10530,17 +19263,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1053019263 })) {
1053119264 else => unreachable,
1053219265 inline .@"and", .@"or", .xor => |mir_tag| comptime &.{ .{
10533 .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte } },
19266 .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte }, .any },
1053419267 .patterns = &.{
10535 .{ .src = .{ .mut_mem, .imm8 } },
10536 .{ .src = .{ .imm8, .mut_mem }, .commute = .{ 0, 1 } },
10537 .{ .src = .{ .to_mut_gpr, .imm8 } },
10538 .{ .src = .{ .imm8, .to_mut_gpr }, .commute = .{ 0, 1 } },
10539 .{ .src = .{ .mut_mem, .to_gpr } },
10540 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },
10541 .{ .src = .{ .to_mut_gpr, .mem } },
10542 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
10543 .{ .src = .{ .to_mut_gpr, .to_gpr } },
19268 .{ .src = .{ .mut_mem, .imm8, .none } },
19269 .{ .src = .{ .imm8, .mut_mem, .none }, .commute = .{ 0, 1 } },
19270 .{ .src = .{ .to_mut_gpr, .imm8, .none } },
19271 .{ .src = .{ .imm8, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
19272 .{ .src = .{ .mut_mem, .to_gpr, .none } },
19273 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
19274 .{ .src = .{ .to_mut_gpr, .mem, .none } },
19275 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
19276 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1054419277 },
1054519278 .dst_temps = .{.{ .ref = .src0 }},
1054619279 .clobbers = .{ .eflags = true },
......@@ -10548,17 +19281,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1054819281 .{ ._, ._, mir_tag, .dst0b, .src1b, ._, ._ },
1054919282 } },
1055019283 }, .{
10551 .src_constraints = .{ .{ .size = .word }, .{ .size = .word } },
19284 .src_constraints = .{ .{ .size = .word }, .{ .size = .word }, .any },
1055219285 .patterns = &.{
10553 .{ .src = .{ .mut_mem, .imm16 } },
10554 .{ .src = .{ .imm16, .mut_mem }, .commute = .{ 0, 1 } },
10555 .{ .src = .{ .to_mut_gpr, .imm16 } },
10556 .{ .src = .{ .imm16, .to_mut_gpr }, .commute = .{ 0, 1 } },
10557 .{ .src = .{ .mut_mem, .to_gpr } },
10558 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },
10559 .{ .src = .{ .to_mut_gpr, .mem } },
10560 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
10561 .{ .src = .{ .to_mut_gpr, .to_gpr } },
19286 .{ .src = .{ .mut_mem, .imm16, .none } },
19287 .{ .src = .{ .imm16, .mut_mem, .none }, .commute = .{ 0, 1 } },
19288 .{ .src = .{ .to_mut_gpr, .imm16, .none } },
19289 .{ .src = .{ .imm16, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
19290 .{ .src = .{ .mut_mem, .to_gpr, .none } },
19291 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
19292 .{ .src = .{ .to_mut_gpr, .mem, .none } },
19293 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
19294 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1056219295 },
1056319296 .dst_temps = .{.{ .ref = .src0 }},
1056419297 .clobbers = .{ .eflags = true },
......@@ -10566,17 +19299,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1056619299 .{ ._, ._, mir_tag, .dst0w, .src1w, ._, ._ },
1056719300 } },
1056819301 }, .{
10569 .src_constraints = .{ .{ .size = .dword }, .{ .size = .dword } },
19302 .src_constraints = .{ .{ .size = .dword }, .{ .size = .dword }, .any },
1057019303 .patterns = &.{
10571 .{ .src = .{ .mut_mem, .imm32 } },
10572 .{ .src = .{ .imm32, .mut_mem }, .commute = .{ 0, 1 } },
10573 .{ .src = .{ .to_mut_gpr, .imm32 } },
10574 .{ .src = .{ .imm32, .to_mut_gpr }, .commute = .{ 0, 1 } },
10575 .{ .src = .{ .mut_mem, .to_gpr } },
10576 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },
10577 .{ .src = .{ .to_mut_gpr, .mem } },
10578 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
10579 .{ .src = .{ .to_mut_gpr, .to_gpr } },
19304 .{ .src = .{ .mut_mem, .imm32, .none } },
19305 .{ .src = .{ .imm32, .mut_mem, .none }, .commute = .{ 0, 1 } },
19306 .{ .src = .{ .to_mut_gpr, .imm32, .none } },
19307 .{ .src = .{ .imm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
19308 .{ .src = .{ .mut_mem, .to_gpr, .none } },
19309 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
19310 .{ .src = .{ .to_mut_gpr, .mem, .none } },
19311 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
19312 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1058019313 },
1058119314 .dst_temps = .{.{ .ref = .src0 }},
1058219315 .clobbers = .{ .eflags = true },
......@@ -10585,17 +19318,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1058519318 } },
1058619319 }, .{
1058719320 .required_features = .{ .@"64bit", null, null, null },
10588 .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword } },
19321 .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword }, .any },
1058919322 .patterns = &.{
10590 .{ .src = .{ .mut_mem, .simm32 } },
10591 .{ .src = .{ .simm32, .mut_mem }, .commute = .{ 0, 1 } },
10592 .{ .src = .{ .to_mut_gpr, .simm32 } },
10593 .{ .src = .{ .simm32, .to_mut_gpr }, .commute = .{ 0, 1 } },
10594 .{ .src = .{ .mut_mem, .to_gpr } },
10595 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },
10596 .{ .src = .{ .to_mut_gpr, .mem } },
10597 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
10598 .{ .src = .{ .to_mut_gpr, .to_gpr } },
19323 .{ .src = .{ .mut_mem, .simm32, .none } },
19324 .{ .src = .{ .simm32, .mut_mem, .none }, .commute = .{ 0, 1 } },
19325 .{ .src = .{ .to_mut_gpr, .simm32, .none } },
19326 .{ .src = .{ .simm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
19327 .{ .src = .{ .mut_mem, .to_gpr, .none } },
19328 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
19329 .{ .src = .{ .to_mut_gpr, .mem, .none } },
19330 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
19331 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1059919332 },
1060019333 .dst_temps = .{.{ .ref = .src0 }},
1060119334 .clobbers = .{ .eflags = true },
......@@ -10604,11 +19337,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1060419337 } },
1060519338 }, .{
1060619339 .required_features = .{ .mmx, null, null, null },
10607 .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword } },
19340 .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword }, .any },
1060819341 .patterns = &.{
10609 .{ .src = .{ .to_mut_mm, .mem } },
10610 .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } },
10611 .{ .src = .{ .to_mut_mm, .to_mm } },
19342 .{ .src = .{ .to_mut_mm, .mem, .none } },
19343 .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } },
19344 .{ .src = .{ .to_mut_mm, .to_mm, .none } },
1061219345 },
1061319346 .dst_temps = .{.{ .ref = .src0 }},
1061419347 .each = .{ .once = &.{
......@@ -10616,11 +19349,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1061619349 } },
1061719350 }, .{
1061819351 .required_features = .{ .avx, null, null, null },
10619 .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword } },
19352 .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword }, .any },
1062019353 .patterns = &.{
10621 .{ .src = .{ .to_xmm, .mem } },
10622 .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } },
10623 .{ .src = .{ .to_xmm, .to_xmm } },
19354 .{ .src = .{ .to_xmm, .mem, .none } },
19355 .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } },
19356 .{ .src = .{ .to_xmm, .to_xmm, .none } },
1062419357 },
1062519358 .dst_temps = .{.{ .rc = .sse }},
1062619359 .each = .{ .once = &.{
......@@ -10628,11 +19361,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1062819361 } },
1062919362 }, .{
1063019363 .required_features = .{ .sse2, null, null, null },
10631 .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword } },
19364 .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword }, .any },
1063219365 .patterns = &.{
10633 .{ .src = .{ .to_mut_xmm, .mem } },
10634 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },
10635 .{ .src = .{ .to_mut_xmm, .to_xmm } },
19366 .{ .src = .{ .to_mut_xmm, .mem, .none } },
19367 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
19368 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
1063619369 },
1063719370 .dst_temps = .{.{ .ref = .src0 }},
1063819371 .each = .{ .once = &.{
......@@ -10640,11 +19373,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1064019373 } },
1064119374 }, .{
1064219375 .required_features = .{ .sse, null, null, null },
10643 .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword } },
19376 .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword }, .any },
1064419377 .patterns = &.{
10645 .{ .src = .{ .to_mut_xmm, .mem } },
10646 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },
10647 .{ .src = .{ .to_mut_xmm, .to_xmm } },
19378 .{ .src = .{ .to_mut_xmm, .mem, .none } },
19379 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
19380 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
1064819381 },
1064919382 .dst_temps = .{.{ .ref = .src0 }},
1065019383 .each = .{ .once = &.{
......@@ -10652,11 +19385,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1065219385 } },
1065319386 }, .{
1065419387 .required_features = .{ .avx2, null, null, null },
10655 .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword } },
19388 .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword }, .any },
1065619389 .patterns = &.{
10657 .{ .src = .{ .to_ymm, .mem } },
10658 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },
10659 .{ .src = .{ .to_ymm, .to_ymm } },
19390 .{ .src = .{ .to_ymm, .mem, .none } },
19391 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
19392 .{ .src = .{ .to_ymm, .to_ymm, .none } },
1066019393 },
1066119394 .dst_temps = .{.{ .rc = .sse }},
1066219395 .each = .{ .once = &.{
......@@ -10664,11 +19397,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1066419397 } },
1066519398 }, .{
1066619399 .required_features = .{ .avx, null, null, null },
10667 .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword } },
19400 .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword }, .any },
1066819401 .patterns = &.{
10669 .{ .src = .{ .to_ymm, .mem } },
10670 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },
10671 .{ .src = .{ .to_ymm, .to_ymm } },
19402 .{ .src = .{ .to_ymm, .mem, .none } },
19403 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
19404 .{ .src = .{ .to_ymm, .to_ymm, .none } },
1067219405 },
1067319406 .dst_temps = .{.{ .rc = .sse }},
1067419407 .each = .{ .once = &.{
......@@ -10676,9 +19409,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1067619409 } },
1067719410 }, .{
1067819411 .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 },
1068019413 .patterns = &.{
10681 .{ .src = .{ .to_mem, .to_mem } },
19414 .{ .src = .{ .to_mem, .to_mem, .none } },
1068219415 },
1068319416 .extra_temps = .{
1068419417 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10703,9 +19436,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1070319436 } },
1070419437 }, .{
1070519438 .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 },
1070719440 .patterns = &.{
10708 .{ .src = .{ .to_mem, .to_mem } },
19441 .{ .src = .{ .to_mem, .to_mem, .none } },
1070919442 },
1071019443 .extra_temps = .{
1071119444 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10730,9 +19463,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1073019463 } },
1073119464 }, .{
1073219465 .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 },
1073419467 .patterns = &.{
10735 .{ .src = .{ .to_mem, .to_mem } },
19468 .{ .src = .{ .to_mem, .to_mem, .none } },
1073619469 },
1073719470 .extra_temps = .{
1073819471 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10757,9 +19490,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1075719490 } },
1075819491 }, .{
1075919492 .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 },
1076119494 .patterns = &.{
10762 .{ .src = .{ .to_mem, .to_mem } },
19495 .{ .src = .{ .to_mem, .to_mem, .none } },
1076319496 },
1076419497 .extra_temps = .{
1076519498 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10784,9 +19517,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1078419517 } },
1078519518 }, .{
1078619519 .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 },
1078819521 .patterns = &.{
10789 .{ .src = .{ .to_mem, .to_mem } },
19522 .{ .src = .{ .to_mem, .to_mem, .none } },
1079019523 },
1079119524 .extra_temps = .{
1079219525 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10811,9 +19544,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1081119544 } },
1081219545 }, .{
1081319546 .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 },
1081519548 .patterns = &.{
10816 .{ .src = .{ .to_mem, .to_mem } },
19549 .{ .src = .{ .to_mem, .to_mem, .none } },
1081719550 },
1081819551 .extra_temps = .{
1081919552 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10837,9 +19570,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1083719570 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1083819571 } },
1083919572 }, .{
10840 .src_constraints = .{ .{ .multiple_size = .qword }, .{ .multiple_size = .qword } },
19573 .src_constraints = .{ .{ .multiple_size = .qword }, .{ .multiple_size = .qword }, .any },
1084119574 .patterns = &.{
10842 .{ .src = .{ .to_mem, .to_mem } },
19575 .{ .src = .{ .to_mem, .to_mem, .none } },
1084319576 },
1084419577 .extra_temps = .{
1084519578 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10879,20 +19612,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1087919612 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
1088019613 var res: [1]Temp = undefined;
1088119614 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 },
1088319616 .patterns = &.{
10884 .{ .src = .{ .mut_mem, .none } },
10885 .{ .src = .{ .to_mut_gpr, .none } },
19617 .{ .src = .{ .mut_mem, .none, .none } },
19618 .{ .src = .{ .to_mut_gpr, .none, .none } },
1088619619 },
1088719620 .dst_temps = .{.{ .ref = .src0 }},
1088819621 .each = .{ .once = &.{
1088919622 .{ ._, ._, .not, .dst0b, ._, ._, ._ },
1089019623 } },
1089119624 }, .{
10892 .src_constraints = .{ .{ .unsigned_int = .byte }, .any },
19625 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
1089319626 .patterns = &.{
10894 .{ .src = .{ .mut_mem, .none } },
10895 .{ .src = .{ .to_mut_gpr, .none } },
19627 .{ .src = .{ .mut_mem, .none, .none } },
19628 .{ .src = .{ .to_mut_gpr, .none, .none } },
1089619629 },
1089719630 .dst_temps = .{.{ .ref = .src0 }},
1089819631 .clobbers = .{ .eflags = true },
......@@ -10900,20 +19633,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1090019633 .{ ._, ._, .xor, .dst0b, .sa(.src0, .add_umax), ._, ._ },
1090119634 } },
1090219635 }, .{
10903 .src_constraints = .{ .{ .signed_or_exact_int = .word }, .any },
19636 .src_constraints = .{ .{ .signed_or_exact_int = .word }, .any, .any },
1090419637 .patterns = &.{
10905 .{ .src = .{ .mut_mem, .none } },
10906 .{ .src = .{ .to_mut_gpr, .none } },
19638 .{ .src = .{ .mut_mem, .none, .none } },
19639 .{ .src = .{ .to_mut_gpr, .none, .none } },
1090719640 },
1090819641 .dst_temps = .{.{ .ref = .src0 }},
1090919642 .each = .{ .once = &.{
1091019643 .{ ._, ._, .not, .dst0w, ._, ._, ._ },
1091119644 } },
1091219645 }, .{
10913 .src_constraints = .{ .{ .unsigned_int = .word }, .any },
19646 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
1091419647 .patterns = &.{
10915 .{ .src = .{ .mut_mem, .none } },
10916 .{ .src = .{ .to_mut_gpr, .none } },
19648 .{ .src = .{ .mut_mem, .none, .none } },
19649 .{ .src = .{ .to_mut_gpr, .none, .none } },
1091719650 },
1091819651 .dst_temps = .{.{ .ref = .src0 }},
1091919652 .clobbers = .{ .eflags = true },
......@@ -10921,20 +19654,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1092119654 .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_umax), ._, ._ },
1092219655 } },
1092319656 }, .{
10924 .src_constraints = .{ .{ .signed_or_exact_int = .dword }, .any },
19657 .src_constraints = .{ .{ .signed_or_exact_int = .dword }, .any, .any },
1092519658 .patterns = &.{
10926 .{ .src = .{ .mut_mem, .none } },
10927 .{ .src = .{ .to_mut_gpr, .none } },
19659 .{ .src = .{ .mut_mem, .none, .none } },
19660 .{ .src = .{ .to_mut_gpr, .none, .none } },
1092819661 },
1092919662 .dst_temps = .{.{ .ref = .src0 }},
1093019663 .each = .{ .once = &.{
1093119664 .{ ._, ._, .not, .dst0d, ._, ._, ._ },
1093219665 } },
1093319666 }, .{
10934 .src_constraints = .{ .{ .unsigned_int = .dword }, .any },
19667 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
1093519668 .patterns = &.{
10936 .{ .src = .{ .mut_mem, .none } },
10937 .{ .src = .{ .to_mut_gpr, .none } },
19669 .{ .src = .{ .mut_mem, .none, .none } },
19670 .{ .src = .{ .to_mut_gpr, .none, .none } },
1093819671 },
1093919672 .dst_temps = .{.{ .ref = .src0 }},
1094019673 .clobbers = .{ .eflags = true },
......@@ -10943,10 +19676,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1094319676 } },
1094419677 }, .{
1094519678 .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 },
1094719680 .patterns = &.{
10948 .{ .src = .{ .mut_mem, .none } },
10949 .{ .src = .{ .to_mut_gpr, .none } },
19681 .{ .src = .{ .mut_mem, .none, .none } },
19682 .{ .src = .{ .to_mut_gpr, .none, .none } },
1095019683 },
1095119684 .dst_temps = .{.{ .ref = .src0 }},
1095219685 .each = .{ .once = &.{
......@@ -10954,10 +19687,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1095419687 } },
1095519688 }, .{
1095619689 .required_features = .{ .@"64bit", null, null, null },
10957 .src_constraints = .{ .{ .unsigned_int = .qword }, .any },
19690 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
1095819691 .patterns = &.{
10959 .{ .src = .{ .mem, .none } },
10960 .{ .src = .{ .to_gpr, .none } },
19692 .{ .src = .{ .mem, .none, .none } },
19693 .{ .src = .{ .to_gpr, .none, .none } },
1096119694 },
1096219695 .dst_temps = .{.{ .rc = .general_purpose }},
1096319696 .each = .{ .once = &.{
......@@ -10966,10 +19699,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1096619699 } },
1096719700 }, .{
1096819701 .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 },
1097019703 .patterns = &.{
10971 .{ .src = .{ .mem, .none } },
10972 .{ .src = .{ .to_mm, .none } },
19704 .{ .src = .{ .mem, .none, .none } },
19705 .{ .src = .{ .to_mm, .none, .none } },
1097319706 },
1097419707 .dst_temps = .{.{ .rc = .mmx }},
1097519708 .each = .{ .once = &.{
......@@ -10978,9 +19711,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1097819711 } },
1097919712 }, .{
1098019713 .required_features = .{ .mmx, null, null, null },
10981 .src_constraints = .{ .{ .unsigned_int = .qword }, .any },
19714 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
1098219715 .patterns = &.{
10983 .{ .src = .{ .to_mut_mm, .none } },
19716 .{ .src = .{ .to_mut_mm, .none, .none } },
1098419717 },
1098519718 .extra_temps = .{
1098619719 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -11000,10 +19733,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1100019733 } },
1100119734 }, .{
1100219735 .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 },
1100419737 .patterns = &.{
11005 .{ .src = .{ .mem, .none } },
11006 .{ .src = .{ .to_xmm, .none } },
19738 .{ .src = .{ .mem, .none, .none } },
19739 .{ .src = .{ .to_xmm, .none, .none } },
1100719740 },
1100819741 .dst_temps = .{.{ .rc = .sse }},
1100919742 .each = .{ .once = &.{
......@@ -11012,9 +19745,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1101219745 } },
1101319746 }, .{
1101419747 .required_features = .{ .avx, null, null, null },
11015 .src_constraints = .{ .{ .unsigned_int = .xword }, .any },
19748 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
1101619749 .patterns = &.{
11017 .{ .src = .{ .to_xmm, .none } },
19750 .{ .src = .{ .to_xmm, .none, .none } },
1101819751 },
1101919752 .extra_temps = .{
1102019753 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -11034,10 +19767,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1103419767 } },
1103519768 }, .{
1103619769 .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 },
1103819771 .patterns = &.{
11039 .{ .src = .{ .mem, .none } },
11040 .{ .src = .{ .to_xmm, .none } },
19772 .{ .src = .{ .mem, .none, .none } },
19773 .{ .src = .{ .to_xmm, .none, .none } },
1104119774 },
1104219775 .dst_temps = .{.{ .rc = .sse }},
1104319776 .each = .{ .once = &.{
......@@ -11046,9 +19779,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1104619779 } },
1104719780 }, .{
1104819781 .required_features = .{ .sse2, null, null, null },
11049 .src_constraints = .{ .{ .unsigned_int = .xword }, .any },
19782 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
1105019783 .patterns = &.{
11051 .{ .src = .{ .to_mut_xmm, .none } },
19784 .{ .src = .{ .to_mut_xmm, .none, .none } },
1105219785 },
1105319786 .extra_temps = .{
1105419787 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -11068,9 +19801,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1106819801 } },
1106919802 }, .{
1107019803 .required_features = .{ .sse, null, null, null },
11071 .src_constraints = .{ .{ .int = .xword }, .any },
19804 .src_constraints = .{ .{ .int = .xword }, .any, .any },
1107219805 .patterns = &.{
11073 .{ .src = .{ .to_mut_xmm, .none } },
19806 .{ .src = .{ .to_mut_xmm, .none, .none } },
1107419807 },
1107519808 .extra_temps = .{
1107619809 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -11090,10 +19823,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1109019823 } },
1109119824 }, .{
1109219825 .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 },
1109419827 .patterns = &.{
11095 .{ .src = .{ .mem, .none } },
11096 .{ .src = .{ .to_ymm, .none } },
19828 .{ .src = .{ .mem, .none, .none } },
19829 .{ .src = .{ .to_ymm, .none, .none } },
1109719830 },
1109819831 .dst_temps = .{.{ .rc = .sse }},
1109919832 .each = .{ .once = &.{
......@@ -11102,9 +19835,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1110219835 } },
1110319836 }, .{
1110419837 .required_features = .{ .avx2, null, null, null },
11105 .src_constraints = .{ .{ .unsigned_int = .yword }, .any },
19838 .src_constraints = .{ .{ .unsigned_int = .yword }, .any, .any },
1110619839 .patterns = &.{
11107 .{ .src = .{ .to_ymm, .none } },
19840 .{ .src = .{ .to_ymm, .none, .none } },
1110819841 },
1110919842 .extra_temps = .{
1111019843 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -11124,10 +19857,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1112419857 } },
1112519858 }, .{
1112619859 .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 },
1112819861 .patterns = &.{
11129 .{ .src = .{ .mem, .none } },
11130 .{ .src = .{ .to_ymm, .none } },
19862 .{ .src = .{ .mem, .none, .none } },
19863 .{ .src = .{ .to_ymm, .none, .none } },
1113119864 },
1113219865 .dst_temps = .{.{ .rc = .sse }},
1113319866 .each = .{ .once = &.{
......@@ -11136,9 +19869,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1113619869 } },
1113719870 }, .{
1113819871 .required_features = .{ .avx, null, null, null },
11139 .src_constraints = .{ .{ .unsigned_int = .yword }, .any },
19872 .src_constraints = .{ .{ .unsigned_int = .yword }, .any, .any },
1114019873 .patterns = &.{
11141 .{ .src = .{ .to_ymm, .none } },
19874 .{ .src = .{ .to_ymm, .none, .none } },
1114219875 },
1114319876 .extra_temps = .{
1114419877 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -11158,9 +19891,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1115819891 } },
1115919892 }, .{
1116019893 .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 },
1116219895 .patterns = &.{
11163 .{ .src = .{ .to_mem, .none } },
19896 .{ .src = .{ .to_mem, .none, .none } },
1116419897 },
1116519898 .extra_temps = .{
1116619899 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11187,9 +19920,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1118719920 } },
1118819921 }, .{
1118919922 .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 },
1119119924 .patterns = &.{
11192 .{ .src = .{ .to_mem, .none } },
19925 .{ .src = .{ .to_mem, .none, .none } },
1119319926 },
1119419927 .extra_temps = .{
1119519928 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11214,9 +19947,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1121419947 } },
1121519948 }, .{
1121619949 .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 },
1121819951 .patterns = &.{
11219 .{ .src = .{ .to_mem, .none } },
19952 .{ .src = .{ .to_mem, .none, .none } },
1122019953 },
1122119954 .extra_temps = .{
1122219955 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11243,9 +19976,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1124319976 } },
1124419977 }, .{
1124519978 .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 },
1124719980 .patterns = &.{
11248 .{ .src = .{ .to_mem, .none } },
19981 .{ .src = .{ .to_mem, .none, .none } },
1124919982 },
1125019983 .extra_temps = .{
1125119984 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11270,9 +20003,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1127020003 } },
1127120004 }, .{
1127220005 .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 },
1127420007 .patterns = &.{
11275 .{ .src = .{ .to_mem, .none } },
20008 .{ .src = .{ .to_mem, .none, .none } },
1127620009 },
1127720010 .extra_temps = .{
1127820011 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11297,9 +20030,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1129720030 } },
1129820031 }, .{
1129920032 .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 },
1130120034 .patterns = &.{
11302 .{ .src = .{ .to_mem, .none } },
20035 .{ .src = .{ .to_mem, .none, .none } },
1130320036 },
1130420037 .extra_temps = .{
1130520038 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11325,9 +20058,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1132520058 } },
1132620059 }, .{
1132720060 .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 },
1132920062 .patterns = &.{
11330 .{ .src = .{ .mut_mem, .none } },
20063 .{ .src = .{ .mut_mem, .none, .none } },
1133120064 },
1133220065 .extra_temps = .{
1133320066 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11351,9 +20084,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1135120084 } },
1135220085 }, .{
1135320086 .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 },
1135520088 .patterns = &.{
11356 .{ .src = .{ .to_mem, .none } },
20089 .{ .src = .{ .to_mem, .none, .none } },
1135720090 },
1135820091 .extra_temps = .{
1135920092 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11378,9 +20111,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1137820111 } },
1137920112 }, .{
1138020113 .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 },
1138220115 .patterns = &.{
11383 .{ .src = .{ .mut_mem, .none } },
20116 .{ .src = .{ .mut_mem, .none, .none } },
1138420117 },
1138520118 .extra_temps = .{
1138620119 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11405,9 +20138,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1140520138 } },
1140620139 }, .{
1140720140 .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 },
1140920142 .patterns = &.{
11410 .{ .src = .{ .to_mem, .none } },
20143 .{ .src = .{ .to_mem, .none, .none } },
1141120144 },
1141220145 .extra_temps = .{
1141320146 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11437,9 +20170,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1143720170 } },
1143820171 }, .{
1143920172 .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 },
1144120174 .patterns = &.{
11442 .{ .src = .{ .mut_mem, .none } },
20175 .{ .src = .{ .mut_mem, .none, .none } },
1144320176 },
1144420177 .extra_temps = .{
1144520178 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11464,9 +20197,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1146420197 } },
1146520198 }, .{
1146620199 .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 },
1146820201 .patterns = &.{
11469 .{ .src = .{ .to_mem, .none } },
20202 .{ .src = .{ .to_mem, .none, .none } },
1147020203 },
1147120204 .extra_temps = .{
1147220205 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11492,9 +20225,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1149220225 } },
1149320226 }, .{
1149420227 .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 },
1149620229 .patterns = &.{
11497 .{ .src = .{ .mut_mem, .none } },
20230 .{ .src = .{ .mut_mem, .none, .none } },
1149820231 },
1149920232 .extra_temps = .{
1150020233 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11518,9 +20251,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1151820251 } },
1151920252 }, .{
1152020253 .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 },
1152220255 .patterns = &.{
11523 .{ .src = .{ .to_mem, .none } },
20256 .{ .src = .{ .to_mem, .none, .none } },
1152420257 },
1152520258 .extra_temps = .{
1152620259 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11549,9 +20282,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1154920282 } },
1155020283 }, .{
1155120284 .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 },
1155320286 .patterns = &.{
11554 .{ .src = .{ .mut_mem, .none } },
20287 .{ .src = .{ .mut_mem, .none, .none } },
1155520288 },
1155620289 .extra_temps = .{
1155720290 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11576,9 +20309,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1157620309 } },
1157720310 }, .{
1157820311 .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 },
1158020313 .patterns = &.{
11581 .{ .src = .{ .to_mem, .none } },
20314 .{ .src = .{ .to_mem, .none, .none } },
1158220315 },
1158320316 .extra_temps = .{
1158420317 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11608,9 +20341,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1160820341 } },
1160920342 }, .{
1161020343 .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 },
1161220345 .patterns = &.{
11613 .{ .src = .{ .mut_mem, .none } },
20346 .{ .src = .{ .mut_mem, .none, .none } },
1161420347 },
1161520348 .extra_temps = .{
1161620349 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11634,9 +20367,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1163420367 } },
1163520368 }, .{
1163620369 .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 },
1163820371 .patterns = &.{
11639 .{ .src = .{ .to_mem, .none } },
20372 .{ .src = .{ .to_mem, .none, .none } },
1164020373 },
1164120374 .extra_temps = .{
1164220375 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11665,9 +20398,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1166520398 } },
1166620399 }, .{
1166720400 .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 },
1166920402 .patterns = &.{
11670 .{ .src = .{ .mut_mem, .none } },
20403 .{ .src = .{ .mut_mem, .none, .none } },
1167120404 },
1167220405 .extra_temps = .{
1167320406 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11693,9 +20426,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1169320426 } },
1169420427 }, .{
1169520428 .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 },
1169720430 .patterns = &.{
11698 .{ .src = .{ .to_mem, .none } },
20431 .{ .src = .{ .to_mem, .none, .none } },
1169920432 },
1170020433 .extra_temps = .{
1170120434 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11724,9 +20457,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1172420457 } },
1172520458 }, .{
1172620459 .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 },
1172820461 .patterns = &.{
11729 .{ .src = .{ .mut_mem, .none } },
20462 .{ .src = .{ .mut_mem, .none, .none } },
1173020463 },
1173120464 .extra_temps = .{
1173220465 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11751,9 +20484,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1175120484 } },
1175220485 }, .{
1175320486 .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 },
1175520488 .patterns = &.{
11756 .{ .src = .{ .to_mem, .none } },
20489 .{ .src = .{ .to_mem, .none, .none } },
1175720490 },
1175820491 .extra_temps = .{
1175920492 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11781,10 +20514,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1178120514 } },
1178220515 }, .{
1178320516 .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 },
1178520518 .patterns = &.{
11786 .{ .src = .{ .mem, .none } },
11787 .{ .src = .{ .to_mm, .none } },
20519 .{ .src = .{ .mem, .none, .none } },
20520 .{ .src = .{ .to_mm, .none, .none } },
1178820521 },
1178920522 .dst_temps = .{.{ .rc = .mmx }},
1179020523 .each = .{ .once = &.{
......@@ -11793,9 +20526,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1179320526 } },
1179420527 }, .{
1179520528 .required_features = .{ .mmx, null, null, null },
11796 .src_constraints = .{ .{ .unsigned_int_vec = .qword }, .any },
20529 .src_constraints = .{ .{ .unsigned_int_vec = .qword }, .any, .any },
1179720530 .patterns = &.{
11798 .{ .src = .{ .to_mut_mm, .none } },
20531 .{ .src = .{ .to_mut_mm, .none, .none } },
1179920532 },
1180020533 .extra_temps = .{
1180120534 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -11815,10 +20548,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1181520548 } },
1181620549 }, .{
1181720550 .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 },
1181920552 .patterns = &.{
11820 .{ .src = .{ .mem, .none } },
11821 .{ .src = .{ .to_xmm, .none } },
20553 .{ .src = .{ .mem, .none, .none } },
20554 .{ .src = .{ .to_xmm, .none, .none } },
1182220555 },
1182320556 .dst_temps = .{.{ .rc = .sse }},
1182420557 .each = .{ .once = &.{
......@@ -11827,9 +20560,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1182720560 } },
1182820561 }, .{
1182920562 .required_features = .{ .avx, null, null, null },
11830 .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any },
20563 .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any, .any },
1183120564 .patterns = &.{
11832 .{ .src = .{ .to_xmm, .none } },
20565 .{ .src = .{ .to_xmm, .none, .none } },
1183320566 },
1183420567 .extra_temps = .{
1183520568 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -11849,10 +20582,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1184920582 } },
1185020583 }, .{
1185120584 .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 },
1185320586 .patterns = &.{
11854 .{ .src = .{ .mem, .none } },
11855 .{ .src = .{ .to_xmm, .none } },
20587 .{ .src = .{ .mem, .none, .none } },
20588 .{ .src = .{ .to_xmm, .none, .none } },
1185620589 },
1185720590 .dst_temps = .{.{ .rc = .sse }},
1185820591 .each = .{ .once = &.{
......@@ -11861,9 +20594,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1186120594 } },
1186220595 }, .{
1186320596 .required_features = .{ .sse2, null, null, null },
11864 .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any },
20597 .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any, .any },
1186520598 .patterns = &.{
11866 .{ .src = .{ .to_mut_xmm, .none } },
20599 .{ .src = .{ .to_mut_xmm, .none, .none } },
1186720600 },
1186820601 .extra_temps = .{
1186920602 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -11883,9 +20616,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1188320616 } },
1188420617 }, .{
1188520618 .required_features = .{ .sse, null, null, null },
11886 .src_constraints = .{ .{ .vec = .xword }, .any },
20619 .src_constraints = .{ .{ .vec = .xword }, .any, .any },
1188720620 .patterns = &.{
11888 .{ .src = .{ .to_mut_xmm, .none } },
20621 .{ .src = .{ .to_mut_xmm, .none, .none } },
1188920622 },
1189020623 .extra_temps = .{
1189120624 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -11905,10 +20638,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1190520638 } },
1190620639 }, .{
1190720640 .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 },
1190920642 .patterns = &.{
11910 .{ .src = .{ .mem, .none } },
11911 .{ .src = .{ .to_ymm, .none } },
20643 .{ .src = .{ .mem, .none, .none } },
20644 .{ .src = .{ .to_ymm, .none, .none } },
1191220645 },
1191320646 .dst_temps = .{.{ .rc = .sse }},
1191420647 .each = .{ .once = &.{
......@@ -11917,9 +20650,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1191720650 } },
1191820651 }, .{
1191920652 .required_features = .{ .avx2, null, null, null },
11920 .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any },
20653 .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any, .any },
1192120654 .patterns = &.{
11922 .{ .src = .{ .to_ymm, .none } },
20655 .{ .src = .{ .to_ymm, .none, .none } },
1192320656 },
1192420657 .extra_temps = .{
1192520658 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -11939,10 +20672,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1193920672 } },
1194020673 }, .{
1194120674 .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 },
1194320676 .patterns = &.{
11944 .{ .src = .{ .mem, .none } },
11945 .{ .src = .{ .to_ymm, .none } },
20677 .{ .src = .{ .mem, .none, .none } },
20678 .{ .src = .{ .to_ymm, .none, .none } },
1194620679 },
1194720680 .dst_temps = .{.{ .rc = .sse }},
1194820681 .each = .{ .once = &.{
......@@ -11951,9 +20684,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1195120684 } },
1195220685 }, .{
1195320686 .required_features = .{ .avx, null, null, null },
11954 .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any },
20687 .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any, .any },
1195520688 .patterns = &.{
11956 .{ .src = .{ .to_ymm, .none } },
20689 .{ .src = .{ .to_ymm, .none, .none } },
1195720690 },
1195820691 .extra_temps = .{
1195920692 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -11974,7 +20707,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1197420707 }, .{
1197520708 .required_features = .{ .@"64bit", null, null, null },
1197620709 .patterns = &.{
11977 .{ .src = .{ .to_mem, .none } },
20710 .{ .src = .{ .to_mem, .none, .none } },
1197820711 },
1197920712 .extra_temps = .{
1198020713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -12000,7 +20733,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1200020733 } },
1200120734 }, .{
1200220735 .patterns = &.{
12003 .{ .src = .{ .to_mem, .none } },
20736 .{ .src = .{ .to_mem, .none, .none } },
1200420737 },
1200520738 .extra_temps = .{
1200620739 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -12090,10 +20823,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1209020823 var res: [1]Temp = undefined;
1209120824 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
1209220825 .required_features = .{ .slow_incdec, null, null, null },
12093 .src_constraints = .{ .{ .exact_signed_int = 1 }, .any },
20826 .src_constraints = .{ .{ .exact_signed_int = 1 }, .any, .any },
1209420827 .patterns = &.{
12095 .{ .src = .{ .mut_mem, .none } },
12096 .{ .src = .{ .to_mut_gpr, .none } },
20828 .{ .src = .{ .mut_mem, .none, .none } },
20829 .{ .src = .{ .to_mut_gpr, .none, .none } },
1209720830 },
1209820831 .dst_temps = .{.{ .ref = .src0 }},
1209920832 .clobbers = .{ .eflags = true },
......@@ -12101,10 +20834,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1210120834 .{ ._, ._, .add, .dst0b, .si(1), ._, ._ },
1210220835 } },
1210320836 }, .{
12104 .src_constraints = .{ .{ .exact_signed_int = 1 }, .any },
20837 .src_constraints = .{ .{ .exact_signed_int = 1 }, .any, .any },
1210520838 .patterns = &.{
12106 .{ .src = .{ .mut_mem, .none } },
12107 .{ .src = .{ .to_mut_gpr, .none } },
20839 .{ .src = .{ .mut_mem, .none, .none } },
20840 .{ .src = .{ .to_mut_gpr, .none, .none } },
1210820841 },
1210920842 .dst_temps = .{.{ .ref = .src0 }},
1211020843 .clobbers = .{ .eflags = true },
......@@ -12112,10 +20845,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1211220845 .{ ._, ._c, .in, .dst0b, ._, ._, ._ },
1211320846 } },
1211420847 }, .{
12115 .src_constraints = .{ .{ .exact_unsigned_int = 1 }, .any },
20848 .src_constraints = .{ .{ .exact_unsigned_int = 1 }, .any, .any },
1211620849 .patterns = &.{
12117 .{ .src = .{ .mut_mem, .none } },
12118 .{ .src = .{ .to_mut_gpr, .none } },
20850 .{ .src = .{ .mut_mem, .none, .none } },
20851 .{ .src = .{ .to_mut_gpr, .none, .none } },
1211920852 },
1212020853 .dst_temps = .{.{ .ref = .src0 }},
1212120854 .clobbers = .{ .eflags = true },
......@@ -12124,10 +20857,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1212420857 } },
1212520858 }, .{
1212620859 .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 },
1212820861 .patterns = &.{
12129 .{ .src = .{ .mem, .none } },
12130 .{ .src = .{ .to_gpr, .none } },
20862 .{ .src = .{ .mem, .none, .none } },
20863 .{ .src = .{ .to_gpr, .none, .none } },
1213120864 },
1213220865 .dst_temps = .{.{ .rc = .general_purpose }},
1213320866 .clobbers = .{ .eflags = true },
......@@ -12138,10 +20871,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1213820871 } },
1213920872 }, .{
1214020873 .required_features = .{ .lzcnt, null, null, null },
12141 .src_constraints = .{ .{ .signed_int = .byte }, .any },
20874 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
1214220875 .patterns = &.{
12143 .{ .src = .{ .mem, .none } },
12144 .{ .src = .{ .to_gpr, .none } },
20876 .{ .src = .{ .mem, .none, .none } },
20877 .{ .src = .{ .to_gpr, .none, .none } },
1214520878 },
1214620879 .dst_temps = .{.{ .rc = .general_purpose }},
1214720880 .clobbers = .{ .eflags = true },
......@@ -12153,9 +20886,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1215320886 } },
1215420887 }, .{
1215520888 .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null },
12156 .src_constraints = .{ .{ .exact_int = 16 }, .any },
20889 .src_constraints = .{ .{ .exact_int = 16 }, .any, .any },
1215720890 .patterns = &.{
12158 .{ .src = .{ .to_mut_gpr, .none } },
20891 .{ .src = .{ .to_mut_gpr, .none, .none } },
1215920892 },
1216020893 .dst_temps = .{.{ .ref = .src0 }},
1216120894 .clobbers = .{ .eflags = true },
......@@ -12164,10 +20897,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1216420897 } },
1216520898 }, .{
1216620899 .required_features = .{ .lzcnt, null, null, null },
12167 .src_constraints = .{ .{ .exact_int = 16 }, .any },
20900 .src_constraints = .{ .{ .exact_int = 16 }, .any, .any },
1216820901 .patterns = &.{
12169 .{ .src = .{ .mem, .none } },
12170 .{ .src = .{ .to_gpr, .none } },
20902 .{ .src = .{ .mem, .none, .none } },
20903 .{ .src = .{ .to_gpr, .none, .none } },
1217120904 },
1217220905 .dst_temps = .{.{ .rc = .general_purpose }},
1217320906 .clobbers = .{ .eflags = true },
......@@ -12176,9 +20909,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1217620909 } },
1217720910 }, .{
1217820911 .required_features = .{ .lzcnt, null, null, null },
12179 .src_constraints = .{ .{ .signed_int = .word }, .any },
20912 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
1218020913 .patterns = &.{
12181 .{ .src = .{ .to_mut_gpr, .none } },
20914 .{ .src = .{ .to_mut_gpr, .none, .none } },
1218220915 },
1218320916 .dst_temps = .{.{ .ref = .src0 }},
1218420917 .clobbers = .{ .eflags = true },
......@@ -12189,9 +20922,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1218920922 } },
1219020923 }, .{
1219120924 .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null },
12192 .src_constraints = .{ .{ .unsigned_int = .word }, .any },
20925 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
1219320926 .patterns = &.{
12194 .{ .src = .{ .to_mut_gpr, .none } },
20927 .{ .src = .{ .to_mut_gpr, .none, .none } },
1219520928 },
1219620929 .dst_temps = .{.{ .ref = .src0 }},
1219720930 .clobbers = .{ .eflags = true },
......@@ -12201,10 +20934,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1220120934 } },
1220220935 }, .{
1220320936 .required_features = .{ .lzcnt, null, null, null },
12204 .src_constraints = .{ .{ .unsigned_int = .word }, .any },
20937 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
1220520938 .patterns = &.{
12206 .{ .src = .{ .mem, .none } },
12207 .{ .src = .{ .to_gpr, .none } },
20939 .{ .src = .{ .mem, .none, .none } },
20940 .{ .src = .{ .to_gpr, .none, .none } },
1220820941 },
1220920942 .dst_temps = .{.{ .rc = .general_purpose }},
1221020943 .clobbers = .{ .eflags = true },
......@@ -12214,9 +20947,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1221420947 } },
1221520948 }, .{
1221620949 .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null },
12217 .src_constraints = .{ .{ .exact_int = 32 }, .any },
20950 .src_constraints = .{ .{ .exact_int = 32 }, .any, .any },
1221820951 .patterns = &.{
12219 .{ .src = .{ .to_mut_gpr, .none } },
20952 .{ .src = .{ .to_mut_gpr, .none, .none } },
1222020953 },
1222120954 .dst_temps = .{.{ .ref = .src0 }},
1222220955 .clobbers = .{ .eflags = true },
......@@ -12225,10 +20958,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1222520958 } },
1222620959 }, .{
1222720960 .required_features = .{ .lzcnt, null, null, null },
12228 .src_constraints = .{ .{ .exact_int = 32 }, .any },
20961 .src_constraints = .{ .{ .exact_int = 32 }, .any, .any },
1222920962 .patterns = &.{
12230 .{ .src = .{ .mem, .none } },
12231 .{ .src = .{ .to_gpr, .none } },
20963 .{ .src = .{ .mem, .none, .none } },
20964 .{ .src = .{ .to_gpr, .none, .none } },
1223220965 },
1223320966 .dst_temps = .{.{ .rc = .general_purpose }},
1223420967 .clobbers = .{ .eflags = true },
......@@ -12237,9 +20970,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1223720970 } },
1223820971 }, .{
1223920972 .required_features = .{ .lzcnt, null, null, null },
12240 .src_constraints = .{ .{ .signed_int = .dword }, .any },
20973 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
1224120974 .patterns = &.{
12242 .{ .src = .{ .to_mut_gpr, .none } },
20975 .{ .src = .{ .to_mut_gpr, .none, .none } },
1224320976 },
1224420977 .dst_temps = .{.{ .ref = .src0 }},
1224520978 .clobbers = .{ .eflags = true },
......@@ -12250,9 +20983,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1225020983 } },
1225120984 }, .{
1225220985 .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null },
12253 .src_constraints = .{ .{ .unsigned_int = .dword }, .any },
20986 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
1225420987 .patterns = &.{
12255 .{ .src = .{ .to_mut_gpr, .none } },
20988 .{ .src = .{ .to_mut_gpr, .none, .none } },
1225620989 },
1225720990 .dst_temps = .{.{ .ref = .src0 }},
1225820991 .clobbers = .{ .eflags = true },
......@@ -12262,10 +20995,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1226220995 } },
1226320996 }, .{
1226420997 .required_features = .{ .lzcnt, null, null, null },
12265 .src_constraints = .{ .{ .unsigned_int = .dword }, .any },
20998 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
1226620999 .patterns = &.{
12267 .{ .src = .{ .mem, .none } },
12268 .{ .src = .{ .to_gpr, .none } },
21000 .{ .src = .{ .mem, .none, .none } },
21001 .{ .src = .{ .to_gpr, .none, .none } },
1226921002 },
1227021003 .dst_temps = .{.{ .rc = .general_purpose }},
1227121004 .clobbers = .{ .eflags = true },
......@@ -12275,9 +21008,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1227521008 } },
1227621009 }, .{
1227721010 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
12278 .src_constraints = .{ .{ .exact_int = 64 }, .any },
21011 .src_constraints = .{ .{ .exact_int = 64 }, .any, .any },
1227921012 .patterns = &.{
12280 .{ .src = .{ .to_mut_gpr, .none } },
21013 .{ .src = .{ .to_mut_gpr, .none, .none } },
1228121014 },
1228221015 .dst_temps = .{.{ .ref = .src0 }},
1228321016 .clobbers = .{ .eflags = true },
......@@ -12286,10 +21019,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1228621019 } },
1228721020 }, .{
1228821021 .required_features = .{ .@"64bit", .lzcnt, null, null },
12289 .src_constraints = .{ .{ .exact_int = 64 }, .any },
21022 .src_constraints = .{ .{ .exact_int = 64 }, .any, .any },
1229021023 .patterns = &.{
12291 .{ .src = .{ .mem, .none } },
12292 .{ .src = .{ .to_gpr, .none } },
21024 .{ .src = .{ .mem, .none, .none } },
21025 .{ .src = .{ .to_gpr, .none, .none } },
1229321026 },
1229421027 .dst_temps = .{.{ .rc = .general_purpose }},
1229521028 .clobbers = .{ .eflags = true },
......@@ -12298,10 +21031,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1229821031 } },
1229921032 }, .{
1230021033 .required_features = .{ .@"64bit", .lzcnt, null, null },
12301 .src_constraints = .{ .{ .signed_int = .qword }, .any },
21034 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
1230221035 .patterns = &.{
12303 .{ .src = .{ .mem, .none } },
12304 .{ .src = .{ .to_gpr, .none } },
21036 .{ .src = .{ .mem, .none, .none } },
21037 .{ .src = .{ .to_gpr, .none, .none } },
1230521038 },
1230621039 .dst_temps = .{.{ .rc = .general_purpose }},
1230721040 .clobbers = .{ .eflags = true },
......@@ -12313,9 +21046,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1231321046 } },
1231421047 }, .{
1231521048 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
12316 .src_constraints = .{ .{ .unsigned_int = .qword }, .any },
21049 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
1231721050 .patterns = &.{
12318 .{ .src = .{ .to_mut_gpr, .none } },
21051 .{ .src = .{ .to_mut_gpr, .none, .none } },
1231921052 },
1232021053 .dst_temps = .{.{ .ref = .src0 }},
1232121054 .clobbers = .{ .eflags = true },
......@@ -12325,10 +21058,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1232521058 } },
1232621059 }, .{
1232721060 .required_features = .{ .@"64bit", .lzcnt, null, null },
12328 .src_constraints = .{ .{ .unsigned_int = .qword }, .any },
21061 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
1232921062 .patterns = &.{
12330 .{ .src = .{ .mem, .none } },
12331 .{ .src = .{ .to_gpr, .none } },
21063 .{ .src = .{ .mem, .none, .none } },
21064 .{ .src = .{ .to_gpr, .none, .none } },
1233221065 },
1233321066 .dst_temps = .{.{ .rc = .general_purpose }},
1233421067 .clobbers = .{ .eflags = true },
......@@ -12338,10 +21071,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1233821071 } },
1233921072 }, .{
1234021073 .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 },
1234221075 .patterns = &.{
12343 .{ .src = .{ .mem, .none } },
12344 .{ .src = .{ .to_gpr, .none } },
21076 .{ .src = .{ .mem, .none, .none } },
21077 .{ .src = .{ .to_gpr, .none, .none } },
1234521078 },
1234621079 .extra_temps = .{
1234721080 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -12365,10 +21098,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1236521098 } },
1236621099 }, .{
1236721100 .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 },
1236921102 .patterns = &.{
12370 .{ .src = .{ .mem, .none } },
12371 .{ .src = .{ .to_gpr, .none } },
21103 .{ .src = .{ .mem, .none, .none } },
21104 .{ .src = .{ .to_gpr, .none, .none } },
1237221105 },
1237321106 .extra_temps = .{
1237421107 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -12393,10 +21126,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1239321126 } },
1239421127 }, .{
1239521128 .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 },
1239721130 .patterns = &.{
12398 .{ .src = .{ .mem, .none } },
12399 .{ .src = .{ .to_gpr, .none } },
21131 .{ .src = .{ .mem, .none, .none } },
21132 .{ .src = .{ .to_gpr, .none, .none } },
1240021133 },
1240121134 .extra_temps = .{
1240221135 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -12422,10 +21155,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1242221155 } },
1242321156 }, .{
1242421157 .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 },
1242621159 .patterns = &.{
12427 .{ .src = .{ .mem, .none } },
12428 .{ .src = .{ .to_gpr, .none } },
21160 .{ .src = .{ .mem, .none, .none } },
21161 .{ .src = .{ .to_gpr, .none, .none } },
1242921162 },
1243021163 .extra_temps = .{
1243121164 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -12450,10 +21183,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1245021183 } },
1245121184 }, .{
1245221185 .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 },
1245421187 .patterns = &.{
12455 .{ .src = .{ .mem, .none } },
12456 .{ .src = .{ .to_gpr, .none } },
21188 .{ .src = .{ .mem, .none, .none } },
21189 .{ .src = .{ .to_gpr, .none, .none } },
1245721190 },
1245821191 .dst_temps = .{.{ .rc = .general_purpose }},
1245921192 .clobbers = .{ .eflags = true },
......@@ -12466,10 +21199,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1246621199 } },
1246721200 }, .{
1246821201 .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 },
1247021203 .patterns = &.{
12471 .{ .src = .{ .mem, .none } },
12472 .{ .src = .{ .to_gpr, .none } },
21204 .{ .src = .{ .mem, .none, .none } },
21205 .{ .src = .{ .to_gpr, .none, .none } },
1247321206 },
1247421207 .dst_temps = .{.{ .rc = .general_purpose }},
1247521208 .clobbers = .{ .eflags = true },
......@@ -12483,10 +21216,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1248321216 } },
1248421217 }, .{
1248521218 .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 },
1248721220 .patterns = &.{
12488 .{ .src = .{ .mem, .none } },
12489 .{ .src = .{ .to_gpr, .none } },
21221 .{ .src = .{ .mem, .none, .none } },
21222 .{ .src = .{ .to_gpr, .none, .none } },
1249021223 },
1249121224 .extra_temps = .{
1249221225 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -12512,10 +21245,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1251221245 } },
1251321246 }, .{
1251421247 .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 },
1251621249 .patterns = &.{
12517 .{ .src = .{ .mem, .none } },
12518 .{ .src = .{ .to_gpr, .none } },
21250 .{ .src = .{ .mem, .none, .none } },
21251 .{ .src = .{ .to_gpr, .none, .none } },
1251921252 },
1252021253 .extra_temps = .{
1252121254 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -12539,10 +21272,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1253921272 .{ ._, ._, .sbb, .dst0b, .tmp0b, ._, ._ },
1254021273 } },
1254121274 }, .{
12542 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any },
21275 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any, .any },
1254321276 .patterns = &.{
12544 .{ .src = .{ .mem, .none } },
12545 .{ .src = .{ .to_gpr, .none } },
21277 .{ .src = .{ .mem, .none, .none } },
21278 .{ .src = .{ .to_gpr, .none, .none } },
1254621279 },
1254721280 .extra_temps = .{
1254821281 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -12564,10 +21297,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1256421297 .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
1256521298 } },
1256621299 }, .{
12567 .src_constraints = .{ .{ .signed_po2_int = .byte }, .any },
21300 .src_constraints = .{ .{ .signed_po2_int = .byte }, .any, .any },
1256821301 .patterns = &.{
12569 .{ .src = .{ .mem, .none } },
12570 .{ .src = .{ .to_gpr, .none } },
21302 .{ .src = .{ .mem, .none, .none } },
21303 .{ .src = .{ .to_gpr, .none, .none } },
1257121304 },
1257221305 .extra_temps = .{
1257321306 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -12590,10 +21323,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1259021323 .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
1259121324 } },
1259221325 }, .{
12593 .src_constraints = .{ .{ .signed_int = .byte }, .any },
21326 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
1259421327 .patterns = &.{
12595 .{ .src = .{ .mem, .none } },
12596 .{ .src = .{ .to_gpr, .none } },
21328 .{ .src = .{ .mem, .none, .none } },
21329 .{ .src = .{ .to_gpr, .none, .none } },
1259721330 },
1259821331 .extra_temps = .{
1259921332 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -12617,10 +21350,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1261721350 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },
1261821351 } },
1261921352 }, .{
12620 .src_constraints = .{ .{ .unsigned_int = .byte }, .any },
21353 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
1262121354 .patterns = &.{
12622 .{ .src = .{ .mem, .none } },
12623 .{ .src = .{ .to_gpr, .none } },
21355 .{ .src = .{ .mem, .none, .none } },
21356 .{ .src = .{ .to_gpr, .none, .none } },
1262421357 },
1262521358 .extra_temps = .{
1262621359 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -12644,9 +21377,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1264421377 } },
1264521378 }, .{
1264621379 .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 },
1264821381 .patterns = &.{
12649 .{ .src = .{ .to_mut_gpr, .none } },
21382 .{ .src = .{ .to_mut_gpr, .none, .none } },
1265021383 },
1265121384 .dst_temps = .{.{ .rc = .general_purpose }},
1265221385 .clobbers = .{ .eflags = true },
......@@ -12658,9 +21391,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1265821391 } },
1265921392 }, .{
1266021393 .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 },
1266221395 .patterns = &.{
12663 .{ .src = .{ .to_mut_gpr, .none } },
21396 .{ .src = .{ .to_mut_gpr, .none, .none } },
1266421397 },
1266521398 .dst_temps = .{.{ .rc = .general_purpose }},
1266621399 .clobbers = .{ .eflags = true },
......@@ -12674,9 +21407,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1267421407 } },
1267521408 }, .{
1267621409 .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 },
1267821411 .patterns = &.{
12679 .{ .src = .{ .to_mut_gpr, .none } },
21412 .{ .src = .{ .to_mut_gpr, .none, .none } },
1268021413 },
1268121414 .dst_temps = .{.{ .rc = .general_purpose }},
1268221415 .clobbers = .{ .eflags = true },
......@@ -12689,9 +21422,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1268921422 } },
1269021423 }, .{
1269121424 .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 },
1269321426 .patterns = &.{
12694 .{ .src = .{ .to_mut_gpr, .none } },
21427 .{ .src = .{ .to_mut_gpr, .none, .none } },
1269521428 },
1269621429 .dst_temps = .{.{ .ref = .src0 }},
1269721430 .clobbers = .{ .eflags = true },
......@@ -12703,9 +21436,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1270321436 } },
1270421437 }, .{
1270521438 .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 },
1270721440 .patterns = &.{
12708 .{ .src = .{ .to_mut_gpr, .none } },
21441 .{ .src = .{ .to_mut_gpr, .none, .none } },
1270921442 },
1271021443 .dst_temps = .{.{ .rc = .general_purpose }},
1271121444 .clobbers = .{ .eflags = true },
......@@ -12719,9 +21452,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1271921452 } },
1272021453 }, .{
1272121454 .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 },
1272321456 .patterns = &.{
12724 .{ .src = .{ .to_mut_gpr, .none } },
21457 .{ .src = .{ .to_mut_gpr, .none, .none } },
1272521458 },
1272621459 .dst_temps = .{.{ .rc = .general_purpose }},
1272721460 .clobbers = .{ .eflags = true },
......@@ -12733,10 +21466,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1273321466 .{ ._, ._, .sbb, .dst0b, .src0b, ._, ._ },
1273421467 } },
1273521468 }, .{
12736 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any },
21469 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any, .any },
1273721470 .patterns = &.{
12738 .{ .src = .{ .mem, .none } },
12739 .{ .src = .{ .to_gpr, .none } },
21471 .{ .src = .{ .mem, .none, .none } },
21472 .{ .src = .{ .to_gpr, .none, .none } },
1274021473 },
1274121474 .dst_temps = .{.{ .rc = .general_purpose }},
1274221475 .clobbers = .{ .eflags = true },
......@@ -12746,9 +21479,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1274621479 .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
1274721480 } },
1274821481 }, .{
12749 .src_constraints = .{ .{ .signed_int = .word }, .any },
21482 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
1275021483 .patterns = &.{
12751 .{ .src = .{ .to_mut_gpr, .none } },
21484 .{ .src = .{ .to_mut_gpr, .none, .none } },
1275221485 },
1275321486 .extra_temps = .{
1275421487 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
......@@ -12771,10 +21504,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1277121504 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },
1277221505 } },
1277321506 }, .{
12774 .src_constraints = .{ .{ .unsigned_int = .word }, .any },
21507 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
1277521508 .patterns = &.{
12776 .{ .src = .{ .mem, .none } },
12777 .{ .src = .{ .to_gpr, .none } },
21509 .{ .src = .{ .mem, .none, .none } },
21510 .{ .src = .{ .to_gpr, .none, .none } },
1277821511 },
1277921512 .extra_temps = .{
1278021513 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
......@@ -12797,9 +21530,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1279721530 } },
1279821531 }, .{
1279921532 .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 },
1280121534 .patterns = &.{
12802 .{ .src = .{ .to_mut_gpr, .none } },
21535 .{ .src = .{ .to_mut_gpr, .none, .none } },
1280321536 },
1280421537 .dst_temps = .{.{ .rc = .general_purpose }},
1280521538 .clobbers = .{ .eflags = true },
......@@ -12811,9 +21544,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1281121544 } },
1281221545 }, .{
1281321546 .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 },
1281521548 .patterns = &.{
12816 .{ .src = .{ .to_mut_gpr, .none } },
21549 .{ .src = .{ .to_mut_gpr, .none, .none } },
1281721550 },
1281821551 .dst_temps = .{.{ .rc = .general_purpose }},
1281921552 .clobbers = .{ .eflags = true },
......@@ -12827,9 +21560,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1282721560 } },
1282821561 }, .{
1282921562 .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 },
1283121564 .patterns = &.{
12832 .{ .src = .{ .to_mut_gpr, .none } },
21565 .{ .src = .{ .to_mut_gpr, .none, .none } },
1283321566 },
1283421567 .dst_temps = .{.{ .rc = .general_purpose }},
1283521568 .clobbers = .{ .eflags = true },
......@@ -12842,9 +21575,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1284221575 } },
1284321576 }, .{
1284421577 .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 },
1284621579 .patterns = &.{
12847 .{ .src = .{ .to_mut_gpr, .none } },
21580 .{ .src = .{ .to_mut_gpr, .none, .none } },
1284821581 },
1284921582 .dst_temps = .{.{ .ref = .src0 }},
1285021583 .clobbers = .{ .eflags = true },
......@@ -12856,9 +21589,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1285621589 } },
1285721590 }, .{
1285821591 .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 },
1286021593 .patterns = &.{
12861 .{ .src = .{ .to_mut_gpr, .none } },
21594 .{ .src = .{ .to_mut_gpr, .none, .none } },
1286221595 },
1286321596 .dst_temps = .{.{ .rc = .general_purpose }},
1286421597 .clobbers = .{ .eflags = true },
......@@ -12872,9 +21605,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1287221605 } },
1287321606 }, .{
1287421607 .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 },
1287621609 .patterns = &.{
12877 .{ .src = .{ .to_mut_gpr, .none } },
21610 .{ .src = .{ .to_mut_gpr, .none, .none } },
1287821611 },
1287921612 .dst_temps = .{.{ .rc = .general_purpose }},
1288021613 .clobbers = .{ .eflags = true },
......@@ -12886,10 +21619,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1288621619 .{ ._, ._, .sbb, .dst0b, .src0b, ._, ._ },
1288721620 } },
1288821621 }, .{
12889 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any },
21622 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any, .any },
1289021623 .patterns = &.{
12891 .{ .src = .{ .mem, .none } },
12892 .{ .src = .{ .to_gpr, .none } },
21624 .{ .src = .{ .mem, .none, .none } },
21625 .{ .src = .{ .to_gpr, .none, .none } },
1289321626 },
1289421627 .dst_temps = .{.{ .rc = .general_purpose }},
1289521628 .clobbers = .{ .eflags = true },
......@@ -12899,9 +21632,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1289921632 .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
1290021633 } },
1290121634 }, .{
12902 .src_constraints = .{ .{ .signed_int = .dword }, .any },
21635 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
1290321636 .patterns = &.{
12904 .{ .src = .{ .to_mut_gpr, .none } },
21637 .{ .src = .{ .to_mut_gpr, .none, .none } },
1290521638 },
1290621639 .extra_temps = .{
1290721640 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -12924,10 +21657,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1292421657 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },
1292521658 } },
1292621659 }, .{
12927 .src_constraints = .{ .{ .unsigned_int = .dword }, .any },
21660 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
1292821661 .patterns = &.{
12929 .{ .src = .{ .mem, .none } },
12930 .{ .src = .{ .to_gpr, .none } },
21662 .{ .src = .{ .mem, .none, .none } },
21663 .{ .src = .{ .to_gpr, .none, .none } },
1293121664 },
1293221665 .extra_temps = .{
1293321666 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -12950,9 +21683,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1295021683 } },
1295121684 }, .{
1295221685 .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 },
1295421687 .patterns = &.{
12955 .{ .src = .{ .to_mut_gpr, .none } },
21688 .{ .src = .{ .to_mut_gpr, .none, .none } },
1295621689 },
1295721690 .dst_temps = .{.{ .rc = .general_purpose }},
1295821691 .clobbers = .{ .eflags = true },
......@@ -12964,10 +21697,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1296421697 } },
1296521698 }, .{
1296621699 .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 },
1296821701 .patterns = &.{
12969 .{ .src = .{ .mem, .none } },
12970 .{ .src = .{ .to_gpr, .none } },
21702 .{ .src = .{ .mem, .none, .none } },
21703 .{ .src = .{ .to_gpr, .none, .none } },
1297121704 },
1297221705 .extra_temps = .{
1297321706 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
......@@ -12993,9 +21726,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1299321726 } },
1299421727 }, .{
1299521728 .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 },
1299721730 .patterns = &.{
12998 .{ .src = .{ .to_mut_gpr, .none } },
21731 .{ .src = .{ .to_mut_gpr, .none, .none } },
1299921732 },
1300021733 .dst_temps = .{.{ .rc = .general_purpose }},
1300121734 .clobbers = .{ .eflags = true },
......@@ -13008,9 +21741,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1300821741 } },
1300921742 }, .{
1301021743 .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 },
1301221745 .patterns = &.{
13013 .{ .src = .{ .to_mut_gpr, .none } },
21746 .{ .src = .{ .to_mut_gpr, .none, .none } },
1301421747 },
1301521748 .dst_temps = .{.{ .ref = .src0 }},
1301621749 .clobbers = .{ .eflags = true },
......@@ -13022,10 +21755,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1302221755 } },
1302321756 }, .{
1302421757 .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 },
1302621759 .patterns = &.{
13027 .{ .src = .{ .mem, .none } },
13028 .{ .src = .{ .to_gpr, .none } },
21760 .{ .src = .{ .mem, .none, .none } },
21761 .{ .src = .{ .to_gpr, .none, .none } },
1302921762 },
1303021763 .extra_temps = .{
1303121764 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
......@@ -13051,9 +21784,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1305121784 } },
1305221785 }, .{
1305321786 .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 },
1305521788 .patterns = &.{
13056 .{ .src = .{ .to_mut_gpr, .none } },
21789 .{ .src = .{ .to_mut_gpr, .none, .none } },
1305721790 },
1305821791 .dst_temps = .{.{ .rc = .general_purpose }},
1305921792 .clobbers = .{ .eflags = true },
......@@ -13066,10 +21799,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1306621799 } },
1306721800 }, .{
1306821801 .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 },
1307021803 .patterns = &.{
13071 .{ .src = .{ .mem, .none } },
13072 .{ .src = .{ .to_gpr, .none } },
21804 .{ .src = .{ .mem, .none, .none } },
21805 .{ .src = .{ .to_gpr, .none, .none } },
1307321806 },
1307421807 .dst_temps = .{.{ .rc = .general_purpose }},
1307521808 .clobbers = .{ .eflags = true },
......@@ -13080,10 +21813,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1308021813 } },
1308121814 }, .{
1308221815 .required_features = .{ .@"64bit", null, null, null },
13083 .src_constraints = .{ .{ .signed_int = .qword }, .any },
21816 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
1308421817 .patterns = &.{
13085 .{ .src = .{ .mem, .none } },
13086 .{ .src = .{ .to_gpr, .none } },
21818 .{ .src = .{ .mem, .none, .none } },
21819 .{ .src = .{ .to_gpr, .none, .none } },
1308721820 },
1308821821 .extra_temps = .{
1308921822 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
......@@ -13108,10 +21841,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1310821841 } },
1310921842 }, .{
1311021843 .required_features = .{ .@"64bit", null, null, null },
13111 .src_constraints = .{ .{ .unsigned_int = .qword }, .any },
21844 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
1311221845 .patterns = &.{
13113 .{ .src = .{ .mem, .none } },
13114 .{ .src = .{ .to_gpr, .none } },
21846 .{ .src = .{ .mem, .none, .none } },
21847 .{ .src = .{ .to_gpr, .none, .none } },
1311521848 },
1311621849 .extra_temps = .{
1311721850 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
......@@ -13134,9 +21867,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1313421867 } },
1313521868 }, .{
1313621869 .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 },
1313821871 .patterns = &.{
13139 .{ .src = .{ .to_mem, .none } },
21872 .{ .src = .{ .to_mem, .none, .none } },
1314021873 },
1314121874 .extra_temps = .{
1314221875 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13164,9 +21897,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1316421897 } },
1316521898 }, .{
1316621899 .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 },
1316821901 .patterns = &.{
13169 .{ .src = .{ .to_mem, .none } },
21902 .{ .src = .{ .to_mem, .none, .none } },
1317021903 },
1317121904 .extra_temps = .{
1317221905 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13193,9 +21926,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1319321926 } },
1319421927 }, .{
1319521928 .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 },
1319721930 .patterns = &.{
13198 .{ .src = .{ .to_mem, .none } },
21931 .{ .src = .{ .to_mem, .none, .none } },
1319921932 },
1320021933 .extra_temps = .{
1320121934 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13224,9 +21957,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1322421957 } },
1322521958 }, .{
1322621959 .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 },
1322821961 .patterns = &.{
13229 .{ .src = .{ .to_mem, .none } },
21962 .{ .src = .{ .to_mem, .none, .none } },
1323021963 },
1323121964 .extra_temps = .{
1323221965 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13254,9 +21987,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1325421987 } },
1325521988 }, .{
1325621989 .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 },
1325821991 .patterns = &.{
13259 .{ .src = .{ .to_mem, .none } },
21992 .{ .src = .{ .to_mem, .none, .none } },
1326021993 },
1326121994 .extra_temps = .{
1326221995 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13284,9 +22017,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1328422017 } },
1328522018 }, .{
1328622019 .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 },
1328822021 .patterns = &.{
13289 .{ .src = .{ .to_mem, .none } },
22022 .{ .src = .{ .to_mem, .none, .none } },
1329022023 },
1329122024 .extra_temps = .{
1329222025 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13313,9 +22046,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1331322046 } },
1331422047 }, .{
1331522048 .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 },
1331722050 .patterns = &.{
13318 .{ .src = .{ .to_mem, .none } },
22051 .{ .src = .{ .to_mem, .none, .none } },
1331922052 },
1332022053 .extra_temps = .{
1332122054 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13344,9 +22077,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1334422077 } },
1334522078 }, .{
1334622079 .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 },
1334822081 .patterns = &.{
13349 .{ .src = .{ .to_mem, .none } },
22082 .{ .src = .{ .to_mem, .none, .none } },
1335022083 },
1335122084 .extra_temps = .{
1335222085 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13374,9 +22107,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1337422107 } },
1337522108 }, .{
1337622109 .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 },
1337822111 .patterns = &.{
13379 .{ .src = .{ .to_mem, .none } },
22112 .{ .src = .{ .to_mem, .none, .none } },
1338022113 },
1338122114 .extra_temps = .{
1338222115 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13407,9 +22140,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1340722140 } },
1340822141 }, .{
1340922142 .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 },
1341122144 .patterns = &.{
13412 .{ .src = .{ .to_mem, .none } },
22145 .{ .src = .{ .to_mem, .none, .none } },
1341322146 },
1341422147 .extra_temps = .{
1341522148 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13439,9 +22172,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1343922172 } },
1344022173 }, .{
1344122174 .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 },
1344322176 .patterns = &.{
13444 .{ .src = .{ .to_mem, .none } },
22177 .{ .src = .{ .to_mem, .none, .none } },
1344522178 },
1344622179 .extra_temps = .{
1344722180 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13471,9 +22204,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1347122204 } },
1347222205 }, .{
1347322206 .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 },
1347522208 .patterns = &.{
13476 .{ .src = .{ .to_mem, .none } },
22209 .{ .src = .{ .to_mem, .none, .none } },
1347722210 },
1347822211 .extra_temps = .{
1347922212 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13504,9 +22237,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1350422237 } },
1350522238 }, .{
1350622239 .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 },
1350822241 .patterns = &.{
13509 .{ .src = .{ .to_mem, .none } },
22242 .{ .src = .{ .to_mem, .none, .none } },
1351022243 },
1351122244 .extra_temps = .{
1351222245 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13536,9 +22269,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1353622269 } },
1353722270 }, .{
1353822271 .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 },
1354022273 .patterns = &.{
13541 .{ .src = .{ .to_mem, .none } },
22274 .{ .src = .{ .to_mem, .none, .none } },
1354222275 },
1354322276 .extra_temps = .{
1354422277 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13568,9 +22301,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1356822301 } },
1356922302 }, .{
1357022303 .required_features = .{ .lzcnt, .slow_incdec, null, null },
13571 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any },
22304 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any },
1357222305 .patterns = &.{
13573 .{ .src = .{ .to_mem, .none } },
22306 .{ .src = .{ .to_mem, .none, .none } },
1357422307 },
1357522308 .extra_temps = .{
1357622309 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13597,9 +22330,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1359722330 } },
1359822331 }, .{
1359922332 .required_features = .{ .lzcnt, null, null, null },
13600 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any },
22333 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any },
1360122334 .patterns = &.{
13602 .{ .src = .{ .to_mem, .none } },
22335 .{ .src = .{ .to_mem, .none, .none } },
1360322336 },
1360422337 .extra_temps = .{
1360522338 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13626,9 +22359,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1362622359 } },
1362722360 }, .{
1362822361 .required_features = .{ .lzcnt, .slow_incdec, null, null },
13629 .src_constraints = .{ .{ .scalar_int_is = .word }, .any },
22362 .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any },
1363022363 .patterns = &.{
13631 .{ .src = .{ .to_mem, .none } },
22364 .{ .src = .{ .to_mem, .none, .none } },
1363222365 },
1363322366 .extra_temps = .{
1363422367 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13655,9 +22388,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1365522388 } },
1365622389 }, .{
1365722390 .required_features = .{ .lzcnt, null, null, null },
13658 .src_constraints = .{ .{ .scalar_int_is = .word }, .any },
22391 .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any },
1365922392 .patterns = &.{
13660 .{ .src = .{ .to_mem, .none } },
22393 .{ .src = .{ .to_mem, .none, .none } },
1366122394 },
1366222395 .extra_temps = .{
1366322396 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13684,9 +22417,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1368422417 } },
1368522418 }, .{
1368622419 .required_features = .{ .lzcnt, .slow_incdec, null, null },
13687 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any },
22420 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any },
1368822421 .patterns = &.{
13689 .{ .src = .{ .to_mem, .none } },
22422 .{ .src = .{ .to_mem, .none, .none } },
1369022423 },
1369122424 .extra_temps = .{
1369222425 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13713,9 +22446,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1371322446 } },
1371422447 }, .{
1371522448 .required_features = .{ .lzcnt, null, null, null },
13716 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any },
22449 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any },
1371722450 .patterns = &.{
13718 .{ .src = .{ .to_mem, .none } },
22451 .{ .src = .{ .to_mem, .none, .none } },
1371922452 },
1372022453 .extra_temps = .{
1372122454 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13742,9 +22475,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1374222475 } },
1374322476 }, .{
1374422477 .required_features = .{ .@"64bit", .lzcnt, .slow_incdec, null },
13745 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any },
22478 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any },
1374622479 .patterns = &.{
13747 .{ .src = .{ .to_mem, .none } },
22480 .{ .src = .{ .to_mem, .none, .none } },
1374822481 },
1374922482 .extra_temps = .{
1375022483 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13771,9 +22504,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1377122504 } },
1377222505 }, .{
1377322506 .required_features = .{ .@"64bit", .lzcnt, null, null },
13774 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any },
22507 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any },
1377522508 .patterns = &.{
13776 .{ .src = .{ .to_mem, .none } },
22509 .{ .src = .{ .to_mem, .none, .none } },
1377722510 },
1377822511 .extra_temps = .{
1377922512 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13800,9 +22533,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1380022533 } },
1380122534 }, .{
1380222535 .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 },
1380422537 .patterns = &.{
13805 .{ .src = .{ .to_mem, .none } },
22538 .{ .src = .{ .to_mem, .none, .none } },
1380622539 },
1380722540 .extra_temps = .{
1380822541 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13832,9 +22565,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1383222565 } },
1383322566 }, .{
1383422567 .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 },
1383622569 .patterns = &.{
13837 .{ .src = .{ .to_mem, .none } },
22570 .{ .src = .{ .to_mem, .none, .none } },
1383822571 },
1383922572 .extra_temps = .{
1384022573 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13864,9 +22597,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1386422597 } },
1386522598 }, .{
1386622599 .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 },
1386822601 .patterns = &.{
13869 .{ .src = .{ .to_mem, .none } },
22602 .{ .src = .{ .to_mem, .none, .none } },
1387022603 },
1387122604 .extra_temps = .{
1387222605 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13896,9 +22629,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1389622629 } },
1389722630 }, .{
1389822631 .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 },
1390022633 .patterns = &.{
13901 .{ .src = .{ .to_mem, .none } },
22634 .{ .src = .{ .to_mem, .none, .none } },
1390222635 },
1390322636 .extra_temps = .{
1390422637 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13928,9 +22661,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1392822661 } },
1392922662 }, .{
1393022663 .required_features = .{ .slow_incdec, null, null, null },
13931 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any },
22664 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any },
1393222665 .patterns = &.{
13933 .{ .src = .{ .to_mem, .none } },
22666 .{ .src = .{ .to_mem, .none, .none } },
1393422667 },
1393522668 .extra_temps = .{
1393622669 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13958,9 +22691,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1395822691 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1395922692 } },
1396022693 }, .{
13961 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any },
22694 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any },
1396222695 .patterns = &.{
13963 .{ .src = .{ .to_mem, .none } },
22696 .{ .src = .{ .to_mem, .none, .none } },
1396422697 },
1396522698 .extra_temps = .{
1396622699 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13989,9 +22722,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1398922722 } },
1399022723 }, .{
1399122724 .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 },
1399322726 .patterns = &.{
13994 .{ .src = .{ .to_mem, .none } },
22727 .{ .src = .{ .to_mem, .none, .none } },
1399522728 },
1399622729 .extra_temps = .{
1399722730 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14021,9 +22754,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1402122754 } },
1402222755 }, .{
1402322756 .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 },
1402522758 .patterns = &.{
14026 .{ .src = .{ .to_mem, .none } },
22759 .{ .src = .{ .to_mem, .none, .none } },
1402722760 },
1402822761 .extra_temps = .{
1402922762 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14053,9 +22786,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1405322786 } },
1405422787 }, .{
1405522788 .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 },
1405722790 .patterns = &.{
14058 .{ .src = .{ .to_mem, .none } },
22791 .{ .src = .{ .to_mem, .none, .none } },
1405922792 },
1406022793 .extra_temps = .{
1406122794 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14085,9 +22818,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1408522818 } },
1408622819 }, .{
1408722820 .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 },
1408922822 .patterns = &.{
14090 .{ .src = .{ .to_mem, .none } },
22823 .{ .src = .{ .to_mem, .none, .none } },
1409122824 },
1409222825 .extra_temps = .{
1409322826 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14117,9 +22850,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1411722850 } },
1411822851 }, .{
1411922852 .required_features = .{ .slow_incdec, null, null, null },
14120 .src_constraints = .{ .{ .scalar_int_is = .word }, .any },
22853 .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any },
1412122854 .patterns = &.{
14122 .{ .src = .{ .to_mem, .none } },
22855 .{ .src = .{ .to_mem, .none, .none } },
1412322856 },
1412422857 .extra_temps = .{
1412522858 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14147,9 +22880,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1414722880 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1414822881 } },
1414922882 }, .{
14150 .src_constraints = .{ .{ .scalar_int_is = .word }, .any },
22883 .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any },
1415122884 .patterns = &.{
14152 .{ .src = .{ .to_mem, .none } },
22885 .{ .src = .{ .to_mem, .none, .none } },
1415322886 },
1415422887 .extra_temps = .{
1415522888 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14178,9 +22911,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1417822911 } },
1417922912 }, .{
1418022913 .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 },
1418222915 .patterns = &.{
14183 .{ .src = .{ .to_mem, .none } },
22916 .{ .src = .{ .to_mem, .none, .none } },
1418422917 },
1418522918 .extra_temps = .{
1418622919 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14210,9 +22943,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1421022943 } },
1421122944 }, .{
1421222945 .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 },
1421422947 .patterns = &.{
14215 .{ .src = .{ .to_mem, .none } },
22948 .{ .src = .{ .to_mem, .none, .none } },
1421622949 },
1421722950 .extra_temps = .{
1421822951 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14242,9 +22975,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1424222975 } },
1424322976 }, .{
1424422977 .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 },
1424622979 .patterns = &.{
14247 .{ .src = .{ .to_mem, .none } },
22980 .{ .src = .{ .to_mem, .none, .none } },
1424822981 },
1424922982 .extra_temps = .{
1425022983 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14274,9 +23007,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1427423007 } },
1427523008 }, .{
1427623009 .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 },
1427823011 .patterns = &.{
14279 .{ .src = .{ .to_mem, .none } },
23012 .{ .src = .{ .to_mem, .none, .none } },
1428023013 },
1428123014 .extra_temps = .{
1428223015 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14306,9 +23039,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1430623039 } },
1430723040 }, .{
1430823041 .required_features = .{ .slow_incdec, null, null, null },
14309 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any },
23042 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any },
1431023043 .patterns = &.{
14311 .{ .src = .{ .to_mem, .none } },
23044 .{ .src = .{ .to_mem, .none, .none } },
1431223045 },
1431323046 .extra_temps = .{
1431423047 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14336,9 +23069,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1433623069 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1433723070 } },
1433823071 }, .{
14339 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any },
23072 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any },
1434023073 .patterns = &.{
14341 .{ .src = .{ .to_mem, .none } },
23074 .{ .src = .{ .to_mem, .none, .none } },
1434223075 },
1434323076 .extra_temps = .{
1434423077 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14367,9 +23100,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1436723100 } },
1436823101 }, .{
1436923102 .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 },
1437123104 .patterns = &.{
14372 .{ .src = .{ .to_mem, .none } },
23105 .{ .src = .{ .to_mem, .none, .none } },
1437323106 },
1437423107 .extra_temps = .{
1437523108 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14399,9 +23132,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1439923132 } },
1440023133 }, .{
1440123134 .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 },
1440323136 .patterns = &.{
14404 .{ .src = .{ .to_mem, .none } },
23137 .{ .src = .{ .to_mem, .none, .none } },
1440523138 },
1440623139 .extra_temps = .{
1440723140 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14431,9 +23164,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1443123164 } },
1443223165 }, .{
1443323166 .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 },
1443523168 .patterns = &.{
14436 .{ .src = .{ .to_mem, .none } },
23169 .{ .src = .{ .to_mem, .none, .none } },
1443723170 },
1443823171 .extra_temps = .{
1443923172 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14463,9 +23196,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1446323196 } },
1446423197 }, .{
1446523198 .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 },
1446723200 .patterns = &.{
14468 .{ .src = .{ .to_mem, .none } },
23201 .{ .src = .{ .to_mem, .none, .none } },
1446923202 },
1447023203 .extra_temps = .{
1447123204 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14495,9 +23228,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1449523228 } },
1449623229 }, .{
1449723230 .required_features = .{ .@"64bit", .slow_incdec, null, null },
14498 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any },
23231 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any },
1449923232 .patterns = &.{
14500 .{ .src = .{ .to_mem, .none } },
23233 .{ .src = .{ .to_mem, .none, .none } },
1450123234 },
1450223235 .extra_temps = .{
1450323236 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14526,9 +23259,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1452623259 } },
1452723260 }, .{
1452823261 .required_features = .{ .@"64bit", null, null, null },
14529 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any },
23262 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any },
1453023263 .patterns = &.{
14531 .{ .src = .{ .to_mem, .none } },
23264 .{ .src = .{ .to_mem, .none, .none } },
1453223265 },
1453323266 .extra_temps = .{
1453423267 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14557,10 +23290,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1455723290 } },
1455823291 }, .{
1455923292 .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 },
1456123294 .dst_constraints = .{.{ .scalar_int_is = .byte }},
1456223295 .patterns = &.{
14563 .{ .src = .{ .to_mem, .none } },
23296 .{ .src = .{ .to_mem, .none, .none } },
1456423297 },
1456523298 .extra_temps = .{
1456623299 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14597,10 +23330,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1459723330 } },
1459823331 }, .{
1459923332 .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 },
1460123334 .dst_constraints = .{.{ .scalar_int_is = .byte }},
1460223335 .patterns = &.{
14603 .{ .src = .{ .to_mem, .none } },
23336 .{ .src = .{ .to_mem, .none, .none } },
1460423337 },
1460523338 .extra_temps = .{
1460623339 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14636,10 +23369,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1463623369 } },
1463723370 }, .{
1463823371 .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 },
1464023373 .dst_constraints = .{.{ .scalar_int_is = .byte }},
1464123374 .patterns = &.{
14642 .{ .src = .{ .to_mem, .none } },
23375 .{ .src = .{ .to_mem, .none, .none } },
1464323376 },
1464423377 .extra_temps = .{
1464523378 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14675,10 +23408,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1467523408 } },
1467623409 }, .{
1467723410 .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 },
1467923412 .dst_constraints = .{.{ .scalar_int_is = .byte }},
1468023413 .patterns = &.{
14681 .{ .src = .{ .to_mem, .none } },
23414 .{ .src = .{ .to_mem, .none, .none } },
1468223415 },
1468323416 .extra_temps = .{
1468423417 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14715,10 +23448,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1471523448 } },
1471623449 }, .{
1471723450 .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 },
1471923452 .dst_constraints = .{.{ .scalar_int_is = .byte }},
1472023453 .patterns = &.{
14721 .{ .src = .{ .to_mem, .none } },
23454 .{ .src = .{ .to_mem, .none, .none } },
1472223455 },
1472323456 .extra_temps = .{
1472423457 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14754,10 +23487,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1475423487 } },
1475523488 }, .{
1475623489 .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 },
1475823491 .dst_constraints = .{.{ .scalar_int_is = .byte }},
1475923492 .patterns = &.{
14760 .{ .src = .{ .to_mem, .none } },
23493 .{ .src = .{ .to_mem, .none, .none } },
1476123494 },
1476223495 .extra_temps = .{
1476323496 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14793,10 +23526,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1479323526 } },
1479423527 }, .{
1479523528 .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 },
1479723530 .dst_constraints = .{.{ .scalar_int_is = .word }},
1479823531 .patterns = &.{
14799 .{ .src = .{ .to_mem, .none } },
23532 .{ .src = .{ .to_mem, .none, .none } },
1480023533 },
1480123534 .extra_temps = .{
1480223535 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14833,10 +23566,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1483323566 } },
1483423567 }, .{
1483523568 .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 },
1483723570 .dst_constraints = .{.{ .scalar_int_is = .word }},
1483823571 .patterns = &.{
14839 .{ .src = .{ .to_mem, .none } },
23572 .{ .src = .{ .to_mem, .none, .none } },
1484023573 },
1484123574 .extra_temps = .{
1484223575 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14872,10 +23605,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1487223605 } },
1487323606 }, .{
1487423607 .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 },
1487623609 .dst_constraints = .{.{ .scalar_int_is = .word }},
1487723610 .patterns = &.{
14878 .{ .src = .{ .to_mem, .none } },
23611 .{ .src = .{ .to_mem, .none, .none } },
1487923612 },
1488023613 .extra_temps = .{
1488123614 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14911,10 +23644,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1491123644 } },
1491223645 }, .{
1491323646 .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 },
1491523648 .dst_constraints = .{.{ .scalar_int_is = .word }},
1491623649 .patterns = &.{
14917 .{ .src = .{ .to_mem, .none } },
23650 .{ .src = .{ .to_mem, .none, .none } },
1491823651 },
1491923652 .extra_temps = .{
1492023653 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14951,10 +23684,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1495123684 } },
1495223685 }, .{
1495323686 .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 },
1495523688 .dst_constraints = .{.{ .scalar_int_is = .word }},
1495623689 .patterns = &.{
14957 .{ .src = .{ .to_mem, .none } },
23690 .{ .src = .{ .to_mem, .none, .none } },
1495823691 },
1495923692 .extra_temps = .{
1496023693 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14990,10 +23723,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1499023723 } },
1499123724 }, .{
1499223725 .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 },
1499423727 .dst_constraints = .{.{ .scalar_int_is = .word }},
1499523728 .patterns = &.{
14996 .{ .src = .{ .to_mem, .none } },
23729 .{ .src = .{ .to_mem, .none, .none } },
1499723730 },
1499823731 .extra_temps = .{
1499923732 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -15006,50 +23739,2361 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1500623739 .unused,
1500723740 .unused,
1500823741 },
15009 .dst_temps = .{.mem},
15010 .clobbers = .{ .eflags = true },
15011 .each = .{ .once = &.{
15012 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ },
15013 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
15014 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },
15015 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
15016 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
15017 .{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ },
15018 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
15019 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
15020 .{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ },
15021 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
15022 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
15023 .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ },
15024 .{ ._, ._, .neg, .tmp3d, ._, ._, ._ },
15025 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },
15026 .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
15027 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
15028 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
15029 } },
15030 } }) catch |err| switch (err) {
15031 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
15032 @tagName(air_tag),
15033 cg.typeOf(ty_op.operand).fmt(pt),
15034 ops[0].tracking(cg),
15035 }),
15036 else => |e| return e,
15037 };
15038 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
15039 },
15040
15041 .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;
15043 const extra = cg.air.extraData(Air.VectorCmp, ty_pl.payload).data;
15044 switch (extra.compareOperator()) {
15045 .eq, .neq => {},
15046 else => break :fallback try cg.airCmpVector(inst),
15047 }
15048 var ops = try cg.tempsFromOperands(inst, .{ extra.lhs, extra.rhs });
15049 var res: [1]Temp = undefined;
15050 switch (extra.compareOperator()) {
15051 .lt => unreachable,
15052 .lte => unreachable,
23742 .dst_temps = .{.mem},
23743 .clobbers = .{ .eflags = true },
23744 .each = .{ .once = &.{
23745 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ },
23746 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
23747 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },
23748 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
23749 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
23750 .{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ },
23751 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
23752 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
23753 .{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ },
23754 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
23755 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23756 .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ },
23757 .{ ._, ._, .neg, .tmp3d, ._, ._, ._ },
23758 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },
23759 .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
23760 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
23761 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23762 } },
23763 } }) catch |err| switch (err) {
23764 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
23765 @tagName(air_tag),
23766 cg.typeOf(ty_op.operand).fmt(pt),
23767 ops[0].tracking(cg),
23768 }),
23769 else => |e| return e,
23770 };
23771 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
23772 },
23773
23774 .cmp_vector, .cmp_vector_optimized => |air_tag| if (use_old) try cg.airCmpVector(inst) else fallback: {
23775 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
23776 const extra = cg.air.extraData(Air.VectorCmp, ty_pl.payload).data;
23777 switch (extra.compareOperator()) {
23778 .eq, .neq => {},
23779 .lt, .lte, .gte, .gt => if (cg.floatBits(cg.typeOf(extra.lhs).childType(zcu)) == null)
23780 break :fallback try cg.airCmpVector(inst),
23781 }
23782 var ops = try cg.tempsFromOperands(inst, .{ extra.lhs, extra.rhs });
23783 var res: [1]Temp = undefined;
23784 (err: switch (extra.compareOperator()) {
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 },
1505326097 .eq, .neq => |cmp_op| cg.select(&res, &.{ty_pl.ty.toType()}, &ops, switch (@as(Condition, switch (cmp_op) {
1505426098 else => unreachable,
1505526099 .eq => .e,
......@@ -15058,11 +26102,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1505826102 else => unreachable,
1505926103 inline .e, .ne => |cc| comptime &.{ .{
1506026104 .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 },
1506226106 .patterns = &.{
15063 .{ .src = .{ .to_ymm, .mem } },
15064 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },
15065 .{ .src = .{ .to_ymm, .to_ymm } },
26107 .{ .src = .{ .to_ymm, .mem, .none } },
26108 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
26109 .{ .src = .{ .to_ymm, .to_ymm, .none } },
1506626110 },
1506726111 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
1506826112 .kind = .all,
......@@ -15078,11 +26122,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1507826122 } },
1507926123 }, .{
1508026124 .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 },
1508226126 .patterns = &.{
15083 .{ .src = .{ .to_ymm, .mem } },
15084 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },
15085 .{ .src = .{ .to_ymm, .to_ymm } },
26127 .{ .src = .{ .to_ymm, .mem, .none } },
26128 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
26129 .{ .src = .{ .to_ymm, .to_ymm, .none } },
1508626130 },
1508726131 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
1508826132 .kind = .all,
......@@ -15098,11 +26142,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1509826142 } },
1509926143 }, .{
1510026144 .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 },
1510226146 .patterns = &.{
15103 .{ .src = .{ .to_ymm, .mem } },
15104 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },
15105 .{ .src = .{ .to_ymm, .to_ymm } },
26147 .{ .src = .{ .to_ymm, .mem, .none } },
26148 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
26149 .{ .src = .{ .to_ymm, .to_ymm, .none } },
1510626150 },
1510726151 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
1510826152 .kind = .all,
......@@ -15118,11 +26162,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1511826162 } },
1511926163 }, .{
1512026164 .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 },
1512226166 .patterns = &.{
15123 .{ .src = .{ .to_ymm, .mem } },
15124 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },
15125 .{ .src = .{ .to_ymm, .to_ymm } },
26167 .{ .src = .{ .to_ymm, .mem, .none } },
26168 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
26169 .{ .src = .{ .to_ymm, .to_ymm, .none } },
1512626170 },
1512726171 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
1512826172 .kind = .all,
......@@ -15138,11 +26182,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1513826182 } },
1513926183 }, .{
1514026184 .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 },
1514226186 .patterns = &.{
15143 .{ .src = .{ .to_xmm, .mem } },
15144 .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } },
15145 .{ .src = .{ .to_xmm, .to_xmm } },
26187 .{ .src = .{ .to_xmm, .mem, .none } },
26188 .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } },
26189 .{ .src = .{ .to_xmm, .to_xmm, .none } },
1514626190 },
1514726191 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
1514826192 .kind = .all,
......@@ -15158,11 +26202,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1515826202 } },
1515926203 }, .{
1516026204 .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 },
1516226206 .patterns = &.{
15163 .{ .src = .{ .to_xmm, .mem } },
15164 .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } },
15165 .{ .src = .{ .to_xmm, .to_xmm } },
26207 .{ .src = .{ .to_xmm, .mem, .none } },
26208 .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } },
26209 .{ .src = .{ .to_xmm, .to_xmm, .none } },
1516626210 },
1516726211 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
1516826212 .kind = .all,
......@@ -15178,11 +26222,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1517826222 } },
1517926223 }, .{
1518026224 .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 },
1518226226 .patterns = &.{
15183 .{ .src = .{ .to_xmm, .mem } },
15184 .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } },
15185 .{ .src = .{ .to_xmm, .to_xmm } },
26227 .{ .src = .{ .to_xmm, .mem, .none } },
26228 .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } },
26229 .{ .src = .{ .to_xmm, .to_xmm, .none } },
1518626230 },
1518726231 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
1518826232 .kind = .all,
......@@ -15198,11 +26242,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1519826242 } },
1519926243 }, .{
1520026244 .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 },
1520226246 .patterns = &.{
15203 .{ .src = .{ .to_xmm, .mem } },
15204 .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } },
15205 .{ .src = .{ .to_xmm, .to_xmm } },
26247 .{ .src = .{ .to_xmm, .mem, .none } },
26248 .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } },
26249 .{ .src = .{ .to_xmm, .to_xmm, .none } },
1520626250 },
1520726251 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
1520826252 .kind = .all,
......@@ -15218,11 +26262,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1521826262 } },
1521926263 }, .{
1522026264 .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 },
1522226266 .patterns = &.{
15223 .{ .src = .{ .to_mut_xmm, .mem } },
15224 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },
15225 .{ .src = .{ .to_mut_xmm, .to_xmm } },
26267 .{ .src = .{ .to_mut_xmm, .mem, .none } },
26268 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
26269 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
1522626270 },
1522726271 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
1522826272 .kind = .all,
......@@ -15238,11 +26282,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1523826282 } },
1523926283 }, .{
1524026284 .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 },
1524226286 .patterns = &.{
15243 .{ .src = .{ .to_mut_xmm, .mem } },
15244 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },
15245 .{ .src = .{ .to_mut_xmm, .to_xmm } },
26287 .{ .src = .{ .to_mut_xmm, .mem, .none } },
26288 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
26289 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
1524626290 },
1524726291 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
1524826292 .kind = .all,
......@@ -15258,11 +26302,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1525826302 } },
1525926303 }, .{
1526026304 .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 },
1526226306 .patterns = &.{
15263 .{ .src = .{ .to_mut_xmm, .mem } },
15264 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },
15265 .{ .src = .{ .to_mut_xmm, .to_xmm } },
26307 .{ .src = .{ .to_mut_xmm, .mem, .none } },
26308 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
26309 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
1526626310 },
1526726311 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
1526826312 .kind = .all,
......@@ -15278,11 +26322,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1527826322 } },
1527926323 }, .{
1528026324 .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 },
1528226326 .patterns = &.{
15283 .{ .src = .{ .to_mut_xmm, .mem } },
15284 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },
15285 .{ .src = .{ .to_mut_xmm, .to_xmm } },
26327 .{ .src = .{ .to_mut_xmm, .mem, .none } },
26328 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
26329 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
1528626330 },
1528726331 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
1528826332 .kind = .all,
......@@ -15298,11 +26342,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1529826342 } },
1529926343 }, .{
1530026344 .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 },
1530226346 .patterns = &.{
15303 .{ .src = .{ .to_mut_mm, .mem } },
15304 .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } },
15305 .{ .src = .{ .to_mut_mm, .to_mm } },
26347 .{ .src = .{ .to_mut_mm, .mem, .none } },
26348 .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } },
26349 .{ .src = .{ .to_mut_mm, .to_mm, .none } },
1530626350 },
1530726351 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
1530826352 .kind = .all,
......@@ -15318,11 +26362,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1531826362 } },
1531926363 }, .{
1532026364 .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 },
1532226366 .patterns = &.{
15323 .{ .src = .{ .to_mut_mm, .mem } },
15324 .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } },
15325 .{ .src = .{ .to_mut_mm, .to_mm } },
26367 .{ .src = .{ .to_mut_mm, .mem, .none } },
26368 .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } },
26369 .{ .src = .{ .to_mut_mm, .to_mm, .none } },
1532626370 },
1532726371 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
1532826372 .kind = .all,
......@@ -15338,11 +26382,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1533826382 } },
1533926383 }, .{
1534026384 .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 },
1534226386 .patterns = &.{
15343 .{ .src = .{ .to_mut_mm, .mem } },
15344 .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } },
15345 .{ .src = .{ .to_mut_mm, .to_mm } },
26387 .{ .src = .{ .to_mut_mm, .mem, .none } },
26388 .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } },
26389 .{ .src = .{ .to_mut_mm, .to_mm, .none } },
1534626390 },
1534726391 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
1534826392 .kind = .all,
......@@ -15357,17 +26401,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1535726401 .{ ._, .p_d, .cmpeq, .dst0q, .src1q, ._, ._ },
1535826402 } },
1535926403 }, .{
15360 .src_constraints = .{ .{ .bool_vec = .byte }, .{ .bool_vec = .byte } },
26404 .src_constraints = .{ .{ .bool_vec = .byte }, .{ .bool_vec = .byte }, .any },
1536126405 .patterns = &.{
15362 .{ .src = .{ .mut_mem, .imm8 } },
15363 .{ .src = .{ .imm8, .mut_mem }, .commute = .{ 0, 1 } },
15364 .{ .src = .{ .to_mut_gpr, .imm8 } },
15365 .{ .src = .{ .imm8, .to_mut_gpr }, .commute = .{ 0, 1 } },
15366 .{ .src = .{ .mut_mem, .to_gpr } },
15367 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },
15368 .{ .src = .{ .to_mut_gpr, .mem } },
15369 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
15370 .{ .src = .{ .to_mut_gpr, .to_gpr } },
26406 .{ .src = .{ .mut_mem, .imm8, .none } },
26407 .{ .src = .{ .imm8, .mut_mem, .none }, .commute = .{ 0, 1 } },
26408 .{ .src = .{ .to_mut_gpr, .imm8, .none } },
26409 .{ .src = .{ .imm8, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
26410 .{ .src = .{ .mut_mem, .to_gpr, .none } },
26411 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
26412 .{ .src = .{ .to_mut_gpr, .mem, .none } },
26413 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
26414 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1537126415 },
1537226416 .dst_temps = .{.{ .ref = .src0 }},
1537326417 .clobbers = .{ .eflags = true },
......@@ -15382,17 +26426,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1538226426 },
1538326427 } },
1538426428 }, .{
15385 .src_constraints = .{ .{ .bool_vec = .word }, .{ .bool_vec = .word } },
26429 .src_constraints = .{ .{ .bool_vec = .word }, .{ .bool_vec = .word }, .any },
1538626430 .patterns = &.{
15387 .{ .src = .{ .mut_mem, .imm16 } },
15388 .{ .src = .{ .imm16, .mut_mem }, .commute = .{ 0, 1 } },
15389 .{ .src = .{ .to_mut_gpr, .imm16 } },
15390 .{ .src = .{ .imm16, .to_mut_gpr }, .commute = .{ 0, 1 } },
15391 .{ .src = .{ .mut_mem, .to_gpr } },
15392 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },
15393 .{ .src = .{ .to_mut_gpr, .mem } },
15394 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
15395 .{ .src = .{ .to_mut_gpr, .to_gpr } },
26431 .{ .src = .{ .mut_mem, .imm16, .none } },
26432 .{ .src = .{ .imm16, .mut_mem, .none }, .commute = .{ 0, 1 } },
26433 .{ .src = .{ .to_mut_gpr, .imm16, .none } },
26434 .{ .src = .{ .imm16, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
26435 .{ .src = .{ .mut_mem, .to_gpr, .none } },
26436 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
26437 .{ .src = .{ .to_mut_gpr, .mem, .none } },
26438 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
26439 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1539626440 },
1539726441 .dst_temps = .{.{ .ref = .src0 }},
1539826442 .clobbers = .{ .eflags = true },
......@@ -15407,17 +26451,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1540726451 },
1540826452 } },
1540926453 }, .{
15410 .src_constraints = .{ .{ .bool_vec = .dword }, .{ .bool_vec = .dword } },
26454 .src_constraints = .{ .{ .bool_vec = .dword }, .{ .bool_vec = .dword }, .any },
1541126455 .patterns = &.{
15412 .{ .src = .{ .mut_mem, .imm32 } },
15413 .{ .src = .{ .imm32, .mut_mem }, .commute = .{ 0, 1 } },
15414 .{ .src = .{ .to_mut_gpr, .imm32 } },
15415 .{ .src = .{ .imm32, .to_mut_gpr }, .commute = .{ 0, 1 } },
15416 .{ .src = .{ .mut_mem, .to_gpr } },
15417 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },
15418 .{ .src = .{ .to_mut_gpr, .mem } },
15419 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
15420 .{ .src = .{ .to_mut_gpr, .to_gpr } },
26456 .{ .src = .{ .mut_mem, .imm32, .none } },
26457 .{ .src = .{ .imm32, .mut_mem, .none }, .commute = .{ 0, 1 } },
26458 .{ .src = .{ .to_mut_gpr, .imm32, .none } },
26459 .{ .src = .{ .imm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
26460 .{ .src = .{ .mut_mem, .to_gpr, .none } },
26461 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
26462 .{ .src = .{ .to_mut_gpr, .mem, .none } },
26463 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
26464 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1542126465 },
1542226466 .dst_temps = .{.{ .ref = .src0 }},
1542326467 .clobbers = .{ .eflags = true },
......@@ -15433,17 +26477,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1543326477 } },
1543426478 }, .{
1543526479 .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 },
1543726481 .patterns = &.{
15438 .{ .src = .{ .mut_mem, .simm32 } },
15439 .{ .src = .{ .simm32, .mut_mem }, .commute = .{ 0, 1 } },
15440 .{ .src = .{ .to_mut_gpr, .simm32 } },
15441 .{ .src = .{ .simm32, .to_mut_gpr }, .commute = .{ 0, 1 } },
15442 .{ .src = .{ .mut_mem, .to_gpr } },
15443 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },
15444 .{ .src = .{ .to_mut_gpr, .mem } },
15445 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
15446 .{ .src = .{ .to_mut_gpr, .to_gpr } },
26482 .{ .src = .{ .mut_mem, .simm32, .none } },
26483 .{ .src = .{ .simm32, .mut_mem, .none }, .commute = .{ 0, 1 } },
26484 .{ .src = .{ .to_mut_gpr, .simm32, .none } },
26485 .{ .src = .{ .simm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
26486 .{ .src = .{ .mut_mem, .to_gpr, .none } },
26487 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
26488 .{ .src = .{ .to_mut_gpr, .mem, .none } },
26489 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
26490 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1544726491 },
1544826492 .dst_temps = .{.{ .ref = .src0 }},
1544926493 .clobbers = .{ .eflags = true },
......@@ -15458,9 +26502,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1545826502 },
1545926503 } },
1546026504 }, .{
15461 .src_constraints = .{ .any_bool_vec, .any_bool_vec },
26505 .src_constraints = .{ .any_bool_vec, .any_bool_vec, .any },
1546226506 .patterns = &.{
15463 .{ .src = .{ .to_mem, .to_mem } },
26507 .{ .src = .{ .to_mem, .to_mem, .none } },
1546426508 },
1546526509 .extra_temps = .{
1546626510 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -15497,9 +26541,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1549726541 } },
1549826542 }, .{
1549926543 .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 },
1550126545 .patterns = &.{
15502 .{ .src = .{ .to_mem, .to_mem } },
26546 .{ .src = .{ .to_mem, .to_mem, .none } },
1550326547 },
1550426548 .extra_temps = .{
1550526549 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -15542,9 +26586,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1554226586 } },
1554326587 }, .{
1554426588 .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 },
1554626590 .patterns = &.{
15547 .{ .src = .{ .to_mem, .to_mem } },
26591 .{ .src = .{ .to_mem, .to_mem, .none } },
1554826592 },
1554926593 .extra_temps = .{
1555026594 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -15589,9 +26633,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1558926633 } },
1559026634 }, .{
1559126635 .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 },
1559326637 .patterns = &.{
15594 .{ .src = .{ .to_mem, .to_mem } },
26638 .{ .src = .{ .to_mem, .to_mem, .none } },
1559526639 },
1559626640 .extra_temps = .{
1559726641 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -15634,9 +26678,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1563426678 } },
1563526679 }, .{
1563626680 .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 },
1563826682 .patterns = &.{
15639 .{ .src = .{ .to_mem, .to_mem } },
26683 .{ .src = .{ .to_mem, .to_mem, .none } },
1564026684 },
1564126685 .extra_temps = .{
1564226686 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -15703,9 +26747,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1570326747 } },
1570426748 }, .{
1570526749 .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 },
1570726751 .patterns = &.{
15708 .{ .src = .{ .to_mem, .to_mem } },
26752 .{ .src = .{ .to_mem, .to_mem, .none } },
1570926753 },
1571026754 .extra_temps = .{
1571126755 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -15748,9 +26792,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1574826792 } },
1574926793 }, .{
1575026794 .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 },
1575226796 .patterns = &.{
15753 .{ .src = .{ .to_mem, .to_mem } },
26797 .{ .src = .{ .to_mem, .to_mem, .none } },
1575426798 },
1575526799 .extra_temps = .{
1575626800 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -15795,9 +26839,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1579526839 } },
1579626840 }, .{
1579726841 .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 },
1579926843 .patterns = &.{
15800 .{ .src = .{ .to_mem, .to_mem } },
26844 .{ .src = .{ .to_mem, .to_mem, .none } },
1580126845 },
1580226846 .extra_temps = .{
1580326847 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -15864,9 +26908,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1586426908 } },
1586526909 }, .{
1586626910 .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 },
1586826912 .patterns = &.{
15869 .{ .src = .{ .to_mem, .to_mem } },
26913 .{ .src = .{ .to_mem, .to_mem, .none } },
1587026914 },
1587126915 .extra_temps = .{
1587226916 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -15933,9 +26977,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1593326977 } },
1593426978 }, .{
1593526979 .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 },
1593726981 .patterns = &.{
15938 .{ .src = .{ .to_mem, .to_mem } },
26982 .{ .src = .{ .to_mem, .to_mem, .none } },
1593926983 },
1594026984 .extra_temps = .{
1594126985 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -15978,9 +27022,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1597827022 } },
1597927023 }, .{
1598027024 .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 },
1598227026 .patterns = &.{
15983 .{ .src = .{ .to_mem, .to_mem } },
27027 .{ .src = .{ .to_mem, .to_mem, .none } },
1598427028 },
1598527029 .extra_temps = .{
1598627030 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16025,9 +27069,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1602527069 } },
1602627070 }, .{
1602727071 .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 },
1602927073 .patterns = &.{
16030 .{ .src = .{ .to_mem, .to_mem } },
27074 .{ .src = .{ .to_mem, .to_mem, .none } },
1603127075 },
1603227076 .extra_temps = .{
1603327077 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16094,9 +27138,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1609427138 } },
1609527139 }, .{
1609627140 .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 },
1609827142 .patterns = &.{
16099 .{ .src = .{ .to_mem, .to_mem } },
27143 .{ .src = .{ .to_mem, .to_mem, .none } },
1610027144 },
1610127145 .extra_temps = .{
1610227146 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16163,9 +27207,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1616327207 } },
1616427208 }, .{
1616527209 .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 },
1616727211 .patterns = &.{
16168 .{ .src = .{ .to_mem, .to_mem } },
27212 .{ .src = .{ .to_mem, .to_mem, .none } },
1616927213 },
1617027214 .extra_temps = .{
1617127215 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16208,9 +27252,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1620827252 } },
1620927253 }, .{
1621027254 .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 },
1621227256 .patterns = &.{
16213 .{ .src = .{ .to_mem, .to_mem } },
27257 .{ .src = .{ .to_mem, .to_mem, .none } },
1621427258 },
1621527259 .extra_temps = .{
1621627260 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16281,9 +27325,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1628127325 } },
1628227326 }, .{
1628327327 .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 },
1628527329 .patterns = &.{
16286 .{ .src = .{ .to_mem, .to_mem } },
27330 .{ .src = .{ .to_mem, .to_mem, .none } },
1628727331 },
1628827332 .extra_temps = .{
1628927333 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16355,10 +27399,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1635527399 },
1635627400 } },
1635727401 }, .{
16358 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },
27402 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
1635927403 .dst_constraints = .{.{ .bool_vec = .byte }},
1636027404 .patterns = &.{
16361 .{ .src = .{ .to_mem, .to_mem } },
27405 .{ .src = .{ .to_mem, .to_mem, .none } },
1636227406 },
1636327407 .extra_temps = .{
1636427408 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16387,10 +27431,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1638727431 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1638827432 } },
1638927433 }, .{
16390 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },
27434 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
1639127435 .dst_constraints = .{.{ .bool_vec = .byte }},
1639227436 .patterns = &.{
16393 .{ .src = .{ .to_mem, .to_mem } },
27437 .{ .src = .{ .to_mem, .to_mem, .none } },
1639427438 },
1639527439 .extra_temps = .{
1639627440 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16419,10 +27463,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1641927463 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1642027464 } },
1642127465 }, .{
16422 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },
27466 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
1642327467 .dst_constraints = .{.{ .bool_vec = .byte }},
1642427468 .patterns = &.{
16425 .{ .src = .{ .to_mem, .to_mem } },
27469 .{ .src = .{ .to_mem, .to_mem, .none } },
1642627470 },
1642727471 .extra_temps = .{
1642827472 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16452,10 +27496,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1645227496 } },
1645327497 }, .{
1645427498 .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 },
1645627500 .dst_constraints = .{.{ .bool_vec = .byte }},
1645727501 .patterns = &.{
16458 .{ .src = .{ .to_mem, .to_mem } },
27502 .{ .src = .{ .to_mem, .to_mem, .none } },
1645927503 },
1646027504 .extra_temps = .{
1646127505 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16484,10 +27528,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1648427528 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1648527529 } },
1648627530 }, .{
16487 .src_constraints = .{ .any_scalar_int, .any_scalar_int },
27531 .src_constraints = .{ .any_scalar_int, .any_scalar_int, .any },
1648827532 .dst_constraints = .{.{ .bool_vec = .byte }},
1648927533 .patterns = &.{
16490 .{ .src = .{ .to_mem, .to_mem } },
27534 .{ .src = .{ .to_mem, .to_mem, .none } },
1649127535 },
1649227536 .extra_temps = .{
1649327537 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -16523,10 +27567,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1652327567 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
1652427568 } },
1652527569 }, .{
16526 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },
27570 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
1652727571 .dst_constraints = .{.{ .bool_vec = .dword }},
1652827572 .patterns = &.{
16529 .{ .src = .{ .to_mem, .to_mem } },
27573 .{ .src = .{ .to_mem, .to_mem, .none } },
1653027574 },
1653127575 .extra_temps = .{
1653227576 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16556,10 +27600,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1655627600 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1655727601 } },
1655827602 }, .{
16559 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },
27603 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
1656027604 .dst_constraints = .{.{ .bool_vec = .dword }},
1656127605 .patterns = &.{
16562 .{ .src = .{ .to_mem, .to_mem } },
27606 .{ .src = .{ .to_mem, .to_mem, .none } },
1656327607 },
1656427608 .extra_temps = .{
1656527609 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16589,10 +27633,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1658927633 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1659027634 } },
1659127635 }, .{
16592 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },
27636 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
1659327637 .dst_constraints = .{.{ .bool_vec = .dword }},
1659427638 .patterns = &.{
16595 .{ .src = .{ .to_mem, .to_mem } },
27639 .{ .src = .{ .to_mem, .to_mem, .none } },
1659627640 },
1659727641 .extra_temps = .{
1659827642 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16623,10 +27667,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1662327667 } },
1662427668 }, .{
1662527669 .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 },
1662727671 .dst_constraints = .{.{ .bool_vec = .dword }},
1662827672 .patterns = &.{
16629 .{ .src = .{ .to_mem, .to_mem } },
27673 .{ .src = .{ .to_mem, .to_mem, .none } },
1663027674 },
1663127675 .extra_temps = .{
1663227676 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16656,10 +27700,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1665627700 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1665727701 } },
1665827702 }, .{
16659 .src_constraints = .{ .any_scalar_int, .any_scalar_int },
27703 .src_constraints = .{ .any_scalar_int, .any_scalar_int, .any },
1666027704 .dst_constraints = .{.{ .bool_vec = .dword }},
1666127705 .patterns = &.{
16662 .{ .src = .{ .to_mem, .to_mem } },
27706 .{ .src = .{ .to_mem, .to_mem, .none } },
1666327707 },
1666427708 .extra_temps = .{
1666527709 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -16697,10 +27741,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1669727741 } },
1669827742 }, .{
1669927743 .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 },
1670127745 .dst_constraints = .{.{ .bool_vec = .qword }},
1670227746 .patterns = &.{
16703 .{ .src = .{ .to_mem, .to_mem } },
27747 .{ .src = .{ .to_mem, .to_mem, .none } },
1670427748 },
1670527749 .extra_temps = .{
1670627750 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16731,10 +27775,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1673127775 } },
1673227776 }, .{
1673327777 .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 },
1673527779 .dst_constraints = .{.{ .bool_vec = .qword }},
1673627780 .patterns = &.{
16737 .{ .src = .{ .to_mem, .to_mem } },
27781 .{ .src = .{ .to_mem, .to_mem, .none } },
1673827782 },
1673927783 .extra_temps = .{
1674027784 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16764,10 +27808,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1676427808 } },
1676527809 }, .{
1676627810 .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 },
1676827812 .dst_constraints = .{.{ .bool_vec = .qword }},
1676927813 .patterns = &.{
16770 .{ .src = .{ .to_mem, .to_mem } },
27814 .{ .src = .{ .to_mem, .to_mem, .none } },
1677127815 },
1677227816 .extra_temps = .{
1677327817 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16798,10 +27842,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1679827842 } },
1679927843 }, .{
1680027844 .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 },
1680227846 .dst_constraints = .{.{ .bool_vec = .qword }},
1680327847 .patterns = &.{
16804 .{ .src = .{ .to_mem, .to_mem } },
27848 .{ .src = .{ .to_mem, .to_mem, .none } },
1680527849 },
1680627850 .extra_temps = .{
1680727851 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16832,10 +27876,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1683227876 } },
1683327877 }, .{
1683427878 .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 },
1683627880 .dst_constraints = .{.{ .bool_vec = .qword }},
1683727881 .patterns = &.{
16838 .{ .src = .{ .to_mem, .to_mem } },
27882 .{ .src = .{ .to_mem, .to_mem, .none } },
1683927883 },
1684027884 .extra_temps = .{
1684127885 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -16872,9 +27916,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1687227916 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
1687327917 } },
1687427918 }, .{
16875 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },
27919 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
1687627920 .patterns = &.{
16877 .{ .src = .{ .to_mem, .to_mem } },
27921 .{ .src = .{ .to_mem, .to_mem, .none } },
1687827922 },
1687927923 .extra_temps = .{
1688027924 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16918,9 +27962,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1691827962 .src_constraints = .{
1691927963 .{ .scalar_float = .{ .of = .word, .is = .word } },
1692027964 .{ .scalar_float = .{ .of = .word, .is = .word } },
27965 .any,
1692127966 },
1692227967 .patterns = &.{
16923 .{ .src = .{ .to_sse, .to_sse } },
27968 .{ .src = .{ .to_sse, .to_sse, .none } },
1692427969 },
1692527970 .extra_temps = .{
1692627971 .{ .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
......@@ -16941,7 +27986,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1694127986 .each = .{ .once = &.{
1694227987 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
1694327988 .{ ._, .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) {
1694527990 else => unreachable,
1694627991 .e => .eq,
1694727992 .ne => .neq,
......@@ -16952,12 +27997,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1695227997 .src_constraints = .{
1695327998 .{ .scalar_float = .{ .of = .qword, .is = .word } },
1695427999 .{ .scalar_float = .{ .of = .qword, .is = .word } },
28000 .any,
1695528001 },
1695628002 .patterns = &.{
16957 .{ .src = .{ .mem, .mem } },
16958 .{ .src = .{ .sse, .mem } },
16959 .{ .src = .{ .mem, .sse } },
16960 .{ .src = .{ .to_sse, .to_sse } },
28003 .{ .src = .{ .mem, .mem, .none } },
28004 .{ .src = .{ .sse, .mem, .none } },
28005 .{ .src = .{ .mem, .sse, .none } },
28006 .{ .src = .{ .to_sse, .to_sse, .none } },
1696128007 },
1696228008 .extra_temps = .{
1696328009 .{ .kind = .{ .rc = .sse } },
......@@ -16989,12 +28035,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1698928035 .src_constraints = .{
1699028036 .{ .scalar_float = .{ .of = .xword, .is = .word } },
1699128037 .{ .scalar_float = .{ .of = .xword, .is = .word } },
28038 .any,
1699228039 },
1699328040 .patterns = &.{
16994 .{ .src = .{ .mem, .mem } },
16995 .{ .src = .{ .to_sse, .mem } },
16996 .{ .src = .{ .mem, .to_sse } },
16997 .{ .src = .{ .to_sse, .to_sse } },
28041 .{ .src = .{ .mem, .mem, .none } },
28042 .{ .src = .{ .to_sse, .mem, .none } },
28043 .{ .src = .{ .mem, .to_sse, .none } },
28044 .{ .src = .{ .to_sse, .to_sse, .none } },
1699828045 },
1699928046 .extra_temps = .{
1700028047 .{ .kind = .{ .rc = .sse } },
......@@ -17026,11 +28073,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1702628073 .src_constraints = .{
1702728074 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
1702828075 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
28076 .any,
1702928077 },
1703028078 .patterns = &.{
17031 .{ .src = .{ .to_sse, .mem } },
17032 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
17033 .{ .src = .{ .to_sse, .to_sse } },
28079 .{ .src = .{ .to_sse, .mem, .none } },
28080 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
28081 .{ .src = .{ .to_sse, .to_sse, .none } },
1703428082 },
1703528083 .dst_temps = .{.{ .mut_rc_mask = .{
1703628084 .ref = .src0,
......@@ -17038,7 +28086,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1703828086 .info = .{ .kind = .all, .scalar = .dword },
1703928087 } }},
1704028088 .each = .{ .once = &.{
17041 .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) {
28089 .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1d, .vp(switch (cc) {
1704228090 else => unreachable,
1704328091 .e => .eq,
1704428092 .ne => .neq,
......@@ -17049,18 +28097,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1704928097 .src_constraints = .{
1705028098 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
1705128099 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
28100 .any,
1705228101 },
1705328102 .patterns = &.{
17054 .{ .src = .{ .to_mut_sse, .mem } },
17055 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
17056 .{ .src = .{ .to_mut_sse, .to_sse } },
28103 .{ .src = .{ .to_mut_sse, .mem, .none } },
28104 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
28105 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
1705728106 },
1705828107 .dst_temps = .{.{ .ref_mask = .{
1705928108 .ref = .src0,
1706028109 .info = .{ .kind = .all, .scalar = .dword },
1706128110 } }},
1706228111 .each = .{ .once = &.{
17063 .{ ._, ._ss, .cmp, .dst0x, .src1x, .vp(switch (cc) {
28112 .{ ._, ._ss, .cmp, .dst0x, .src1d, .sp(switch (cc) {
1706428113 else => unreachable,
1706528114 .e => .eq,
1706628115 .ne => .neq,
......@@ -17071,11 +28120,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1707128120 .src_constraints = .{
1707228121 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
1707328122 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
28123 .any,
1707428124 },
1707528125 .patterns = &.{
17076 .{ .src = .{ .to_sse, .mem } },
17077 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
17078 .{ .src = .{ .to_sse, .to_sse } },
28126 .{ .src = .{ .to_sse, .mem, .none } },
28127 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
28128 .{ .src = .{ .to_sse, .to_sse, .none } },
1707928129 },
1708028130 .dst_temps = .{.{ .mut_rc_mask = .{
1708128131 .ref = .src0,
......@@ -17094,18 +28144,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1709428144 .src_constraints = .{
1709528145 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
1709628146 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
28147 .any,
1709728148 },
1709828149 .patterns = &.{
17099 .{ .src = .{ .to_mut_sse, .mem } },
17100 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
17101 .{ .src = .{ .to_mut_sse, .to_sse } },
28150 .{ .src = .{ .to_mut_sse, .mem, .none } },
28151 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
28152 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
1710228153 },
1710328154 .dst_temps = .{.{ .ref_mask = .{
1710428155 .ref = .src0,
1710528156 .info = .{ .kind = .all, .scalar = .dword },
1710628157 } }},
1710728158 .each = .{ .once = &.{
17108 .{ ._, ._ps, .cmp, .dst0x, .src1x, .vp(switch (cc) {
28159 .{ ._, ._ps, .cmp, .dst0x, .src1x, .sp(switch (cc) {
1710928160 else => unreachable,
1711028161 .e => .eq,
1711128162 .ne => .neq,
......@@ -17116,11 +28167,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1711628167 .src_constraints = .{
1711728168 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
1711828169 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
28170 .any,
1711928171 },
1712028172 .patterns = &.{
17121 .{ .src = .{ .to_sse, .mem } },
17122 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
17123 .{ .src = .{ .to_sse, .to_sse } },
28173 .{ .src = .{ .to_sse, .mem, .none } },
28174 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
28175 .{ .src = .{ .to_sse, .to_sse, .none } },
1712428176 },
1712528177 .dst_temps = .{.{ .mut_rc_mask = .{
1712628178 .ref = .src0,
......@@ -17139,11 +28191,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1713928191 .src_constraints = .{
1714028192 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
1714128193 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
28194 .any,
1714228195 },
1714328196 .patterns = &.{
17144 .{ .src = .{ .to_sse, .mem } },
17145 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
17146 .{ .src = .{ .to_sse, .to_sse } },
28197 .{ .src = .{ .to_sse, .mem, .none } },
28198 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
28199 .{ .src = .{ .to_sse, .to_sse, .none } },
1714728200 },
1714828201 .dst_temps = .{.{ .mut_rc_mask = .{
1714928202 .ref = .src0,
......@@ -17151,7 +28204,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1715128204 .info = .{ .kind = .all, .scalar = .qword },
1715228205 } }},
1715328206 .each = .{ .once = &.{
17154 .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) {
28207 .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1q, .vp(switch (cc) {
1715528208 else => unreachable,
1715628209 .e => .eq,
1715728210 .ne => .neq,
......@@ -17162,18 +28215,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1716228215 .src_constraints = .{
1716328216 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
1716428217 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
28218 .any,
1716528219 },
1716628220 .patterns = &.{
17167 .{ .src = .{ .to_mut_sse, .mem } },
17168 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
17169 .{ .src = .{ .to_mut_sse, .to_sse } },
28221 .{ .src = .{ .to_mut_sse, .mem, .none } },
28222 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
28223 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
1717028224 },
1717128225 .dst_temps = .{.{ .ref_mask = .{
1717228226 .ref = .src0,
1717328227 .info = .{ .kind = .all, .scalar = .qword },
1717428228 } }},
1717528229 .each = .{ .once = &.{
17176 .{ ._, ._sd, .cmp, .dst0x, .src1x, .vp(switch (cc) {
28230 .{ ._, ._sd, .cmp, .dst0x, .src1q, .sp(switch (cc) {
1717728231 else => unreachable,
1717828232 .e => .eq,
1717928233 .ne => .neq,
......@@ -17184,11 +28238,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1718428238 .src_constraints = .{
1718528239 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
1718628240 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
28241 .any,
1718728242 },
1718828243 .patterns = &.{
17189 .{ .src = .{ .to_sse, .mem } },
17190 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
17191 .{ .src = .{ .to_sse, .to_sse } },
28244 .{ .src = .{ .to_sse, .mem, .none } },
28245 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
28246 .{ .src = .{ .to_sse, .to_sse, .none } },
1719228247 },
1719328248 .dst_temps = .{.{ .mut_rc_mask = .{
1719428249 .ref = .src0,
......@@ -17207,18 +28262,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1720728262 .src_constraints = .{
1720828263 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
1720928264 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
28265 .any,
1721028266 },
1721128267 .patterns = &.{
17212 .{ .src = .{ .to_mut_sse, .mem } },
17213 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
17214 .{ .src = .{ .to_mut_sse, .to_sse } },
28268 .{ .src = .{ .to_mut_sse, .mem, .none } },
28269 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
28270 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
1721528271 },
1721628272 .dst_temps = .{.{ .ref_mask = .{
1721728273 .ref = .src0,
1721828274 .info = .{ .kind = .all, .scalar = .qword },
1721928275 } }},
1722028276 .each = .{ .once = &.{
17221 .{ ._, ._pd, .cmp, .dst0x, .src1x, .vp(switch (cc) {
28277 .{ ._, ._pd, .cmp, .dst0x, .src1x, .sp(switch (cc) {
1722228278 else => unreachable,
1722328279 .e => .eq,
1722428280 .ne => .neq,
......@@ -17229,11 +28285,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1722928285 .src_constraints = .{
1723028286 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
1723128287 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
28288 .any,
1723228289 },
1723328290 .patterns = &.{
17234 .{ .src = .{ .to_sse, .mem } },
17235 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
17236 .{ .src = .{ .to_sse, .to_sse } },
28291 .{ .src = .{ .to_sse, .mem, .none } },
28292 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
28293 .{ .src = .{ .to_sse, .to_sse, .none } },
1723728294 },
1723828295 .dst_temps = .{.{ .mut_rc_mask = .{
1723928296 .ref = .src0,
......@@ -17252,15 +28309,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1725228309 .src_constraints = .{
1725328310 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
1725428311 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
28312 .any,
1725528313 },
1725628314 .patterns = &.{
17257 .{ .src = .{ .to_mem, .to_mem } },
28315 .{ .src = .{ .to_mem, .to_mem, .none } },
1725828316 },
1725928317 .extra_temps = .{
1726028318 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
1726128319 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
17262 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },
17263 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },
28320 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
28321 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
1726428322 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
1726528323 .unused,
1726628324 .unused,
......@@ -17290,15 +28348,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1729028348 .src_constraints = .{
1729128349 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
1729228350 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
28351 .any,
1729328352 },
1729428353 .patterns = &.{
17295 .{ .src = .{ .to_mem, .to_mem } },
28354 .{ .src = .{ .to_mem, .to_mem, .none } },
1729628355 },
1729728356 .extra_temps = .{
1729828357 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
1729928358 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
17300 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },
17301 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },
28359 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
28360 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
1730228361 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
1730328362 .unused,
1730428363 .unused,
......@@ -17328,21 +28387,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1732828387 .src_constraints = .{
1732928388 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1733028389 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28390 .any,
1733128391 },
1733228392 .dst_constraints = .{.{ .bool_vec = .dword }},
1733328393 .patterns = &.{
17334 .{ .src = .{ .to_mem, .to_mem } },
28394 .{ .src = .{ .to_mem, .to_mem, .none } },
1733528395 },
1733628396 .call_frame = .{ .alignment = .@"16" },
1733728397 .extra_temps = .{
1733828398 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1733928399 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1734028400 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17341 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
17342 else => unreachable,
17343 .e => "__eqhf2",
17344 .ne => "__nehf2",
17345 } } } },
28401 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
1734628402 .{ .type = .i32, .kind = .{ .reg = .eax } },
1734728403 .{ .type = .u8, .kind = .{ .reg = .cl } },
1734828404 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -17373,21 +28429,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1737328429 .src_constraints = .{
1737428430 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1737528431 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28432 .any,
1737628433 },
1737728434 .dst_constraints = .{.{ .bool_vec = .dword }},
1737828435 .patterns = &.{
17379 .{ .src = .{ .to_mem, .to_mem } },
28436 .{ .src = .{ .to_mem, .to_mem, .none } },
1738028437 },
1738128438 .call_frame = .{ .alignment = .@"16" },
1738228439 .extra_temps = .{
1738328440 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1738428441 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1738528442 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17386 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
17387 else => unreachable,
17388 .e => "__eqhf2",
17389 .ne => "__nehf2",
17390 } } } },
28443 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
1739128444 .{ .type = .i32, .kind = .{ .reg = .eax } },
1739228445 .{ .type = .u8, .kind = .{ .reg = .cl } },
1739328446 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -17418,21 +28471,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1741828471 .src_constraints = .{
1741928472 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1742028473 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28474 .any,
1742128475 },
1742228476 .dst_constraints = .{.{ .bool_vec = .dword }},
1742328477 .patterns = &.{
17424 .{ .src = .{ .to_mem, .to_mem } },
28478 .{ .src = .{ .to_mem, .to_mem, .none } },
1742528479 },
1742628480 .call_frame = .{ .alignment = .@"16" },
1742728481 .extra_temps = .{
1742828482 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1742928483 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1743028484 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17431 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
17432 else => unreachable,
17433 .e => "__eqhf2",
17434 .ne => "__nehf2",
17435 } } } },
28485 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
1743628486 .{ .type = .i32, .kind = .{ .reg = .eax } },
1743728487 .{ .type = .u8, .kind = .{ .reg = .cl } },
1743828488 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -17464,21 +28514,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1746428514 .src_constraints = .{
1746528515 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1746628516 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28517 .any,
1746728518 },
1746828519 .dst_constraints = .{.{ .bool_vec = .dword }},
1746928520 .patterns = &.{
17470 .{ .src = .{ .to_mem, .to_mem } },
28521 .{ .src = .{ .to_mem, .to_mem, .none } },
1747128522 },
1747228523 .call_frame = .{ .alignment = .@"16" },
1747328524 .extra_temps = .{
1747428525 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1747528526 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1747628527 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17477 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
17478 else => unreachable,
17479 .e => "__eqhf2",
17480 .ne => "__nehf2",
17481 } } } },
28528 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
1748228529 .{ .type = .i32, .kind = .{ .reg = .eax } },
1748328530 .{ .type = .u8, .kind = .{ .reg = .cl } },
1748428531 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -17510,21 +28557,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1751028557 .src_constraints = .{
1751128558 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1751228559 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28560 .any,
1751328561 },
1751428562 .dst_constraints = .{.{ .bool_vec = .dword }},
1751528563 .patterns = &.{
17516 .{ .src = .{ .to_mem, .to_mem } },
28564 .{ .src = .{ .to_mem, .to_mem, .none } },
1751728565 },
1751828566 .call_frame = .{ .alignment = .@"16" },
1751928567 .extra_temps = .{
1752028568 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1752128569 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1752228570 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17523 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
17524 else => unreachable,
17525 .e => "__eqhf2",
17526 .ne => "__nehf2",
17527 } } } },
28571 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
1752828572 .{ .type = .i32, .kind = .{ .reg = .eax } },
1752928573 .{ .type = .u8, .kind = .{ .reg = .cl } },
1753028574 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -17558,21 +28602,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1755828602 .src_constraints = .{
1755928603 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1756028604 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28605 .any,
1756128606 },
1756228607 .dst_constraints = .{.{ .bool_vec = .dword }},
1756328608 .patterns = &.{
17564 .{ .src = .{ .to_mem, .to_mem } },
28609 .{ .src = .{ .to_mem, .to_mem, .none } },
1756528610 },
1756628611 .call_frame = .{ .alignment = .@"16" },
1756728612 .extra_temps = .{
1756828613 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1756928614 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1757028615 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17571 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
17572 else => unreachable,
17573 .e => "__eqhf2",
17574 .ne => "__nehf2",
17575 } } } },
28616 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
1757628617 .{ .type = .i32, .kind = .{ .reg = .eax } },
1757728618 .{ .type = .u8, .kind = .{ .reg = .cl } },
1757828619 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -17606,9 +28647,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1760628647 .src_constraints = .{
1760728648 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1760828649 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28650 .any,
1760928651 },
1761028652 .patterns = &.{
17611 .{ .src = .{ .to_mem, .to_mem } },
28653 .{ .src = .{ .to_mem, .to_mem, .none } },
1761228654 },
1761328655 .call_frame = .{ .alignment = .@"16" },
1761428656 .extra_temps = .{
......@@ -17616,11 +28658,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1761628658 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
1761728659 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1761828660 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17619 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
17620 else => unreachable,
17621 .e => "__eqhf2",
17622 .ne => "__nehf2",
17623 } } } },
28661 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
1762428662 .{ .type = .i32, .kind = .{ .reg = .eax } },
1762528663 .{ .type = .u8, .kind = .{ .reg = .cl } },
1762628664 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -17660,9 +28698,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1766028698 .src_constraints = .{
1766128699 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1766228700 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28701 .any,
1766328702 },
1766428703 .patterns = &.{
17665 .{ .src = .{ .to_mem, .to_mem } },
28704 .{ .src = .{ .to_mem, .to_mem, .none } },
1766628705 },
1766728706 .call_frame = .{ .alignment = .@"16" },
1766828707 .extra_temps = .{
......@@ -17670,11 +28709,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1767028709 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
1767128710 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1767228711 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17673 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
17674 else => unreachable,
17675 .e => "__eqhf2",
17676 .ne => "__nehf2",
17677 } } } },
28712 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
1767828713 .{ .type = .i32, .kind = .{ .reg = .eax } },
1767928714 .{ .type = .u8, .kind = .{ .reg = .cl } },
1768028715 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -17714,9 +28749,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1771428749 .src_constraints = .{
1771528750 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1771628751 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28752 .any,
1771728753 },
1771828754 .patterns = &.{
17719 .{ .src = .{ .to_mem, .to_mem } },
28755 .{ .src = .{ .to_mem, .to_mem, .none } },
1772028756 },
1772128757 .call_frame = .{ .alignment = .@"16" },
1772228758 .extra_temps = .{
......@@ -17724,11 +28760,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1772428760 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
1772528761 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1772628762 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17727 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
17728 else => unreachable,
17729 .e => "__eqhf2",
17730 .ne => "__nehf2",
17731 } } } },
28763 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
1773228764 .{ .type = .i32, .kind = .{ .reg = .eax } },
1773328765 .{ .type = .u8, .kind = .{ .reg = .cl } },
1773428766 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -17769,9 +28801,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1776928801 .src_constraints = .{
1777028802 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1777128803 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28804 .any,
1777228805 },
1777328806 .patterns = &.{
17774 .{ .src = .{ .to_mem, .to_mem } },
28807 .{ .src = .{ .to_mem, .to_mem, .none } },
1777528808 },
1777628809 .call_frame = .{ .alignment = .@"16" },
1777728810 .extra_temps = .{
......@@ -17779,11 +28812,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1777928812 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
1778028813 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1778128814 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17782 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
17783 else => unreachable,
17784 .e => "__eqhf2",
17785 .ne => "__nehf2",
17786 } } } },
28815 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
1778728816 .{ .type = .i32, .kind = .{ .reg = .eax } },
1778828817 .{ .type = .u8, .kind = .{ .reg = .cl } },
1778928818 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -17824,9 +28853,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1782428853 .src_constraints = .{
1782528854 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1782628855 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28856 .any,
1782728857 },
1782828858 .patterns = &.{
17829 .{ .src = .{ .to_mem, .to_mem } },
28859 .{ .src = .{ .to_mem, .to_mem, .none } },
1783028860 },
1783128861 .call_frame = .{ .alignment = .@"16" },
1783228862 .extra_temps = .{
......@@ -17834,11 +28864,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1783428864 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
1783528865 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1783628866 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17837 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
17838 else => unreachable,
17839 .e => "__eqhf2",
17840 .ne => "__nehf2",
17841 } } } },
28867 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
1784228868 .{ .type = .i32, .kind = .{ .reg = .eax } },
1784328869 .{ .type = .u8, .kind = .{ .reg = .cl } },
1784428870 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -17881,9 +28907,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1788128907 .src_constraints = .{
1788228908 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1788328909 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
28910 .any,
1788428911 },
1788528912 .patterns = &.{
17886 .{ .src = .{ .to_mem, .to_mem } },
28913 .{ .src = .{ .to_mem, .to_mem, .none } },
1788728914 },
1788828915 .call_frame = .{ .alignment = .@"16" },
1788928916 .extra_temps = .{
......@@ -17891,11 +28918,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1789128918 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
1789228919 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1789328920 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17894 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
17895 else => unreachable,
17896 .e => "__eqhf2",
17897 .ne => "__nehf2",
17898 } } } },
28921 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
1789928922 .{ .type = .i32, .kind = .{ .reg = .eax } },
1790028923 .{ .type = .u8, .kind = .{ .reg = .cl } },
1790128924 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -17938,9 +28961,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1793828961 .src_constraints = .{
1793928962 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
1794028963 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
28964 .any,
1794128965 },
1794228966 .patterns = &.{
17943 .{ .src = .{ .to_mem, .to_mem } },
28967 .{ .src = .{ .to_mem, .to_mem, .none } },
1794428968 },
1794528969 .extra_temps = .{
1794628970 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -17975,9 +28999,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1797528999 .src_constraints = .{
1797629000 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
1797729001 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
29002 .any,
1797829003 },
1797929004 .patterns = &.{
17980 .{ .src = .{ .to_mem, .to_mem } },
29005 .{ .src = .{ .to_mem, .to_mem, .none } },
1798129006 },
1798229007 .extra_temps = .{
1798329008 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18012,9 +29037,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1801229037 .src_constraints = .{
1801329038 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
1801429039 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
29040 .any,
1801529041 },
1801629042 .patterns = &.{
18017 .{ .src = .{ .to_mem, .to_mem } },
29043 .{ .src = .{ .to_mem, .to_mem, .none } },
1801829044 },
1801929045 .extra_temps = .{
1802029046 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18034,12 +29060,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1803429060 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
1803529061 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
1803629062 .{ ._, ._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) {
1803829064 else => unreachable,
1803929065 .e => .eq,
1804029066 .ne => .neq,
1804129067 }), ._ },
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) {
1804329069 else => unreachable,
1804429070 .e => .eq,
1804529071 .ne => .neq,
......@@ -18057,9 +29083,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1805729083 .src_constraints = .{
1805829084 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
1805929085 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
29086 .any,
1806029087 },
1806129088 .patterns = &.{
18062 .{ .src = .{ .to_mem, .to_mem } },
29089 .{ .src = .{ .to_mem, .to_mem, .none } },
1806329090 },
1806429091 .extra_temps = .{
1806529092 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18078,14 +29105,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1807829105 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
1807929106 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
1808029107 .{ .@"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) {
1808229109 else => unreachable,
1808329110 .e => .eq,
1808429111 .ne => .neq,
1808529112 }), ._ },
1808629113 .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ },
1808729114 .{ ._, ._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) {
1808929116 else => unreachable,
1809029117 .e => .eq,
1809129118 .ne => .neq,
......@@ -18103,9 +29130,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1810329130 .src_constraints = .{
1810429131 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
1810529132 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
29133 .any,
1810629134 },
1810729135 .patterns = &.{
18108 .{ .src = .{ .to_mem, .to_mem } },
29136 .{ .src = .{ .to_mem, .to_mem, .none } },
1810929137 },
1811029138 .extra_temps = .{
1811129139 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18125,7 +29153,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1812529153 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
1812629154 .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
1812729155 .{ .@"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) {
1812929157 else => unreachable,
1813029158 .e => .eq,
1813129159 .ne => .neq,
......@@ -18136,7 +29164,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1813629164 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
1813729165 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
1813829166 .{ .@"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) {
1814029168 else => unreachable,
1814129169 .e => .eq,
1814229170 .ne => .neq,
......@@ -18151,9 +29179,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1815129179 .src_constraints = .{
1815229180 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
1815329181 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
29182 .any,
1815429183 },
1815529184 .patterns = &.{
18156 .{ .src = .{ .to_mem, .to_mem } },
29185 .{ .src = .{ .to_mem, .to_mem, .none } },
1815729186 },
1815829187 .extra_temps = .{
1815929188 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18197,9 +29226,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1819729226 .src_constraints = .{
1819829227 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
1819929228 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
29229 .any,
1820029230 },
1820129231 .patterns = &.{
18202 .{ .src = .{ .to_mem, .to_mem } },
29232 .{ .src = .{ .to_mem, .to_mem, .none } },
1820329233 },
1820429234 .extra_temps = .{
1820529235 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18243,9 +29273,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1824329273 .src_constraints = .{
1824429274 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
1824529275 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
29276 .any,
1824629277 },
1824729278 .patterns = &.{
18248 .{ .src = .{ .to_mem, .to_mem } },
29279 .{ .src = .{ .to_mem, .to_mem, .none } },
1824929280 },
1825029281 .extra_temps = .{
1825129282 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18292,9 +29323,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1829229323 .src_constraints = .{
1829329324 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
1829429325 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
29326 .any,
1829529327 },
1829629328 .patterns = &.{
18297 .{ .src = .{ .to_mem, .to_mem } },
29329 .{ .src = .{ .to_mem, .to_mem, .none } },
1829829330 },
1829929331 .extra_temps = .{
1830029332 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18314,7 +29346,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1831429346 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
1831529347 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
1831629348 .{ .@"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) {
1831829350 else => unreachable,
1831929351 .e => .eq,
1832029352 .ne => .neq,
......@@ -18341,9 +29373,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1834129373 .src_constraints = .{
1834229374 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
1834329375 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
29376 .any,
1834429377 },
1834529378 .patterns = &.{
18346 .{ .src = .{ .to_mem, .to_mem } },
29379 .{ .src = .{ .to_mem, .to_mem, .none } },
1834729380 },
1834829381 .extra_temps = .{
1834929382 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18351,8 +29384,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1835129384 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1835229385 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
1835329386 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
18354 .{ .type = .f80, .kind = .{ .reg = .st6 } },
18355 .{ .type = .f80, .kind = .{ .reg = .st7 } },
29387 .{ .type = .f64, .kind = .{ .reg = .st6 } },
29388 .{ .type = .f64, .kind = .{ .reg = .st7 } },
1835629389 .unused,
1835729390 .unused,
1835829391 },
......@@ -18400,9 +29433,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1840029433 .src_constraints = .{
1840129434 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
1840229435 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
29436 .any,
1840329437 },
1840429438 .patterns = &.{
18405 .{ .src = .{ .to_mem, .to_mem } },
29439 .{ .src = .{ .to_mem, .to_mem, .none } },
1840629440 },
1840729441 .extra_temps = .{
1840829442 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18410,8 +29444,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1841029444 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1841129445 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
1841229446 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
18413 .{ .type = .f80, .kind = .{ .reg = .st6 } },
18414 .{ .type = .f80, .kind = .{ .reg = .st7 } },
29447 .{ .type = .f64, .kind = .{ .reg = .st6 } },
29448 .{ .type = .f64, .kind = .{ .reg = .st7 } },
1841529449 .unused,
1841629450 .unused,
1841729451 },
......@@ -18459,17 +29493,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1845929493 .src_constraints = .{
1846029494 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
1846129495 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
29496 .any,
1846229497 },
1846329498 .patterns = &.{
18464 .{ .src = .{ .to_mem, .to_mem } },
29499 .{ .src = .{ .to_mem, .to_mem, .none } },
1846529500 },
1846629501 .extra_temps = .{
1846729502 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
1846829503 .{ .type = .u32, .kind = .{ .reg = .rcx } },
1846929504 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1847029505 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
18471 .{ .type = .f80, .kind = .{ .reg = .st6 } },
18472 .{ .type = .f80, .kind = .{ .reg = .st7 } },
29506 .{ .type = .f64, .kind = .{ .reg = .st6 } },
29507 .{ .type = .f64, .kind = .{ .reg = .st7 } },
1847329508 .{ .type = .u8, .kind = .{ .reg = .ah } },
1847429509 .unused,
1847529510 .unused,
......@@ -18509,9 +29544,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1850929544 .src_constraints = .{
1851029545 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
1851129546 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
29547 .any,
1851229548 },
1851329549 .patterns = &.{
18514 .{ .src = .{ .to_mem, .to_mem } },
29550 .{ .src = .{ .to_mem, .to_mem, .none } },
1851529551 },
1851629552 .extra_temps = .{
1851729553 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18568,9 +29604,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1856829604 .src_constraints = .{
1856929605 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
1857029606 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
29607 .any,
1857129608 },
1857229609 .patterns = &.{
18573 .{ .src = .{ .to_mem, .to_mem } },
29610 .{ .src = .{ .to_mem, .to_mem, .none } },
1857429611 },
1857529612 .extra_temps = .{
1857629613 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18627,9 +29664,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1862729664 .src_constraints = .{
1862829665 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
1862929666 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
29667 .any,
1863029668 },
1863129669 .patterns = &.{
18632 .{ .src = .{ .to_mem, .to_mem } },
29670 .{ .src = .{ .to_mem, .to_mem, .none } },
1863329671 },
1863429672 .extra_temps = .{
1863529673 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18677,10 +29715,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1867729715 .src_constraints = .{
1867829716 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1867929717 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
29718 .any,
1868029719 },
1868129720 .dst_constraints = .{.{ .bool_vec = .dword }},
1868229721 .patterns = &.{
18683 .{ .src = .{ .to_mem, .to_mem } },
29722 .{ .src = .{ .to_mem, .to_mem, .none } },
1868429723 },
1868529724 .call_frame = .{ .alignment = .@"16" },
1868629725 .extra_temps = .{
......@@ -18688,11 +29727,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1868829727 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1868929728 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1869029729 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18691 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
18692 else => unreachable,
18693 .e => "__eqtf2",
18694 .ne => "__netf2",
18695 } } } },
29730 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
1869629731 .{ .type = .i32, .kind = .{ .reg = .eax } },
1869729732 .{ .type = .u8, .kind = .{ .reg = .cl } },
1869829733 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -18722,10 +29757,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1872229757 .src_constraints = .{
1872329758 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1872429759 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
29760 .any,
1872529761 },
1872629762 .dst_constraints = .{.{ .bool_vec = .dword }},
1872729763 .patterns = &.{
18728 .{ .src = .{ .to_mem, .to_mem } },
29764 .{ .src = .{ .to_mem, .to_mem, .none } },
1872929765 },
1873029766 .call_frame = .{ .alignment = .@"16" },
1873129767 .extra_temps = .{
......@@ -18733,11 +29769,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1873329769 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1873429770 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1873529771 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18736 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
18737 else => unreachable,
18738 .e => "__eqtf2",
18739 .ne => "__netf2",
18740 } } } },
29772 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
1874129773 .{ .type = .i32, .kind = .{ .reg = .eax } },
1874229774 .{ .type = .u8, .kind = .{ .reg = .cl } },
1874329775 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -18767,10 +29799,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1876729799 .src_constraints = .{
1876829800 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1876929801 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
29802 .any,
1877029803 },
1877129804 .dst_constraints = .{.{ .bool_vec = .dword }},
1877229805 .patterns = &.{
18773 .{ .src = .{ .to_mem, .to_mem } },
29806 .{ .src = .{ .to_mem, .to_mem, .none } },
1877429807 },
1877529808 .call_frame = .{ .alignment = .@"16" },
1877629809 .extra_temps = .{
......@@ -18778,11 +29811,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1877829811 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1877929812 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1878029813 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18781 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
18782 else => unreachable,
18783 .e => "__eqtf2",
18784 .ne => "__netf2",
18785 } } } },
29814 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
1878629815 .{ .type = .i32, .kind = .{ .reg = .eax } },
1878729816 .{ .type = .u8, .kind = .{ .reg = .cl } },
1878829817 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -18812,10 +29841,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1881229841 .src_constraints = .{
1881329842 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1881429843 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
29844 .any,
1881529845 },
1881629846 .dst_constraints = .{.{ .bool_vec = .dword }},
1881729847 .patterns = &.{
18818 .{ .src = .{ .to_mem, .to_mem } },
29848 .{ .src = .{ .to_mem, .to_mem, .none } },
1881929849 },
1882029850 .call_frame = .{ .alignment = .@"16" },
1882129851 .extra_temps = .{
......@@ -18823,11 +29853,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1882329853 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1882429854 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1882529855 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18826 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
18827 else => unreachable,
18828 .e => "__eqtf2",
18829 .ne => "__netf2",
18830 } } } },
29856 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
1883129857 .{ .type = .i32, .kind = .{ .reg = .eax } },
1883229858 .{ .type = .u8, .kind = .{ .reg = .cl } },
1883329859 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -18857,10 +29883,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1885729883 .src_constraints = .{
1885829884 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1885929885 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
29886 .any,
1886029887 },
1886129888 .dst_constraints = .{.{ .bool_vec = .dword }},
1886229889 .patterns = &.{
18863 .{ .src = .{ .to_mem, .to_mem } },
29890 .{ .src = .{ .to_mem, .to_mem, .none } },
1886429891 },
1886529892 .call_frame = .{ .alignment = .@"16" },
1886629893 .extra_temps = .{
......@@ -18868,11 +29895,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1886829895 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1886929896 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1887029897 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18871 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
18872 else => unreachable,
18873 .e => "__eqtf2",
18874 .ne => "__netf2",
18875 } } } },
29898 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
1887629899 .{ .type = .i32, .kind = .{ .reg = .eax } },
1887729900 .{ .type = .u8, .kind = .{ .reg = .cl } },
1887829901 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -18902,10 +29925,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1890229925 .src_constraints = .{
1890329926 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1890429927 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
29928 .any,
1890529929 },
1890629930 .dst_constraints = .{.{ .bool_vec = .dword }},
1890729931 .patterns = &.{
18908 .{ .src = .{ .to_mem, .to_mem } },
29932 .{ .src = .{ .to_mem, .to_mem, .none } },
1890929933 },
1891029934 .call_frame = .{ .alignment = .@"16" },
1891129935 .extra_temps = .{
......@@ -18913,11 +29937,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1891329937 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1891429938 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1891529939 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18916 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
18917 else => unreachable,
18918 .e => "__eqtf2",
18919 .ne => "__netf2",
18920 } } } },
29940 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
1892129941 .{ .type = .i32, .kind = .{ .reg = .eax } },
1892229942 .{ .type = .u8, .kind = .{ .reg = .cl } },
1892329943 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -18947,9 +29967,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1894729967 .src_constraints = .{
1894829968 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1894929969 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
29970 .any,
1895029971 },
1895129972 .patterns = &.{
18952 .{ .src = .{ .to_mem, .to_mem } },
29973 .{ .src = .{ .to_mem, .to_mem, .none } },
1895329974 },
1895429975 .call_frame = .{ .alignment = .@"16" },
1895529976 .extra_temps = .{
......@@ -18958,11 +29979,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1895829979 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
1895929980 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1896029981 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18961 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
18962 else => unreachable,
18963 .e => "__eqtf2",
18964 .ne => "__netf2",
18965 } } } },
29982 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
1896629983 .{ .type = .i32, .kind = .{ .reg = .eax } },
1896729984 .{ .type = .u8, .kind = .{ .reg = .cl } },
1896829985 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -19001,9 +30018,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1900130018 .src_constraints = .{
1900230019 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1900330020 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
30021 .any,
1900430022 },
1900530023 .patterns = &.{
19006 .{ .src = .{ .to_mem, .to_mem } },
30024 .{ .src = .{ .to_mem, .to_mem, .none } },
1900730025 },
1900830026 .call_frame = .{ .alignment = .@"16" },
1900930027 .extra_temps = .{
......@@ -19012,11 +30030,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1901230030 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
1901330031 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1901430032 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
19015 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
19016 else => unreachable,
19017 .e => "__eqtf2",
19018 .ne => "__netf2",
19019 } } } },
30033 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
1902030034 .{ .type = .i32, .kind = .{ .reg = .eax } },
1902130035 .{ .type = .u8, .kind = .{ .reg = .cl } },
1902230036 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -19055,9 +30069,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1905530069 .src_constraints = .{
1905630070 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1905730071 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
30072 .any,
1905830073 },
1905930074 .patterns = &.{
19060 .{ .src = .{ .to_mem, .to_mem } },
30075 .{ .src = .{ .to_mem, .to_mem, .none } },
1906130076 },
1906230077 .call_frame = .{ .alignment = .@"16" },
1906330078 .extra_temps = .{
......@@ -19066,11 +30081,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1906630081 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
1906730082 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1906830083 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
19069 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
19070 else => unreachable,
19071 .e => "__eqtf2",
19072 .ne => "__netf2",
19073 } } } },
30084 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
1907430085 .{ .type = .i32, .kind = .{ .reg = .eax } },
1907530086 .{ .type = .u8, .kind = .{ .reg = .cl } },
1907630087 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -19109,9 +30120,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1910930120 .src_constraints = .{
1911030121 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1911130122 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
30123 .any,
1911230124 },
1911330125 .patterns = &.{
19114 .{ .src = .{ .to_mem, .to_mem } },
30126 .{ .src = .{ .to_mem, .to_mem, .none } },
1911530127 },
1911630128 .call_frame = .{ .alignment = .@"16" },
1911730129 .extra_temps = .{
......@@ -19120,11 +30132,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1912030132 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
1912130133 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1912230134 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
19123 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
19124 else => unreachable,
19125 .e => "__eqtf2",
19126 .ne => "__netf2",
19127 } } } },
30135 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
1912830136 .{ .type = .i32, .kind = .{ .reg = .eax } },
1912930137 .{ .type = .u8, .kind = .{ .reg = .cl } },
1913030138 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -19163,9 +30171,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1916330171 .src_constraints = .{
1916430172 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1916530173 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
30174 .any,
1916630175 },
1916730176 .patterns = &.{
19168 .{ .src = .{ .to_mem, .to_mem } },
30177 .{ .src = .{ .to_mem, .to_mem, .none } },
1916930178 },
1917030179 .call_frame = .{ .alignment = .@"16" },
1917130180 .extra_temps = .{
......@@ -19174,11 +30183,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1917430183 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
1917530184 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1917630185 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
19177 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
19178 else => unreachable,
19179 .e => "__eqtf2",
19180 .ne => "__netf2",
19181 } } } },
30186 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
1918230187 .{ .type = .i32, .kind = .{ .reg = .eax } },
1918330188 .{ .type = .u8, .kind = .{ .reg = .cl } },
1918430189 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -19217,9 +30222,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1921730222 .src_constraints = .{
1921830223 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1921930224 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
30225 .any,
1922030226 },
1922130227 .patterns = &.{
19222 .{ .src = .{ .to_mem, .to_mem } },
30228 .{ .src = .{ .to_mem, .to_mem, .none } },
1922330229 },
1922430230 .call_frame = .{ .alignment = .@"16" },
1922530231 .extra_temps = .{
......@@ -19228,11 +30234,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1922830234 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
1922930235 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1923030236 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
19231 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
19232 else => unreachable,
19233 .e => "__eqtf2",
19234 .ne => "__netf2",
19235 } } } },
30237 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
1923630238 .{ .type = .i32, .kind = .{ .reg = .eax } },
1923730239 .{ .type = .u8, .kind = .{ .reg = .cl } },
1923830240 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -19267,31 +30269,1469 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1926730269 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
1926830270 } },
1926930271 } },
19270 }) catch |err| switch (err) {
19271 error.SelectFailed => return cg.fail("failed to select {s} {s} {} {} {}", .{
19272 @tagName(air_tag),
19273 @tagName(extra.compareOperator()),
19274 cg.typeOf(extra.lhs).fmt(pt),
19275 ops[0].tracking(cg),
19276 ops[1].tracking(cg),
19277 }),
19278 else => |e| return e,
19279 },
19280 .gte => unreachable,
19281 .gt => unreachable,
19282 }
19283 try res[0].finish(inst, &.{ extra.lhs, extra.rhs }, &ops, cg);
30272 }),
30273 }) catch |err| switch (err) {
30274 error.SelectFailed => return cg.fail("failed to select {s} {s} {} {} {}", .{
30275 @tagName(air_tag),
30276 @tagName(extra.compareOperator()),
30277 cg.typeOf(extra.lhs).fmt(pt),
30278 ops[0].tracking(cg),
30279 ops[1].tracking(cg),
30280 }),
30281 else => |e| return e,
30282 };
30283 try res[0].finish(inst, &.{ extra.lhs, extra.rhs }, &ops, cg);
30284 },
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);
1928431725 },
19285
1928631726 .abs => |air_tag| if (use_old) try cg.airAbs(inst) else {
1928731727 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
1928831728 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
1928931729 var res: [1]Temp = undefined;
1929031730 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
1929131731 .required_features = .{ .cmov, null, null, null },
19292 .src_constraints = .{ .{ .int = .byte }, .any },
31732 .src_constraints = .{ .{ .int = .byte }, .any, .any },
1929331733 .patterns = &.{
19294 .{ .src = .{ .to_gpr, .none } },
31734 .{ .src = .{ .to_gpr, .none, .none } },
1929531735 },
1929631736 .dst_temps = .{.{ .rc = .general_purpose }},
1929731737 .clobbers = .{ .eflags = true },
......@@ -19301,9 +31741,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1930131741 .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ },
1930231742 } },
1930331743 }, .{
19304 .src_constraints = .{ .{ .int = .byte }, .any },
31744 .src_constraints = .{ .{ .int = .byte }, .any, .any },
1930531745 .patterns = &.{
19306 .{ .src = .{ .mut_mem, .none } },
31746 .{ .src = .{ .mut_mem, .none, .none } },
1930731747 },
1930831748 .dst_temps = .{.{ .ref = .src0 }},
1930931749 .clobbers = .{ .eflags = true },
......@@ -19313,9 +31753,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1931331753 .{ ._, ._, .neg, .dst0b, ._, ._, ._ },
1931431754 } },
1931531755 }, .{
19316 .src_constraints = .{ .{ .int = .byte }, .any },
31756 .src_constraints = .{ .{ .int = .byte }, .any, .any },
1931731757 .patterns = &.{
19318 .{ .src = .{ .to_mut_gpr, .none } },
31758 .{ .src = .{ .to_mut_gpr, .none, .none } },
1931931759 },
1932031760 .dst_temps = .{.{ .ref = .src0 }},
1932131761 .clobbers = .{ .eflags = true },
......@@ -19326,9 +31766,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1932631766 } },
1932731767 }, .{
1932831768 .required_features = .{ .cmov, null, null, null },
19329 .src_constraints = .{ .{ .int = .word }, .any },
31769 .src_constraints = .{ .{ .int = .word }, .any, .any },
1933031770 .patterns = &.{
19331 .{ .src = .{ .mem, .none } },
31771 .{ .src = .{ .mem, .none, .none } },
1933231772 },
1933331773 .dst_temps = .{.{ .rc = .general_purpose }},
1933431774 .clobbers = .{ .eflags = true },
......@@ -19339,9 +31779,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1933931779 } },
1934031780 }, .{
1934131781 .required_features = .{ .cmov, null, null, null },
19342 .src_constraints = .{ .{ .int = .word }, .any },
31782 .src_constraints = .{ .{ .int = .word }, .any, .any },
1934331783 .patterns = &.{
19344 .{ .src = .{ .to_gpr, .none } },
31784 .{ .src = .{ .to_gpr, .none, .none } },
1934531785 },
1934631786 .dst_temps = .{.{ .rc = .general_purpose }},
1934731787 .clobbers = .{ .eflags = true },
......@@ -19351,9 +31791,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1935131791 .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ },
1935231792 } },
1935331793 }, .{
19354 .src_constraints = .{ .{ .int = .word }, .any },
31794 .src_constraints = .{ .{ .int = .word }, .any, .any },
1935531795 .patterns = &.{
19356 .{ .src = .{ .mut_mem, .none } },
31796 .{ .src = .{ .mut_mem, .none, .none } },
1935731797 },
1935831798 .dst_temps = .{.{ .ref = .src0 }},
1935931799 .clobbers = .{ .eflags = true },
......@@ -19363,9 +31803,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1936331803 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
1936431804 } },
1936531805 }, .{
19366 .src_constraints = .{ .{ .int = .word }, .any },
31806 .src_constraints = .{ .{ .int = .word }, .any, .any },
1936731807 .patterns = &.{
19368 .{ .src = .{ .to_mut_gpr, .none } },
31808 .{ .src = .{ .to_mut_gpr, .none, .none } },
1936931809 },
1937031810 .dst_temps = .{.{ .ref = .src0 }},
1937131811 .clobbers = .{ .eflags = true },
......@@ -19376,10 +31816,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1937631816 } },
1937731817 }, .{
1937831818 .required_features = .{ .cmov, null, null, null },
19379 .src_constraints = .{ .{ .int = .dword }, .any },
31819 .src_constraints = .{ .{ .int = .dword }, .any, .any },
1938031820 .patterns = &.{
19381 .{ .src = .{ .mem, .none } },
19382 .{ .src = .{ .to_gpr, .none } },
31821 .{ .src = .{ .mem, .none, .none } },
31822 .{ .src = .{ .to_gpr, .none, .none } },
1938331823 },
1938431824 .dst_temps = .{.{ .rc = .general_purpose }},
1938531825 .clobbers = .{ .eflags = true },
......@@ -19389,9 +31829,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1938931829 .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ },
1939031830 } },
1939131831 }, .{
19392 .src_constraints = .{ .{ .int = .dword }, .any },
31832 .src_constraints = .{ .{ .int = .dword }, .any, .any },
1939331833 .patterns = &.{
19394 .{ .src = .{ .mut_mem, .none } },
31834 .{ .src = .{ .mut_mem, .none, .none } },
1939531835 },
1939631836 .dst_temps = .{.{ .ref = .src0 }},
1939731837 .clobbers = .{ .eflags = true },
......@@ -19401,9 +31841,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1940131841 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
1940231842 } },
1940331843 }, .{
19404 .src_constraints = .{ .{ .int = .dword }, .any },
31844 .src_constraints = .{ .{ .int = .dword }, .any, .any },
1940531845 .patterns = &.{
19406 .{ .src = .{ .to_mut_gpr, .none } },
31846 .{ .src = .{ .to_mut_gpr, .none, .none } },
1940731847 },
1940831848 .dst_temps = .{.{ .ref = .src0 }},
1940931849 .clobbers = .{ .eflags = true },
......@@ -19414,10 +31854,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1941431854 } },
1941531855 }, .{
1941631856 .required_features = .{ .@"64bit", .cmov, null, null },
19417 .src_constraints = .{ .{ .int = .qword }, .any },
31857 .src_constraints = .{ .{ .int = .qword }, .any, .any },
1941831858 .patterns = &.{
19419 .{ .src = .{ .mem, .none } },
19420 .{ .src = .{ .to_gpr, .none } },
31859 .{ .src = .{ .mem, .none, .none } },
31860 .{ .src = .{ .to_gpr, .none, .none } },
1942131861 },
1942231862 .dst_temps = .{.{ .rc = .general_purpose }},
1942331863 .clobbers = .{ .eflags = true },
......@@ -19428,9 +31868,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1942831868 } },
1942931869 }, .{
1943031870 .required_features = .{ .@"64bit", null, null, null },
19431 .src_constraints = .{ .{ .int = .qword }, .any },
31871 .src_constraints = .{ .{ .int = .qword }, .any, .any },
1943231872 .patterns = &.{
19433 .{ .src = .{ .mut_mem, .none } },
31873 .{ .src = .{ .mut_mem, .none, .none } },
1943431874 },
1943531875 .dst_temps = .{.{ .ref = .src0 }},
1943631876 .clobbers = .{ .eflags = true },
......@@ -19441,9 +31881,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1944131881 } },
1944231882 }, .{
1944331883 .required_features = .{ .@"64bit", null, null, null },
19444 .src_constraints = .{ .{ .int = .qword }, .any },
31884 .src_constraints = .{ .{ .int = .qword }, .any, .any },
1944531885 .patterns = &.{
19446 .{ .src = .{ .to_mut_gpr, .none } },
31886 .{ .src = .{ .to_mut_gpr, .none, .none } },
1944731887 },
1944831888 .dst_temps = .{.{ .ref = .src0 }},
1944931889 .clobbers = .{ .eflags = true },
......@@ -19454,9 +31894,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1945431894 } },
1945531895 }, .{
1945631896 .required_features = .{ .@"64bit", null, null, null },
19457 .src_constraints = .{ .any_int, .any },
31897 .src_constraints = .{ .any_int, .any, .any },
1945831898 .patterns = &.{
19459 .{ .src = .{ .to_mem, .none } },
31899 .{ .src = .{ .to_mem, .none, .none } },
1946031900 },
1946131901 .extra_temps = .{
1946231902 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -19487,10 +31927,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1948731927 } },
1948831928 }, .{
1948931929 .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 },
1949131931 .patterns = &.{
19492 .{ .src = .{ .mem, .none } },
19493 .{ .src = .{ .to_mm, .none } },
31932 .{ .src = .{ .mem, .none, .none } },
31933 .{ .src = .{ .to_mm, .none, .none } },
1949431934 },
1949531935 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }},
1949631936 .each = .{ .once = &.{
......@@ -19498,10 +31938,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1949831938 } },
1949931939 }, .{
1950031940 .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 },
1950231942 .patterns = &.{
19503 .{ .src = .{ .mem, .none } },
19504 .{ .src = .{ .to_mm, .none } },
31943 .{ .src = .{ .mem, .none, .none } },
31944 .{ .src = .{ .to_mm, .none, .none } },
1950531945 },
1950631946 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }},
1950731947 .each = .{ .once = &.{
......@@ -19509,10 +31949,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1950931949 } },
1951031950 }, .{
1951131951 .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 },
1951331953 .patterns = &.{
19514 .{ .src = .{ .mem, .none } },
19515 .{ .src = .{ .to_mm, .none } },
31954 .{ .src = .{ .mem, .none, .none } },
31955 .{ .src = .{ .to_mm, .none, .none } },
1951631956 },
1951731957 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }},
1951831958 .each = .{ .once = &.{
......@@ -19520,10 +31960,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1952031960 } },
1952131961 }, .{
1952231962 .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 },
1952431964 .patterns = &.{
19525 .{ .src = .{ .mem, .none } },
19526 .{ .src = .{ .to_sse, .none } },
31965 .{ .src = .{ .mem, .none, .none } },
31966 .{ .src = .{ .to_sse, .none, .none } },
1952731967 },
1952831968 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
1952931969 .each = .{ .once = &.{
......@@ -19531,10 +31971,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1953131971 } },
1953231972 }, .{
1953331973 .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 },
1953531975 .patterns = &.{
19536 .{ .src = .{ .mem, .none } },
19537 .{ .src = .{ .to_sse, .none } },
31976 .{ .src = .{ .mem, .none, .none } },
31977 .{ .src = .{ .to_sse, .none, .none } },
1953831978 },
1953931979 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
1954031980 .each = .{ .once = &.{
......@@ -19542,10 +31982,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1954231982 } },
1954331983 }, .{
1954431984 .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 },
1954631986 .patterns = &.{
19547 .{ .src = .{ .mem, .none } },
19548 .{ .src = .{ .to_sse, .none } },
31987 .{ .src = .{ .mem, .none, .none } },
31988 .{ .src = .{ .to_sse, .none, .none } },
1954931989 },
1955031990 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
1955131991 .each = .{ .once = &.{
......@@ -19553,10 +31993,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1955331993 } },
1955431994 }, .{
1955531995 .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 },
1955731997 .patterns = &.{
19558 .{ .src = .{ .mem, .none } },
19559 .{ .src = .{ .to_sse, .none } },
31998 .{ .src = .{ .mem, .none, .none } },
31999 .{ .src = .{ .to_sse, .none, .none } },
1956032000 },
1956132001 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
1956232002 .each = .{ .once = &.{
......@@ -19564,10 +32004,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1956432004 } },
1956532005 }, .{
1956632006 .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 },
1956832008 .patterns = &.{
19569 .{ .src = .{ .mem, .none } },
19570 .{ .src = .{ .to_sse, .none } },
32009 .{ .src = .{ .mem, .none, .none } },
32010 .{ .src = .{ .to_sse, .none, .none } },
1957132011 },
1957232012 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
1957332013 .each = .{ .once = &.{
......@@ -19575,10 +32015,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1957532015 } },
1957632016 }, .{
1957732017 .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 },
1957932019 .patterns = &.{
19580 .{ .src = .{ .mem, .none } },
19581 .{ .src = .{ .to_sse, .none } },
32020 .{ .src = .{ .mem, .none, .none } },
32021 .{ .src = .{ .to_sse, .none, .none } },
1958232022 },
1958332023 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
1958432024 .each = .{ .once = &.{
......@@ -19586,10 +32026,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1958632026 } },
1958732027 }, .{
1958832028 .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 },
1959032030 .patterns = &.{
19591 .{ .src = .{ .mem, .none } },
19592 .{ .src = .{ .to_sse, .none } },
32031 .{ .src = .{ .mem, .none, .none } },
32032 .{ .src = .{ .to_sse, .none, .none } },
1959332033 },
1959432034 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
1959532035 .each = .{ .once = &.{
......@@ -19597,10 +32037,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1959732037 } },
1959832038 }, .{
1959932039 .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 },
1960132041 .patterns = &.{
19602 .{ .src = .{ .mem, .none } },
19603 .{ .src = .{ .to_sse, .none } },
32042 .{ .src = .{ .mem, .none, .none } },
32043 .{ .src = .{ .to_sse, .none, .none } },
1960432044 },
1960532045 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
1960632046 .each = .{ .once = &.{
......@@ -19608,10 +32048,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1960832048 } },
1960932049 }, .{
1961032050 .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 },
1961232052 .patterns = &.{
19613 .{ .src = .{ .mem, .none } },
19614 .{ .src = .{ .to_sse, .none } },
32053 .{ .src = .{ .mem, .none, .none } },
32054 .{ .src = .{ .to_sse, .none, .none } },
1961532055 },
1961632056 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
1961732057 .each = .{ .once = &.{
......@@ -19619,9 +32059,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1961932059 } },
1962032060 }, .{
1962132061 .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 },
1962332063 .patterns = &.{
19624 .{ .src = .{ .to_mem, .none } },
32064 .{ .src = .{ .to_mem, .none, .none } },
1962532065 },
1962632066 .extra_temps = .{
1962732067 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -19645,9 +32085,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1964532085 } },
1964632086 }, .{
1964732087 .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 },
1964932089 .patterns = &.{
19650 .{ .src = .{ .to_mem, .none } },
32090 .{ .src = .{ .to_mem, .none, .none } },
1965132091 },
1965232092 .extra_temps = .{
1965332093 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -19671,9 +32111,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1967132111 } },
1967232112 }, .{
1967332113 .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 },
1967532115 .patterns = &.{
19676 .{ .src = .{ .to_mem, .none } },
32116 .{ .src = .{ .to_mem, .none, .none } },
1967732117 },
1967832118 .extra_temps = .{
1967932119 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -19697,9 +32137,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1969732137 } },
1969832138 }, .{
1969932139 .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 },
1970132141 .patterns = &.{
19702 .{ .src = .{ .to_mem, .none } },
32142 .{ .src = .{ .to_mem, .none, .none } },
1970332143 },
1970432144 .extra_temps = .{
1970532145 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -19723,9 +32163,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1972332163 } },
1972432164 }, .{
1972532165 .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 },
1972732167 .patterns = &.{
19728 .{ .src = .{ .to_mem, .none } },
32168 .{ .src = .{ .to_mem, .none, .none } },
1972932169 },
1973032170 .extra_temps = .{
1973132171 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -19749,9 +32189,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1974932189 } },
1975032190 }, .{
1975132191 .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 },
1975332193 .patterns = &.{
19754 .{ .src = .{ .to_mem, .none } },
32194 .{ .src = .{ .to_mem, .none, .none } },
1975532195 },
1975632196 .extra_temps = .{
1975732197 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -19774,14 +32214,557 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1977432214 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1977532215 } },
1977632216 }, .{
19777 .required_features = .{ .ssse3, null, null, null },
19778 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any },
32217 .required_features = .{ .ssse3, null, null, null },
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 },
1977932762 .patterns = &.{
19780 .{ .src = .{ .to_mem, .none } },
32763 .{ .src = .{ .to_sse, .none, .none } },
1978132764 },
1978232765 .extra_temps = .{
19783 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
19784 .{ .kind = .{ .rc = .sse } },
32766 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32767 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
1978532768 .unused,
1978632769 .unused,
1978732770 .unused,
......@@ -19790,24 +32773,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1979032773 .unused,
1979132774 .unused,
1979232775 },
19793 .dst_temps = .{.mem},
19794 .clobbers = .{ .eflags = true },
32776 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
1979532777 .each = .{ .once = &.{
19796 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
19797 .{ .@"0:", .p_b, .abs, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
19798 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
19799 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
19800 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32778 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
32779 .{ ._, .v_pd, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
1980132780 } },
1980232781 }, .{
19803 .required_features = .{ .ssse3, null, null, null },
19804 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any },
32782 .required_features = .{ .sse2, null, null, null },
32783 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
1980532784 .patterns = &.{
19806 .{ .src = .{ .to_mem, .none } },
32785 .{ .src = .{ .to_mut_sse, .none, .none } },
1980732786 },
1980832787 .extra_temps = .{
19809 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
19810 .{ .kind = .{ .rc = .sse } },
32788 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32789 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
1981132790 .unused,
1981232791 .unused,
1981332792 .unused,
......@@ -19816,24 +32795,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1981632795 .unused,
1981732796 .unused,
1981832797 },
19819 .dst_temps = .{.mem},
19820 .clobbers = .{ .eflags = true },
32798 .dst_temps = .{.{ .ref = .src0 }},
1982132799 .each = .{ .once = &.{
19822 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
19823 .{ .@"0:", .p_w, .abs, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
19824 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
19825 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
19826 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32800 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
32801 .{ ._, ._pd, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
1982732802 } },
1982832803 }, .{
19829 .required_features = .{ .ssse3, null, null, null },
19830 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any },
32804 .required_features = .{ .avx, null, null, null },
32805 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
1983132806 .patterns = &.{
19832 .{ .src = .{ .to_mem, .none } },
32807 .{ .src = .{ .to_sse, .none, .none } },
1983332808 },
1983432809 .extra_temps = .{
19835 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
19836 .{ .kind = .{ .rc = .sse } },
32810 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32811 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
1983732812 .unused,
1983832813 .unused,
1983932814 .unused,
......@@ -19842,24 +32817,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1984232817 .unused,
1984332818 .unused,
1984432819 },
19845 .dst_temps = .{.mem},
19846 .clobbers = .{ .eflags = true },
32820 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
1984732821 .each = .{ .once = &.{
19848 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
19849 .{ .@"0:", .p_d, .abs, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
19850 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
19851 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
19852 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32822 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
32823 .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
1985332824 } },
1985432825 }, .{
19855 .required_features = .{ .mmx, .ssse3, null, null },
19856 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any },
32826 .required_features = .{ .x87, null, null, null },
32827 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
1985732828 .patterns = &.{
19858 .{ .src = .{ .to_mem, .none } },
32829 .{ .src = .{ .mem, .none, .none } },
32830 .{ .src = .{ .to_x87, .none, .none } },
1985932831 },
1986032832 .extra_temps = .{
19861 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
19862 .{ .kind = .{ .rc = .sse } },
32833 .{ .type = .f80, .kind = .{ .reg = .st7 } },
32834 .unused,
1986332835 .unused,
1986432836 .unused,
1986532837 .unused,
......@@ -19868,24 +32840,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1986832840 .unused,
1986932841 .unused,
1987032842 },
19871 .dst_temps = .{.mem},
19872 .clobbers = .{ .eflags = true },
32843 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .x87 } }},
1987332844 .each = .{ .once = &.{
19874 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
19875 .{ .@"0:", .p_b, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
19876 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
19877 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
19878 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32845 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
32846 .{ ._, .f_, .abs, ._, ._, ._, ._ },
32847 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
1987932848 } },
1988032849 }, .{
19881 .required_features = .{ .mmx, .ssse3, null, null },
19882 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any },
32850 .required_features = .{ .avx, null, null, null },
32851 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
1988332852 .patterns = &.{
19884 .{ .src = .{ .to_mem, .none } },
32853 .{ .src = .{ .to_sse, .none, .none } },
1988532854 },
1988632855 .extra_temps = .{
19887 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
19888 .{ .kind = .{ .rc = .sse } },
32856 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32857 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
1988932858 .unused,
1989032859 .unused,
1989132860 .unused,
......@@ -19894,24 +32863,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1989432863 .unused,
1989532864 .unused,
1989632865 },
19897 .dst_temps = .{.mem},
19898 .clobbers = .{ .eflags = true },
32866 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
1989932867 .each = .{ .once = &.{
19900 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
19901 .{ .@"0:", .p_w, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
19902 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
19903 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
19904 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32868 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
32869 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
1990532870 } },
1990632871 }, .{
19907 .required_features = .{ .mmx, .ssse3, null, null },
19908 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any },
32872 .required_features = .{ .sse2, null, null, null },
32873 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
1990932874 .patterns = &.{
19910 .{ .src = .{ .to_mem, .none } },
32875 .{ .src = .{ .to_mut_sse, .none, .none } },
1991132876 },
1991232877 .extra_temps = .{
19913 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
19914 .{ .kind = .{ .rc = .sse } },
32878 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32879 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
1991532880 .unused,
1991632881 .unused,
1991732882 .unused,
......@@ -19920,25 +32885,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1992032885 .unused,
1992132886 .unused,
1992232887 },
19923 .dst_temps = .{.mem},
19924 .clobbers = .{ .eflags = true },
32888 .dst_temps = .{.{ .ref = .src0 }},
1992532889 .each = .{ .once = &.{
19926 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
19927 .{ .@"0:", .p_d, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
19928 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
19929 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
19930 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32890 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
32891 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
1993132892 } },
1993232893 }, .{
19933 .required_features = .{ .cmov, .slow_incdec, null, null },
19934 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
32894 .required_features = .{ .sse, null, null, null },
32895 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
1993532896 .patterns = &.{
19936 .{ .src = .{ .to_mem, .none } },
32897 .{ .src = .{ .to_mut_sse, .none, .none } },
1993732898 },
1993832899 .extra_temps = .{
19939 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
19940 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
19941 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32900 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32901 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
32902 .unused,
1994232903 .unused,
1994332904 .unused,
1994432905 .unused,
......@@ -19946,28 +32907,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1994632907 .unused,
1994732908 .unused,
1994832909 },
19949 .dst_temps = .{.mem},
19950 .clobbers = .{ .eflags = true },
32910 .dst_temps = .{.{ .ref = .src0 }},
1995132911 .each = .{ .once = &.{
19952 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
19953 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },
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", ._, ._, ._ },
32912 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
32913 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
1996032914 } },
1996132915 }, .{
19962 .required_features = .{ .cmov, null, null, null },
19963 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
32916 .required_features = .{ .avx2, null, null, null },
32917 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any },
1996432918 .patterns = &.{
19965 .{ .src = .{ .to_mem, .none } },
32919 .{ .src = .{ .to_sse, .none, .none } },
1996632920 },
1996732921 .extra_temps = .{
19968 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
19969 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
19970 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32922 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32923 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
32924 .unused,
1997132925 .unused,
1997232926 .unused,
1997332927 .unused,
......@@ -19975,27 +32929,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1997532929 .unused,
1997632930 .unused,
1997732931 },
19978 .dst_temps = .{.mem},
19979 .clobbers = .{ .eflags = true },
32932 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
1998032933 .each = .{ .once = &.{
19981 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
19982 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },
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", ._, ._, ._ },
32934 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
32935 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
1998932936 } },
1999032937 }, .{
19991 .required_features = .{ .slow_incdec, null, null, null },
19992 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
32938 .required_features = .{ .avx, null, null, null },
32939 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any },
1999332940 .patterns = &.{
19994 .{ .src = .{ .to_mem, .none } },
32941 .{ .src = .{ .to_sse, .none, .none } },
1999532942 },
1999632943 .extra_temps = .{
19997 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
19998 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32944 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32945 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
1999932946 .unused,
2000032947 .unused,
2000132948 .unused,
......@@ -20004,28 +32951,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2000432951 .unused,
2000532952 .unused,
2000632953 },
20007 .dst_temps = .{.mem},
20008 .clobbers = .{ .eflags = true },
32954 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2000932955 .each = .{ .once = &.{
20010 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20011 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
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", ._, ._, ._ },
32956 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
32957 .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
2001832958 } },
2001932959 }, .{
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 },
2002132962 .patterns = &.{
20022 .{ .src = .{ .to_mem, .none } },
32963 .{ .src = .{ .to_mem, .none, .none } },
2002332964 },
2002432965 .extra_temps = .{
2002532966 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20026 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
20027 .unused,
20028 .unused,
32967 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
32968 .{ .kind = .{ .rc = .sse } },
32969 .{ .kind = .{ .rc = .sse } },
2002932970 .unused,
2003032971 .unused,
2003132972 .unused,
......@@ -20033,28 +32974,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2003332974 .unused,
2003432975 },
2003532976 .dst_temps = .{.mem},
20036 .clobbers = .{ .eflags = true },
2003732977 .each = .{ .once = &.{
32978 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
32979 .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
2003832980 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20039 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
20040 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
20041 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
20042 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },
20043 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
20044 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
20045 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
32981 .{ .@"0:", .v_ps, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
32982 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
32983 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
32984 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2004632985 } },
2004732986 }, .{
20048 .required_features = .{ .cmov, null, null, null },
20049 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
32987 .required_features = .{ .sse, null, null, null },
32988 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
2005032989 .patterns = &.{
20051 .{ .src = .{ .to_mem, .none } },
32990 .{ .src = .{ .to_mem, .none, .none } },
2005232991 },
2005332992 .extra_temps = .{
2005432993 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20055 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
20056 .unused,
20057 .unused,
32994 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
32995 .{ .kind = .{ .rc = .sse } },
32996 .{ .kind = .{ .rc = .sse } },
2005832997 .unused,
2005932998 .unused,
2006032999 .unused,
......@@ -20062,26 +33001,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2006233001 .unused,
2006333002 },
2006433003 .dst_temps = .{.mem},
20065 .clobbers = .{ .eflags = true },
2006633004 .each = .{ .once = &.{
33005 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
33006 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
2006733007 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20068 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },
20069 .{ ._, ._, .sub, .tmp1w, .memia(.src0w, .tmp0, .add_size), ._, ._ },
20070 .{ ._, ._s, .cmov, .tmp1w, .memia(.src0w, .tmp0, .add_size), ._, ._ },
20071 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
20072 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
33008 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
33009 .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
33010 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
33011 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2007333012 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2007433013 } },
2007533014 }, .{
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 },
2007733017 .patterns = &.{
20078 .{ .src = .{ .to_mem, .none } },
33018 .{ .src = .{ .to_mem, .none, .none } },
2007933019 },
2008033020 .extra_temps = .{
2008133021 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20082 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
20083 .unused,
20084 .unused,
33022 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
33023 .{ .kind = .{ .rc = .sse } },
33024 .{ .kind = .{ .rc = .sse } },
2008533025 .unused,
2008633026 .unused,
2008733027 .unused,
......@@ -20089,28 +33029,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2008933029 .unused,
2009033030 },
2009133031 .dst_temps = .{.mem},
20092 .clobbers = .{ .eflags = true },
2009333032 .each = .{ .once = &.{
33033 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
33034 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
2009433035 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20095 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
20096 .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ },
20097 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
20098 .{ ._, ._, .neg, .tmp1d, ._, ._, ._ },
20099 .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
20100 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
33036 .{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
33037 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
33038 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
2010133039 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2010233040 } },
2010333041 }, .{
20104 .required_features = .{ .cmov, null, null, null },
20105 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },
33042 .required_features = .{ .sse2, null, null, null },
33043 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
2010633044 .patterns = &.{
20107 .{ .src = .{ .to_mem, .none } },
33045 .{ .src = .{ .to_mem, .none, .none } },
2010833046 },
2010933047 .extra_temps = .{
2011033048 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20111 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
20112 .unused,
20113 .unused,
33049 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
33050 .{ .kind = .{ .rc = .sse } },
33051 .{ .kind = .{ .rc = .sse } },
2011433052 .unused,
2011533053 .unused,
2011633054 .unused,
......@@ -20118,26 +33056,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2011833056 .unused,
2011933057 },
2012033058 .dst_temps = .{.mem},
20121 .clobbers = .{ .eflags = true },
2012233059 .each = .{ .once = &.{
33060 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
33061 .{ ._, ._pd, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
2012333062 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20124 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },
20125 .{ ._, ._, .sub, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
20126 .{ ._, ._s, .cmov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
20127 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
20128 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
33063 .{ .@"0:", ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
33064 .{ ._, ._pd, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
33065 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
33066 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2012933067 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2013033068 } },
2013133069 }, .{
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 },
2013333072 .patterns = &.{
20134 .{ .src = .{ .to_mem, .none } },
33073 .{ .src = .{ .to_mem, .none, .none } },
2013533074 },
2013633075 .extra_temps = .{
2013733076 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20138 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
20139 .unused,
20140 .unused,
33077 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
33078 .{ .kind = .{ .rc = .sse } },
33079 .{ .kind = .{ .rc = .sse } },
2014133080 .unused,
2014233081 .unused,
2014333082 .unused,
......@@ -20145,28 +33084,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2014533084 .unused,
2014633085 },
2014733086 .dst_temps = .{.mem},
20148 .clobbers = .{ .eflags = true },
2014933087 .each = .{ .once = &.{
33088 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
33089 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
2015033090 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20151 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
20152 .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ },
20153 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
20154 .{ ._, ._, .neg, .tmp1d, ._, ._, ._ },
20155 .{ .@"1:", ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
20156 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
33091 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
33092 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
33093 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
2015733094 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2015833095 } },
2015933096 }, .{
20160 .required_features = .{ .@"64bit", .cmov, null, null },
20161 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
33097 .required_features = .{ .avx, null, null, null },
33098 .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any, .any },
2016233099 .patterns = &.{
20163 .{ .src = .{ .to_mem, .none } },
33100 .{ .src = .{ .to_mem, .none, .none } },
2016433101 },
2016533102 .extra_temps = .{
2016633103 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20167 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
20168 .unused,
20169 .unused,
33104 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
33105 .{ .kind = .{ .rc = .sse } },
33106 .{ .kind = .{ .rc = .sse } },
2017033107 .unused,
2017133108 .unused,
2017233109 .unused,
......@@ -20174,27 +33111,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2017433111 .unused,
2017533112 },
2017633113 .dst_temps = .{.mem},
20177 .clobbers = .{ .eflags = true },
2017833114 .each = .{ .once = &.{
33115 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
33116 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
2017933117 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20180 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },
20181 .{ ._, ._, .sub, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
20182 .{ ._, ._s, .cmov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
20183 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
20184 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
33118 .{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
33119 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
33120 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
2018533121 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2018633122 } },
2018733123 }, .{
20188 .required_features = .{ .@"64bit", null, null, null },
20189 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
33124 .required_features = .{ .sse2, null, null, null },
33125 .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any },
2019033126 .patterns = &.{
20191 .{ .src = .{ .to_mem, .none } },
33127 .{ .src = .{ .to_mem, .none, .none } },
2019233128 },
2019333129 .extra_temps = .{
2019433130 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20195 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
20196 .unused,
20197 .unused,
33131 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
33132 .{ .kind = .{ .rc = .sse } },
33133 .{ .kind = .{ .rc = .sse } },
2019833134 .unused,
2019933135 .unused,
2020033136 .unused,
......@@ -20202,63 +33138,1137 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2020233138 .unused,
2020333139 },
2020433140 .dst_temps = .{.mem},
20205 .clobbers = .{ .eflags = true },
2020633141 .each = .{ .once = &.{
33142 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
33143 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
2020733144 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20208 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
20209 .{ ._, ._, .@"test", .tmp1q, .tmp1q, ._, ._ },
20210 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
20211 .{ ._, ._, .neg, .tmp1q, ._, ._, ._ },
20212 .{ .@"1:", ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
20213 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
33145 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
33146 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
33147 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
33148 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2021433149 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2021533150 } },
2021633151 }, .{
20217 .required_features = .{ .@"64bit", null, null, null },
20218 .src_constraints = .{ .any_scalar_int, .any },
33152 .required_features = .{ .sse, null, null, null },
33153 .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any },
2021933154 .patterns = &.{
20220 .{ .src = .{ .to_mem, .none } },
33155 .{ .src = .{ .to_mem, .none, .none } },
2022133156 },
2022233157 .extra_temps = .{
20223 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
2022433158 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20225 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
20226 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
20227 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
33159 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
33160 .{ .kind = .{ .rc = .sse } },
33161 .{ .kind = .{ .rc = .sse } },
33162 .unused,
2022833163 .unused,
2022933164 .unused,
2023033165 .unused,
2023133166 .unused,
2023233167 },
2023333168 .dst_temps = .{.mem},
20234 .clobbers = .{ .eflags = true },
2023533169 .each = .{ .once = &.{
20236 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
20237 .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size), ._, ._ },
20238 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_src0_elem_size, -8), ._, ._ },
20239 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },
20240 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
20241 .{ .@"1:", ._, .mov, .tmp4q, .memi(.src0q, .tmp0), ._, ._ },
20242 .{ ._, ._, .xor, .tmp4q, .tmp2q, ._, ._ },
20243 .{ ._, ._r, .sh, .tmp3b, .ui(1), ._, ._ },
20244 .{ ._, ._, .sbb, .tmp4q, .tmp2q, ._, ._ },
20245 .{ ._, ._c, .set, .tmp3b, ._, ._, ._ },
20246 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
20247 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 8), ._, ._ },
20248 .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ },
20249 .{ ._, ._a, .j, .@"1b", ._, ._, ._ },
20250 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ },
20251 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
33170 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
33171 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
33172 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
33173 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
33174 .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
33175 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
33176 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
33177 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33178 } },
33179 } }) catch |err| switch (err) {
33180 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
33181 @tagName(air_tag),
33182 cg.typeOf(ty_op.operand).fmt(pt),
33183 ops[0].tracking(cg),
33184 }),
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 } },
2025234248 } },
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 &.{ .{
2025434264 .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 },
2025634266 .patterns = &.{
20257 .{ .src = .{ .to_sse, .none } },
34267 .{ .src = .{ .to_sse, .none, .none } },
2025834268 },
2025934269 .extra_temps = .{
2026034270 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20261 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
34271 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
2026234272 .unused,
2026334273 .unused,
2026434274 .unused,
......@@ -20270,17 +34280,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2027034280 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2027134281 .each = .{ .once = &.{
2027234282 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20273 .{ ._, .v_ps, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
34283 .{ ._, .v_ps, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },
2027434284 } },
2027534285 }, .{
2027634286 .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 },
2027834288 .patterns = &.{
20279 .{ .src = .{ .to_mut_sse, .none } },
34289 .{ .src = .{ .to_mut_sse, .none, .none } },
2028034290 },
2028134291 .extra_temps = .{
2028234292 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20283 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
34293 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
2028434294 .unused,
2028534295 .unused,
2028634296 .unused,
......@@ -20292,17 +34302,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2029234302 .dst_temps = .{.{ .ref = .src0 }},
2029334303 .each = .{ .once = &.{
2029434304 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20295 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
34305 .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
2029634306 } },
2029734307 }, .{
2029834308 .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 },
2030034310 .patterns = &.{
20301 .{ .src = .{ .to_sse, .none } },
34311 .{ .src = .{ .to_sse, .none, .none } },
2030234312 },
2030334313 .extra_temps = .{
2030434314 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20305 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
34315 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
2030634316 .unused,
2030734317 .unused,
2030834318 .unused,
......@@ -20314,17 +34324,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2031434324 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2031534325 .each = .{ .once = &.{
2031634326 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20317 .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
34327 .{ ._, .v_ps, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
2031834328 } },
2031934329 }, .{
2032034330 .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 },
2032234332 .patterns = &.{
20323 .{ .src = .{ .to_sse, .none } },
34333 .{ .src = .{ .to_sse, .none, .none } },
2032434334 },
2032534335 .extra_temps = .{
2032634336 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20327 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
34337 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
2032834338 .unused,
2032934339 .unused,
2033034340 .unused,
......@@ -20336,17 +34346,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2033634346 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2033734347 .each = .{ .once = &.{
2033834348 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20339 .{ ._, .v_pd, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
34349 .{ ._, .v_pd, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },
2034034350 } },
2034134351 }, .{
2034234352 .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 },
2034434354 .patterns = &.{
20345 .{ .src = .{ .to_mut_sse, .none } },
34355 .{ .src = .{ .to_mut_sse, .none, .none } },
2034634356 },
2034734357 .extra_temps = .{
2034834358 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20349 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
34359 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
2035034360 .unused,
2035134361 .unused,
2035234362 .unused,
......@@ -20358,17 +34368,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2035834368 .dst_temps = .{.{ .ref = .src0 }},
2035934369 .each = .{ .once = &.{
2036034370 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20361 .{ ._, ._pd, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
34371 .{ ._, ._pd, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
2036234372 } },
2036334373 }, .{
2036434374 .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 },
2036634376 .patterns = &.{
20367 .{ .src = .{ .to_sse, .none } },
34377 .{ .src = .{ .to_sse, .none, .none } },
2036834378 },
2036934379 .extra_temps = .{
2037034380 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20371 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
34381 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
2037234382 .unused,
2037334383 .unused,
2037434384 .unused,
......@@ -20380,14 +34390,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2038034390 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2038134391 .each = .{ .once = &.{
2038234392 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20383 .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
34393 .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
2038434394 } },
2038534395 }, .{
2038634396 .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 },
2038834398 .patterns = &.{
20389 .{ .src = .{ .mem, .none } },
20390 .{ .src = .{ .to_x87, .none } },
34399 .{ .src = .{ .mem, .none, .none } },
34400 .{ .src = .{ .to_x87, .none, .none } },
2039134401 },
2039234402 .extra_temps = .{
2039334403 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -20403,18 +34413,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2040334413 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .x87 } }},
2040434414 .each = .{ .once = &.{
2040534415 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
20406 .{ ._, .f_, .abs, ._, ._, ._, ._ },
34416 .{ ._, .f_, .chs, ._, ._, ._, ._ },
2040734417 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
2040834418 } },
2040934419 }, .{
2041034420 .required_features = .{ .avx, null, null, null },
20411 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any },
34421 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
2041234422 .patterns = &.{
20413 .{ .src = .{ .to_sse, .none } },
34423 .{ .src = .{ .to_sse, .none, .none } },
2041434424 },
2041534425 .extra_temps = .{
2041634426 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20417 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
34427 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
2041834428 .unused,
2041934429 .unused,
2042034430 .unused,
......@@ -20426,17 +34436,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2042634436 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2042734437 .each = .{ .once = &.{
2042834438 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20429 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
34439 .{ ._, .vp_, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },
2043034440 } },
2043134441 }, .{
2043234442 .required_features = .{ .sse2, null, null, null },
20433 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any },
34443 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
2043434444 .patterns = &.{
20435 .{ .src = .{ .to_mut_sse, .none } },
34445 .{ .src = .{ .to_mut_sse, .none, .none } },
2043634446 },
2043734447 .extra_temps = .{
2043834448 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20439 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
34449 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
2044034450 .unused,
2044134451 .unused,
2044234452 .unused,
......@@ -20448,17 +34458,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2044834458 .dst_temps = .{.{ .ref = .src0 }},
2044934459 .each = .{ .once = &.{
2045034460 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20451 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
34461 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
2045234462 } },
2045334463 }, .{
2045434464 .required_features = .{ .sse, null, null, null },
20455 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any },
34465 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
2045634466 .patterns = &.{
20457 .{ .src = .{ .to_mut_sse, .none } },
34467 .{ .src = .{ .to_mut_sse, .none, .none } },
2045834468 },
2045934469 .extra_temps = .{
2046034470 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20461 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
34471 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
2046234472 .unused,
2046334473 .unused,
2046434474 .unused,
......@@ -20470,17 +34480,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2047034480 .dst_temps = .{.{ .ref = .src0 }},
2047134481 .each = .{ .once = &.{
2047234482 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20473 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
34483 .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
2047434484 } },
2047534485 }, .{
2047634486 .required_features = .{ .avx2, null, null, null },
20477 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any },
34487 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any },
2047834488 .patterns = &.{
20479 .{ .src = .{ .to_sse, .none } },
34489 .{ .src = .{ .to_sse, .none, .none } },
2048034490 },
2048134491 .extra_temps = .{
2048234492 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20483 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
34493 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
2048434494 .unused,
2048534495 .unused,
2048634496 .unused,
......@@ -20492,17 +34502,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2049234502 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2049334503 .each = .{ .once = &.{
2049434504 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20495 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
34505 .{ ._, .vp_, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
2049634506 } },
2049734507 }, .{
2049834508 .required_features = .{ .avx, null, null, null },
20499 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any },
34509 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any },
2050034510 .patterns = &.{
20501 .{ .src = .{ .to_sse, .none } },
34511 .{ .src = .{ .to_sse, .none, .none } },
2050234512 },
2050334513 .extra_temps = .{
2050434514 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20505 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
34515 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
2050634516 .unused,
2050734517 .unused,
2050834518 .unused,
......@@ -20514,17 +34524,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2051434524 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2051534525 .each = .{ .once = &.{
2051634526 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20517 .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
34527 .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
2051834528 } },
2051934529 }, .{
2052034530 .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 },
2052234532 .patterns = &.{
20523 .{ .src = .{ .to_mem, .none } },
34533 .{ .src = .{ .to_mem, .none, .none } },
2052434534 },
2052534535 .extra_temps = .{
2052634536 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20527 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
34537 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
2052834538 .{ .kind = .{ .rc = .sse } },
2052934539 .{ .kind = .{ .rc = .sse } },
2053034540 .unused,
......@@ -20538,20 +34548,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2053834548 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
2053934549 .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
2054034550 .{ ._, ._, .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), ._ },
2054234552 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
2054334553 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
2054434554 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2054534555 } },
2054634556 }, .{
2054734557 .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 },
2054934559 .patterns = &.{
20550 .{ .src = .{ .to_mem, .none } },
34560 .{ .src = .{ .to_mem, .none, .none } },
2055134561 },
2055234562 .extra_temps = .{
2055334563 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20554 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
34564 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
2055534565 .{ .kind = .{ .rc = .sse } },
2055634566 .{ .kind = .{ .rc = .sse } },
2055734567 .unused,
......@@ -20566,20 +34576,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2056634576 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
2056734577 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
2056834578 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
20569 .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
34579 .{ ._, ._ps, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
2057034580 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
2057134581 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2057234582 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2057334583 } },
2057434584 }, .{
2057534585 .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 },
2057734587 .patterns = &.{
20578 .{ .src = .{ .to_mem, .none } },
34588 .{ .src = .{ .to_mem, .none, .none } },
2057934589 },
2058034590 .extra_temps = .{
2058134591 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20582 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
34592 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
2058334593 .{ .kind = .{ .rc = .sse } },
2058434594 .{ .kind = .{ .rc = .sse } },
2058534595 .unused,
......@@ -20593,20 +34603,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2059334603 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
2059434604 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
2059534605 .{ ._, ._, .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), ._ },
2059734607 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
2059834608 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
2059934609 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2060034610 } },
2060134611 }, .{
2060234612 .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 },
2060434614 .patterns = &.{
20605 .{ .src = .{ .to_mem, .none } },
34615 .{ .src = .{ .to_mem, .none, .none } },
2060634616 },
2060734617 .extra_temps = .{
2060834618 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20609 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
34619 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
2061034620 .{ .kind = .{ .rc = .sse } },
2061134621 .{ .kind = .{ .rc = .sse } },
2061234622 .unused,
......@@ -20621,20 +34631,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2062134631 .{ ._, ._pd, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
2062234632 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
2062334633 .{ .@"0:", ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
20624 .{ ._, ._pd, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
34634 .{ ._, ._pd, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
2062534635 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
2062634636 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2062734637 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2062834638 } },
2062934639 }, .{
2063034640 .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 },
2063234642 .patterns = &.{
20633 .{ .src = .{ .to_mem, .none } },
34643 .{ .src = .{ .to_mem, .none, .none } },
2063434644 },
2063534645 .extra_temps = .{
2063634646 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20637 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
34647 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
2063834648 .{ .kind = .{ .rc = .sse } },
2063934649 .{ .kind = .{ .rc = .sse } },
2064034650 .unused,
......@@ -20648,20 +34658,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2064834658 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
2064934659 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
2065034660 .{ ._, ._, .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), ._ },
2065234662 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
2065334663 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
2065434664 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2065534665 } },
2065634666 }, .{
2065734667 .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 },
2065934669 .patterns = &.{
20660 .{ .src = .{ .to_mem, .none } },
34670 .{ .src = .{ .to_mem, .none, .none } },
2066134671 },
2066234672 .extra_temps = .{
2066334673 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20664 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
34674 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
2066534675 .{ .kind = .{ .rc = .sse } },
2066634676 .{ .kind = .{ .rc = .sse } },
2066734677 .unused,
......@@ -20675,20 +34685,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2067534685 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
2067634686 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
2067734687 .{ ._, ._, .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), ._ },
2067934689 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
2068034690 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
2068134691 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2068234692 } },
2068334693 }, .{
2068434694 .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 },
2068634696 .patterns = &.{
20687 .{ .src = .{ .to_mem, .none } },
34697 .{ .src = .{ .to_mem, .none, .none } },
2068834698 },
2068934699 .extra_temps = .{
2069034700 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20691 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
34701 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
2069234702 .{ .kind = .{ .rc = .sse } },
2069334703 .{ .kind = .{ .rc = .sse } },
2069434704 .unused,
......@@ -20703,20 +34713,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2070334713 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
2070434714 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
2070534715 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
20706 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
34716 .{ ._, .p_, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
2070734717 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
2070834718 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2070934719 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2071034720 } },
2071134721 }, .{
2071234722 .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 },
2071434724 .patterns = &.{
20715 .{ .src = .{ .to_mem, .none } },
34725 .{ .src = .{ .to_mem, .none, .none } },
2071634726 },
2071734727 .extra_temps = .{
2071834728 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20719 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
34729 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
2072034730 .{ .kind = .{ .rc = .sse } },
2072134731 .{ .kind = .{ .rc = .sse } },
2072234732 .unused,
......@@ -20731,7 +34741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2073134741 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
2073234742 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
2073334743 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
20734 .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
34744 .{ ._, ._ps, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
2073534745 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
2073634746 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2073734747 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
......@@ -20739,12 +34749,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2073934749 } }) catch |err| switch (err) {
2074034750 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
2074134751 @tagName(air_tag),
20742 cg.typeOf(ty_op.operand).fmt(pt),
34752 cg.typeOf(un_op).fmt(pt),
2074334753 ops[0].tracking(cg),
2074434754 }),
2074534755 else => |e| return e,
2074634756 };
20747 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
34757 try res[0].finish(inst, &.{un_op}, &ops, cg);
2074834758 },
2074934759
2075034760 .cmp_lt,
......@@ -20773,9 +34783,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2077334783 }) {
2077434784 inline false, true => |strict| comptime &.{ .{
2077534785 .required_features = .{ .f16c, null, null, null },
20776 .src_constraints = .{ .{ .float = .word }, .{ .float = .word } },
34786 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
2077734787 .patterns = &.{
20778 .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } },
34788 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
2077934789 },
2078034790 .extra_temps = .{
2078134791 .{ .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
......@@ -20800,9 +34810,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2080034810 } },
2080134811 }, .{
2080234812 .required_features = .{ .sse, null, null, null },
20803 .src_constraints = .{ .{ .float = .word }, .{ .float = .word } },
34813 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
2080434814 .patterns = &.{
20805 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },
34815 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
2080634816 },
2080734817 .call_frame = .{ .alignment = .@"16" },
2080834818 .extra_temps = .{
......@@ -20827,10 +34837,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2082734837 } },
2082834838 }, .{
2082934839 .required_features = .{ .avx, null, null, null },
20830 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword } },
34840 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },
2083134841 .patterns = &.{
20832 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
20833 .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } },
34842 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
34843 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
2083434844 },
2083534845 .dst_temps = .{.{ .cc = switch (strict) {
2083634846 true => .a,
......@@ -20842,10 +34852,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2084234852 } },
2084334853 }, .{
2084434854 .required_features = .{ .sse, null, null, null },
20845 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword } },
34855 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },
2084634856 .patterns = &.{
20847 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
20848 .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } },
34857 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
34858 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
2084934859 },
2085034860 .dst_temps = .{.{ .cc = switch (strict) {
2085134861 true => .a,
......@@ -20857,10 +34867,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2085734867 } },
2085834868 }, .{
2085934869 .required_features = .{ .avx, null, null, null },
20860 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },
34870 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
2086134871 .patterns = &.{
20862 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
20863 .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } },
34872 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
34873 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
2086434874 },
2086534875 .dst_temps = .{.{ .cc = switch (strict) {
2086634876 true => .a,
......@@ -20872,10 +34882,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2087234882 } },
2087334883 }, .{
2087434884 .required_features = .{ .sse2, null, null, null },
20875 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },
34885 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
2087634886 .patterns = &.{
20877 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
20878 .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } },
34887 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
34888 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
2087934889 },
2088034890 .dst_temps = .{.{ .cc = switch (strict) {
2088134891 true => .a,
......@@ -20887,13 +34897,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2088734897 } },
2088834898 }, .{
2088934899 .required_features = .{ .x87, .cmov, null, null },
20890 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },
34900 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
2089134901 .patterns = &.{
20892 .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } },
34902 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
2089334903 },
2089434904 .extra_temps = .{
20895 .{ .type = .f80, .kind = .{ .reg = .st6 } },
20896 .{ .type = .f80, .kind = .{ .reg = .st7 } },
34905 .{ .type = .f64, .kind = .{ .reg = .st6 } },
34906 .{ .type = .f64, .kind = .{ .reg = .st7 } },
2089734907 .unused,
2089834908 .unused,
2089934909 .unused,
......@@ -20915,13 +34925,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2091534925 } },
2091634926 }, .{
2091734927 .required_features = .{ .sahf, .x87, null, null },
20918 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },
34928 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
2091934929 .patterns = &.{
20920 .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } },
34930 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
2092134931 },
2092234932 .extra_temps = .{
20923 .{ .type = .f80, .kind = .{ .reg = .st6 } },
20924 .{ .type = .f80, .kind = .{ .reg = .st7 } },
34933 .{ .type = .f64, .kind = .{ .reg = .st6 } },
34934 .{ .type = .f64, .kind = .{ .reg = .st7 } },
2092534935 .{ .type = .u8, .kind = .{ .reg = .ah } },
2092634936 .unused,
2092734937 .unused,
......@@ -20944,13 +34954,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2094434954 } },
2094534955 }, .{
2094634956 .required_features = .{ .x87, null, null, null },
20947 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },
34957 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
2094834958 .patterns = &.{
20949 .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } },
34959 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
2095034960 },
2095134961 .extra_temps = .{
20952 .{ .type = .f80, .kind = .{ .reg = .st6 } },
20953 .{ .type = .f80, .kind = .{ .reg = .st7 } },
34962 .{ .type = .f64, .kind = .{ .reg = .st6 } },
34963 .{ .type = .f64, .kind = .{ .reg = .st7 } },
2095434964 .{ .type = .u8, .kind = .{ .reg = .ah } },
2095534965 .unused,
2095634966 .unused,
......@@ -20976,10 +34986,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2097634986 } },
2097734987 }, .{
2097834988 .required_features = .{ .x87, .cmov, null, null },
20979 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },
34989 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
2098034990 .patterns = &.{
20981 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },
20982 .{ .src = .{ .to_x87, .to_x87 }, .commute = .{ 0, 1 } },
34991 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
34992 .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } },
2098334993 },
2098434994 .extra_temps = .{
2098534995 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -21003,9 +35013,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2100335013 } },
2100435014 }, .{
2100535015 .required_features = .{ .sahf, .x87, null, null },
21006 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },
35016 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
2100735017 .patterns = &.{
21008 .{ .src = .{ .mem, .mem }, .commute = .{ 0, 1 } },
35018 .{ .src = .{ .mem, .mem, .none }, .commute = .{ 0, 1 } },
2100935019 },
2101035020 .extra_temps = .{
2101135021 .{ .type = .f80, .kind = .{ .reg = .st6 } },
......@@ -21032,10 +35042,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2103235042 } },
2103335043 }, .{
2103435044 .required_features = .{ .sahf, .x87, null, null },
21035 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },
35045 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
2103635046 .patterns = &.{
21037 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },
21038 .{ .src = .{ .to_x87, .to_x87 }, .commute = .{ 0, 1 } },
35047 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
35048 .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } },
2103935049 },
2104035050 .extra_temps = .{
2104135051 .{ .type = .f80, .kind = .{ .reg = .st6 } },
......@@ -21061,9 +35071,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2106135071 } },
2106235072 }, .{
2106335073 .required_features = .{ .x87, null, null, null },
21064 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },
35074 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
2106535075 .patterns = &.{
21066 .{ .src = .{ .mem, .mem }, .commute = .{ 0, 1 } },
35076 .{ .src = .{ .mem, .mem, .none }, .commute = .{ 0, 1 } },
2106735077 },
2106835078 .extra_temps = .{
2106935079 .{ .type = .f80, .kind = .{ .reg = .st6 } },
......@@ -21093,10 +35103,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2109335103 } },
2109435104 }, .{
2109535105 .required_features = .{ .x87, null, null, null },
21096 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },
35106 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
2109735107 .patterns = &.{
21098 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },
21099 .{ .src = .{ .to_x87, .to_x87 }, .commute = .{ 0, 1 } },
35108 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
35109 .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } },
2110035110 },
2110135111 .extra_temps = .{
2110235112 .{ .type = .f80, .kind = .{ .reg = .st6 } },
......@@ -21125,9 +35135,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2112535135 } },
2112635136 }, .{
2112735137 .required_features = .{ .sse, null, null, null },
21128 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword } },
35138 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword }, .any },
2112935139 .patterns = &.{
21130 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },
35140 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
2113135141 },
2113235142 .call_frame = .{ .alignment = .@"16" },
2113335143 .extra_temps = .{
......@@ -21205,15 +35215,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2120535215 switch (Condition.fromCompareOperatorUnsigned(cmp_op)) {
2120635216 else => unreachable,
2120735217 inline .e, .ne => |cc| comptime &.{.{
21208 .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte } },
35218 .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte }, .any },
2120935219 .patterns = &.{
21210 .{ .src = .{ .mem, .imm8 } },
21211 .{ .src = .{ .imm8, .mem }, .commute = .{ 0, 1 } },
21212 .{ .src = .{ .to_gpr, .imm8 } },
21213 .{ .src = .{ .imm8, .to_gpr }, .commute = .{ 0, 1 } },
21214 .{ .src = .{ .mem, .to_gpr } },
21215 .{ .src = .{ .to_gpr, .mem }, .commute = .{ 0, 1 } },
21216 .{ .src = .{ .to_gpr, .to_gpr } },
35220 .{ .src = .{ .mem, .imm8, .none } },
35221 .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } },
35222 .{ .src = .{ .to_gpr, .imm8, .none } },
35223 .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } },
35224 .{ .src = .{ .mem, .to_gpr, .none } },
35225 .{ .src = .{ .to_gpr, .mem, .none }, .commute = .{ 0, 1 } },
35226 .{ .src = .{ .to_gpr, .to_gpr, .none } },
2121735227 },
2121835228 .dst_temps = .{.{ .rc = .general_purpose }},
2121935229 .clobbers = .{ .eflags = true },
......@@ -21255,9 +35265,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2125535265 }) {
2125635266 inline false, true => |optimized| comptime &.{ .{
2125735267 .required_features = .{ .f16c, null, null, null },
21258 .src_constraints = .{ .{ .float = .word }, .{ .float = .word } },
35268 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
2125935269 .patterns = &.{
21260 .{ .src = .{ .to_sse, .to_sse } },
35270 .{ .src = .{ .to_sse, .to_sse, .none } },
2126135271 },
2126235272 .extra_temps = .{
2126335273 .{ .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
......@@ -21278,13 +35288,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2127835288 .each = .{ .once = &.{
2127935289 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
2128035290 .{ ._, .v_ps, .cvtph2, .tmp1x, .src1q, ._, ._ },
21281 .{ ._, .v_ss, .ucomi, .tmp0x, .tmp1x, ._, ._ },
35291 .{ ._, .v_ss, .ucomi, .tmp0x, .tmp1d, ._, ._ },
2128235292 } },
2128335293 }, .{
2128435294 .required_features = .{ .sse, null, null, null },
21285 .src_constraints = .{ .{ .float = .word }, .{ .float = .word } },
35295 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
2128635296 .patterns = &.{
21287 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },
35297 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
2128835298 },
2128935299 .call_frame = .{ .alignment = .@"16" },
2129035300 .extra_temps = .{
......@@ -21306,11 +35316,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2130635316 } },
2130735317 }, .{
2130835318 .required_features = .{ .avx, null, null, null },
21309 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword } },
35319 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },
2131035320 .patterns = &.{
21311 .{ .src = .{ .to_sse, .mem } },
21312 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
21313 .{ .src = .{ .to_sse, .to_sse } },
35321 .{ .src = .{ .to_sse, .mem, .none } },
35322 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
35323 .{ .src = .{ .to_sse, .to_sse, .none } },
2131435324 },
2131535325 .dst_temps = .{.{ .cc = switch (optimized) {
2131635326 false => .z_and_np,
......@@ -21322,11 +35332,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2132235332 } },
2132335333 }, .{
2132435334 .required_features = .{ .sse, null, null, null },
21325 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword } },
35335 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },
2132635336 .patterns = &.{
21327 .{ .src = .{ .to_sse, .mem } },
21328 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
21329 .{ .src = .{ .to_sse, .to_sse } },
35337 .{ .src = .{ .to_sse, .mem, .none } },
35338 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
35339 .{ .src = .{ .to_sse, .to_sse, .none } },
2133035340 },
2133135341 .dst_temps = .{.{ .cc = switch (optimized) {
2133235342 false => .z_and_np,
......@@ -21338,11 +35348,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2133835348 } },
2133935349 }, .{
2134035350 .required_features = .{ .avx, null, null, null },
21341 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },
35351 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
2134235352 .patterns = &.{
21343 .{ .src = .{ .to_sse, .mem } },
21344 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
21345 .{ .src = .{ .to_sse, .to_sse } },
35353 .{ .src = .{ .to_sse, .mem, .none } },
35354 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
35355 .{ .src = .{ .to_sse, .to_sse, .none } },
2134635356 },
2134735357 .dst_temps = .{.{ .cc = switch (optimized) {
2134835358 false => .z_and_np,
......@@ -21354,11 +35364,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2135435364 } },
2135535365 }, .{
2135635366 .required_features = .{ .sse2, null, null, null },
21357 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },
35367 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
2135835368 .patterns = &.{
21359 .{ .src = .{ .to_sse, .mem } },
21360 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
21361 .{ .src = .{ .to_sse, .to_sse } },
35369 .{ .src = .{ .to_sse, .mem, .none } },
35370 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
35371 .{ .src = .{ .to_sse, .to_sse, .none } },
2136235372 },
2136335373 .dst_temps = .{.{ .cc = switch (optimized) {
2136435374 false => .z_and_np,
......@@ -21370,13 +35380,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2137035380 } },
2137135381 }, .{
2137235382 .required_features = .{ .x87, .cmov, null, null },
21373 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },
35383 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
2137435384 .patterns = &.{
21375 .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } },
35385 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
2137635386 },
2137735387 .extra_temps = .{
21378 .{ .type = .f80, .kind = .{ .reg = .st6 } },
21379 .{ .type = .f80, .kind = .{ .reg = .st7 } },
35388 .{ .type = .f64, .kind = .{ .reg = .st6 } },
35389 .{ .type = .f64, .kind = .{ .reg = .st7 } },
2138035390 .unused,
2138135391 .unused,
2138235392 .unused,
......@@ -21398,13 +35408,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2139835408 } },
2139935409 }, .{
2140035410 .required_features = .{ .sahf, .x87, null, null },
21401 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },
35411 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
2140235412 .patterns = &.{
21403 .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } },
35413 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
2140435414 },
2140535415 .extra_temps = .{
21406 .{ .type = .f80, .kind = .{ .reg = .st6 } },
21407 .{ .type = .f80, .kind = .{ .reg = .st7 } },
35416 .{ .type = .f64, .kind = .{ .reg = .st6 } },
35417 .{ .type = .f64, .kind = .{ .reg = .st7 } },
2140835418 .{ .type = .u8, .kind = .{ .reg = .ah } },
2140935419 .unused,
2141035420 .unused,
......@@ -21427,13 +35437,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2142735437 } },
2142835438 }, .{
2142935439 .required_features = .{ .x87, null, null, null },
21430 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },
35440 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
2143135441 .patterns = &.{
21432 .{ .src = .{ .to_mem, .to_mem } },
35442 .{ .src = .{ .to_mem, .to_mem, .none } },
2143335443 },
2143435444 .extra_temps = .{
21435 .{ .type = .f80, .kind = .{ .reg = .st6 } },
21436 .{ .type = .f80, .kind = .{ .reg = .st7 } },
35445 .{ .type = .f64, .kind = .{ .reg = .st6 } },
35446 .{ .type = .f64, .kind = .{ .reg = .st7 } },
2143735447 .{ .type = .u8, .kind = .{ .reg = .ah } },
2143835448 .unused,
2143935449 .unused,
......@@ -21466,11 +35476,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2146635476 } },
2146735477 }, .{
2146835478 .required_features = .{ .x87, .cmov, null, null },
21469 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },
35479 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
2147035480 .patterns = &.{
21471 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },
21472 .{ .src = .{ .mem, .to_x87 } },
21473 .{ .src = .{ .to_x87, .to_x87 } },
35481 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
35482 .{ .src = .{ .mem, .to_x87, .none } },
35483 .{ .src = .{ .to_x87, .to_x87, .none } },
2147435484 },
2147535485 .extra_temps = .{
2147635486 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -21494,9 +35504,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2149435504 } },
2149535505 }, .{
2149635506 .required_features = .{ .sahf, .x87, null, null },
21497 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },
35507 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
2149835508 .patterns = &.{
21499 .{ .src = .{ .mem, .mem } },
35509 .{ .src = .{ .mem, .mem, .none } },
2150035510 },
2150135511 .extra_temps = .{
2150235512 .{ .type = .f80, .kind = .{ .reg = .st6 } },
......@@ -21523,11 +35533,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2152335533 } },
2152435534 }, .{
2152535535 .required_features = .{ .sahf, .x87, null, null },
21526 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },
35536 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
2152735537 .patterns = &.{
21528 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },
21529 .{ .src = .{ .mem, .to_x87 } },
21530 .{ .src = .{ .to_x87, .to_x87 } },
35538 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
35539 .{ .src = .{ .mem, .to_x87, .none } },
35540 .{ .src = .{ .to_x87, .to_x87, .none } },
2153135541 },
2153235542 .extra_temps = .{
2153335543 .{ .type = .f80, .kind = .{ .reg = .st6 } },
......@@ -21553,9 +35563,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2155335563 } },
2155435564 }, .{
2155535565 .required_features = .{ .x87, null, null, null },
21556 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },
35566 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
2155735567 .patterns = &.{
21558 .{ .src = .{ .mem, .mem } },
35568 .{ .src = .{ .mem, .mem, .none } },
2155935569 },
2156035570 .extra_temps = .{
2156135571 .{ .type = .f80, .kind = .{ .reg = .st6 } },
......@@ -21592,11 +35602,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2159235602 } },
2159335603 }, .{
2159435604 .required_features = .{ .x87, null, null, null },
21595 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },
35605 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
2159635606 .patterns = &.{
21597 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },
21598 .{ .src = .{ .mem, .to_x87 } },
21599 .{ .src = .{ .to_x87, .to_x87 } },
35607 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
35608 .{ .src = .{ .mem, .to_x87, .none } },
35609 .{ .src = .{ .to_x87, .to_x87, .none } },
2160035610 },
2160135611 .extra_temps = .{
2160235612 .{ .type = .f80, .kind = .{ .reg = .st6 } },
......@@ -21631,9 +35641,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2163135641 } },
2163235642 }, .{
2163335643 .required_features = .{ .sse, null, null, null },
21634 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword } },
35644 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword }, .any },
2163535645 .patterns = &.{
21636 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },
35646 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
2163735647 },
2163835648 .call_frame = .{ .alignment = .@"16" },
2163935649 .extra_temps = .{
......@@ -21664,279 +35674,6765 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2166435674 },
2166535675 }
2166635676 },
21667 .int => res[0] = ops[0].cmpInts(cmp_op, &ops[1], cg) catch |err| break :err err,
21668 }) catch |err| switch (err) {
21669 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
21670 @tagName(air_tag),
21671 cg.typeOf(bin_op.lhs).fmt(pt),
21672 ops[0].tracking(cg),
21673 ops[1].tracking(cg),
21674 }),
21675 else => |e| return e,
21676 };
21677 if (opt_info) |*oi| {
21678 for (ops) |op| for (res) |r| {
21679 if (op.index == r.index) break;
21680 } else try op.die(cg);
21681 try cg.genCopy(.bool, oi.res[0].tracking(cg).short, res[0].tracking(cg).short, .{});
21682 try res[0].die(cg);
21683 res[0] = oi.res[0];
21684 try cg.restoreState(oi.state, &oi.deaths, .{
21685 .emit_instructions = true,
21686 .update_tracking = true,
21687 .resurrect = true,
21688 .close_scope = true,
21689 });
21690 cg.performReloc(oi.reloc);
21691 @memset(&ops, res[0]);
21692 }
21693 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
21694 },
21695
21696 .cond_br => try cg.airCondBr(inst),
21697 .switch_br => try cg.airSwitchBr(inst),
21698 .loop_switch_br => try cg.airLoopSwitchBr(inst),
21699 .switch_dispatch => try cg.airSwitchDispatch(inst),
21700 .@"try", .try_cold => try cg.airTry(inst),
21701 .try_ptr, .try_ptr_cold => try cg.airTryPtr(inst),
21702 .dbg_stmt => if (cg.debug_output != .none) {
21703 const dbg_stmt = air_datas[@intFromEnum(inst)].dbg_stmt;
21704 _ = try cg.addInst(.{
21705 .tag = .pseudo,
21706 .ops = .pseudo_dbg_line_stmt_line_column,
21707 .data = .{ .line_column = .{
21708 .line = dbg_stmt.line,
21709 .column = dbg_stmt.column,
35677 .int => res[0] = ops[0].cmpInts(cmp_op, &ops[1], cg) catch |err| break :err err,
35678 }) catch |err| switch (err) {
35679 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
35680 @tagName(air_tag),
35681 cg.typeOf(bin_op.lhs).fmt(pt),
35682 ops[0].tracking(cg),
35683 ops[1].tracking(cg),
35684 }),
35685 else => |e| return e,
35686 };
35687 if (opt_info) |*oi| {
35688 for (ops) |op| for (res) |r| {
35689 if (op.index == r.index) break;
35690 } else try op.die(cg);
35691 try cg.genCopy(.bool, oi.res[0].tracking(cg).short, res[0].tracking(cg).short, .{});
35692 try res[0].die(cg);
35693 res[0] = oi.res[0];
35694 try cg.restoreState(oi.state, &oi.deaths, .{
35695 .emit_instructions = true,
35696 .update_tracking = true,
35697 .resurrect = true,
35698 .close_scope = true,
35699 });
35700 cg.performReloc(oi.reloc);
35701 @memset(&ops, res[0]);
35702 }
35703 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
35704 },
35705
35706 .cond_br => try cg.airCondBr(inst),
35707 .switch_br => try cg.airSwitchBr(inst),
35708 .loop_switch_br => try cg.airLoopSwitchBr(inst),
35709 .switch_dispatch => try cg.airSwitchDispatch(inst),
35710 .@"try", .try_cold => try cg.airTry(inst),
35711 .try_ptr, .try_ptr_cold => try cg.airTryPtr(inst),
35712 .dbg_stmt => if (cg.debug_output != .none) {
35713 const dbg_stmt = air_datas[@intFromEnum(inst)].dbg_stmt;
35714 _ = try cg.addInst(.{
35715 .tag = .pseudo,
35716 .ops = .pseudo_dbg_line_stmt_line_column,
35717 .data = .{ .line_column = .{
35718 .line = dbg_stmt.line,
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", ._, ._, ._ },
2171042058 } },
21711 });
21712 },
21713 .dbg_empty_stmt => if (cg.debug_output != .none) {
21714 if (cg.mir_instructions.len > 0) {
21715 const prev_mir_op = &cg.mir_instructions.items(.ops)[cg.mir_instructions.len - 1];
21716 if (prev_mir_op.* == .pseudo_dbg_line_line_column)
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 },
42059 }, .{
42060 .required_features = .{ .sse4_1, null, null, null },
42061 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
42062 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
42063 .patterns = &.{
42064 .{ .src = .{ .to_mem, .none, .none } },
2175642065 },
21757 }
21758 try cg.genLocalDebugInfo(inst, ops[0].tracking(cg).short);
21759 try ops[0].die(cg);
21760 },
21761 .is_null_ptr => if (use_old) try cg.airIsNullPtr(inst) else {
21762 const un_op = air_datas[@intFromEnum(inst)].un_op;
21763 const opt_ty = cg.typeOf(un_op).childType(zcu);
21764 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);
21765 const opt_child_ty = opt_ty.optionalChild(zcu);
21766 const opt_child_abi_size: u31 = @intCast(opt_child_ty.abiSize(zcu));
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)),
42066 .extra_temps = .{
42067 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42068 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
42069 .unused,
42070 .unused,
42071 .unused,
42072 .unused,
42073 .unused,
42074 .unused,
42075 .unused,
2185342076 },
21854 }, cg);
21855 try res.finish(inst, &.{ty_op.operand}, &ops, cg);
21856 },
21857 .ret => try cg.airRet(inst, false),
21858 .ret_safe => try cg.airRet(inst, true),
21859 .ret_load => try cg.airRetLoad(inst),
21860 .store, .store_safe => |air_tag| if (use_old) try cg.airStore(inst, switch (air_tag) {
21861 else => unreachable,
21862 .store => false,
21863 .store_safe => true,
21864 }) else fallback: {
21865 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
21866 const ptr_ty = cg.typeOf(bin_op.lhs);
21867 const ptr_info = ptr_ty.ptrInfo(zcu);
21868 const val_ty = cg.typeOf(bin_op.rhs);
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)),
42077 .dst_temps = .{.mem},
42078 .clobbers = .{ .eflags = true },
42079 .each = .{ .once = &.{
42080 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
42081 .{ .@"0:", .p_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
42082 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
42083 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
42084 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
42085 } },
42086 }, .{
42087 .required_features = .{ .@"64bit", null, null, null },
42088 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
42089 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
42090 .patterns = &.{
42091 .{ .src = .{ .to_mem, .none, .none } },
2188242092 },
21883 .safe = switch (air_tag) {
21884 else => unreachable,
21885 .store => false,
21886 .store_safe => true,
42093 .extra_temps = .{
42094 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42095 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
42096 .unused,
42097 .unused,
42098 .unused,
42099 .unused,
42100 .unused,
42101 .unused,
42102 .unused,
2188742103 },
21888 }, cg);
21889 for (ops) |op| try op.die(cg);
21890 },
21891 .unreach => {},
21892 .fptrunc => |air_tag| if (use_old) try cg.airFptrunc(inst) else {
21893 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
21894 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
21895 var res: [1]Temp = undefined;
21896 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
21897 .required_features = .{ .f16c, null, null, null },
21898 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
21899 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
42104 .dst_temps = .{.mem},
42105 .clobbers = .{ .eflags = true },
42106 .each = .{ .once = &.{
42107 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
42108 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
42109 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
42110 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
42111 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
42112 } },
42113 }, .{
42114 .required_features = .{ .@"64bit", null, null, null },
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 } }},
2190042383 .patterns = &.{
21901 .{ .src = .{ .to_sse, .none } },
42384 .{ .src = .{ .to_mut_sse, .none, .none } },
2190242385 },
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 }},
2190442398 .each = .{ .once = &.{
21905 .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ },
42399 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
42400 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
2190642401 } },
2190742402 }, .{
21908 .required_features = .{ .f16c, null, null, null },
21909 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
21910 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .word } }},
42403 .required_features = .{ .avx2, null, null, null },
42404 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
42405 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},
2191142406 .patterns = &.{
21912 .{ .src = .{ .to_sse, .none } },
42407 .{ .src = .{ .mem, .none, .none } },
42408 .{ .src = .{ .to_sse, .none, .none } },
2191342409 },
2191442410 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2191542411 .each = .{ .once = &.{
21916 .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ },
42412 .{ ._, .vp_q, .movsxd, .dst0y, .src0x, ._, ._ },
2191742413 } },
2191842414 }, .{
21919 .required_features = .{ .f16c, null, null, null },
21920 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any },
21921 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .word } }},
42415 .required_features = .{ .avx2, null, null, null },
42416 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
42417 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
2192242418 .patterns = &.{
21923 .{ .src = .{ .to_sse, .none } },
42419 .{ .src = .{ .mem, .none, .none } },
42420 .{ .src = .{ .to_sse, .none, .none } },
2192442421 },
2192542422 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2192642423 .each = .{ .once = &.{
21927 .{ ._, .v_, .cvtps2ph, .dst0x, .src0y, .rm(.{}), ._ },
42424 .{ ._, .vp_q, .movzxd, .dst0y, .src0x, ._, ._ },
2192842425 } },
2192942426 }, .{
21930 .required_features = .{ .sse, null, null, null },
21931 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
21932 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
42427 .required_features = .{ .avx2, null, null, null },
42428 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
42429 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},
2193342430 .patterns = &.{
21934 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
42431 .{ .src = .{ .to_mem, .none, .none } },
2193542432 },
21936 .call_frame = .{ .alignment = .@"16" },
2193742433 .extra_temps = .{
21938 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
21939 .unused,
42434 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42435 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
2194042436 .unused,
2194142437 .unused,
2194242438 .unused,
......@@ -21945,21 +42441,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2194542441 .unused,
2194642442 .unused,
2194742443 },
21948 .dst_temps = .{.{ .ref = .src0 }},
21949 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
42444 .dst_temps = .{.mem},
42445 .clobbers = .{ .eflags = true },
2195042446 .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", ._, ._, ._ },
2195242452 } },
2195342453 }, .{
21954 .required_features = .{ .f16c, null, null, null },
21955 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },
21956 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }},
42454 .required_features = .{ .avx2, null, null, null },
42455 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
42456 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }},
2195742457 .patterns = &.{
21958 .{ .src = .{ .to_mem, .none } },
42458 .{ .src = .{ .to_mem, .none, .none } },
2195942459 },
2196042460 .extra_temps = .{
2196142461 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
21962 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
42462 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
2196342463 .unused,
2196442464 .unused,
2196542465 .unused,
......@@ -21971,24 +42471,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2197142471 .dst_temps = .{.mem},
2197242472 .clobbers = .{ .eflags = true },
2197342473 .each = .{ .once = &.{
21974 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_size), ._, ._ },
21975 .{ .@"0:", .v_ps, .mova, .tmp1y, .memsia(.src0y, .@"2", .tmp0, .add_size), ._, ._ },
21976 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_size), .tmp1y, .rm(.{}), ._ },
42474 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
42475 .{ .@"0:", .vp_q, .movzxd, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
42476 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
2197742477 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2197842478 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2197942479 } },
2198042480 }, .{
2198142481 .required_features = .{ .avx, null, null, null },
21982 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
21983 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
42482 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
42483 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
2198442484 .patterns = &.{
21985 .{ .src = .{ .to_mem, .none } },
42485 .{ .src = .{ .to_mem, .none, .none } },
2198642486 },
21987 .call_frame = .{ .alignment = .@"16" },
2198842487 .extra_temps = .{
2198942488 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
21990 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
21991 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
42489 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
42490 .unused,
2199242491 .unused,
2199342492 .unused,
2199442493 .unused,
......@@ -21997,27 +42496,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2199742496 .unused,
2199842497 },
2199942498 .dst_temps = .{.mem},
22000 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
42499 .clobbers = .{ .eflags = true },
2200142500 .each = .{ .once = &.{
22002 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22003 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
22004 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22005 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
22006 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
42501 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
42502 .{ .@"0:", .vp_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
42503 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
42504 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2200742505 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2200842506 } },
2200942507 }, .{
22010 .required_features = .{ .sse4_1, null, null, null },
22011 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
22012 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
42508 .required_features = .{ .avx, null, null, null },
42509 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
42510 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
2201342511 .patterns = &.{
22014 .{ .src = .{ .to_mem, .none } },
42512 .{ .src = .{ .to_mem, .none, .none } },
2201542513 },
22016 .call_frame = .{ .alignment = .@"16" },
2201742514 .extra_temps = .{
2201842515 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22019 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
22020 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
42516 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
42517 .unused,
2202142518 .unused,
2202242519 .unused,
2202342520 .unused,
......@@ -22026,28 +42523,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2202642523 .unused,
2202742524 },
2202842525 .dst_temps = .{.mem},
22029 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
42526 .clobbers = .{ .eflags = true },
2203042527 .each = .{ .once = &.{
22031 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22032 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
22033 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22034 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
22035 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
42528 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
42529 .{ .@"0:", .vp_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
42530 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
42531 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2203642532 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2203742533 } },
2203842534 }, .{
22039 .required_features = .{ .sse2, null, null, null },
22040 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
22041 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
42535 .required_features = .{ .sse4_1, null, null, null },
42536 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
42537 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
2204242538 .patterns = &.{
22043 .{ .src = .{ .to_mem, .none } },
42539 .{ .src = .{ .to_mem, .none, .none } },
2204442540 },
22045 .call_frame = .{ .alignment = .@"16" },
2204642541 .extra_temps = .{
2204742542 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22048 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
22049 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
22050 .{ .type = .f16, .kind = .{ .reg = .ax } },
42543 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
42544 .unused,
42545 .unused,
2205142546 .unused,
2205242547 .unused,
2205342548 .unused,
......@@ -22055,58 +42550,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2205542550 .unused,
2205642551 },
2205742552 .dst_temps = .{.mem},
22058 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
42553 .clobbers = .{ .eflags = true },
2205942554 .each = .{ .once = &.{
22060 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22061 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
22062 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22063 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
22064 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
22065 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
42555 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
42556 .{ .@"0:", .p_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
42557 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
42558 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2206642559 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2206742560 } },
2206842561 }, .{
22069 .required_features = .{ .sse, null, null, null },
22070 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
22071 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
42562 .required_features = .{ .sse4_1, null, null, null },
42563 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
42564 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
2207242565 .patterns = &.{
22073 .{ .src = .{ .to_mem, .none } },
42566 .{ .src = .{ .to_mem, .none, .none } },
2207442567 },
22075 .call_frame = .{ .alignment = .@"16" },
2207642568 .extra_temps = .{
2207742569 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22078 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
22079 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
22080 .{ .type = .f32, .kind = .mem },
22081 .{ .type = .f16, .kind = .{ .reg = .ax } },
42570 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
42571 .unused,
42572 .unused,
42573 .unused,
2208242574 .unused,
2208342575 .unused,
2208442576 .unused,
2208542577 .unused,
2208642578 },
2208742579 .dst_temps = .{.mem},
22088 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
42580 .clobbers = .{ .eflags = true },
2208942581 .each = .{ .once = &.{
22090 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22091 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
22092 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22093 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },
22094 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },
22095 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
22096 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
42582 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
42583 .{ .@"0:", .p_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
42584 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
42585 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2209742586 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2209842587 } },
2209942588 }, .{
22100 .required_features = .{ .sse, null, null, null },
22101 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22102 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
42589 .required_features = .{ .@"64bit", null, null, null },
42590 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
42591 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
2210342592 .patterns = &.{
22104 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
42593 .{ .src = .{ .to_mem, .none, .none } },
2210542594 },
22106 .call_frame = .{ .alignment = .@"16" },
2210742595 .extra_temps = .{
22108 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
22109 .unused,
42596 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42597 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
2211042598 .unused,
2211142599 .unused,
2211242600 .unused,
......@@ -22115,23 +42603,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2211542603 .unused,
2211642604 .unused,
2211742605 },
22118 .dst_temps = .{.{ .ref = .src0 }},
22119 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
42606 .dst_temps = .{.mem},
42607 .clobbers = .{ .eflags = true },
2212042608 .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", ._, ._, ._ },
2212242614 } },
2212342615 }, .{
22124 .required_features = .{ .avx, null, null, null },
22125 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22126 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
42616 .required_features = .{ .@"64bit", null, null, null },
42617 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
42618 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
2212742619 .patterns = &.{
22128 .{ .src = .{ .to_mem, .none } },
42620 .{ .src = .{ .to_mem, .none, .none } },
2212942621 },
22130 .call_frame = .{ .alignment = .@"16" },
2213142622 .extra_temps = .{
2213242623 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22133 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
22134 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
42624 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
42625 .unused,
2213542626 .unused,
2213642627 .unused,
2213742628 .unused,
......@@ -22140,27 +42631,77 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2214042631 .unused,
2214142632 },
2214242633 .dst_temps = .{.mem},
22143 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
42634 .clobbers = .{ .eflags = true },
2214442635 .each = .{ .once = &.{
22145 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22146 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
22147 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22148 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
22149 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
42636 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
42637 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
42638 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
42639 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2215042640 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2215142641 } },
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 } },
2215242668 }, .{
2215342669 .required_features = .{ .sse4_1, null, null, null },
22154 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22155 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
42670 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
42671 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
2215642672 .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 } },
2215842700 },
22159 .call_frame = .{ .alignment = .@"16" },
2216042701 .extra_temps = .{
22161 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22162 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
22163 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
42702 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
42703 .unused,
42704 .unused,
2216442705 .unused,
2216542706 .unused,
2216642707 .unused,
......@@ -22168,29 +42709,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2216842709 .unused,
2216942710 .unused,
2217042711 },
22171 .dst_temps = .{.mem},
22172 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
42712 .dst_temps = .{.{ .ref = .src0 }},
2217342713 .each = .{ .once = &.{
22174 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22175 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
22176 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22177 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
22178 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22179 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
42714 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
42715 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },
42716 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
42717 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },
42718 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
2218042719 } },
2218142720 }, .{
2218242721 .required_features = .{ .sse2, null, null, null },
22183 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22184 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
42722 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
42723 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
2218542724 .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 } },
2218742750 },
22188 .call_frame = .{ .alignment = .@"16" },
2218942751 .extra_temps = .{
2219042752 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22191 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
22192 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
22193 .{ .type = .f16, .kind = .{ .reg = .ax } },
42753 .{ .type = .usize, .kind = .{ .reg = .rdi } },
42754 .{ .type = .i64, .kind = .{ .reg = .rax } },
42755 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2219442756 .unused,
2219542757 .unused,
2219642758 .unused,
......@@ -22198,288 +42760,506 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2219842760 .unused,
2219942761 },
2220042762 .dst_temps = .{.mem},
22201 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
42763 .clobbers = .{ .eflags = true },
2220242764 .each = .{ .once = &.{
22203 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22204 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
22205 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22206 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
22207 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
22208 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
42765 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
42766 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
42767 .{ .@"0:", ._, .movsxd, .tmp2q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
42768 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
42769 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
42770 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
42771 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
42772 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2220942773 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2221042774 } },
2221142775 }, .{
22212 .required_features = .{ .sse, null, null, null },
22213 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22214 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
42776 .required_features = .{ .@"64bit", null, null, null },
42777 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
42778 .dst_constraints = .{.any_scalar_int},
2221542779 .patterns = &.{
22216 .{ .src = .{ .to_mem, .none } },
42780 .{ .src = .{ .to_mem, .none, .none } },
2221742781 },
22218 .call_frame = .{ .alignment = .@"16" },
2221942782 .extra_temps = .{
2222042783 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22221 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
22222 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
22223 .{ .type = .f32, .kind = .mem },
22224 .{ .type = .f16, .kind = .{ .reg = .ax } },
42784 .{ .type = .usize, .kind = .{ .reg = .rdi } },
42785 .{ .type = .u64, .kind = .{ .reg = .rax } },
42786 .{ .type = .u32, .kind = .{ .reg = .ecx } },
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 } },
2222542919 .unused,
2222642920 .unused,
2222742921 .unused,
2222842922 .unused,
2222942923 },
22230 .dst_temps = .{.mem},
22231 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
42924 .dst_temps = .{.mem},
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 }},
2223243056 .each = .{ .once = &.{
22233 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
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", ._, ._, ._ },
43057 .{ ._, ._, .movsx, .dst0d, .mem(.src0w), ._, ._ },
2224243058 } },
2224343059 }, .{
22244 .required_features = .{ .avx, null, null, null },
22245 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22246 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
43060 .src_constraints = .{ .any_unsigned_int, .any, .any },
43061 .dst_constraints = .{.{ .exact_unsigned_int = 16 }},
2224743062 .patterns = &.{
22248 .{ .src = .{ .mem, .none } },
43063 .{ .src = .{ .to_mem, .none, .none } },
2224943064 },
22250 .dst_temps = .{.{ .rc = .sse }},
43065 .dst_temps = .{.{ .rc = .general_purpose }},
2225143066 .each = .{ .once = &.{
22252 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
22253 .{ ._, .v_ss, .cvtsd2, .dst0x, .dst0x, .src0q, ._ },
43067 .{ ._, ._, .movzx, .dst0d, .mem(.src0w), ._, ._ },
2225443068 } },
2225543069 }, .{
22256 .required_features = .{ .avx, null, null, null },
22257 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22258 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
43070 .required_features = .{ .fast_imm16, null, null, null },
43071 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
43072 .dst_constraints = .{.{ .unsigned_int = .word }},
2225943073 .patterns = &.{
22260 .{ .src = .{ .to_sse, .none } },
43074 .{ .src = .{ .to_mut_gpr, .none, .none } },
2226143075 },
22262 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
43076 .dst_temps = .{.{ .ref = .src0 }},
43077 .clobbers = .{ .eflags = true },
2226343078 .each = .{ .once = &.{
22264 .{ ._, .v_ss, .cvtsd2, .dst0x, .src0x, .src0q, ._ },
43079 .{ ._, ._, .@"and", .dst0w, .sa(.dst0, .add_umax), ._, ._ },
2226543080 } },
2226643081 }, .{
22267 .required_features = .{ .sse2, null, null, null },
22268 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22269 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
43082 .required_features = .{ .fast_imm16, null, null, null },
43083 .src_constraints = .{ .any_unsigned_int, .any, .any },
43084 .dst_constraints = .{.{ .unsigned_int = .word }},
2227043085 .patterns = &.{
22271 .{ .src = .{ .mem, .none } },
22272 .{ .src = .{ .to_sse, .none } },
43086 .{ .src = .{ .to_mem, .none, .none } },
2227343087 },
22274 .dst_temps = .{.{ .rc = .sse }},
43088 .dst_temps = .{.{ .rc = .general_purpose }},
43089 .clobbers = .{ .eflags = true },
2227543090 .each = .{ .once = &.{
22276 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
22277 .{ ._, ._ss, .cvtsd2, .dst0x, .src0q, ._, ._ },
43091 .{ ._, ._, .movzx, .dst0d, .mem(.src0w), ._, ._ },
43092 .{ ._, ._, .@"and", .dst0w, .sa(.dst0, .add_umax), ._, ._ },
2227843093 } },
2227943094 }, .{
22280 .required_features = .{ .x87, null, null, null },
22281 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22282 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
43095 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
43096 .dst_constraints = .{.{ .exact_int = 32 }},
2228343097 .patterns = &.{
22284 .{ .src = .{ .to_mem, .none } },
43098 .{ .src = .{ .to_mut_gpr, .none, .none } },
2228543099 },
22286 .extra_temps = .{
22287 .{ .type = .f80, .kind = .{ .reg = .st7 } },
22288 .unused,
22289 .unused,
22290 .unused,
22291 .unused,
22292 .unused,
22293 .unused,
22294 .unused,
22295 .unused,
43100 .dst_temps = .{.{ .ref = .src0 }},
43101 .each = .{ .once = &.{} },
43102 }, .{
43103 .src_constraints = .{ .any_int, .any, .any },
43104 .dst_constraints = .{.{ .exact_int = 32 }},
43105 .patterns = &.{
43106 .{ .src = .{ .to_mem, .none, .none } },
2229643107 },
22297 .dst_temps = .{.mem},
43108 .dst_temps = .{.{ .rc = .general_purpose }},
2229843109 .each = .{ .once = &.{
22299 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
22300 .{ ._, .f_p, .st, .dst0d, ._, ._, ._ },
43110 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
2230143111 } },
2230243112 }, .{
22303 .required_features = .{ .avx, null, null, null },
22304 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
22305 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .dword } }},
43113 .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any },
43114 .dst_constraints = .{.{ .signed_int = .dword }},
2230643115 .patterns = &.{
22307 .{ .src = .{ .mem, .none } },
22308 .{ .src = .{ .to_sse, .none } },
43116 .{ .src = .{ .to_mut_gpr, .none, .none } },
2230943117 },
22310 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
43118 .dst_temps = .{.{ .ref = .src0 }},
43119 .clobbers = .{ .eflags = true },
2231143120 .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), ._, ._ },
2231343123 } },
2231443124 }, .{
22315 .required_features = .{ .sse2, null, null, null },
22316 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
22317 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .dword } }},
43125 .src_constraints = .{ .any_signed_int, .any, .any },
43126 .dst_constraints = .{.{ .signed_int = .dword }},
2231843127 .patterns = &.{
22319 .{ .src = .{ .mem, .none } },
22320 .{ .src = .{ .to_sse, .none } },
43128 .{ .src = .{ .to_mem, .none, .none } },
2232143129 },
22322 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
43130 .dst_temps = .{.{ .rc = .general_purpose }},
43131 .clobbers = .{ .eflags = true },
2232343132 .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), ._, ._ },
2232543136 } },
2232643137 }, .{
22327 .required_features = .{ .avx, null, null, null },
22328 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },
22329 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }},
43138 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
43139 .dst_constraints = .{.{ .unsigned_int = .dword }},
2233043140 .patterns = &.{
22331 .{ .src = .{ .mem, .none } },
22332 .{ .src = .{ .to_sse, .none } },
43141 .{ .src = .{ .to_mut_gpr, .none, .none } },
2233343142 },
22334 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
43143 .dst_temps = .{.{ .ref = .src0 }},
43144 .clobbers = .{ .eflags = true },
2233543145 .each = .{ .once = &.{
22336 .{ ._, .v_ps, .cvtpd2, .dst0x, .src0y, ._, ._ },
43146 .{ ._, ._, .@"and", .dst0d, .sa(.dst0, .add_umax), ._, ._ },
2233743147 } },
2233843148 }, .{
22339 .required_features = .{ .avx, null, null, null },
22340 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },
22341 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }},
43149 .src_constraints = .{ .any_unsigned_int, .any, .any },
43150 .dst_constraints = .{.{ .unsigned_int = .dword }},
2234243151 .patterns = &.{
22343 .{ .src = .{ .to_mem, .none } },
43152 .{ .src = .{ .to_mem, .none, .none } },
2234443153 },
22345 .extra_temps = .{
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},
43154 .dst_temps = .{.{ .rc = .general_purpose }},
2235743155 .clobbers = .{ .eflags = true },
2235843156 .each = .{ .once = &.{
22359 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_size), ._, ._ },
22360 .{ .@"0:", .v_ps, .cvtpd2, .tmp1x, .memsia(.src0y, .@"2", .tmp0, .add_size), ._, ._ },
22361 .{ ._, .v_ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
22362 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
22363 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
43157 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
43158 .{ ._, ._, .@"and", .dst0d, .sa(.dst0, .add_umax), ._, ._ },
2236443159 } },
2236543160 }, .{
22366 .required_features = .{ .sse2, null, null, null },
22367 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },
22368 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }},
43161 .required_features = .{ .@"64bit", null, null, null },
43162 .src_constraints = .{ .any_int, .any, .any },
43163 .dst_constraints = .{.{ .exact_int = 64 }},
2236943164 .patterns = &.{
22370 .{ .src = .{ .to_mem, .none } },
43165 .{ .src = .{ .to_mem, .none, .none } },
2237143166 },
22372 .extra_temps = .{
22373 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22374 .{ .type = .vector_2_f32, .kind = .{ .rc = .sse } },
22375 .unused,
22376 .unused,
22377 .unused,
22378 .unused,
22379 .unused,
22380 .unused,
22381 .unused,
43167 .dst_temps = .{.{ .rc = .general_purpose }},
43168 .each = .{ .once = &.{
43169 .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },
43170 } },
43171 }, .{
43172 .required_features = .{ .@"64bit", null, null, null },
43173 .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any },
43174 .dst_constraints = .{.{ .signed_int = .qword }},
43175 .patterns = &.{
43176 .{ .src = .{ .to_mut_gpr, .none, .none } },
2238243177 },
22383 .dst_temps = .{.mem},
43178 .dst_temps = .{.{ .ref = .src0 }},
2238443179 .clobbers = .{ .eflags = true },
2238543180 .each = .{ .once = &.{
22386 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_size), ._, ._ },
22387 .{ .@"0:", ._ps, .cvtpd2, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_size), ._, ._ },
22388 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1x, ._, ._ },
22389 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
22390 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
43181 .{ ._, ._l, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
43182 .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
2239143183 } },
2239243184 }, .{
22393 .required_features = .{ .x87, null, null, null },
22394 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22395 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
43185 .required_features = .{ .@"64bit", null, null, null },
43186 .src_constraints = .{ .any_signed_int, .any, .any },
43187 .dst_constraints = .{.{ .signed_int = .qword }},
2239643188 .patterns = &.{
22397 .{ .src = .{ .to_mem, .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,
43189 .{ .src = .{ .to_mem, .none, .none } },
2240943190 },
22410 .dst_temps = .{.mem},
43191 .dst_temps = .{.{ .rc = .general_purpose }},
2241143192 .clobbers = .{ .eflags = true },
2241243193 .each = .{ .once = &.{
22413 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22414 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
22415 .{ ._, .f_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
22416 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
22417 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
43194 .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },
43195 .{ ._, ._l, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
43196 .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
2241843197 } },
2241943198 }, .{
22420 .required_features = .{ .avx, null, null, null },
22421 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22422 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
43199 .required_features = .{ .@"64bit", .bmi2, null, null },
43200 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
43201 .dst_constraints = .{.{ .unsigned_int = .qword }},
2242343202 .patterns = &.{
22424 .{ .src = .{ .to_mem, .none } },
43203 .{ .src = .{ .mem, .none, .none } },
43204 .{ .src = .{ .to_gpr, .none, .none } },
2242543205 },
22426 .call_frame = .{ .size = 16, .alignment = .@"16" },
22427 .extra_temps = .{
22428 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
22429 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
22430 .unused,
22431 .unused,
22432 .unused,
22433 .unused,
22434 .unused,
22435 .unused,
22436 .unused,
43206 .dst_temps = .{.{ .rc = .general_purpose }},
43207 .clobbers = .{ .eflags = true },
43208 .each = .{ .once = &.{
43209 .{ ._, ._, .mov, .dst0d, .sa(.dst0, .add_bit_size), ._, ._ },
43210 .{ ._, ._, .bzhi, .dst0q, .src0q, .dst0q, ._ },
43211 } },
43212 }, .{
43213 .required_features = .{ .@"64bit", .bmi2, null, null },
43214 .src_constraints = .{ .any_unsigned_int, .any, .any },
43215 .dst_constraints = .{.{ .unsigned_int = .qword }},
43216 .patterns = &.{
43217 .{ .src = .{ .to_mem, .none, .none } },
2243743218 },
22438 .dst_temps = .{.{ .reg = .xmm0 }},
22439 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43219 .dst_temps = .{.{ .rc = .general_purpose }},
43220 .clobbers = .{ .eflags = true },
2244043221 .each = .{ .once = &.{
22441 .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
22442 .{ ._, .v_dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
22443 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
43222 .{ ._, ._, .mov, .dst0d, .sa(.dst0, .add_bit_size), ._, ._ },
43223 .{ ._, ._, .bzhi, .dst0q, .mem(.src0q), .dst0q, ._ },
2244443224 } },
2244543225 }, .{
22446 .required_features = .{ .sse2, null, null, null },
22447 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22448 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
43226 .required_features = .{ .@"64bit", null, null, null },
43227 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
43228 .dst_constraints = .{.{ .unsigned_int = .qword }},
2244943229 .patterns = &.{
22450 .{ .src = .{ .to_mem, .none } },
43230 .{ .src = .{ .mem, .none, .none } },
43231 .{ .src = .{ .to_gpr, .none, .none } },
2245143232 },
22452 .call_frame = .{ .size = 16, .alignment = .@"16" },
22453 .extra_temps = .{
22454 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
22455 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
22456 .unused,
22457 .unused,
22458 .unused,
22459 .unused,
22460 .unused,
22461 .unused,
22462 .unused,
43233 .dst_temps = .{.{ .rc = .general_purpose }},
43234 .clobbers = .{ .eflags = true },
43235 .each = .{ .once = &.{
43236 .{ ._, ._, .mov, .dst0q, .ua(.dst0, .add_umax), ._, ._ },
43237 .{ ._, ._, .@"and", .dst0q, .src0q, ._, ._ },
43238 } },
43239 }, .{
43240 .required_features = .{ .@"64bit", null, null, null },
43241 .src_constraints = .{ .any_unsigned_int, .any, .any },
43242 .dst_constraints = .{.{ .unsigned_int = .qword }},
43243 .patterns = &.{
43244 .{ .src = .{ .to_mem, .none, .none } },
2246343245 },
22464 .dst_temps = .{.{ .reg = .xmm0 }},
22465 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43246 .dst_temps = .{.{ .rc = .general_purpose }},
43247 .clobbers = .{ .eflags = true },
2246643248 .each = .{ .once = &.{
22467 .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
22468 .{ ._, ._dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
22469 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
43249 .{ ._, ._, .mov, .dst0q, .ua(.dst0, .add_umax), ._, ._ },
43250 .{ ._, ._, .@"and", .dst0q, .mem(.src0q), ._, ._ },
2247043251 } },
2247143252 }, .{
22472 .required_features = .{ .sse, null, null, null },
22473 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22474 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
43253 .required_features = .{ .@"64bit", null, null, null },
43254 .src_constraints = .{ .any_int, .any, .any },
43255 .dst_constraints = .{.{ .exact_remainder_int = .{ .of = .xword, .is = .xword } }},
2247543256 .patterns = &.{
22476 .{ .src = .{ .to_mem, .none } },
43257 .{ .src = .{ .to_mem, .none, .none } },
2247743258 },
22478 .call_frame = .{ .size = 16, .alignment = .@"16" },
2247943259 .extra_temps = .{
22480 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
22481 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
22482 .unused,
43260 .{ .type = .usize, .kind = .{ .reg = .rsi } },
43261 .{ .type = .usize, .kind = .{ .reg = .rdi } },
43262 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2248343263 .unused,
2248443264 .unused,
2248543265 .unused,
......@@ -22487,26 +43267,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2248743267 .unused,
2248843268 .unused,
2248943269 },
22490 .dst_temps = .{.{ .reg = .xmm0 }},
22491 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43270 .dst_temps = .{.mem},
2249243271 .each = .{ .once = &.{
22493 .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ },
22494 .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ },
22495 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
43272 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
43273 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
43274 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ },
43275 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
2249643276 } },
2249743277 }, .{
22498 .required_features = .{ .avx, null, null, null },
22499 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22500 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
43278 .required_features = .{ .@"64bit", null, null, null },
43279 .src_constraints = .{ .any_signed_int, .any, .any },
43280 .dst_constraints = .{.{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
2250143281 .patterns = &.{
22502 .{ .src = .{ .to_mem, .none } },
43282 .{ .src = .{ .to_mem, .none, .none } },
2250343283 },
22504 .call_frame = .{ .size = 16, .alignment = .@"16" },
2250543284 .extra_temps = .{
22506 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22507 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
22508 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
22509 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
43285 .{ .type = .usize, .kind = .{ .reg = .rsi } },
43286 .{ .type = .usize, .kind = .{ .reg = .rdi } },
43287 .{ .type = .u32, .kind = .{ .reg = .ecx } },
43288 .unused,
2251043289 .unused,
2251143290 .unused,
2251243291 .unused,
......@@ -22514,29 +43293,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2251443293 .unused,
2251543294 },
2251643295 .dst_temps = .{.mem},
22517 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43296 .clobbers = .{ .eflags = true },
2251843297 .each = .{ .once = &.{
22519 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22520 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
22521 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
22522 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
22523 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
22524 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22525 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
43298 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
43299 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
43300 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
43301 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
43302 .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },
43303 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
43304 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
43305 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
2252643306 } },
2252743307 }, .{
22528 .required_features = .{ .sse4_1, null, null, null },
22529 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22530 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
43308 .required_features = .{ .@"64bit", null, null, null },
43309 .src_constraints = .{ .any_signed_int, .any, .any },
43310 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .xword, .is = .qword } }},
2253143311 .patterns = &.{
22532 .{ .src = .{ .to_mem, .none } },
43312 .{ .src = .{ .to_mem, .none, .none } },
2253343313 },
22534 .call_frame = .{ .size = 16, .alignment = .@"16" },
2253543314 .extra_temps = .{
22536 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22537 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
22538 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
22539 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
43315 .{ .type = .usize, .kind = .{ .reg = .rsi } },
43316 .{ .type = .usize, .kind = .{ .reg = .rdi } },
43317 .{ .type = .u32, .kind = .{ .reg = .ecx } },
43318 .unused,
2254043319 .unused,
2254143320 .unused,
2254243321 .unused,
......@@ -22544,91 +43323,86 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2254443323 .unused,
2254543324 },
2254643325 .dst_temps = .{.mem},
22547 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43326 .clobbers = .{ .eflags = true },
2254843327 .each = .{ .once = &.{
22549 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22550 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
22551 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
22552 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
22553 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
22554 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22555 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
43328 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
43329 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
43330 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
43331 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
43332 .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },
43333 .{ ._, ._l, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
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, ._, ._ },
2255643338 } },
2255743339 }, .{
22558 .required_features = .{ .sse2, null, null, null },
22559 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22560 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
43340 .required_features = .{ .@"64bit", null, null, null },
43341 .src_constraints = .{ .any_signed_int, .any, .any },
43342 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .xword, .is = .xword } }},
2256143343 .patterns = &.{
22562 .{ .src = .{ .to_mem, .none } },
43344 .{ .src = .{ .to_mem, .none, .none } },
2256343345 },
22564 .call_frame = .{ .size = 16, .alignment = .@"16" },
2256543346 .extra_temps = .{
22566 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22567 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
22568 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
22569 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
22570 .{ .type = .f16, .kind = .{ .reg = .ax } },
43347 .{ .type = .usize, .kind = .{ .reg = .rsi } },
43348 .{ .type = .usize, .kind = .{ .reg = .rdi } },
43349 .{ .type = .u32, .kind = .{ .reg = .ecx } },
43350 .unused,
43351 .unused,
2257143352 .unused,
2257243353 .unused,
2257343354 .unused,
2257443355 .unused,
2257543356 },
2257643357 .dst_temps = .{.mem},
22577 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43358 .clobbers = .{ .eflags = true },
2257843359 .each = .{ .once = &.{
22579 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22580 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
22581 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
22582 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
22583 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
22584 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
22585 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22586 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
43360 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
43361 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
43362 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
43363 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
43364 .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ },
43365 .{ ._, ._l, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
43366 .{ ._, ._r, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
43367 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
2258743368 } },
2258843369 }, .{
22589 .required_features = .{ .sse, null, null, null },
22590 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22591 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
43370 .required_features = .{ .@"64bit", null, null, null },
43371 .src_constraints = .{ .any_unsigned_int, .any, .any },
43372 .dst_constraints = .{.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
2259243373 .patterns = &.{
22593 .{ .src = .{ .to_mem, .none } },
43374 .{ .src = .{ .to_mem, .none, .none } },
2259443375 },
22595 .call_frame = .{ .size = 16, .alignment = .@"16" },
2259643376 .extra_temps = .{
22597 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22598 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
22599 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
22600 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
22601 .{ .type = .f16, .kind = .{ .reg = .ax } },
43377 .{ .type = .usize, .kind = .{ .reg = .rsi } },
43378 .{ .type = .usize, .kind = .{ .reg = .rdi } },
43379 .{ .type = .u32, .kind = .{ .reg = .ecx } },
43380 .unused,
43381 .unused,
2260243382 .unused,
2260343383 .unused,
2260443384 .unused,
2260543385 .unused,
2260643386 },
2260743387 .dst_temps = .{.mem},
22608 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2260943388 .each = .{ .once = &.{
22610 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22611 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
22612 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
22613 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
22614 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp1x, ._, ._ },
22615 .{ ._, ._, .mov, .tmp4d, .mem(.tmp2d), ._, ._ },
22616 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
22617 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22618 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
43389 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
43390 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
43391 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
43392 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
43393 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
2261943394 } },
2262043395 }, .{
22621 .required_features = .{ .x87, null, null, null },
22622 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22623 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
43396 .required_features = .{ .@"64bit", .bmi2, null, null },
43397 .src_constraints = .{ .any_unsigned_int, .any, .any },
43398 .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
2262443399 .patterns = &.{
22625 .{ .src = .{ .mem, .none } },
22626 .{ .src = .{ .to_x87, .none } },
43400 .{ .src = .{ .to_mem, .none, .none } },
2262743401 },
2262843402 .extra_temps = .{
22629 .{ .type = .f80, .kind = .{ .reg = .st7 } },
22630 .unused,
22631 .unused,
43403 .{ .type = .usize, .kind = .{ .reg = .rsi } },
43404 .{ .type = .usize, .kind = .{ .reg = .rdi } },
43405 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2263243406 .unused,
2263343407 .unused,
2263443408 .unused,
......@@ -22637,21 +43411,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2263743411 .unused,
2263843412 },
2263943413 .dst_temps = .{.mem},
43414 .clobbers = .{ .eflags = true },
2264043415 .each = .{ .once = &.{
22641 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
22642 .{ ._, .f_p, .st, .dst0d, ._, ._, ._ },
43416 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
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), ._, ._ },
2264343424 } },
2264443425 }, .{
22645 .required_features = .{ .x87, null, null, null },
22646 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22647 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
43426 .required_features = .{ .@"64bit", .bmi2, null, null },
43427 .src_constraints = .{ .any_unsigned_int, .any, .any },
43428 .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
2264843429 .patterns = &.{
22649 .{ .src = .{ .to_mem, .none } },
43430 .{ .src = .{ .to_mem, .none, .none } },
2265043431 },
2265143432 .extra_temps = .{
22652 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22653 .{ .type = .f80, .kind = .{ .reg = .st7 } },
22654 .unused,
43433 .{ .type = .usize, .kind = .{ .reg = .rsi } },
43434 .{ .type = .usize, .kind = .{ .reg = .rdi } },
43435 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2265543436 .unused,
2265643437 .unused,
2265743438 .unused,
......@@ -22662,24 +43443,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2266243443 .dst_temps = .{.mem},
2266343444 .clobbers = .{ .eflags = true },
2266443445 .each = .{ .once = &.{
22665 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22666 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
22667 .{ ._, .f_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
22668 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
22669 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
43446 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
43447 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
43448 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
43449 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
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, ._, ._ },
2267043453 } },
2267143454 }, .{
22672 .required_features = .{ .x87, null, null, null },
22673 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22674 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
43455 .required_features = .{ .@"64bit", null, null, null },
43456 .src_constraints = .{ .any_unsigned_int, .any, .any },
43457 .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
2267543458 .patterns = &.{
22676 .{ .src = .{ .mem, .none } },
22677 .{ .src = .{ .to_x87, .none } },
43459 .{ .src = .{ .to_mem, .none, .none } },
2267843460 },
2267943461 .extra_temps = .{
22680 .{ .type = .f80, .kind = .{ .reg = .st7 } },
22681 .unused,
22682 .unused,
43462 .{ .type = .usize, .kind = .{ .reg = .rsi } },
43463 .{ .type = .usize, .kind = .{ .reg = .rdi } },
43464 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2268343465 .unused,
2268443466 .unused,
2268543467 .unused,
......@@ -22688,21 +43470,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2268843470 .unused,
2268943471 },
2269043472 .dst_temps = .{.mem},
43473 .clobbers = .{ .eflags = true },
2269143474 .each = .{ .once = &.{
22692 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
22693 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
43475 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
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), ._, ._ },
2269443483 } },
2269543484 }, .{
22696 .required_features = .{ .x87, null, null, null },
22697 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22698 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
43485 .required_features = .{ .@"64bit", null, null, null },
43486 .src_constraints = .{ .any_unsigned_int, .any, .any },
43487 .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
2269943488 .patterns = &.{
22700 .{ .src = .{ .to_mem, .none } },
43489 .{ .src = .{ .to_mem, .none, .none } },
2270143490 },
2270243491 .extra_temps = .{
22703 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22704 .{ .type = .f80, .kind = .{ .reg = .st7 } },
22705 .unused,
43492 .{ .type = .usize, .kind = .{ .reg = .rsi } },
43493 .{ .type = .usize, .kind = .{ .reg = .rdi } },
43494 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2270643495 .unused,
2270743496 .unused,
2270843497 .unused,
......@@ -22713,24 +43502,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2271343502 .dst_temps = .{.mem},
2271443503 .clobbers = .{ .eflags = true },
2271543504 .each = .{ .once = &.{
22716 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22717 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
22718 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
22719 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
22720 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
43505 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
43506 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
43507 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
43508 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
43509 .{ ._, ._, .mov, .tmp0q, .ua(.dst0, .add_umax), ._, ._ },
43510 .{ ._, ._, .@"and", .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ },
43511 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
2272143512 } },
2272243513 }, .{
22723 .required_features = .{ .sse, null, null, null },
22724 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22725 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
43514 .required_features = .{ .avx, null, null, null },
43515 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
43516 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }},
2272643517 .patterns = &.{
22727 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
43518 .{ .src = .{ .to_sse, .none, .none } },
2272843519 },
22729 .call_frame = .{ .alignment = .@"16" },
2273043520 .extra_temps = .{
22731 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
22732 .unused,
22733 .unused,
43521 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
43522 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
43523 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
2273443524 .unused,
2273543525 .unused,
2273643526 .unused,
......@@ -22738,23 +43528,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2273843528 .unused,
2273943529 .unused,
2274043530 },
22741 .dst_temps = .{.{ .ref = .src0 }},
22742 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43531 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2274343532 .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), ._ },
2274543538 } },
2274643539 }, .{
2274743540 .required_features = .{ .avx, null, null, null },
22748 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22749 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
43541 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
43542 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
2275043543 .patterns = &.{
22751 .{ .src = .{ .to_mem, .none } },
43544 .{ .src = .{ .to_sse, .none, .none } },
2275243545 },
22753 .call_frame = .{ .alignment = .@"16" },
2275443546 .extra_temps = .{
22755 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22756 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
22757 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
43547 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
43548 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
43549 .unused,
2275843550 .unused,
2275943551 .unused,
2276043552 .unused,
......@@ -22762,28 +43554,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2276243554 .unused,
2276343555 .unused,
2276443556 },
22765 .dst_temps = .{.mem},
22766 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43557 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2276743558 .each = .{ .once = &.{
22768 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22769 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
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", ._, ._, ._ },
43559 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
43560 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
2277443561 } },
2277543562 }, .{
22776 .required_features = .{ .sse4_1, null, null, null },
22777 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22778 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
43563 .required_features = .{ .sse2, null, null, null },
43564 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
43565 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }},
2277943566 .patterns = &.{
22780 .{ .src = .{ .to_mem, .none } },
43567 .{ .src = .{ .to_mut_sse, .none, .none } },
2278143568 },
22782 .call_frame = .{ .alignment = .@"16" },
2278343569 .extra_temps = .{
22784 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22785 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
22786 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
43570 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
43571 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
43572 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
2278743573 .unused,
2278843574 .unused,
2278943575 .unused,
......@@ -22791,89 +43577,71 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2279143577 .unused,
2279243578 .unused,
2279343579 },
22794 .dst_temps = .{.mem},
22795 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43580 .dst_temps = .{.{ .ref = .src0 }},
2279643581 .each = .{ .once = &.{
22797 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22798 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
22799 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22800 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
22801 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22802 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
43582 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
43583 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
43584 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
43585 .{ ._, .p_b, .add, .dst0x, .lea(.tmp0x), ._, ._ },
43586 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
2280343587 } },
2280443588 }, .{
2280543589 .required_features = .{ .sse2, null, null, null },
22806 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22807 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
43590 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
43591 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
2280843592 .patterns = &.{
22809 .{ .src = .{ .to_mem, .none } },
43593 .{ .src = .{ .to_mut_sse, .none, .none } },
2281043594 },
22811 .call_frame = .{ .alignment = .@"16" },
2281243595 .extra_temps = .{
22813 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22814 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
22815 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
22816 .{ .type = .f16, .kind = .{ .reg = .ax } },
43596 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
43597 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
43598 .unused,
43599 .unused,
2281743600 .unused,
2281843601 .unused,
2281943602 .unused,
2282043603 .unused,
2282143604 .unused,
2282243605 },
22823 .dst_temps = .{.mem},
22824 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43606 .dst_temps = .{.{ .ref = .src0 }},
2282543607 .each = .{ .once = &.{
22826 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22827 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
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", ._, ._, ._ },
43608 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
43609 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
2283343610 } },
2283443611 }, .{
2283543612 .required_features = .{ .sse, null, null, null },
22836 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22837 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
43613 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
43614 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
2283843615 .patterns = &.{
22839 .{ .src = .{ .to_mem, .none } },
43616 .{ .src = .{ .to_mut_sse, .none, .none } },
2284043617 },
22841 .call_frame = .{ .alignment = .@"16" },
2284243618 .extra_temps = .{
22843 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22844 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
22845 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
22846 .{ .type = .f32, .kind = .mem },
22847 .{ .type = .f16, .kind = .{ .reg = .ax } },
43619 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
43620 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
43621 .unused,
43622 .unused,
43623 .unused,
2284843624 .unused,
2284943625 .unused,
2285043626 .unused,
2285143627 .unused,
2285243628 },
22853 .dst_temps = .{.mem},
22854 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43629 .dst_temps = .{.{ .ref = .src0 }},
2285543630 .each = .{ .once = &.{
22856 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22857 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
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", ._, ._, ._ },
43631 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
43632 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
2286443633 } },
2286543634 }, .{
22866 .required_features = .{ .sse, null, null, null },
22867 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22868 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
43635 .required_features = .{ .avx2, null, null, null },
43636 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any },
43637 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }},
2286943638 .patterns = &.{
22870 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
43639 .{ .src = .{ .to_sse, .none, .none } },
2287143640 },
22872 .call_frame = .{ .alignment = .@"16" },
2287343641 .extra_temps = .{
22874 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
22875 .unused,
22876 .unused,
43642 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
43643 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
43644 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
2287743645 .unused,
2287843646 .unused,
2287943647 .unused,
......@@ -22881,23 +43649,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2288143649 .unused,
2288243650 .unused,
2288343651 },
22884 .dst_temps = .{.{ .ref = .src0 }},
22885 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43652 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2288643653 .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), ._ },
2288843659 } },
2288943660 }, .{
22890 .required_features = .{ .avx, null, null, null },
22891 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22892 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
43661 .required_features = .{ .avx2, null, null, null },
43662 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any },
43663 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }},
2289343664 .patterns = &.{
22894 .{ .src = .{ .to_mem, .none } },
43665 .{ .src = .{ .to_sse, .none, .none } },
2289543666 },
22896 .call_frame = .{ .alignment = .@"16" },
2289743667 .extra_temps = .{
22898 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22899 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
22900 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
43668 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
43669 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
43670 .unused,
2290143671 .unused,
2290243672 .unused,
2290343673 .unused,
......@@ -22905,58 +43675,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2290543675 .unused,
2290643676 .unused,
2290743677 },
22908 .dst_temps = .{.mem},
22909 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43678 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2291043679 .each = .{ .once = &.{
22911 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22912 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
22913 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22914 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
22915 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
22916 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
43680 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
43681 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
2291743682 } },
2291843683 }, .{
22919 .required_features = .{ .sse2, null, null, null },
22920 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22921 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
43684 .required_features = .{ .avx2, null, null, null },
43685 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any },
43686 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }},
2292243687 .patterns = &.{
22923 .{ .src = .{ .to_mem, .none } },
43688 .{ .src = .{ .to_mem, .none, .none } },
2292443689 },
22925 .call_frame = .{ .alignment = .@"16" },
2292643690 .extra_temps = .{
2292743691 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22928 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
22929 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
22930 .unused,
22931 .unused,
22932 .unused,
43692 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
43693 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
43694 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
43695 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
43696 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
2293343697 .unused,
2293443698 .unused,
2293543699 .unused,
2293643700 },
2293743701 .dst_temps = .{.mem},
22938 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43702 .clobbers = .{ .eflags = true },
2293943703 .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), ._, ._ },
2294043708 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22941 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
22942 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22943 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
22944 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
43709 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
43710 .{ ._, .vp_b, .add, .tmp3y, .tmp3y, .tmp2y, ._ },
43711 .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp2y, ._ },
43712 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp3y, ._, ._ },
43713 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
2294543714 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2294643715 } },
2294743716 }, .{
22948 .required_features = .{ .sse, null, null, null },
22949 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22950 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
43717 .required_features = .{ .avx2, null, null, null },
43718 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any },
43719 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }},
2295143720 .patterns = &.{
22952 .{ .src = .{ .to_mem, .none } },
43721 .{ .src = .{ .to_mem, .none, .none } },
2295343722 },
22954 .call_frame = .{ .alignment = .@"16" },
2295543723 .extra_temps = .{
2295643724 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22957 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
22958 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
22959 .unused,
43725 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },
43726 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },
43727 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
2296043728 .unused,
2296143729 .unused,
2296243730 .unused,
......@@ -22964,52 +43732,61 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2296443732 .unused,
2296543733 },
2296643734 .dst_temps = .{.mem},
22967 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43735 .clobbers = .{ .eflags = true },
2296843736 .each = .{ .once = &.{
43737 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
43738 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
2296943739 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22970 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
22971 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22972 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
22973 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
43740 .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
43741 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },
43742 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
2297443743 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2297543744 } },
2297643745 }, .{
22977 .required_features = .{ .sse, null, null, null },
22978 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22979 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
43746 .required_features = .{ .avx, null, null, null },
43747 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
43748 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }},
2298043749 .patterns = &.{
22981 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
43750 .{ .src = .{ .to_mem, .none, .none } },
2298243751 },
22983 .call_frame = .{ .alignment = .@"16" },
2298443752 .extra_temps = .{
22985 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
22986 .unused,
22987 .unused,
22988 .unused,
22989 .unused,
22990 .unused,
43753 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
43754 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
43755 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
43756 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
43757 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
43758 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
2299143759 .unused,
2299243760 .unused,
2299343761 .unused,
2299443762 },
22995 .dst_temps = .{.{ .ref = .src0 }},
22996 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43763 .dst_temps = .{.mem},
43764 .clobbers = .{ .eflags = true },
2299743765 .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", ._, ._, ._ },
2299943777 } },
2300043778 }, .{
2300143779 .required_features = .{ .avx, null, null, null },
23002 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
23003 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
43780 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
43781 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
2300443782 .patterns = &.{
23005 .{ .src = .{ .to_mem, .none } },
43783 .{ .src = .{ .to_mem, .none, .none } },
2300643784 },
23007 .call_frame = .{ .alignment = .@"16" },
2300843785 .extra_temps = .{
2300943786 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23010 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23011 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
23012 .unused,
43787 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
43788 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
43789 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
2301343790 .unused,
2301443791 .unused,
2301543792 .unused,
......@@ -23017,57 +43794,62 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2301743794 .unused,
2301843795 },
2301943796 .dst_temps = .{.mem},
23020 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43797 .clobbers = .{ .eflags = true },
2302143798 .each = .{ .once = &.{
43799 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
43800 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
2302243801 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23023 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
23024 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23025 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23026 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
43802 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
43803 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
43804 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2302743805 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2302843806 } },
2302943807 }, .{
2303043808 .required_features = .{ .sse2, null, null, null },
23031 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
23032 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
43809 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
43810 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }},
2303343811 .patterns = &.{
23034 .{ .src = .{ .to_mem, .none } },
43812 .{ .src = .{ .to_mem, .none, .none } },
2303543813 },
23036 .call_frame = .{ .alignment = .@"16" },
2303743814 .extra_temps = .{
2303843815 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23039 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23040 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
23041 .unused,
23042 .unused,
23043 .unused,
43816 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
43817 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
43818 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
43819 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
43820 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
2304443821 .unused,
2304543822 .unused,
2304643823 .unused,
2304743824 },
2304843825 .dst_temps = .{.mem},
23049 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43826 .clobbers = .{ .eflags = true },
2305043827 .each = .{ .once = &.{
43828 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
43829 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
43830 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
43831 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
2305143832 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23052 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
23053 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23054 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23055 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
43833 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp1x, ._, ._ },
43834 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
43835 .{ ._, .p_b, .add, .tmp3x, .tmp2x, ._, ._ },
43836 .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ },
43837 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
43838 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2305643839 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2305743840 } },
2305843841 }, .{
23059 .required_features = .{ .sse, null, null, null },
23060 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
23061 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
43842 .required_features = .{ .sse2, null, null, null },
43843 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
43844 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
2306243845 .patterns = &.{
23063 .{ .src = .{ .to_mem, .none } },
43846 .{ .src = .{ .to_mem, .none, .none } },
2306443847 },
23065 .call_frame = .{ .alignment = .@"16" },
2306643848 .extra_temps = .{
2306743849 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23068 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23069 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
23070 .unused,
43850 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
43851 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
43852 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
2307143853 .unused,
2307243854 .unused,
2307343855 .unused,
......@@ -23075,51 +43857,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2307543857 .unused,
2307643858 },
2307743859 .dst_temps = .{.mem},
23078 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43860 .clobbers = .{ .eflags = true },
2307943861 .each = .{ .once = &.{
43862 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
43863 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
2308043864 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23081 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
23082 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23083 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23084 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
43865 .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
43866 .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
43867 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
43868 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2308543869 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2308643870 } },
2308743871 }, .{
2308843872 .required_features = .{ .sse, null, null, null },
23089 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
23090 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
43873 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
43874 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
2309143875 .patterns = &.{
23092 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
43876 .{ .src = .{ .to_mem, .none, .none } },
2309343877 },
23094 .call_frame = .{ .alignment = .@"16" },
2309543878 .extra_temps = .{
23096 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
23097 .unused,
23098 .unused,
23099 .unused,
43879 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
43880 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
43881 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
43882 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
2310043883 .unused,
2310143884 .unused,
2310243885 .unused,
2310343886 .unused,
2310443887 .unused,
2310543888 },
23106 .dst_temps = .{.{ .reg = .st0 }},
23107 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43889 .dst_temps = .{.mem},
43890 .clobbers = .{ .eflags = true },
2310843891 .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", ._, ._, ._ },
2311043900 } },
2311143901 }, .{
23112 .required_features = .{ .avx, null, null, null },
23113 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
23114 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
43902 .required_features = .{ .slow_incdec, null, null, null },
43903 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
43904 .dst_constraints = .{.{ .multiple_scalar_exact_signed_int = .{ .of = .byte, .is = 1 } }},
2311543905 .patterns = &.{
23116 .{ .src = .{ .to_mem, .none } },
43906 .{ .src = .{ .to_mem, .none, .none } },
2311743907 },
23118 .call_frame = .{ .alignment = .@"16" },
2311943908 .extra_temps = .{
2312043909 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23121 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23122 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
43910 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
43911 .unused,
2312343912 .unused,
2312443913 .unused,
2312543914 .unused,
......@@ -23128,28 +43917,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2312843917 .unused,
2312943918 },
2313043919 .dst_temps = .{.mem},
23131 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43920 .clobbers = .{ .eflags = true },
2313243921 .each = .{ .once = &.{
2313343922 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23134 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
23135 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23136 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
23137 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
23138 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
43923 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
43924 .{ ._, ._, .@"and", .tmp1b, .si(1), ._, ._ },
43925 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },
43926 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
43927 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2313943928 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2314043929 } },
2314143930 }, .{
23142 .required_features = .{ .sse2, null, null, null },
23143 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
23144 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
43931 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
43932 .dst_constraints = .{.{ .multiple_scalar_exact_signed_int = .{ .of = .byte, .is = 1 } }},
2314543933 .patterns = &.{
23146 .{ .src = .{ .to_mem, .none } },
43934 .{ .src = .{ .to_mem, .none, .none } },
2314743935 },
23148 .call_frame = .{ .alignment = .@"16" },
2314943936 .extra_temps = .{
2315043937 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23151 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23152 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
43938 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
43939 .unused,
2315343940 .unused,
2315443941 .unused,
2315543942 .unused,
......@@ -23158,28 +43945,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2315843945 .unused,
2315943946 },
2316043947 .dst_temps = .{.mem},
23161 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43948 .clobbers = .{ .eflags = true },
2316243949 .each = .{ .once = &.{
2316343950 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23164 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
23165 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23166 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
23167 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
23168 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
23169 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
43951 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
43952 .{ ._, ._, .@"and", .tmp1b, .si(1), ._, ._ },
43953 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },
43954 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
43955 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
43956 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2317043957 } },
2317143958 }, .{
23172 .required_features = .{ .sse, null, null, null },
23173 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
23174 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
43959 .required_features = .{ .slow_incdec, null, null, null },
43960 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
43961 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
2317543962 .patterns = &.{
23176 .{ .src = .{ .to_mem, .none } },
43963 .{ .src = .{ .to_mem, .none, .none } },
2317743964 },
23178 .call_frame = .{ .alignment = .@"16" },
2317943965 .extra_temps = .{
2318043966 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23181 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23182 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
43967 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
43968 .unused,
2318343969 .unused,
2318443970 .unused,
2318543971 .unused,
......@@ -23188,77 +43974,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2318843974 .unused,
2318943975 },
2319043976 .dst_temps = .{.mem},
23191 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43977 .clobbers = .{ .eflags = true },
2319243978 .each = .{ .once = &.{
2319343979 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23194 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
23195 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23196 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
23197 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
23198 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
43980 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
43981 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
43982 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
43983 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
43984 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2319943985 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2320043986 } },
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 } },
2322743987 }, .{
23228 .required_features = .{ .f16c, null, null, null },
23229 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },
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 } }},
43988 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
43989 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
2325543990 .patterns = &.{
23256 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
43991 .{ .src = .{ .to_mem, .none, .none } },
2325743992 },
23258 .call_frame = .{ .alignment = .@"16" },
2325943993 .extra_temps = .{
23260 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
23261 .unused,
43994 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
43995 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
2326243996 .unused,
2326343997 .unused,
2326443998 .unused,
......@@ -23267,21 +44001,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2326744001 .unused,
2326844002 .unused,
2326944003 },
23270 .dst_temps = .{.{ .ref = .src0 }},
23271 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44004 .dst_temps = .{.mem},
44005 .clobbers = .{ .eflags = true },
2327244006 .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", ._, ._, ._ },
2327444014 } },
2327544015 }, .{
23276 .required_features = .{ .f16c, null, null, null },
23277 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },
23278 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }},
44016 .required_features = .{ .slow_incdec, null, null, null },
44017 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
44018 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2327944019 .patterns = &.{
23280 .{ .src = .{ .to_mem, .none } },
44020 .{ .src = .{ .to_mem, .none, .none } },
2328144021 },
2328244022 .extra_temps = .{
2328344023 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23284 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
44024 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2328544025 .unused,
2328644026 .unused,
2328744027 .unused,
......@@ -23293,24 +44033,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2329344033 .dst_temps = .{.mem},
2329444034 .clobbers = .{ .eflags = true },
2329544035 .each = .{ .once = &.{
23296 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23297 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
23298 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ },
23299 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
44036 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44037 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
44038 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
44039 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
44040 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2330044041 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2330144042 } },
2330244043 }, .{
23303 .required_features = .{ .avx, null, null, null },
23304 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23305 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
44044 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
44045 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2330644046 .patterns = &.{
23307 .{ .src = .{ .to_mem, .none } },
44047 .{ .src = .{ .to_mem, .none, .none } },
2330844048 },
23309 .call_frame = .{ .alignment = .@"16" },
2331044049 .extra_temps = .{
2331144050 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23312 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23313 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
44051 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
44052 .unused,
2331444053 .unused,
2331544054 .unused,
2331644055 .unused,
......@@ -23319,28 +44058,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2331944058 .unused,
2332044059 },
2332144060 .dst_temps = .{.mem},
23322 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44061 .clobbers = .{ .eflags = true },
2332344062 .each = .{ .once = &.{
23324 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23325 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
23326 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
23327 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23328 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23329 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23330 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
44063 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44064 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
44065 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
44066 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
44067 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
44068 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2333144069 } },
2333244070 }, .{
23333 .required_features = .{ .sse2, null, null, null },
23334 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23335 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
44071 .required_features = .{ .slow_incdec, null, null, null },
44072 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
44073 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
2333644074 .patterns = &.{
23337 .{ .src = .{ .to_mem, .none } },
44075 .{ .src = .{ .to_mem, .none, .none } },
2333844076 },
23339 .call_frame = .{ .alignment = .@"16" },
2334044077 .extra_temps = .{
2334144078 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23342 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23343 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
44079 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
44080 .unused,
2334444081 .unused,
2334544082 .unused,
2334644083 .unused,
......@@ -23349,96 +44086,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2334944086 .unused,
2335044087 },
2335144088 .dst_temps = .{.mem},
23352 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44089 .clobbers = .{ .eflags = true },
2335344090 .each = .{ .once = &.{
23354 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23355 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
23356 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
23357 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23358 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23359 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44091 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44092 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
44093 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
44094 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2336044095 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2336144096 } },
2336244097 }, .{
23363 .required_features = .{ .sse, null, null, null },
23364 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23365 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
44098 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
44099 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
2336644100 .patterns = &.{
23367 .{ .src = .{ .to_mem, .none } },
44101 .{ .src = .{ .to_mem, .none, .none } },
2336844102 },
23369 .call_frame = .{ .alignment = .@"16" },
2337044103 .extra_temps = .{
2337144104 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23372 .{ .type = .f16, .kind = .{ .reg = .ax } },
23373 .{ .type = .f32, .kind = .mem },
23374 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23375 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
44105 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
44106 .unused,
44107 .unused,
44108 .unused,
2337644109 .unused,
2337744110 .unused,
2337844111 .unused,
2337944112 .unused,
2338044113 },
2338144114 .dst_temps = .{.mem},
23382 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
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 } }},
44115 .clobbers = .{ .eflags = true },
2342744116 .each = .{ .once = &.{
23428 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
23429 .{ ._, .v_pd, .cvtps2, .dst0y, .dst0x, ._, ._ },
44117 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
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", ._, ._, ._ },
2343044122 } },
2343144123 }, .{
23432 .required_features = .{ .f16c, null, null, null },
23433 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },
23434 .dst_constraints = .{.{ .scalar_float = .{ .of = .zword, .is = .qword } }},
44124 .required_features = .{ .slow_incdec, null, null, null },
44125 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
44126 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
2343544127 .patterns = &.{
23436 .{ .src = .{ .mem, .none } },
23437 .{ .src = .{ .to_sse, .none } },
44128 .{ .src = .{ .to_mem, .none, .none } },
2343844129 },
2343944130 .extra_temps = .{
23440 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
23441 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
44131 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
44132 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
2344244133 .unused,
2344344134 .unused,
2344444135 .unused,
......@@ -23448,25 +44139,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2344844139 .unused,
2344944140 },
2345044141 .dst_temps = .{.mem},
44142 .clobbers = .{ .eflags = true },
2345144143 .each = .{ .once = &.{
23452 .{ ._, .v_ps, .cvtph2, .tmp0y, .src0x, ._, ._ },
23453 .{ ._, .v_pd, .cvtps2, .tmp1y, .tmp0x, ._, ._ },
23454 .{ ._, .v_f128, .extract, .tmp0x, .tmp0y, .ui(1), ._ },
23455 .{ ._, .v_pd, .mova, .mem(.dst0y), .tmp1y, ._, ._ },
23456 .{ ._, .v_pd, .cvtps2, .tmp1y, .tmp0x, ._, ._ },
23457 .{ ._, .v_pd, .mova, .memd(.dst0y, 32), .tmp1y, ._, ._ },
44144 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44145 .{ .@"0:", ._, .movsx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
44146 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
44147 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
44148 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
44149 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
44150 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2345844151 } },
2345944152 }, .{
23460 .required_features = .{ .sse, null, null, null },
23461 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
23462 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
44153 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
44154 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
2346344155 .patterns = &.{
23464 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
44156 .{ .src = .{ .to_mem, .none, .none } },
2346544157 },
23466 .call_frame = .{ .alignment = .@"16" },
2346744158 .extra_temps = .{
23468 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
23469 .unused,
44159 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
44160 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
2347044161 .unused,
2347144162 .unused,
2347244163 .unused,
......@@ -23475,22 +44166,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2347544166 .unused,
2347644167 .unused,
2347744168 },
23478 .dst_temps = .{.{ .ref = .src0 }},
23479 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44169 .dst_temps = .{.mem},
44170 .clobbers = .{ .eflags = true },
2348044171 .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", ._, ._, ._ },
2348244179 } },
2348344180 }, .{
23484 .required_features = .{ .f16c, null, null, null },
23485 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },
23486 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }},
44181 .required_features = .{ .slow_incdec, null, null, null },
44182 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
44183 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2348744184 .patterns = &.{
23488 .{ .src = .{ .to_mem, .none } },
44185 .{ .src = .{ .to_mem, .none, .none } },
2348944186 },
2349044187 .extra_temps = .{
2349144188 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23492 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
23493 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
44189 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
44190 .unused,
2349444191 .unused,
2349544192 .unused,
2349644193 .unused,
......@@ -23501,28 +44198,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2350144198 .dst_temps = .{.mem},
2350244199 .clobbers = .{ .eflags = true },
2350344200 .each = .{ .once = &.{
23504 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23505 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
23506 .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ },
23507 .{ ._, .v_f128, .extract, .tmp1x, .tmp1y, .ui(1), ._ },
23508 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp2y, ._, ._ },
23509 .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ },
23510 .{ ._, .v_pd, .mova, .memsiad(.dst0y, .@"4", .tmp0, .add_size, 32), .tmp2y, ._, ._ },
23511 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
44201 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44202 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
44203 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
44204 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
44205 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2351244206 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2351344207 } },
2351444208 }, .{
23515 .required_features = .{ .avx, null, null, null },
23516 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23517 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
44209 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
44210 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2351844211 .patterns = &.{
23519 .{ .src = .{ .to_mem, .none } },
44212 .{ .src = .{ .to_mem, .none, .none } },
2352044213 },
23521 .call_frame = .{ .alignment = .@"16" },
2352244214 .extra_temps = .{
2352344215 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23524 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23525 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
44216 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
44217 .unused,
2352644218 .unused,
2352744219 .unused,
2352844220 .unused,
......@@ -23531,28 +44223,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2353144223 .unused,
2353244224 },
2353344225 .dst_temps = .{.mem},
23534 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44226 .clobbers = .{ .eflags = true },
2353544227 .each = .{ .once = &.{
23536 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23537 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
23538 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
23539 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23540 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23541 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23542 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
44228 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44229 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
44230 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
44231 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
44232 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
44233 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2354344234 } },
2354444235 }, .{
23545 .required_features = .{ .sse2, null, null, null },
23546 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23547 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
44236 .required_features = .{ .slow_incdec, null, null, null },
44237 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
44238 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
2354844239 .patterns = &.{
23549 .{ .src = .{ .to_mem, .none } },
44240 .{ .src = .{ .to_mem, .none, .none } },
2355044241 },
23551 .call_frame = .{ .alignment = .@"16" },
2355244242 .extra_temps = .{
2355344243 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23554 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23555 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
44244 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
44245 .unused,
2355644246 .unused,
2355744247 .unused,
2355844248 .unused,
......@@ -23561,58 +44251,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2356144251 .unused,
2356244252 },
2356344253 .dst_temps = .{.mem},
23564 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44254 .clobbers = .{ .eflags = true },
2356544255 .each = .{ .once = &.{
23566 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23567 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
23568 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
23569 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23570 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23571 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44256 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44257 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
44258 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
44259 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2357244260 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2357344261 } },
2357444262 }, .{
23575 .required_features = .{ .sse, null, null, null },
23576 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23577 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
44263 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
44264 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
2357844265 .patterns = &.{
23579 .{ .src = .{ .to_mem, .none } },
44266 .{ .src = .{ .to_mem, .none, .none } },
2358044267 },
23581 .call_frame = .{ .alignment = .@"16" },
2358244268 .extra_temps = .{
2358344269 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23584 .{ .type = .f16, .kind = .{ .reg = .ax } },
23585 .{ .type = .f32, .kind = .mem },
23586 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23587 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
44270 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
44271 .unused,
44272 .unused,
44273 .unused,
2358844274 .unused,
2358944275 .unused,
2359044276 .unused,
2359144277 .unused,
2359244278 },
2359344279 .dst_temps = .{.mem},
23594 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44280 .clobbers = .{ .eflags = true },
2359544281 .each = .{ .once = &.{
23596 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23597 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
23598 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
23599 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
23600 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
23601 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
23602 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23603 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
44282 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44283 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
44284 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
44285 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
44286 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2360444287 } },
2360544288 }, .{
23606 .required_features = .{ .f16c, .x87, null, null },
23607 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
23608 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
44289 .required_features = .{ .slow_incdec, null, null, null },
44290 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
44291 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
2360944292 .patterns = &.{
23610 .{ .src = .{ .to_sse, .none } },
44293 .{ .src = .{ .to_mem, .none, .none } },
2361144294 },
2361244295 .extra_temps = .{
23613 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
23614 .{ .type = .f32, .kind = .mem },
23615 .{ .type = .f80, .kind = .{ .reg = .st7 } },
44296 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
44297 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
44298 .unused,
2361644299 .unused,
2361744300 .unused,
2361844301 .unused,
......@@ -23620,24 +44303,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2362044303 .unused,
2362144304 .unused,
2362244305 },
23623 .dst_temps = .{.{ .rc = .x87 }},
44306 .dst_temps = .{.mem},
44307 .clobbers = .{ .eflags = true },
2362444308 .each = .{ .once = &.{
23625 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
23626 .{ ._, .v_ss, .mov, .mem(.tmp1d), .tmp0x, ._, ._ },
23627 .{ ._, .f_, .ld, .mem(.tmp1d), ._, ._, ._ },
23628 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
44309 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44310 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
44311 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
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", ._, ._, ._ },
2362944316 } },
2363044317 }, .{
23631 .required_features = .{ .sse, null, null, null },
23632 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
23633 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
44318 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
44319 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
2363444320 .patterns = &.{
23635 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
44321 .{ .src = .{ .to_mem, .none, .none } },
2363644322 },
23637 .call_frame = .{ .alignment = .@"16" },
2363844323 .extra_temps = .{
23639 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
23640 .unused,
44324 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
44325 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
2364144326 .unused,
2364244327 .unused,
2364344328 .unused,
......@@ -23646,23 +44331,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2364644331 .unused,
2364744332 .unused,
2364844333 },
23649 .dst_temps = .{.{ .reg = .st0 }},
23650 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44334 .dst_temps = .{.mem},
44335 .clobbers = .{ .eflags = true },
2365144336 .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", ._, ._, ._ },
2365344344 } },
2365444345 }, .{
23655 .required_features = .{ .avx, null, null, null },
23656 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23657 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
44346 .required_features = .{ .bmi2, .slow_incdec, null, null },
44347 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
44348 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2365844349 .patterns = &.{
23659 .{ .src = .{ .to_mem, .none } },
44350 .{ .src = .{ .to_mem, .none, .none } },
2366044351 },
23661 .call_frame = .{ .alignment = .@"16" },
2366244352 .extra_temps = .{
2366344353 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23664 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23665 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
44354 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
44355 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2366644356 .unused,
2366744357 .unused,
2366844358 .unused,
......@@ -23671,29 +44361,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2367144361 .unused,
2367244362 },
2367344363 .dst_temps = .{.mem},
23674 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44364 .clobbers = .{ .eflags = true },
2367544365 .each = .{ .once = &.{
23676 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23677 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
23678 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
23679 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23680 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
23681 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
23682 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44366 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44367 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
44368 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
44369 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
44370 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2368344371 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2368444372 } },
2368544373 }, .{
23686 .required_features = .{ .sse2, null, null, null },
23687 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23688 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
44374 .required_features = .{ .bmi2, null, null, null },
44375 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
44376 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2368944377 .patterns = &.{
23690 .{ .src = .{ .to_mem, .none } },
44378 .{ .src = .{ .to_mem, .none, .none } },
2369144379 },
23692 .call_frame = .{ .alignment = .@"16" },
2369344380 .extra_temps = .{
2369444381 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23695 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23696 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
44382 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
44383 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2369744384 .unused,
2369844385 .unused,
2369944386 .unused,
......@@ -23702,60 +44389,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2370244389 .unused,
2370344390 },
2370444391 .dst_temps = .{.mem},
23705 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44392 .clobbers = .{ .eflags = true },
2370644393 .each = .{ .once = &.{
23707 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23708 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
23709 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
23710 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23711 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
23712 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
23713 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23714 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
44394 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44395 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
44396 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
44397 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
44398 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
44399 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2371544400 } },
2371644401 }, .{
23717 .required_features = .{ .sse, null, null, null },
23718 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23719 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
44402 .required_features = .{ .slow_incdec, null, null, null },
44403 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
44404 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2372044405 .patterns = &.{
23721 .{ .src = .{ .to_mem, .none } },
44406 .{ .src = .{ .to_mem, .none, .none } },
2372244407 },
23723 .call_frame = .{ .alignment = .@"16" },
2372444408 .extra_temps = .{
2372544409 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23726 .{ .type = .f16, .kind = .{ .reg = .ax } },
23727 .{ .type = .f32, .kind = .mem },
23728 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23729 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
44410 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
44411 .unused,
44412 .unused,
44413 .unused,
2373044414 .unused,
2373144415 .unused,
2373244416 .unused,
2373344417 .unused,
2373444418 },
2373544419 .dst_temps = .{.mem},
23736 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44420 .clobbers = .{ .eflags = true },
2373744421 .each = .{ .once = &.{
23738 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23739 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
23740 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
23741 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
23742 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
23743 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
23744 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
23745 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44422 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44423 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
44424 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
44425 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
44426 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2374644427 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2374744428 } },
2374844429 }, .{
23749 .required_features = .{ .sse, null, null, null },
23750 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
23751 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
44430 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
44431 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2375244432 .patterns = &.{
23753 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
44433 .{ .src = .{ .to_mem, .none, .none } },
2375444434 },
23755 .call_frame = .{ .alignment = .@"16" },
2375644435 .extra_temps = .{
23757 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
23758 .unused,
44436 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
44437 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2375944438 .unused,
2376044439 .unused,
2376144440 .unused,
......@@ -23764,23 +44443,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2376444443 .unused,
2376544444 .unused,
2376644445 },
23767 .dst_temps = .{.{ .ref = .src0 }},
23768 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44446 .dst_temps = .{.mem},
44447 .clobbers = .{ .eflags = true },
2376944448 .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", ._, ._, ._ },
2377144455 } },
2377244456 }, .{
23773 .required_features = .{ .avx, null, null, null },
23774 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23775 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
44457 .required_features = .{ .slow_incdec, null, null, null },
44458 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
44459 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
2377644460 .patterns = &.{
23777 .{ .src = .{ .to_mem, .none } },
44461 .{ .src = .{ .to_mem, .none, .none } },
2377844462 },
23779 .call_frame = .{ .alignment = .@"16" },
2378044463 .extra_temps = .{
2378144464 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23782 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23783 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
44465 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
44466 .unused,
2378444467 .unused,
2378544468 .unused,
2378644469 .unused,
......@@ -23789,28 +44472,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2378944472 .unused,
2379044473 },
2379144474 .dst_temps = .{.mem},
23792 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44475 .clobbers = .{ .eflags = true },
2379344476 .each = .{ .once = &.{
23794 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23795 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
23796 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
23797 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23798 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23799 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44477 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44478 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
44479 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
44480 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2380044481 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2380144482 } },
2380244483 }, .{
23803 .required_features = .{ .sse2, null, null, null },
23804 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23805 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
44484 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
44485 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
2380644486 .patterns = &.{
23807 .{ .src = .{ .to_mem, .none } },
44487 .{ .src = .{ .to_mem, .none, .none } },
2380844488 },
23809 .call_frame = .{ .alignment = .@"16" },
2381044489 .extra_temps = .{
2381144490 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23812 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23813 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
44491 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
44492 .unused,
2381444493 .unused,
2381544494 .unused,
2381644495 .unused,
......@@ -23819,93 +44498,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2381944498 .unused,
2382044499 },
2382144500 .dst_temps = .{.mem},
23822 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44501 .clobbers = .{ .eflags = true },
2382344502 .each = .{ .once = &.{
23824 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23825 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
23826 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
23827 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23828 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23829 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23830 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
44503 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44504 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
44505 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
44506 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
44507 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2383144508 } },
2383244509 }, .{
23833 .required_features = .{ .sse, null, null, null },
23834 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23835 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
44510 .required_features = .{ .slow_incdec, null, null, null },
44511 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
44512 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
2383644513 .patterns = &.{
23837 .{ .src = .{ .to_mem, .none } },
44514 .{ .src = .{ .to_mem, .none, .none } },
2383844515 },
23839 .call_frame = .{ .alignment = .@"16" },
2384044516 .extra_temps = .{
2384144517 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23842 .{ .type = .f16, .kind = .{ .reg = .ax } },
23843 .{ .type = .f32, .kind = .mem },
23844 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23845 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
44518 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
44519 .unused,
44520 .unused,
44521 .unused,
2384644522 .unused,
2384744523 .unused,
2384844524 .unused,
2384944525 .unused,
2385044526 },
2385144527 .dst_temps = .{.mem},
23852 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44528 .clobbers = .{ .eflags = true },
2385344529 .each = .{ .once = &.{
23854 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23855 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
23856 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
23857 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
23858 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
23859 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
23860 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44530 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44531 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
44532 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
44533 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
44534 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
44535 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2386144536 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2386244537 } },
2386344538 }, .{
23864 .required_features = .{ .avx, null, null, null },
23865 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
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 } }},
44539 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
44540 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
2390344541 .patterns = &.{
23904 .{ .src = .{ .to_mem, .none } },
44542 .{ .src = .{ .to_mem, .none, .none } },
2390544543 },
2390644544 .extra_temps = .{
23907 .{ .type = .f80, .kind = .{ .reg = .st7 } },
23908 .unused,
44545 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
44546 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
2390944547 .unused,
2391044548 .unused,
2391144549 .unused,
......@@ -23915,57 +44553,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2391544553 .unused,
2391644554 },
2391744555 .dst_temps = .{.mem},
44556 .clobbers = .{ .eflags = true },
2391844557 .each = .{ .once = &.{
23919 .{ ._, .f_, .ld, .src0d, ._, ._, ._ },
23920 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
23921 } },
23922 }, .{
23923 .required_features = .{ .avx, null, null, null },
23924 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .dword } }, .any },
23925 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }},
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, ._, ._ },
44558 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44559 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
44560 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
44561 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
44562 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
44563 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
44564 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2395744565 } },
2395844566 }, .{
23959 .required_features = .{ .avx, null, null, null },
23960 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
23961 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }},
44567 .required_features = .{ .bmi2, .slow_incdec, null, null },
44568 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
44569 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2396244570 .patterns = &.{
23963 .{ .src = .{ .to_mem, .none } },
44571 .{ .src = .{ .to_mem, .none, .none } },
2396444572 },
2396544573 .extra_temps = .{
2396644574 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23967 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
23968 .unused,
44575 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
44576 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2396944577 .unused,
2397044578 .unused,
2397144579 .unused,
......@@ -23976,23 +44584,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2397644584 .dst_temps = .{.mem},
2397744585 .clobbers = .{ .eflags = true },
2397844586 .each = .{ .once = &.{
23979 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23980 .{ .@"0:", .v_pd, .cvtps2, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
23981 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ },
23982 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
44587 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44588 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
44589 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
44590 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
44591 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2398344592 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2398444593 } },
2398544594 }, .{
23986 .required_features = .{ .sse2, null, null, null },
23987 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .dword } }, .any },
23988 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }},
44595 .required_features = .{ .bmi2, null, null, null },
44596 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
44597 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2398944598 .patterns = &.{
23990 .{ .src = .{ .to_mem, .none } },
44599 .{ .src = .{ .to_mem, .none, .none } },
2399144600 },
2399244601 .extra_temps = .{
2399344602 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23994 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
23995 .unused,
44603 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
44604 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2399644605 .unused,
2399744606 .unused,
2399844607 .unused,
......@@ -24003,22 +44612,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2400344612 .dst_temps = .{.mem},
2400444613 .clobbers = .{ .eflags = true },
2400544614 .each = .{ .once = &.{
24006 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
24007 .{ .@"0:", ._pd, .cvtps2, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
24008 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
24009 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
24010 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
44615 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44616 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
44617 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
44618 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
44619 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
44620 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2401144621 } },
2401244622 }, .{
24013 .required_features = .{ .x87, null, null, null },
24014 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
24015 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
44623 .required_features = .{ .slow_incdec, null, null, null },
44624 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
44625 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2401644626 .patterns = &.{
24017 .{ .src = .{ .to_mem, .none } },
44627 .{ .src = .{ .to_mem, .none, .none } },
2401844628 },
2401944629 .extra_temps = .{
2402044630 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24021 .{ .type = .f80, .kind = .{ .reg = .st7 } },
44631 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2402244632 .unused,
2402344633 .unused,
2402444634 .unused,
......@@ -24030,22 +44640,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2403044640 .dst_temps = .{.mem},
2403144641 .clobbers = .{ .eflags = true },
2403244642 .each = .{ .once = &.{
24033 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24034 .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
24035 .{ ._, .f_p, .st, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
24036 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
44643 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44644 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
44645 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
44646 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
44647 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2403744648 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2403844649 } },
2403944650 }, .{
24040 .required_features = .{ .x87, null, null, null },
24041 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
24042 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
44651 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
44652 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2404344653 .patterns = &.{
24044 .{ .src = .{ .to_mem, .none } },
44654 .{ .src = .{ .to_mem, .none, .none } },
2404544655 },
2404644656 .extra_temps = .{
24047 .{ .type = .f80, .kind = .{ .reg = .st7 } },
24048 .unused,
44657 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
44658 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2404944659 .unused,
2405044660 .unused,
2405144661 .unused,
......@@ -24055,21 +44665,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2405544665 .unused,
2405644666 },
2405744667 .dst_temps = .{.mem},
44668 .clobbers = .{ .eflags = true },
2405844669 .each = .{ .once = &.{
24059 .{ ._, .f_, .ld, .src0d, ._, ._, ._ },
24060 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
44670 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
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", ._, ._, ._ },
2406144676 } },
2406244677 }, .{
24063 .required_features = .{ .x87, null, null, null },
24064 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
24065 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
44678 .required_features = .{ .slow_incdec, null, null, null },
44679 .src_constraints = .{ .any_scalar_int, .any, .any },
44680 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
2406644681 .patterns = &.{
24067 .{ .src = .{ .to_mem, .none } },
44682 .{ .src = .{ .to_mem, .none, .none } },
2406844683 },
2406944684 .extra_temps = .{
2407044685 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24071 .{ .type = .f80, .kind = .{ .reg = .st7 } },
24072 .unused,
44686 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
44687 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2407344688 .unused,
2407444689 .unused,
2407544690 .unused,
......@@ -24078,25 +44693,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2407844693 .unused,
2407944694 },
2408044695 .dst_temps = .{.mem},
44696 .clobbers = .{ .eflags = true },
2408144697 .each = .{ .once = &.{
24082 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24083 .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
24084 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
24085 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
44698 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44699 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
44700 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
44701 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
44702 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
44703 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2408644704 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2408744705 } },
2408844706 }, .{
24089 .required_features = .{ .sse, null, null, null },
24090 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
24091 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
44707 .src_constraints = .{ .any_scalar_int, .any, .any },
44708 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
2409244709 .patterns = &.{
24093 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
44710 .{ .src = .{ .to_mem, .none, .none } },
2409444711 },
24095 .call_frame = .{ .alignment = .@"16" },
2409644712 .extra_temps = .{
24097 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
24098 .unused,
24099 .unused,
44713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
44714 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
44715 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2410044716 .unused,
2410144717 .unused,
2410244718 .unused,
......@@ -24104,23 +44720,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2410444720 .unused,
2410544721 .unused,
2410644722 },
24107 .dst_temps = .{.{ .ref = .src0 }},
24108 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44723 .dst_temps = .{.mem},
44724 .clobbers = .{ .eflags = true },
2410944725 .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", ._, ._, ._ },
2411144733 } },
2411244734 }, .{
24113 .required_features = .{ .avx, null, null, null },
24114 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
24115 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
44735 .required_features = .{ .slow_incdec, null, null, null },
44736 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
44737 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
2411644738 .patterns = &.{
24117 .{ .src = .{ .to_mem, .none } },
44739 .{ .src = .{ .to_mem, .none, .none } },
2411844740 },
24119 .call_frame = .{ .alignment = .@"16" },
2412044741 .extra_temps = .{
2412144742 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24122 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
24123 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
44743 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
44744 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
2412444745 .unused,
2412544746 .unused,
2412644747 .unused,
......@@ -24129,27 +44750,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2412944750 .unused,
2413044751 },
2413144752 .dst_temps = .{.mem},
24132 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44753 .clobbers = .{ .eflags = true },
2413344754 .each = .{ .once = &.{
24134 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24135 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
24136 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
24137 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24138 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
44755 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44756 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
44757 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
44758 .{ ._, ._l, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
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), ._, ._ },
2413944763 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2414044764 } },
2414144765 }, .{
24142 .required_features = .{ .sse2, null, null, null },
24143 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
24144 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
44766 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
44767 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
2414544768 .patterns = &.{
24146 .{ .src = .{ .to_mem, .none } },
44769 .{ .src = .{ .to_mem, .none, .none } },
2414744770 },
24148 .call_frame = .{ .alignment = .@"16" },
2414944771 .extra_temps = .{
2415044772 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24151 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
24152 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
44773 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
44774 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
2415344775 .unused,
2415444776 .unused,
2415544777 .unused,
......@@ -24158,28 +44780,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2415844780 .unused,
2415944781 },
2416044782 .dst_temps = .{.mem},
24161 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44783 .clobbers = .{ .eflags = true },
2416244784 .each = .{ .once = &.{
24163 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24164 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
24165 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
24166 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24167 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
24168 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
44785 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44786 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
44787 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
44788 .{ ._, ._l, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
44789 .{ ._, ._r, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
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", ._, ._, ._ },
2416944794 } },
2417044795 }, .{
24171 .required_features = .{ .sse, null, null, null },
24172 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
24173 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
44796 .required_features = .{ .bmi2, .slow_incdec, null, null },
44797 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
44798 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2417444799 .patterns = &.{
24175 .{ .src = .{ .to_mem, .none } },
44800 .{ .src = .{ .to_mem, .none, .none } },
2417644801 },
24177 .call_frame = .{ .alignment = .@"16" },
2417844802 .extra_temps = .{
2417944803 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24180 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
24181 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
24182 .unused,
44804 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
44805 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
44806 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2418344807 .unused,
2418444808 .unused,
2418544809 .unused,
......@@ -24187,27 +44811,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2418744811 .unused,
2418844812 },
2418944813 .dst_temps = .{.mem},
24190 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44814 .clobbers = .{ .eflags = true },
2419144815 .each = .{ .once = &.{
24192 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24193 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
24194 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
24195 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24196 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
44816 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44817 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
44818 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
44819 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },
44820 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
44821 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
44822 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2419744823 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2419844824 } },
2419944825 }, .{
24200 .required_features = .{ .x87, null, null, null },
24201 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
24202 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
44826 .required_features = .{ .bmi2, null, null, null },
44827 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
44828 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2420344829 .patterns = &.{
24204 .{ .src = .{ .to_mem, .none } },
44830 .{ .src = .{ .to_mem, .none, .none } },
2420544831 },
2420644832 .extra_temps = .{
24207 .{ .type = .f80, .kind = .{ .reg = .st7 } },
24208 .unused,
24209 .unused,
24210 .unused,
44833 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
44834 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
44835 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
44836 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2421144837 .unused,
2421244838 .unused,
2421344839 .unused,
......@@ -24215,21 +44841,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2421544841 .unused,
2421644842 },
2421744843 .dst_temps = .{.mem},
44844 .clobbers = .{ .eflags = true },
2421844845 .each = .{ .once = &.{
24219 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
24220 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
44846 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
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", ._, ._, ._ },
2422144854 } },
2422244855 }, .{
24223 .required_features = .{ .x87, null, null, null },
24224 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
24225 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
44856 .required_features = .{ .slow_incdec, null, null, null },
44857 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
44858 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2422644859 .patterns = &.{
24227 .{ .src = .{ .to_mem, .none } },
44860 .{ .src = .{ .to_mem, .none, .none } },
2422844861 },
2422944862 .extra_temps = .{
2423044863 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24231 .{ .type = .f80, .kind = .{ .reg = .st7 } },
24232 .unused,
44864 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
44865 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2423344866 .unused,
2423444867 .unused,
2423544868 .unused,
......@@ -24238,25 +44871,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2423844871 .unused,
2423944872 },
2424044873 .dst_temps = .{.mem},
44874 .clobbers = .{ .eflags = true },
2424144875 .each = .{ .once = &.{
24242 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24243 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
24244 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
24245 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
44876 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
44877 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
44878 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
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), ._, ._ },
2424644883 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2424744884 } },
2424844885 }, .{
24249 .required_features = .{ .sse, null, null, null },
24250 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
24251 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
44886 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
44887 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2425244888 .patterns = &.{
24253 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
44889 .{ .src = .{ .to_mem, .none, .none } },
2425444890 },
24255 .call_frame = .{ .alignment = .@"16" },
2425644891 .extra_temps = .{
24257 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
24258 .unused,
24259 .unused,
44892 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
44893 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
44894 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2426044895 .unused,
2426144896 .unused,
2426244897 .unused,
......@@ -24264,23 +44899,41 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2426444899 .unused,
2426544900 .unused,
2426644901 },
24267 .dst_temps = .{.{ .ref = .src0 }},
24268 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44902 .dst_temps = .{.mem},
44903 .clobbers = .{ .eflags = true },
2426944904 .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", ._, ._, ._ },
2427144913 } },
2427244914 }, .{
2427344915 .required_features = .{ .avx, null, null, null },
24274 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
24275 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
44916 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
44917 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
2427644918 .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 } },
2427844932 },
24279 .call_frame = .{ .alignment = .@"16" },
2428044933 .extra_temps = .{
24281 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24282 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
24283 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
44934 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
44935 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
44936 .unused,
2428444937 .unused,
2428544938 .unused,
2428644939 .unused,
......@@ -24288,28 +44941,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2428844941 .unused,
2428944942 .unused,
2429044943 },
24291 .dst_temps = .{.mem},
24292 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44944 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2429344945 .each = .{ .once = &.{
24294 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24295 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
24296 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
24297 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24298 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
24299 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
44946 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
44947 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
2430044948 } },
2430144949 }, .{
2430244950 .required_features = .{ .sse2, null, null, null },
24303 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
24304 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
44951 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
44952 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
2430544953 .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 } },
2430744967 },
24308 .call_frame = .{ .alignment = .@"16" },
2430944968 .extra_temps = .{
24310 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24311 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
24312 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
44969 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
44970 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
44971 .unused,
2431344972 .unused,
2431444973 .unused,
2431544974 .unused,
......@@ -24317,28 +44976,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2431744976 .unused,
2431844977 .unused,
2431944978 },
24320 .dst_temps = .{.mem},
24321 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44979 .dst_temps = .{.{ .ref = .src0 }},
2432244980 .each = .{ .once = &.{
24323 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24324 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
24325 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
24326 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24327 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
24328 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
44981 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
44982 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
2432944983 } },
2433044984 }, .{
2433144985 .required_features = .{ .sse, null, null, null },
24332 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
24333 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
44986 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
44987 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
2433444988 .patterns = &.{
24335 .{ .src = .{ .to_mem, .none } },
44989 .{ .src = .{ .to_mut_sse, .none, .none } },
2433644990 },
24337 .call_frame = .{ .alignment = .@"16" },
2433844991 .extra_temps = .{
24339 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24340 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
24341 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
44992 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
44993 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
44994 .unused,
2434244995 .unused,
2434344996 .unused,
2434444997 .unused,
......@@ -24346,28 +44999,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2434644999 .unused,
2434745000 .unused,
2434845001 },
24349 .dst_temps = .{.mem},
24350 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
45002 .dst_temps = .{.{ .ref = .src0 }},
2435145003 .each = .{ .once = &.{
24352 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24353 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
24354 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
24355 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
24356 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24357 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
24358 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
45004 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
45005 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
45006 } },
45007 }, .{
45008 .required_features = .{ .avx2, null, null, null },
45009 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any },
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), ._ },
2435945018 } },
2436045019 }, .{
24361 .required_features = .{ .avx, null, null, null },
24362 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
24363 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
45020 .required_features = .{ .avx2, null, null, null },
45021 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any },
45022 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }},
2436445023 .patterns = &.{
24365 .{ .src = .{ .to_mem, .none } },
45024 .{ .src = .{ .to_sse, .none, .none } },
2436645025 },
24367 .call_frame = .{ .size = 16, .alignment = .@"16" },
2436845026 .extra_temps = .{
24369 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
24370 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
45027 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
45028 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
2437145029 .unused,
2437245030 .unused,
2437345031 .unused,
......@@ -24376,24 +45034,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2437645034 .unused,
2437745035 .unused,
2437845036 },
24379 .dst_temps = .{.{ .reg = .xmm0 }},
24380 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
45037 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2438145038 .each = .{ .once = &.{
24382 .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
24383 .{ ._, .v_dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
24384 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
45039 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
45040 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
2438545041 } },
2438645042 }, .{
24387 .required_features = .{ .sse2, null, null, null },
24388 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
24389 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
45043 .required_features = .{ .avx2, null, null, null },
45044 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any },
45045 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }},
2439045046 .patterns = &.{
24391 .{ .src = .{ .to_mem, .none } },
45047 .{ .src = .{ .to_mem, .none, .none } },
2439245048 },
24393 .call_frame = .{ .size = 16, .alignment = .@"16" },
2439445049 .extra_temps = .{
24395 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
24396 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
45050 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
45051 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
2439745052 .unused,
2439845053 .unused,
2439945054 .unused,
......@@ -24402,52 +45057,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2440245057 .unused,
2440345058 .unused,
2440445059 },
24405 .dst_temps = .{.{ .reg = .xmm0 }},
24406 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
45060 .dst_temps = .{.mem},
45061 .clobbers = .{ .eflags = true },
2440745062 .each = .{ .once = &.{
24408 .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
24409 .{ ._, ._dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
24410 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
45063 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
45064 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
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", ._, ._, ._ },
2441145070 } },
2441245071 }, .{
24413 .required_features = .{ .sse, null, null, null },
24414 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
24415 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
45072 .required_features = .{ .avx2, null, null, null },
45073 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any },
45074 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }},
2441645075 .patterns = &.{
24417 .{ .src = .{ .to_mem, .none } },
45076 .{ .src = .{ .to_mem, .none, .none } },
2441845077 },
24419 .call_frame = .{ .size = 16, .alignment = .@"16" },
2442045078 .extra_temps = .{
24421 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
24422 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
24423 .unused,
24424 .unused,
45079 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
45080 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
45081 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
45082 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
2442545083 .unused,
2442645084 .unused,
2442745085 .unused,
2442845086 .unused,
2442945087 .unused,
2443045088 },
24431 .dst_temps = .{.{ .reg = .xmm0 }},
24432 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
45089 .dst_temps = .{.mem},
45090 .clobbers = .{ .eflags = true },
2443345091 .each = .{ .once = &.{
24434 .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ },
24435 .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ },
24436 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
45092 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
45093 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
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", ._, ._, ._ },
2443745099 } },
2443845100 }, .{
2443945101 .required_features = .{ .avx, null, null, null },
24440 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
24441 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
45102 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
45103 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},
2444245104 .patterns = &.{
24443 .{ .src = .{ .to_mem, .none } },
45105 .{ .src = .{ .to_mem, .none, .none } },
2444445106 },
24445 .call_frame = .{ .size = 16, .alignment = .@"16" },
2444645107 .extra_temps = .{
2444745108 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24448 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
24449 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
24450 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
45109 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
45110 .unused,
45111 .unused,
2445145112 .unused,
2445245113 .unused,
2445345114 .unused,
......@@ -24455,29 +45116,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2445545116 .unused,
2445645117 },
2445745118 .dst_temps = .{.mem},
24458 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
45119 .clobbers = .{ .eflags = true },
2445945120 .each = .{ .once = &.{
24460 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
45121 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
2446145122 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
24462 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
24463 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
45123 .{ ._, .vp_w, .sll, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
45124 .{ ._, .vp_w, .sra, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
2446445125 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
2446545126 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2446645127 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2446745128 } },
2446845129 }, .{
24469 .required_features = .{ .sse2, null, null, null },
24470 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
24471 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
45130 .required_features = .{ .avx, null, null, null },
45131 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
45132 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
2447245133 .patterns = &.{
24473 .{ .src = .{ .to_mem, .none } },
45134 .{ .src = .{ .to_mem, .none, .none } },
2447445135 },
24475 .call_frame = .{ .size = 16, .alignment = .@"16" },
2447645136 .extra_temps = .{
2447745137 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24478 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
24479 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
24480 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
45138 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
45139 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
45140 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
2448145141 .unused,
2448245142 .unused,
2448345143 .unused,
......@@ -24485,29 +45145,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2448545145 .unused,
2448645146 },
2448745147 .dst_temps = .{.mem},
24488 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
45148 .clobbers = .{ .eflags = true },
2448945149 .each = .{ .once = &.{
24490 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24491 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
24492 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
24493 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
24494 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
45150 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
45151 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
45152 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
45153 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
45154 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
2449545155 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2449645156 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2449745157 } },
2449845158 }, .{
24499 .required_features = .{ .sse, null, null, null },
24500 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
24501 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
45159 .required_features = .{ .sse2, null, null, null },
45160 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
45161 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},
2450245162 .patterns = &.{
24503 .{ .src = .{ .to_mem, .none } },
45163 .{ .src = .{ .to_mem, .none, .none } },
2450445164 },
24505 .call_frame = .{ .size = 16, .alignment = .@"16" },
2450645165 .extra_temps = .{
2450745166 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24508 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
24509 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
24510 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
45167 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
45168 .unused,
45169 .unused,
2451145170 .unused,
2451245171 .unused,
2451345172 .unused,
......@@ -24515,98 +45174,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2451545174 .unused,
2451645175 },
2451745176 .dst_temps = .{.mem},
24518 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
45177 .clobbers = .{ .eflags = true },
2451945178 .each = .{ .once = &.{
24520 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24521 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
24522 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
24523 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
24524 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
45179 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
45180 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
45181 .{ ._, .p_w, .sll, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
45182 .{ ._, .p_w, .sra, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
45183 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
2452545184 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2452645185 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2452745186 } },
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 } },
2459945187 }, .{
24600 .required_features = .{ .@"64bit", null, null, null },
24601 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
45188 .required_features = .{ .sse2, null, null, null },
45189 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
45190 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
2460245191 .patterns = &.{
24603 .{ .src = .{ .to_mem, .none } },
45192 .{ .src = .{ .to_mem, .none, .none } },
2460445193 },
2460545194 .extra_temps = .{
24606 .{ .type = .usize, .kind = .{ .reg = .rsi } },
24607 .{ .type = .usize, .kind = .{ .reg = .rdi } },
24608 .{ .type = .u32, .kind = .{ .reg = .ecx } },
24609 .unused,
45195 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
45196 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
45197 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
45198 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
2461045199 .unused,
2461145200 .unused,
2461245201 .unused,
......@@ -24614,108 +45203,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2461445203 .unused,
2461545204 },
2461645205 .dst_temps = .{.mem},
45206 .clobbers = .{ .eflags = true },
2461745207 .each = .{ .once = &.{
24618 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
24619 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
24620 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ },
24621 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
45208 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
45209 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
45210 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
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", ._, ._, ._ },
2462245216 } },
2462345217 }, .{
2462445218 .required_features = .{ .sse, null, null, null },
24625 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any },
24626 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .byte } }},
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 } }},
45219 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
45220 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
2469145221 .patterns = &.{
24692 .{ .src = .{ .to_sse, .none } },
45222 .{ .src = .{ .to_mem, .none, .none } },
2469345223 },
24694 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
24695 .each = .{ .once = &.{
24696 .{ ._, .vp_b, .ackssw, .dst0y, .src0y, .dst0y, ._ },
24697 } },
24698 }, .{
24699 .required_features = .{ .avx2, null, null, null },
24700 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any },
24701 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .byte } }},
24702 .patterns = &.{
24703 .{ .src = .{ .to_sse, .none } },
45224 .extra_temps = .{
45225 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
45226 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
45227 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
45228 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
45229 .unused,
45230 .unused,
45231 .unused,
45232 .unused,
45233 .unused,
2470445234 },
24705 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
45235 .dst_temps = .{.mem},
45236 .clobbers = .{ .eflags = true },
2470645237 .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", ._, ._, ._ },
2470845246 } },
2470945247 }, .{
24710 .required_features = .{ .slow_incdec, null, null, null },
24711 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
24712 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
45248 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
45249 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
2471345250 .patterns = &.{
24714 .{ .src = .{ .to_mem, .none } },
45251 .{ .src = .{ .to_mem, .none, .none } },
2471545252 },
2471645253 .extra_temps = .{
2471745254 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24718 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
45255 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
2471945256 .unused,
2472045257 .unused,
2472145258 .unused,
......@@ -24725,22 +45262,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2472545262 .unused,
2472645263 },
2472745264 .dst_temps = .{.mem},
45265 .clobbers = .{ .eflags = true },
2472845266 .each = .{ .once = &.{
2472945267 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24730 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
24731 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
24732 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
45268 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
45269 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
45270 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2473345271 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2473445272 } },
2473545273 }, .{
24736 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
24737 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
45274 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
45275 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
2473845276 .patterns = &.{
24739 .{ .src = .{ .to_mem, .none } },
45277 .{ .src = .{ .to_mem, .none, .none } },
2474045278 },
2474145279 .extra_temps = .{
2474245280 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24743 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
45281 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
2474445282 .unused,
2474545283 .unused,
2474645284 .unused,
......@@ -24750,95 +45288,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2475045288 .unused,
2475145289 },
2475245290 .dst_temps = .{.mem},
45291 .clobbers = .{ .eflags = true },
2475345292 .each = .{ .once = &.{
2475445293 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24755 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
24756 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
24757 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
24758 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
24759 } },
24760 }, .{
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, ._ },
45294 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
45295 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
45296 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
45297 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
45298 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
45299 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2483145300 } },
2483245301 }, .{
24833 .required_features = .{ .slow_incdec, null, null, null },
24834 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },
24835 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
45302 .required_features = .{ .fast_imm16, null, null, null },
45303 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
45304 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
2483645305 .patterns = &.{
24837 .{ .src = .{ .to_mem, .none } },
45306 .{ .src = .{ .to_mem, .none, .none } },
2483845307 },
2483945308 .extra_temps = .{
2484045309 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24841 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
45310 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
2484245311 .unused,
2484345312 .unused,
2484445313 .unused,
......@@ -24848,22 +45317,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2484845317 .unused,
2484945318 },
2485045319 .dst_temps = .{.mem},
45320 .clobbers = .{ .eflags = true },
2485145321 .each = .{ .once = &.{
2485245322 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24853 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
24854 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
24855 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
45323 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
45324 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
45325 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
45326 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2485645327 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2485745328 } },
2485845329 }, .{
24859 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },
24860 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
45330 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
45331 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
2486145332 .patterns = &.{
24862 .{ .src = .{ .to_mem, .none } },
45333 .{ .src = .{ .to_mem, .none, .none } },
2486345334 },
2486445335 .extra_temps = .{
2486545336 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24866 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
45337 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
2486745338 .unused,
2486845339 .unused,
2486945340 .unused,
......@@ -24873,23 +45344,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2487345344 .unused,
2487445345 },
2487545346 .dst_temps = .{.mem},
45347 .clobbers = .{ .eflags = true },
2487645348 .each = .{ .once = &.{
2487745349 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24878 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
24879 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
24880 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
24881 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
45350 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
45351 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
45352 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
45353 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
45354 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2488245355 } },
2488345356 }, .{
24884 .required_features = .{ .slow_incdec, null, null, null },
24885 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
24886 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
45357 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
45358 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
2488745359 .patterns = &.{
24888 .{ .src = .{ .to_mem, .none } },
45360 .{ .src = .{ .to_mem, .none, .none } },
2488945361 },
2489045362 .extra_temps = .{
2489145363 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24892 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
45364 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
2489345365 .unused,
2489445366 .unused,
2489545367 .unused,
......@@ -24899,22 +45371,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2489945371 .unused,
2490045372 },
2490145373 .dst_temps = .{.mem},
45374 .clobbers = .{ .eflags = true },
2490245375 .each = .{ .once = &.{
2490345376 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24904 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
24905 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
24906 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
45377 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
45378 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
45379 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2490745380 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2490845381 } },
2490945382 }, .{
24910 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
24911 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
45383 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
45384 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
2491245385 .patterns = &.{
24913 .{ .src = .{ .to_mem, .none } },
45386 .{ .src = .{ .to_mem, .none, .none } },
2491445387 },
2491545388 .extra_temps = .{
2491645389 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24917 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
45390 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
2491845391 .unused,
2491945392 .unused,
2492045393 .unused,
......@@ -24924,24 +45397,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2492445397 .unused,
2492545398 },
2492645399 .dst_temps = .{.mem},
45400 .clobbers = .{ .eflags = true },
2492745401 .each = .{ .once = &.{
2492845402 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24929 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
24930 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
24931 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
24932 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
45403 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
45404 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
45405 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
45406 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
45407 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
45408 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2493345409 } },
2493445410 }, .{
24935 .required_features = .{ .slow_incdec, null, null, null },
24936 .src_constraints = .{ .any_scalar_int, .any },
24937 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
45411 .required_features = .{ .bmi2, null, null, null },
45412 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
45413 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
2493845414 .patterns = &.{
24939 .{ .src = .{ .to_mem, .none } },
45415 .{ .src = .{ .to_mem, .none, .none } },
2494045416 },
2494145417 .extra_temps = .{
2494245418 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24943 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
2494445419 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
45420 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
2494545421 .unused,
2494645422 .unused,
2494745423 .unused,
......@@ -24950,25 +45426,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2495045426 .unused,
2495145427 },
2495245428 .dst_temps = .{.mem},
45429 .clobbers = .{ .eflags = true },
2495345430 .each = .{ .once = &.{
2495445431 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24955 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24956 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
24957 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
24958 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
24959 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
45432 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
45433 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._ },
45434 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
45435 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2496045436 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2496145437 } },
2496245438 }, .{
24963 .src_constraints = .{ .any_scalar_int, .any },
24964 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
45439 .required_features = .{ .fast_imm16, null, null, null },
45440 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
45441 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
2496545442 .patterns = &.{
24966 .{ .src = .{ .to_mem, .none } },
45443 .{ .src = .{ .to_mem, .none, .none } },
2496745444 },
2496845445 .extra_temps = .{
2496945446 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24970 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24971 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
45447 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
45448 .unused,
2497245449 .unused,
2497345450 .unused,
2497445451 .unused,
......@@ -24977,106 +45454,130 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2497745454 .unused,
2497845455 },
2497945456 .dst_temps = .{.mem},
45457 .clobbers = .{ .eflags = true },
2498045458 .each = .{ .once = &.{
2498145459 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24982 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24983 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
24984 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
24985 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
24986 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
24987 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
45460 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
45461 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
45462 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
45463 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
45464 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2498845465 } },
2498945466 }, .{
24990 .required_features = .{ .sse, null, null, null },
24991 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any },
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 } }},
45467 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
45468 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
2500345469 .patterns = &.{
25004 .{ .src = .{ .mut_mem, .none } },
25005 .{ .src = .{ .to_mut_sse, .none } },
45470 .{ .src = .{ .to_mem, .none, .none } },
2500645471 },
25007 .dst_temps = .{.{ .ref = .src0 }},
25008 .each = .{ .once = &.{} },
25009 }, .{
25010 .required_features = .{ .avx, null, null, null },
25011 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
25012 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .word } }},
25013 .patterns = &.{
25014 .{ .src = .{ .to_sse, .none } },
45472 .extra_temps = .{
45473 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
45474 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
45475 .unused,
45476 .unused,
45477 .unused,
45478 .unused,
45479 .unused,
45480 .unused,
45481 .unused,
2501545482 },
25016 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
45483 .dst_temps = .{.mem},
45484 .clobbers = .{ .eflags = true },
2501745485 .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", ._, ._, ._ },
2501945492 } },
2502045493 }, .{
25021 .required_features = .{ .avx, null, null, null },
25022 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
25023 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .word } }},
45494 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
45495 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
2502445496 .patterns = &.{
25025 .{ .src = .{ .to_sse, .none } },
45497 .{ .src = .{ .to_mem, .none, .none } },
2502645498 },
25027 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
25028 .each = .{ .once = &.{
25029 .{ ._, .vp_w, .ackusd, .dst0x, .src0x, .dst0x, ._ },
25030 } },
25031 }, .{
25032 .required_features = .{ .sse2, null, null, null },
25033 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
25034 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .word } }},
25035 .patterns = &.{
25036 .{ .src = .{ .to_mut_sse, .none } },
45499 .extra_temps = .{
45500 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
45501 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
45502 .unused,
45503 .unused,
45504 .unused,
45505 .unused,
45506 .unused,
45507 .unused,
45508 .unused,
2503745509 },
25038 .dst_temps = .{.{ .ref = .src0 }},
45510 .dst_temps = .{.mem},
45511 .clobbers = .{ .eflags = true },
2503945512 .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", ._, ._, ._ },
2504145518 } },
2504245519 }, .{
25043 .required_features = .{ .sse4_1, null, null, null },
25044 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
25045 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .word } }},
45520 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
45521 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
2504645522 .patterns = &.{
25047 .{ .src = .{ .to_mut_sse, .none } },
45523 .{ .src = .{ .to_mem, .none, .none } },
2504845524 },
25049 .dst_temps = .{.{ .ref = .src0 }},
25050 .each = .{ .once = &.{
25051 .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ },
25052 } },
25053 }, .{
25054 .required_features = .{ .avx2, null, null, null },
25055 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },
25056 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
25057 .patterns = &.{
25058 .{ .src = .{ .to_sse, .none } },
45525 .extra_temps = .{
45526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
45527 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
45528 .unused,
45529 .unused,
45530 .unused,
45531 .unused,
45532 .unused,
45533 .unused,
45534 .unused,
2505945535 },
25060 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
45536 .dst_temps = .{.mem},
45537 .clobbers = .{ .eflags = true },
2506145538 .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", ._, ._, ._ },
2506345546 } },
2506445547 }, .{
25065 .required_features = .{ .avx2, null, null, null },
25066 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },
25067 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
45548 .required_features = .{ .bmi2, null, null, null },
45549 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
45550 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
2506845551 .patterns = &.{
25069 .{ .src = .{ .to_sse, .none } },
45552 .{ .src = .{ .to_mem, .none, .none } },
2507045553 },
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 },
2507245567 .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", ._, ._, ._ },
2507445574 } },
2507545575 }, .{
25076 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },
25077 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
45576 .required_features = .{ .fast_imm16, null, null, null },
45577 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
45578 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
2507845579 .patterns = &.{
25079 .{ .src = .{ .to_mem, .none } },
45580 .{ .src = .{ .to_mem, .none, .none } },
2508045581 },
2508145582 .extra_temps = .{
2508245583 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -25090,18 +45591,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2509045591 .unused,
2509145592 },
2509245593 .dst_temps = .{.mem},
45594 .clobbers = .{ .eflags = true },
2509345595 .each = .{ .once = &.{
2509445596 .{ ._, ._, .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), ._, ._ },
2509645599 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
2509745600 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2509845601 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2509945602 } },
2510045603 }, .{
25101 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
25102 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
45604 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
45605 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
2510345606 .patterns = &.{
25104 .{ .src = .{ .to_mem, .none } },
45607 .{ .src = .{ .to_mem, .none, .none } },
2510545608 },
2510645609 .extra_temps = .{
2510745610 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -25115,18 +45618,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2511545618 .unused,
2511645619 },
2511745620 .dst_temps = .{.mem},
45621 .clobbers = .{ .eflags = true },
2511845622 .each = .{ .once = &.{
2511945623 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
2512045624 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
45625 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
2512145626 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
2512245627 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2512345628 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2512445629 } },
2512545630 }, .{
25126 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any },
25127 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
45631 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
45632 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
2512845633 .patterns = &.{
25129 .{ .src = .{ .to_mem, .none } },
45634 .{ .src = .{ .to_mem, .none, .none } },
2513045635 },
2513145636 .extra_temps = .{
2513245637 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -25140,6 +45645,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2514045645 .unused,
2514145646 },
2514245647 .dst_temps = .{.mem},
45648 .clobbers = .{ .eflags = true },
2514345649 .each = .{ .once = &.{
2514445650 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
2514545651 .{ .@"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 {
2514845654 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2514945655 } },
2515045656 }, .{
25151 .src_constraints = .{ .any_scalar_int, .any },
25152 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
45657 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
45658 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
2515345659 .patterns = &.{
25154 .{ .src = .{ .to_mem, .none } },
45660 .{ .src = .{ .to_mem, .none, .none } },
2515545661 },
2515645662 .extra_temps = .{
2515745663 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25158 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25159 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
45664 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
45665 .unused,
2516045666 .unused,
2516145667 .unused,
2516245668 .unused,
......@@ -25165,68 +45671,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2516545671 .unused,
2516645672 },
2516745673 .dst_temps = .{.mem},
45674 .clobbers = .{ .eflags = true },
2516845675 .each = .{ .once = &.{
2516945676 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25170 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25171 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
25172 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
25173 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
45677 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
45678 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
45679 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
45680 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
2517445681 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2517545682 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2517645683 } },
2517745684 }, .{
25178 .required_features = .{ .sse, null, null, null },
25179 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
25180 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
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 } }},
45685 .required_features = .{ .bmi2, null, null, null },
45686 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
45687 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
2520145688 .patterns = &.{
25202 .{ .src = .{ .mem, .none } },
25203 .{ .src = .{ .to_sse, .none } },
45689 .{ .src = .{ .to_mem, .none, .none } },
2520445690 },
25205 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
25206 .each = .{ .once = &.{
25207 .{ ._, .vp_d, .shuf, .dst0x, .src0x, .ui(0b10_00_10_00), ._ },
25208 } },
25209 }, .{
25210 .required_features = .{ .sse2, null, null, null },
25211 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
25212 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .dword } }},
25213 .patterns = &.{
25214 .{ .src = .{ .mem, .none } },
25215 .{ .src = .{ .to_sse, .none } },
45691 .extra_temps = .{
45692 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
45693 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
45694 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
45695 .unused,
45696 .unused,
45697 .unused,
45698 .unused,
45699 .unused,
45700 .unused,
2521645701 },
25217 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
45702 .dst_temps = .{.mem},
45703 .clobbers = .{ .eflags = true },
2521845704 .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", ._, ._, ._ },
2522045711 } },
2522145712 }, .{
25222 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
25223 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
45713 .required_features = .{ .fast_imm16, null, null, null },
45714 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
45715 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
2522445716 .patterns = &.{
25225 .{ .src = .{ .to_mem, .none } },
45717 .{ .src = .{ .to_mem, .none, .none } },
2522645718 },
2522745719 .extra_temps = .{
2522845720 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25229 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
45721 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
2523045722 .unused,
2523145723 .unused,
2523245724 .unused,
......@@ -25236,22 +45728,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2523645728 .unused,
2523745729 },
2523845730 .dst_temps = .{.mem},
45731 .clobbers = .{ .eflags = true },
2523945732 .each = .{ .once = &.{
2524045733 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25241 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
25242 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
25243 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
45734 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
45735 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
45736 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
45737 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2524445738 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2524545739 } },
2524645740 }, .{
25247 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any },
25248 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
45741 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
45742 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
2524945743 .patterns = &.{
25250 .{ .src = .{ .to_mem, .none } },
45744 .{ .src = .{ .to_mem, .none, .none } },
2525145745 },
2525245746 .extra_temps = .{
2525345747 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25254 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
45748 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
2525545749 .unused,
2525645750 .unused,
2525745751 .unused,
......@@ -25261,23 +45755,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2526145755 .unused,
2526245756 },
2526345757 .dst_temps = .{.mem},
45758 .clobbers = .{ .eflags = true },
2526445759 .each = .{ .once = &.{
2526545760 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25266 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
25267 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
25268 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
45761 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
45762 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
45763 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
45764 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2526945765 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2527045766 } },
2527145767 }, .{
25272 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any },
25273 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
45768 .src_constraints = .{ .any_scalar_int, .any, .any },
45769 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
2527445770 .patterns = &.{
25275 .{ .src = .{ .to_mem, .none } },
45771 .{ .src = .{ .to_mem, .none, .none } },
2527645772 },
2527745773 .extra_temps = .{
2527845774 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2527945775 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25280 .unused,
45776 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
2528145777 .unused,
2528245778 .unused,
2528345779 .unused,
......@@ -25286,23 +45782,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2528645782 .unused,
2528745783 },
2528845784 .dst_temps = .{.mem},
45785 .clobbers = .{ .eflags = true },
2528945786 .each = .{ .once = &.{
2529045787 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25291 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
25292 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
25293 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
45788 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
45789 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
45790 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
45791 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
45792 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2529445793 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2529545794 } },
2529645795 }, .{
25297 .src_constraints = .{ .any_scalar_int, .any },
25298 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
45796 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
45797 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
2529945798 .patterns = &.{
25300 .{ .src = .{ .to_mem, .none } },
45799 .{ .src = .{ .to_mem, .none, .none } },
2530145800 },
2530245801 .extra_temps = .{
2530345802 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2530445803 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25305 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
45804 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
2530645805 .unused,
2530745806 .unused,
2530845807 .unused,
......@@ -25311,47 +45810,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2531145810 .unused,
2531245811 },
2531345812 .dst_temps = .{.mem},
45813 .clobbers = .{ .eflags = true },
2531445814 .each = .{ .once = &.{
2531545815 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
2531645816 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
2531745817 .{ .@"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, ._, ._ },
2531945821 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
25320 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
45822 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2532145823 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2532245824 } },
2532345825 }, .{
25324 .required_features = .{ .sse, null, null, null },
25325 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
25326 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
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 } }},
45826 .required_features = .{ .bmi2, null, null, null },
45827 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
45828 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
2534745829 .patterns = &.{
25348 .{ .src = .{ .to_mem, .none } },
45830 .{ .src = .{ .to_mem, .none, .none } },
2534945831 },
2535045832 .extra_temps = .{
2535145833 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2535245834 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25353 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
25354 .unused,
45835 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
45836 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
2535545837 .unused,
2535645838 .unused,
2535745839 .unused,
......@@ -25359,57 +45841,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2535945841 .unused,
2536045842 },
2536145843 .dst_temps = .{.mem},
45844 .clobbers = .{ .eflags = true },
2536245845 .each = .{ .once = &.{
2536345846 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
2536445847 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25365 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
25366 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
45848 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
45849 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },
45850 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
2536745851 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
25368 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
45852 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2536945853 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2537045854 } },
2537145855 }, .{
25372 .required_features = .{ .sse, null, null, null },
25373 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
25374 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
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},
45856 .required_features = .{ .fast_imm16, null, null, null },
45857 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
45858 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
2540545859 .patterns = &.{
25406 .{ .src = .{ .to_mem, .none } },
45860 .{ .src = .{ .to_mem, .none, .none } },
2540745861 },
2540845862 .extra_temps = .{
45863 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2540945864 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25410 .{ .type = .usize, .kind = .{ .reg = .rsi } },
25411 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25412 .{ .type = .u32, .kind = .{ .reg = .ecx } },
45865 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
45866 .unused,
2541345867 .unused,
2541445868 .unused,
2541545869 .unused,
......@@ -25419,27 +45873,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2541945873 .dst_temps = .{.mem},
2542045874 .clobbers = .{ .eflags = true },
2542145875 .each = .{ .once = &.{
25422 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
25423 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
25424 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
25425 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
25426 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
25427 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
25428 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
25429 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
45876 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
45877 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
45878 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
45879 .{ ._, ._, .@"and", .tmp2w, .sa(.dst0, .add_umax), ._, ._ },
45880 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
45881 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
45882 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
45883 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2543045884 } },
2543145885 }, .{
25432 .required_features = .{ .@"64bit", null, null, null },
25433 .src_constraints = .{ .any_scalar_int, .any },
25434 .dst_constraints = .{.any_scalar_int},
45886 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
45887 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
2543545888 .patterns = &.{
25436 .{ .src = .{ .to_mem, .none } },
45889 .{ .src = .{ .to_mem, .none, .none } },
2543745890 },
2543845891 .extra_temps = .{
45892 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2543945893 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25440 .{ .type = .usize, .kind = .{ .reg = .rsi } },
25441 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25442 .{ .type = .u32, .kind = .{ .reg = .ecx } },
45894 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
45895 .unused,
2544345896 .unused,
2544445897 .unused,
2544545898 .unused,
......@@ -25449,73 +45902,73 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2544945902 .dst_temps = .{.mem},
2545045903 .clobbers = .{ .eflags = true },
2545145904 .each = .{ .once = &.{
25452 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
25453 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
25454 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
25455 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
25456 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
25457 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
25458 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
25459 .{ ._, ._nz, .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, ._, ._ },
45905 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
45906 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
45907 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
45908 .{ ._, ._, .@"and", .tmp2d, .sa(.dst0, .add_umax), ._, ._ },
45909 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
45910 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
45911 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
45912 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2547145913 } },
2547245914 }, .{
25473 .src_constraints = .{ .{ .int = .byte }, .any },
25474 .dst_constraints = .{.{ .int = .dword }},
45915 .required_features = .{ .avx, null, null, null },
45916 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
45917 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
2547545918 .patterns = &.{
25476 .{ .src = .{ .mem, .none } },
25477 .{ .src = .{ .to_gpr, .none } },
45919 .{ .src = .{ .to_sse, .none, .none } },
2547845920 },
25479 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
45921 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2548045922 .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), ._ },
2548245925 } },
2548345926 }, .{
25484 .required_features = .{ .@"64bit", null, null, null },
25485 .src_constraints = .{ .{ .signed_int = .byte }, .any },
25486 .dst_constraints = .{.{ .signed_int = .qword }},
45927 .required_features = .{ .avx, null, null, null },
45928 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
45929 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
2548745930 .patterns = &.{
25488 .{ .src = .{ .mem, .none } },
25489 .{ .src = .{ .to_gpr, .none } },
45931 .{ .src = .{ .to_sse, .none, .none } },
2549045932 },
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 } }},
2549245945 .each = .{ .once = &.{
25493 .{ ._, ._, .movsx, .dst0q, .src0b, ._, ._ },
45946 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
45947 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
2549445948 } },
2549545949 }, .{
25496 .required_features = .{ .@"64bit", null, null, null },
25497 .src_constraints = .{ .{ .int = .byte }, .any },
25498 .dst_constraints = .{.{ .int = .qword }},
45950 .required_features = .{ .sse2, null, null, null },
45951 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
45952 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
2549945953 .patterns = &.{
25500 .{ .src = .{ .mem, .none } },
25501 .{ .src = .{ .to_gpr, .none } },
45954 .{ .src = .{ .to_mut_sse, .none, .none } },
2550245955 },
25503 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
45956 .dst_temps = .{.{ .ref = .src0 }},
2550445957 .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), ._, ._ },
2550645960 } },
2550745961 }, .{
25508 .required_features = .{ .@"64bit", null, null, null },
25509 .src_constraints = .{ .{ .signed_int = .byte }, .any },
25510 .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }},
45962 .required_features = .{ .sse2, null, null, null },
45963 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
45964 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
2551145965 .patterns = &.{
25512 .{ .src = .{ .mem, .none } },
25513 .{ .src = .{ .to_gpr, .none } },
45966 .{ .src = .{ .to_mut_sse, .none, .none } },
2551445967 },
2551545968 .extra_temps = .{
25516 .{ .type = .i64, .kind = .{ .reg = .rax } },
25517 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25518 .{ .type = .u32, .kind = .{ .reg = .ecx } },
45969 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
45970 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
45971 .unused,
2551945972 .unused,
2552045973 .unused,
2552145974 .unused,
......@@ -25523,28 +45976,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2552345976 .unused,
2552445977 .unused,
2552545978 },
25526 .dst_temps = .{.mem},
25527 .clobbers = .{ .eflags = true },
45979 .dst_temps = .{.{ .ref = .src0 }},
2552845980 .each = .{ .once = &.{
25529 .{ ._, ._, .movsx, .tmp0q, .src0b, ._, ._ },
25530 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25531 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25532 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
25533 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25534 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
45981 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
45982 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
2553545983 } },
2553645984 }, .{
25537 .required_features = .{ .@"64bit", null, null, null },
25538 .src_constraints = .{ .{ .int = .byte }, .any },
25539 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
45985 .required_features = .{ .sse, null, null, null },
45986 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
45987 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
2554045988 .patterns = &.{
25541 .{ .src = .{ .mem, .none } },
25542 .{ .src = .{ .to_gpr, .none } },
45989 .{ .src = .{ .to_mut_sse, .none, .none } },
2554345990 },
2554445991 .extra_temps = .{
25545 .{ .type = .u64, .kind = .{ .reg = .rax } },
25546 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25547 .{ .type = .u32, .kind = .{ .reg = .ecx } },
45992 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
45993 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
45994 .unused,
2554845995 .unused,
2554945996 .unused,
2555045997 .unused,
......@@ -25552,27 +45999,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2555245999 .unused,
2555346000 .unused,
2555446001 },
25555 .dst_temps = .{.mem},
25556 .clobbers = .{ .eflags = true },
46002 .dst_temps = .{.{ .ref = .src0 }},
2555746003 .each = .{ .once = &.{
25558 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
25559 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25560 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25561 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
25562 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25563 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
46004 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
46005 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
46006 } },
46007 }, .{
46008 .required_features = .{ .avx2, null, null, null },
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), ._ },
2556446018 } },
2556546019 }, .{
25566 .src_constraints = .{ .{ .signed_int = .byte }, .any },
25567 .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .dword, .is = .dword } }},
46020 .required_features = .{ .avx2, null, null, null },
46021 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any },
46022 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }},
2556846023 .patterns = &.{
25569 .{ .src = .{ .mem, .none } },
25570 .{ .src = .{ .to_gpr, .none } },
46024 .{ .src = .{ .to_sse, .none, .none } },
2557146025 },
2557246026 .extra_temps = .{
25573 .{ .type = .i32, .kind = .{ .reg = .eax } },
25574 .{ .type = .usize, .kind = .{ .reg = .edi } },
25575 .{ .type = .u32, .kind = .{ .reg = .ecx } },
46027 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
46028 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
46029 .unused,
2557646030 .unused,
2557746031 .unused,
2557846032 .unused,
......@@ -25580,27 +46034,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2558046034 .unused,
2558146035 .unused,
2558246036 },
25583 .dst_temps = .{.mem},
25584 .clobbers = .{ .eflags = true },
46037 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2558546038 .each = .{ .once = &.{
25586 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
25587 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25588 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
25589 .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
25590 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
25591 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
46039 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
46040 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
2559246041 } },
2559346042 }, .{
25594 .src_constraints = .{ .{ .int = .byte }, .any },
25595 .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},
46043 .required_features = .{ .avx2, null, null, null },
46044 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },
46045 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }},
2559646046 .patterns = &.{
25597 .{ .src = .{ .mem, .none } },
25598 .{ .src = .{ .to_gpr, .none } },
46047 .{ .src = .{ .to_mem, .none, .none } },
2559946048 },
2560046049 .extra_temps = .{
25601 .{ .type = .u32, .kind = .{ .reg = .eax } },
25602 .{ .type = .usize, .kind = .{ .reg = .edi } },
25603 .{ .type = .u32, .kind = .{ .reg = .ecx } },
46050 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
46051 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
46052 .unused,
2560446053 .unused,
2560546054 .unused,
2560646055 .unused,
......@@ -25611,71 +46060,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2561146060 .dst_temps = .{.mem},
2561246061 .clobbers = .{ .eflags = true },
2561346062 .each = .{ .once = &.{
25614 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
25615 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25616 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
25617 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
25618 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
25619 .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },
25620 } },
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, ._, ._ },
46063 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46064 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
46065 .{ ._, .vp_d, .sll, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },
46066 .{ ._, .vp_d, .sra, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },
46067 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
46068 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
46069 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2564246070 } },
2564346071 }, .{
25644 .required_features = .{ .@"64bit", null, null, null },
25645 .src_constraints = .{ .{ .signed_int = .word }, .any },
25646 .dst_constraints = .{.{ .signed_int = .qword }},
46072 .required_features = .{ .avx2, null, null, null },
46073 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any },
46074 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }},
2564746075 .patterns = &.{
25648 .{ .src = .{ .mem, .none } },
25649 .{ .src = .{ .to_gpr, .none } },
46076 .{ .src = .{ .to_mem, .none, .none } },
2565046077 },
25651 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
25652 .each = .{ .once = &.{
25653 .{ ._, ._, .movsx, .dst0q, .src0w, ._, ._ },
25654 } },
25655 }, .{
25656 .required_features = .{ .@"64bit", null, null, null },
25657 .src_constraints = .{ .{ .int = .word }, .any },
25658 .dst_constraints = .{.{ .int = .qword }},
25659 .patterns = &.{
25660 .{ .src = .{ .mem, .none } },
25661 .{ .src = .{ .to_gpr, .none } },
46078 .extra_temps = .{
46079 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
46080 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
46081 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
46082 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
46083 .unused,
46084 .unused,
46085 .unused,
46086 .unused,
46087 .unused,
2566246088 },
25663 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
46089 .dst_temps = .{.mem},
46090 .clobbers = .{ .eflags = true },
2566446091 .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", ._, ._, ._ },
2566646099 } },
2566746100 }, .{
25668 .required_features = .{ .@"64bit", null, null, null },
25669 .src_constraints = .{ .{ .signed_int = .word }, .any },
25670 .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }},
46101 .required_features = .{ .avx, null, null, null },
46102 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
46103 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
2567146104 .patterns = &.{
25672 .{ .src = .{ .mem, .none } },
25673 .{ .src = .{ .to_gpr, .none } },
46105 .{ .src = .{ .to_mem, .none, .none } },
2567446106 },
2567546107 .extra_temps = .{
25676 .{ .type = .i64, .kind = .{ .reg = .rax } },
25677 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25678 .{ .type = .u32, .kind = .{ .reg = .ecx } },
46108 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
46109 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
46110 .unused,
2567946111 .unused,
2568046112 .unused,
2568146113 .unused,
......@@ -25686,26 +46118,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2568646118 .dst_temps = .{.mem},
2568746119 .clobbers = .{ .eflags = true },
2568846120 .each = .{ .once = &.{
25689 .{ ._, ._, .movsx, .tmp0q, .src0w, ._, ._ },
25690 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25691 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25692 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
25693 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25694 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
46121 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46122 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
46123 .{ ._, .vp_d, .sll, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
46124 .{ ._, .vp_d, .sra, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
46125 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
46126 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
46127 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2569546128 } },
2569646129 }, .{
25697 .required_features = .{ .@"64bit", null, null, null },
25698 .src_constraints = .{ .{ .int = .word }, .any },
25699 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
46130 .required_features = .{ .avx, null, null, null },
46131 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
46132 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
2570046133 .patterns = &.{
25701 .{ .src = .{ .mem, .none } },
25702 .{ .src = .{ .to_gpr, .none } },
46134 .{ .src = .{ .to_mem, .none, .none } },
2570346135 },
2570446136 .extra_temps = .{
25705 .{ .type = .u64, .kind = .{ .reg = .rax } },
25706 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25707 .{ .type = .u32, .kind = .{ .reg = .ecx } },
25708 .unused,
46137 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
46138 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
46139 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
46140 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
2570946141 .unused,
2571046142 .unused,
2571146143 .unused,
......@@ -25715,24 +46147,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2571546147 .dst_temps = .{.mem},
2571646148 .clobbers = .{ .eflags = true },
2571746149 .each = .{ .once = &.{
25718 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
25719 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25720 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25721 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
25722 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25723 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
46150 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
46151 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
46152 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46153 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
46154 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
46155 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
46156 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2572446157 } },
2572546158 }, .{
25726 .src_constraints = .{ .{ .signed_int = .word }, .any },
25727 .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .dword, .is = .dword } }},
46159 .required_features = .{ .sse2, null, null, null },
46160 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
46161 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
2572846162 .patterns = &.{
25729 .{ .src = .{ .mem, .none } },
25730 .{ .src = .{ .to_gpr, .none } },
46163 .{ .src = .{ .to_mem, .none, .none } },
2573146164 },
2573246165 .extra_temps = .{
25733 .{ .type = .i32, .kind = .{ .reg = .eax } },
25734 .{ .type = .usize, .kind = .{ .reg = .edi } },
25735 .{ .type = .u32, .kind = .{ .reg = .ecx } },
46166 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
46167 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
46168 .unused,
2573646169 .unused,
2573746170 .unused,
2573846171 .unused,
......@@ -25743,25 +46176,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2574346176 .dst_temps = .{.mem},
2574446177 .clobbers = .{ .eflags = true },
2574546178 .each = .{ .once = &.{
25746 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
25747 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25748 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
25749 .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
25750 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
25751 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
46179 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46180 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
46181 .{ ._, .p_d, .sll, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
46182 .{ ._, .p_d, .sra, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
46183 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
46184 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
46185 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2575246186 } },
2575346187 }, .{
25754 .src_constraints = .{ .{ .int = .word }, .any },
25755 .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},
46188 .required_features = .{ .sse2, null, null, null },
46189 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
46190 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
2575646191 .patterns = &.{
25757 .{ .src = .{ .mem, .none } },
25758 .{ .src = .{ .to_gpr, .none } },
46192 .{ .src = .{ .to_mem, .none, .none } },
2575946193 },
2576046194 .extra_temps = .{
25761 .{ .type = .u32, .kind = .{ .reg = .eax } },
25762 .{ .type = .usize, .kind = .{ .reg = .edi } },
25763 .{ .type = .u32, .kind = .{ .reg = .ecx } },
25764 .unused,
46195 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
46196 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
46197 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
46198 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
2576546199 .unused,
2576646200 .unused,
2576746201 .unused,
......@@ -25771,49 +46205,55 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2577146205 .dst_temps = .{.mem},
2577246206 .clobbers = .{ .eflags = true },
2577346207 .each = .{ .once = &.{
25774 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
25775 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25776 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
25777 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
25778 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
25779 .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },
46208 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
46209 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
46210 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46211 .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
46212 .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
46213 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
46214 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
46215 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2578046216 } },
2578146217 }, .{
25782 .required_features = .{ .@"64bit", null, null, null },
25783 .src_constraints = .{ .{ .signed_int = .dword }, .any },
25784 .dst_constraints = .{.{ .signed_int = .qword }},
46218 .required_features = .{ .sse, null, null, null },
46219 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
46220 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
2578546221 .patterns = &.{
25786 .{ .src = .{ .mem, .none } },
25787 .{ .src = .{ .to_gpr, .none } },
46222 .{ .src = .{ .to_mem, .none, .none } },
2578846223 },
25789 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
25790 .each = .{ .once = &.{
25791 .{ ._, ._d, .movsx, .dst0q, .src0d, ._, ._ },
25792 } },
25793 }, .{
25794 .required_features = .{ .@"64bit", null, null, null },
25795 .src_constraints = .{ .{ .int = .dword }, .any },
25796 .dst_constraints = .{.{ .int = .qword }},
25797 .patterns = &.{
25798 .{ .src = .{ .mem, .none } },
25799 .{ .src = .{ .to_gpr, .none } },
46224 .extra_temps = .{
46225 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
46226 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
46227 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
46228 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
46229 .unused,
46230 .unused,
46231 .unused,
46232 .unused,
46233 .unused,
2580046234 },
25801 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
46235 .dst_temps = .{.mem},
46236 .clobbers = .{ .eflags = true },
2580246237 .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", ._, ._, ._ },
2580446246 } },
2580546247 }, .{
25806 .required_features = .{ .@"64bit", null, null, null },
25807 .src_constraints = .{ .{ .signed_int = .dword }, .any },
25808 .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }},
46248 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
46249 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
2580946250 .patterns = &.{
25810 .{ .src = .{ .mem, .none } },
25811 .{ .src = .{ .to_gpr, .none } },
46251 .{ .src = .{ .to_mem, .none, .none } },
2581246252 },
2581346253 .extra_temps = .{
25814 .{ .type = .i64, .kind = .{ .reg = .rax } },
25815 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25816 .{ .type = .u32, .kind = .{ .reg = .ecx } },
46254 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
46255 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
46256 .unused,
2581746257 .unused,
2581846258 .unused,
2581946259 .unused,
......@@ -25824,25 +46264,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2582446264 .dst_temps = .{.mem},
2582546265 .clobbers = .{ .eflags = true },
2582646266 .each = .{ .once = &.{
25827 .{ ._, ._d, .movsx, .tmp0q, .src0d, ._, ._ },
25828 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25829 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25830 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
25831 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25832 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
46267 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46268 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
46269 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
46270 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
46271 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2583346272 } },
25834 }, .{
25835 .required_features = .{ .@"64bit", null, null, null },
25836 .src_constraints = .{ .{ .int = .dword }, .any },
25837 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
46273 }, .{
46274 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
46275 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
2583846276 .patterns = &.{
25839 .{ .src = .{ .mem, .none } },
25840 .{ .src = .{ .to_gpr, .none } },
46277 .{ .src = .{ .to_mem, .none, .none } },
2584146278 },
2584246279 .extra_temps = .{
25843 .{ .type = .u64, .kind = .{ .reg = .rax } },
25844 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25845 .{ .type = .u32, .kind = .{ .reg = .ecx } },
46280 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
46281 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
46282 .unused,
2584646283 .unused,
2584746284 .unused,
2584846285 .unused,
......@@ -25853,24 +46290,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2585346290 .dst_temps = .{.mem},
2585446291 .clobbers = .{ .eflags = true },
2585546292 .each = .{ .once = &.{
25856 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
25857 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25858 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25859 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
25860 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25861 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
46293 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46294 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
46295 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
46296 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
46297 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
46298 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
46299 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2586246300 } },
2586346301 }, .{
25864 .src_constraints = .{ .{ .signed_int = .dword }, .any },
25865 .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .dword, .is = .dword } }},
46302 .required_features = .{ .bmi2, null, null, null },
46303 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
46304 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
2586646305 .patterns = &.{
25867 .{ .src = .{ .mem, .none } },
25868 .{ .src = .{ .to_gpr, .none } },
46306 .{ .src = .{ .to_mem, .none, .none } },
2586946307 },
2587046308 .extra_temps = .{
25871 .{ .type = .i32, .kind = .{ .reg = .eax } },
25872 .{ .type = .usize, .kind = .{ .reg = .edi } },
25873 .{ .type = .u32, .kind = .{ .reg = .ecx } },
46309 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
46310 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
46311 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
2587446312 .unused,
2587546313 .unused,
2587646314 .unused,
......@@ -25881,24 +46319,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2588146319 .dst_temps = .{.mem},
2588246320 .clobbers = .{ .eflags = true },
2588346321 .each = .{ .once = &.{
25884 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
25885 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25886 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
25887 .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
25888 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
25889 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
46322 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46323 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
46324 .{ .@"0:", ._, .bzhi, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), .tmp1d, ._ },
46325 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
46326 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
46327 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2589046328 } },
2589146329 }, .{
25892 .src_constraints = .{ .{ .int = .dword }, .any },
25893 .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},
46330 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
46331 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
2589446332 .patterns = &.{
25895 .{ .src = .{ .mem, .none } },
25896 .{ .src = .{ .to_gpr, .none } },
46333 .{ .src = .{ .to_mem, .none, .none } },
2589746334 },
2589846335 .extra_temps = .{
25899 .{ .type = .u32, .kind = .{ .reg = .eax } },
25900 .{ .type = .usize, .kind = .{ .reg = .edi } },
25901 .{ .type = .u32, .kind = .{ .reg = .ecx } },
46336 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
46337 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
46338 .unused,
2590246339 .unused,
2590346340 .unused,
2590446341 .unused,
......@@ -25909,25 +46346,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2590946346 .dst_temps = .{.mem},
2591046347 .clobbers = .{ .eflags = true },
2591146348 .each = .{ .once = &.{
25912 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
25913 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25914 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
25915 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
25916 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
25917 .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },
46349 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46350 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
46351 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
46352 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
46353 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
46354 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2591846355 } },
2591946356 }, .{
25920 .required_features = .{ .@"64bit", null, null, null },
25921 .src_constraints = .{ .{ .signed_int = .qword }, .any },
25922 .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }},
46357 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
46358 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
2592346359 .patterns = &.{
25924 .{ .src = .{ .mem, .none } },
25925 .{ .src = .{ .to_gpr, .none } },
46360 .{ .src = .{ .to_mem, .none, .none } },
2592646361 },
2592746362 .extra_temps = .{
25928 .{ .type = .i64, .kind = .{ .reg = .rax } },
25929 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25930 .{ .type = .u32, .kind = .{ .reg = .ecx } },
46363 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
46364 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
46365 .unused,
2593146366 .unused,
2593246367 .unused,
2593346368 .unused,
......@@ -25938,25 +46373,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2593846373 .dst_temps = .{.mem},
2593946374 .clobbers = .{ .eflags = true },
2594046375 .each = .{ .once = &.{
25941 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
25942 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25943 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25944 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
25945 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25946 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
46376 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46377 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
46378 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
46379 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
46380 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2594746381 } },
2594846382 }, .{
25949 .required_features = .{ .@"64bit", null, null, null },
25950 .src_constraints = .{ .{ .int = .qword }, .any },
25951 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
46383 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
46384 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
2595246385 .patterns = &.{
25953 .{ .src = .{ .mem, .none } },
25954 .{ .src = .{ .to_gpr, .none } },
46386 .{ .src = .{ .to_mem, .none, .none } },
2595546387 },
2595646388 .extra_temps = .{
25957 .{ .type = .u64, .kind = .{ .reg = .rax } },
25958 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25959 .{ .type = .u32, .kind = .{ .reg = .ecx } },
46389 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
46390 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
46391 .unused,
2596046392 .unused,
2596146393 .unused,
2596246394 .unused,
......@@ -25967,25 +46399,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2596746399 .dst_temps = .{.mem},
2596846400 .clobbers = .{ .eflags = true },
2596946401 .each = .{ .once = &.{
25970 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
25971 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25972 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25973 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
25974 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25975 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
46402 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46403 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
46404 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
46405 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
46406 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
46407 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
46408 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2597646409 } },
2597746410 }, .{
25978 .required_features = .{ .@"64bit", null, null, null },
25979 .src_constraints = .{ .{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }, .any },
25980 .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }},
46411 .required_features = .{ .bmi2, null, null, null },
46412 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
46413 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
2598146414 .patterns = &.{
25982 .{ .src = .{ .to_mem, .none } },
46415 .{ .src = .{ .to_mem, .none, .none } },
2598346416 },
2598446417 .extra_temps = .{
25985 .{ .type = .usize, .kind = .{ .reg = .rsi } },
25986 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25987 .{ .type = .u32, .kind = .{ .reg = .ecx } },
25988 .{ .type = .i64, .kind = .{ .reg = .rax } },
46418 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
46419 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
46420 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
46421 .unused,
2598946422 .unused,
2599046423 .unused,
2599146424 .unused,
......@@ -25995,28 +46428,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2599546428 .dst_temps = .{.mem},
2599646429 .clobbers = .{ .eflags = true },
2599746430 .each = .{ .once = &.{
25998 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
25999 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
26000 .{ ._, ._, .mov, .tmp2d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
26001 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
26002 .{ ._, ._sq, .lod, ._, ._, ._, ._ },
26003 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
26004 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
26005 .{ ._, ._, .mov, .tmp2d, .sa2(.dst0, .src0, .add_delta_size_div_8), ._, ._ },
26006 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
46431 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46432 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
46433 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._ },
46434 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
46435 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
46436 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2600746437 } },
2600846438 }, .{
26009 .required_features = .{ .@"64bit", null, null, null },
26010 .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any },
26011 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
46439 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
46440 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
2601246441 .patterns = &.{
26013 .{ .src = .{ .to_mem, .none } },
46442 .{ .src = .{ .to_mem, .none, .none } },
2601446443 },
2601546444 .extra_temps = .{
26016 .{ .type = .usize, .kind = .{ .reg = .rsi } },
26017 .{ .type = .usize, .kind = .{ .reg = .rdi } },
26018 .{ .type = .u32, .kind = .{ .reg = .ecx } },
26019 .{ .type = .u64, .kind = .{ .reg = .rax } },
46445 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
46446 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
46447 .unused,
46448 .unused,
2602046449 .unused,
2602146450 .unused,
2602246451 .unused,
......@@ -26026,72 +46455,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2602646455 .dst_temps = .{.mem},
2602746456 .clobbers = .{ .eflags = true },
2602846457 .each = .{ .once = &.{
26029 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
26030 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
26031 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
26032 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
26033 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
26034 .{ ._, ._, .mov, .tmp2d, .sa2(.dst0, .src0, .add_delta_size_div_8), ._, ._ },
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, ._, ._ },
46458 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46459 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
46460 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
46461 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
46462 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
46463 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2608446464 } },
2608546465 }, .{
26086 .required_features = .{ .sse2, null, null, null },
26087 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },
26088 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
46466 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
46467 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
2608946468 .patterns = &.{
26090 .{ .src = .{ .to_mut_sse, .none } },
46469 .{ .src = .{ .to_mem, .none, .none } },
2609146470 },
2609246471 .extra_temps = .{
26093 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
26094 .unused,
46472 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
46473 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
2609546474 .unused,
2609646475 .unused,
2609746476 .unused,
......@@ -26100,22 +46479,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2610046479 .unused,
2610146480 .unused,
2610246481 },
26103 .dst_temps = .{.{ .ref = .src0 }},
46482 .dst_temps = .{.mem},
46483 .clobbers = .{ .eflags = true },
2610446484 .each = .{ .once = &.{
26105 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
26106 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },
26107 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
46485 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46486 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
46487 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
46488 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
46489 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2610846490 } },
2610946491 }, .{
26110 .required_features = .{ .sse2, null, null, null },
26111 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any },
26112 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
46492 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
46493 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
2611346494 .patterns = &.{
26114 .{ .src = .{ .to_mut_sse, .none } },
46495 .{ .src = .{ .to_mem, .none, .none } },
2611546496 },
2611646497 .extra_temps = .{
26117 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
26118 .unused,
46498 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
46499 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
2611946500 .unused,
2612046501 .unused,
2612146502 .unused,
......@@ -26124,46 +46505,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2612446505 .unused,
2612546506 .unused,
2612646507 },
26127 .dst_temps = .{.{ .ref = .src0 }},
26128 .each = .{ .once = &.{
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 } }},
46508 .dst_temps = .{.mem},
46509 .clobbers = .{ .eflags = true },
2615346510 .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", ._, ._, ._ },
2615546518 } },
2615646519 }, .{
26157 .required_features = .{ .avx2, null, null, null },
26158 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },
26159 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }},
46520 .required_features = .{ .bmi2, null, null, null },
46521 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
46522 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
2616046523 .patterns = &.{
26161 .{ .src = .{ .mem, .none } },
46524 .{ .src = .{ .to_mem, .none, .none } },
2616246525 },
2616346526 .extra_temps = .{
2616446527 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26165 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
26166 .unused,
46528 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
46529 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
2616746530 .unused,
2616846531 .unused,
2616946532 .unused,
......@@ -26172,23 +46535,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2617246535 .unused,
2617346536 },
2617446537 .dst_temps = .{.mem},
46538 .clobbers = .{ .eflags = true },
2617546539 .each = .{ .once = &.{
26176 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26177 .{ .@"0:", .vp_w, .movsxb, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
26178 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ },
26179 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
46540 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46541 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
46542 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
46543 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
46544 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2618046545 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2618146546 } },
2618246547 }, .{
26183 .required_features = .{ .avx2, null, null, null },
26184 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any },
26185 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .word } }},
46548 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
46549 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
2618646550 .patterns = &.{
26187 .{ .src = .{ .mem, .none } },
46551 .{ .src = .{ .to_mem, .none, .none } },
2618846552 },
2618946553 .extra_temps = .{
2619046554 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26191 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
46555 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
2619246556 .unused,
2619346557 .unused,
2619446558 .unused,
......@@ -26198,23 +46562,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2619846562 .unused,
2619946563 },
2620046564 .dst_temps = .{.mem},
46565 .clobbers = .{ .eflags = true },
2620146566 .each = .{ .once = &.{
26202 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26203 .{ .@"0:", .vp_w, .movzxb, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
26204 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ },
26205 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
46567 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46568 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
46569 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
46570 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
46571 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2620646572 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2620746573 } },
2620846574 }, .{
26209 .required_features = .{ .avx, null, null, null },
26210 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },
26211 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},
46575 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },
46576 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
2621246577 .patterns = &.{
26213 .{ .src = .{ .mem, .none } },
46578 .{ .src = .{ .to_mem, .none, .none } },
2621446579 },
2621546580 .extra_temps = .{
2621646581 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26217 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
46582 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
2621846583 .unused,
2621946584 .unused,
2622046585 .unused,
......@@ -26224,23 +46589,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2622446589 .unused,
2622546590 },
2622646591 .dst_temps = .{.mem},
46592 .clobbers = .{ .eflags = true },
2622746593 .each = .{ .once = &.{
26228 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26229 .{ .@"0:", .vp_w, .movsxb, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
26230 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
26231 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
46594 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46595 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
46596 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
46597 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2623246598 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2623346599 } },
2623446600 }, .{
26235 .required_features = .{ .avx, null, null, null },
26236 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any },
26237 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }},
46601 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .yword } }, .any, .any },
46602 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
2623846603 .patterns = &.{
26239 .{ .src = .{ .mem, .none } },
46604 .{ .src = .{ .to_mem, .none, .none } },
2624046605 },
2624146606 .extra_temps = .{
2624246607 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26243 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
46608 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
2624446609 .unused,
2624546610 .unused,
2624646611 .unused,
......@@ -26250,24 +46615,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2625046615 .unused,
2625146616 },
2625246617 .dst_temps = .{.mem},
46618 .clobbers = .{ .eflags = true },
2625346619 .each = .{ .once = &.{
26254 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26255 .{ .@"0:", .vp_w, .movzxb, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
26256 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
26257 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
46620 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46621 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
46622 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
46623 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
46624 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
46625 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2625846626 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2625946627 } },
2626046628 }, .{
26261 .required_features = .{ .sse4_1, null, null, null },
26262 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },
26263 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},
46629 .required_features = .{ .bmi2, null, null, null },
46630 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
46631 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
2626446632 .patterns = &.{
26265 .{ .src = .{ .mem, .none } },
46633 .{ .src = .{ .to_mem, .none, .none } },
2626646634 },
2626746635 .extra_temps = .{
2626846636 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26269 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
26270 .unused,
46637 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
46638 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
2627146639 .unused,
2627246640 .unused,
2627346641 .unused,
......@@ -26276,23 +46644,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2627646644 .unused,
2627746645 },
2627846646 .dst_temps = .{.mem},
46647 .clobbers = .{ .eflags = true },
2627946648 .each = .{ .once = &.{
26280 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26281 .{ .@"0:", .p_w, .movsxb, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
26282 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
26283 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
46649 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46650 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
46651 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
46652 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
46653 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2628446654 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2628546655 } },
2628646656 }, .{
26287 .required_features = .{ .sse4_1, null, null, null },
26288 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any },
26289 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }},
46657 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
46658 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
2629046659 .patterns = &.{
26291 .{ .src = .{ .mem, .none } },
46660 .{ .src = .{ .to_mem, .none, .none } },
2629246661 },
2629346662 .extra_temps = .{
2629446663 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26295 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
46664 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
2629646665 .unused,
2629746666 .unused,
2629846667 .unused,
......@@ -26302,24 +46671,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2630246671 .unused,
2630346672 },
2630446673 .dst_temps = .{.mem},
46674 .clobbers = .{ .eflags = true },
2630546675 .each = .{ .once = &.{
26306 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26307 .{ .@"0:", .p_w, .movzxb, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
26308 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
26309 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
46676 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46677 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
46678 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
46679 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
46680 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2631046681 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2631146682 } },
2631246683 }, .{
26313 .required_features = .{ .slow_incdec, null, null, null },
26314 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
26315 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
46684 .src_constraints = .{ .any_scalar_int, .any, .any },
46685 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
2631646686 .patterns = &.{
26317 .{ .src = .{ .to_mem, .none } },
46687 .{ .src = .{ .to_mem, .none, .none } },
2631846688 },
2631946689 .extra_temps = .{
2632046690 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26321 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
26322 .unused,
46691 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
46692 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
2632346693 .unused,
2632446694 .unused,
2632546695 .unused,
......@@ -26328,23 +46698,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2632846698 .unused,
2632946699 },
2633046700 .dst_temps = .{.mem},
46701 .clobbers = .{ .eflags = true },
2633146702 .each = .{ .once = &.{
26332 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26333 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26334 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
26335 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
46703 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46704 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
46705 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
46706 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
46707 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
46708 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2633646709 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2633746710 } },
2633846711 }, .{
26339 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
26340 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
46712 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
46713 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
2634146714 .patterns = &.{
26342 .{ .src = .{ .to_mem, .none } },
46715 .{ .src = .{ .to_mem, .none, .none } },
2634346716 },
2634446717 .extra_temps = .{
2634546718 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26346 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
26347 .unused,
46719 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
46720 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
2634846721 .unused,
2634946722 .unused,
2635046723 .unused,
......@@ -26353,25 +46726,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2635346726 .unused,
2635446727 },
2635546728 .dst_temps = .{.mem},
46729 .clobbers = .{ .eflags = true },
2635646730 .each = .{ .once = &.{
26357 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26358 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26359 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
26360 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
26361 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
46731 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46732 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
46733 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
46734 .{ ._, ._l, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
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", ._, ._, ._ },
2636246740 } },
2636346741 }, .{
26364 .required_features = .{ .slow_incdec, null, null, null },
26365 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
26366 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
46742 .required_features = .{ .bmi2, null, null, null },
46743 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
46744 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
2636746745 .patterns = &.{
26368 .{ .src = .{ .to_mem, .none } },
46746 .{ .src = .{ .to_mem, .none, .none } },
2636946747 },
2637046748 .extra_temps = .{
2637146749 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26372 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
26373 .unused,
26374 .unused,
46750 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
46751 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
46752 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
2637546753 .unused,
2637646754 .unused,
2637746755 .unused,
......@@ -26379,23 +46757,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2637946757 .unused,
2638046758 },
2638146759 .dst_temps = .{.mem},
46760 .clobbers = .{ .eflags = true },
2638246761 .each = .{ .once = &.{
26383 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26384 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26385 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
26386 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
46762 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46763 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
46764 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
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), ._, ._ },
2638746769 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2638846770 } },
2638946771 }, .{
26390 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
26391 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
46772 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
46773 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
2639246774 .patterns = &.{
26393 .{ .src = .{ .to_mem, .none } },
46775 .{ .src = .{ .to_mem, .none, .none } },
2639446776 },
2639546777 .extra_temps = .{
2639646778 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26397 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
26398 .unused,
46779 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
46780 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
2639946781 .unused,
2640046782 .unused,
2640146783 .unused,
......@@ -26404,71 +46786,102 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2640446786 .unused,
2640546787 },
2640646788 .dst_temps = .{.mem},
46789 .clobbers = .{ .eflags = true },
2640746790 .each = .{ .once = &.{
26408 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26409 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26410 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
26411 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
26412 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
46791 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
46792 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
46793 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
46794 .{ ._, ._, .@"and", .tmp2d, .sa(.dst0, .add_umax), ._, ._ },
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", ._, ._, ._ },
2641346799 } },
2641446800 }, .{
2641546801 .required_features = .{ .avx, null, null, null },
26416 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },
26417 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
46802 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
46803 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
2641846804 .patterns = &.{
26419 .{ .src = .{ .mem, .none } },
26420 .{ .src = .{ .to_sse, .none } },
46805 .{ .src = .{ .to_sse, .none, .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,
2642146817 },
2642246818 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2642346819 .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), ._ },
2642546825 } },
2642646826 }, .{
2642746827 .required_features = .{ .avx, null, null, null },
26428 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },
26429 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
46828 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
46829 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
2643046830 .patterns = &.{
26431 .{ .src = .{ .mem, .none } },
26432 .{ .src = .{ .to_sse, .none } },
46831 .{ .src = .{ .to_sse, .none, .none } },
2643346832 },
26434 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26435 .each = .{ .once = &.{
26436 .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ },
26437 } },
26438 }, .{
26439 .required_features = .{ .sse4_1, null, null, null },
26440 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },
26441 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
26442 .patterns = &.{
26443 .{ .src = .{ .mem, .none } },
26444 .{ .src = .{ .to_sse, .none } },
46833 .extra_temps = .{
46834 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
46835 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
46836 .unused,
46837 .unused,
46838 .unused,
46839 .unused,
46840 .unused,
46841 .unused,
46842 .unused,
2644546843 },
2644646844 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2644746845 .each = .{ .once = &.{
26448 .{ ._, .p_d, .movsxb, .dst0x, .src0d, ._, ._ },
46846 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
46847 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
2644946848 } },
2645046849 }, .{
26451 .required_features = .{ .sse4_1, null, null, null },
26452 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },
26453 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
46850 .required_features = .{ .sse2, null, null, null },
46851 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
46852 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
2645446853 .patterns = &.{
26455 .{ .src = .{ .mem, .none } },
26456 .{ .src = .{ .to_sse, .none } },
46854 .{ .src = .{ .to_mut_sse, .none, .none } },
2645746855 },
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 }},
2645946868 .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), ._, ._ },
2646146874 } },
2646246875 }, .{
2646346876 .required_features = .{ .sse2, null, null, null },
26464 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },
26465 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
46877 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
46878 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
2646646879 .patterns = &.{
26467 .{ .src = .{ .to_mut_sse, .none } },
46880 .{ .src = .{ .to_mut_sse, .none, .none } },
2646846881 },
2646946882 .extra_temps = .{
26470 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
26471 .unused,
46883 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
46884 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
2647246885 .unused,
2647346886 .unused,
2647446887 .unused,
......@@ -26479,22 +46892,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2647946892 },
2648046893 .dst_temps = .{.{ .ref = .src0 }},
2648146894 .each = .{ .once = &.{
26482 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
26483 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },
26484 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
26485 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
26486 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
46895 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
46896 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
2648746897 } },
2648846898 }, .{
26489 .required_features = .{ .sse2, null, null, null },
26490 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },
26491 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
46899 .required_features = .{ .sse, null, null, null },
46900 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
46901 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
2649246902 .patterns = &.{
26493 .{ .src = .{ .to_mut_sse, .none } },
46903 .{ .src = .{ .to_mut_sse, .none, .none } },
2649446904 },
2649546905 .extra_temps = .{
26496 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
26497 .unused,
46906 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
46907 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
2649846908 .unused,
2649946909 .unused,
2650046910 .unused,
......@@ -26505,72 +46915,165 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2650546915 },
2650646916 .dst_temps = .{.{ .ref = .src0 }},
2650746917 .each = .{ .once = &.{
26508 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
26509 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
26510 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
46918 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
46919 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
2651146920 } },
2651246921 }, .{
2651346922 .required_features = .{ .avx2, null, null, null },
26514 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },
26515 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }},
46923 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any },
46924 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},
2651646925 .patterns = &.{
26517 .{ .src = .{ .mem, .none } },
26518 .{ .src = .{ .to_sse, .none } },
46926 .{ .src = .{ .to_sse, .none, .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,
2651946938 },
2652046939 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2652146940 .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), ._ },
2652346946 } },
2652446947 }, .{
2652546948 .required_features = .{ .avx2, null, null, null },
26526 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any },
26527 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }},
46949 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any },
46950 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }},
2652846951 .patterns = &.{
26529 .{ .src = .{ .mem, .none } },
26530 .{ .src = .{ .to_sse, .none } },
46952 .{ .src = .{ .to_sse, .none, .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,
2653146964 },
2653246965 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2653346966 .each = .{ .once = &.{
26534 .{ ._, .vp_d, .movzxb, .dst0y, .src0q, ._, ._ },
46967 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
46968 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
2653546969 } },
2653646970 }, .{
2653746971 .required_features = .{ .avx2, null, null, null },
26538 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },
26539 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }},
46972 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any },
46973 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},
2654046974 .patterns = &.{
26541 .{ .src = .{ .mem, .none } },
46975 .{ .src = .{ .to_mem, .none, .none } },
2654246976 },
2654346977 .extra_temps = .{
2654446978 .{ .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,
2654647016 .unused,
2654747017 .unused,
2654847018 .unused,
2654947019 .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 } } },
2655047046 .unused,
2655147047 .unused,
2655247048 .unused,
2655347049 },
2655447050 .dst_temps = .{.mem},
47051 .clobbers = .{ .eflags = true },
2655547052 .each = .{ .once = &.{
26556 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26557 .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_size), ._, ._ },
26558 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp1y, ._, ._ },
26559 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
47053 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
47054 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
47055 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
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), ._, ._ },
2656047063 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2656147064 } },
2656247065 }, .{
26563 .required_features = .{ .avx2, null, null, null },
26564 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any },
26565 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }},
47066 .required_features = .{ .avx, null, null, null },
47067 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
47068 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
2656647069 .patterns = &.{
26567 .{ .src = .{ .mem, .none } },
47070 .{ .src = .{ .to_mem, .none, .none } },
2656847071 },
2656947072 .extra_temps = .{
2657047073 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26571 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
26572 .unused,
26573 .unused,
47074 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
47075 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
47076 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
2657447077 .unused,
2657547078 .unused,
2657647079 .unused,
......@@ -26578,51 +47081,62 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2657847081 .unused,
2657947082 },
2658047083 .dst_temps = .{.mem},
47084 .clobbers = .{ .eflags = true },
2658147085 .each = .{ .once = &.{
26582 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26583 .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
26584 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp1y, ._, ._ },
26585 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
47086 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
47087 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
47088 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
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), ._, ._ },
2658647092 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2658747093 } },
2658847094 }, .{
26589 .required_features = .{ .avx, null, null, null },
26590 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },
26591 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
47095 .required_features = .{ .sse2, null, null, null },
47096 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
47097 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
2659247098 .patterns = &.{
26593 .{ .src = .{ .mem, .none } },
47099 .{ .src = .{ .to_mem, .none, .none } },
2659447100 },
2659547101 .extra_temps = .{
2659647102 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26597 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
26598 .unused,
26599 .unused,
26600 .unused,
26601 .unused,
47103 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
47104 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
47105 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
47106 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
47107 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
2660247108 .unused,
2660347109 .unused,
2660447110 .unused,
2660547111 },
2660647112 .dst_temps = .{.mem},
47113 .clobbers = .{ .eflags = true },
2660747114 .each = .{ .once = &.{
26608 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26609 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ },
26610 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ },
26611 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
47115 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
47116 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
47117 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
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), ._, ._ },
2661247126 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2661347127 } },
2661447128 }, .{
26615 .required_features = .{ .avx, null, null, null },
26616 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },
26617 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},
47129 .required_features = .{ .sse2, null, null, null },
47130 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
47131 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
2661847132 .patterns = &.{
26619 .{ .src = .{ .mem, .none } },
47133 .{ .src = .{ .to_mem, .none, .none } },
2662047134 },
2662147135 .extra_temps = .{
2662247136 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26623 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
26624 .unused,
26625 .unused,
47137 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
47138 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
47139 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
2662647140 .unused,
2662747141 .unused,
2662847142 .unused,
......@@ -26630,25 +47144,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2663047144 .unused,
2663147145 },
2663247146 .dst_temps = .{.mem},
47147 .clobbers = .{ .eflags = true },
2663347148 .each = .{ .once = &.{
26634 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26635 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ },
26636 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ },
26637 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
47149 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
47150 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
47151 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
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), ._, ._ },
2663847156 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2663947157 } },
2664047158 }, .{
26641 .required_features = .{ .sse4_1, null, null, null },
26642 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },
26643 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
47159 .required_features = .{ .sse, null, null, null },
47160 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
47161 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
2664447162 .patterns = &.{
26645 .{ .src = .{ .mem, .none } },
47163 .{ .src = .{ .to_mem, .none, .none } },
2664647164 },
2664747165 .extra_temps = .{
2664847166 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26649 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
26650 .unused,
26651 .unused,
47167 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
47168 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
47169 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
2665247170 .unused,
2665347171 .unused,
2665447172 .unused,
......@@ -26656,23 +47174,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2665647174 .unused,
2665747175 },
2665847176 .dst_temps = .{.mem},
47177 .clobbers = .{ .eflags = true },
2665947178 .each = .{ .once = &.{
26660 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26661 .{ .@"0:", .p_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ },
26662 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ },
26663 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
47179 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
47180 .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ },
47181 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
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), ._, ._ },
2666447186 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2666547187 } },
2666647188 }, .{
26667 .required_features = .{ .sse4_1, null, null, null },
26668 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },
26669 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},
47189 .required_features = .{ .@"64bit", null, null, null },
47190 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
47191 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }},
2667047192 .patterns = &.{
26671 .{ .src = .{ .mem, .none } },
47193 .{ .src = .{ .to_mem, .none, .none } },
2667247194 },
2667347195 .extra_temps = .{
2667447196 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26675 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
47197 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
2667647198 .unused,
2667747199 .unused,
2667847200 .unused,
......@@ -26682,23 +47204,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2668247204 .unused,
2668347205 },
2668447206 .dst_temps = .{.mem},
47207 .clobbers = .{ .eflags = true },
2668547208 .each = .{ .once = &.{
26686 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26687 .{ .@"0:", .p_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ },
26688 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ },
26689 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
47209 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
47210 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
47211 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
47212 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2669047213 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2669147214 } },
2669247215 }, .{
26693 .required_features = .{ .slow_incdec, null, null, null },
26694 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
26695 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
47216 .required_features = .{ .@"64bit", null, null, null },
47217 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
47218 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
2669647219 .patterns = &.{
26697 .{ .src = .{ .to_mem, .none } },
47220 .{ .src = .{ .to_mem, .none, .none } },
2669847221 },
2669947222 .extra_temps = .{
2670047223 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26701 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
47224 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
2670247225 .unused,
2670347226 .unused,
2670447227 .unused,
......@@ -26708,23 +47231,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2670847231 .unused,
2670947232 },
2671047233 .dst_temps = .{.mem},
47234 .clobbers = .{ .eflags = true },
2671147235 .each = .{ .once = &.{
26712 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26713 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26714 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
26715 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
47236 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
47237 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
47238 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
47239 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
47240 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
47241 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2671647242 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2671747243 } },
2671847244 }, .{
26719 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
26720 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
47245 .required_features = .{ .@"64bit", .bmi2, null, null },
47246 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
47247 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
2672147248 .patterns = &.{
26722 .{ .src = .{ .to_mem, .none } },
47249 .{ .src = .{ .to_mem, .none, .none } },
2672347250 },
2672447251 .extra_temps = .{
2672547252 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26726 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
26727 .unused,
47253 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
47254 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
2672847255 .unused,
2672947256 .unused,
2673047257 .unused,
......@@ -26733,23 +47260,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2673347260 .unused,
2673447261 },
2673547262 .dst_temps = .{.mem},
47263 .clobbers = .{ .eflags = true },
2673647264 .each = .{ .once = &.{
26737 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26738 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26739 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
26740 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
26741 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
47265 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
47266 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
47267 .{ .@"0:", ._, .bzhi, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), .tmp1q, ._ },
47268 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
47269 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
47270 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2674247271 } },
2674347272 }, .{
26744 .required_features = .{ .slow_incdec, null, null, null },
26745 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
26746 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
47273 .required_features = .{ .@"64bit", null, null, null },
47274 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
47275 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
2674747276 .patterns = &.{
26748 .{ .src = .{ .to_mem, .none } },
47277 .{ .src = .{ .to_mem, .none, .none } },
2674947278 },
2675047279 .extra_temps = .{
2675147280 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26752 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
47281 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
2675347282 .unused,
2675447283 .unused,
2675547284 .unused,
......@@ -26759,22 +47288,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2675947288 .unused,
2676047289 },
2676147290 .dst_temps = .{.mem},
47291 .clobbers = .{ .eflags = true },
2676247292 .each = .{ .once = &.{
26763 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26764 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26765 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
26766 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
47293 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
47294 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
47295 .{ ._, ._, .@"and", .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
47296 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
47297 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2676747298 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2676847299 } },
2676947300 }, .{
26770 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
26771 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
47301 .required_features = .{ .@"64bit", null, null, null },
47302 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
47303 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }},
2677247304 .patterns = &.{
26773 .{ .src = .{ .to_mem, .none } },
47305 .{ .src = .{ .to_mem, .none, .none } },
2677447306 },
2677547307 .extra_temps = .{
2677647308 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26777 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
47309 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
2677847310 .unused,
2677947311 .unused,
2678047312 .unused,
......@@ -26784,71 +47316,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2678447316 .unused,
2678547317 },
2678647318 .dst_temps = .{.mem},
47319 .clobbers = .{ .eflags = true },
2678747320 .each = .{ .once = &.{
26788 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26789 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26790 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
26791 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
26792 .{ ._, ._nz, .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, ._, ._ },
47321 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
47322 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
47323 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
47324 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
47325 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2684147326 } },
2684247327 }, .{
26843 .required_features = .{ .sse2, null, null, null },
26844 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any },
26845 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
47328 .required_features = .{ .@"64bit", null, null, null },
47329 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
47330 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
2684647331 .patterns = &.{
26847 .{ .src = .{ .to_mut_sse, .none } },
47332 .{ .src = .{ .to_mem, .none, .none } },
2684847333 },
2684947334 .extra_temps = .{
26850 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
26851 .unused,
47335 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
47336 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
2685247337 .unused,
2685347338 .unused,
2685447339 .unused,
......@@ -26857,27 +47342,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2685747342 .unused,
2685847343 .unused,
2685947344 },
26860 .dst_temps = .{.{ .ref = .src0 }},
47345 .dst_temps = .{.mem},
47346 .clobbers = .{ .eflags = true },
2686147347 .each = .{ .once = &.{
26862 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
26863 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },
26864 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
26865 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
26866 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
26867 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
26868 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
47348 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
47349 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
47350 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
47351 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
47352 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
47353 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
47354 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2686947355 } },
2687047356 }, .{
26871 .required_features = .{ .sse2, null, null, null },
26872 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any },
26873 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
47357 .required_features = .{ .@"64bit", .bmi2, null, null },
47358 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
47359 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
2687447360 .patterns = &.{
26875 .{ .src = .{ .to_mut_sse, .none } },
47361 .{ .src = .{ .to_mem, .none, .none } },
2687647362 },
2687747363 .extra_temps = .{
26878 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
26879 .unused,
26880 .unused,
47364 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
47365 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
47366 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
2688147367 .unused,
2688247368 .unused,
2688347369 .unused,
......@@ -26885,47 +47371,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2688547371 .unused,
2688647372 .unused,
2688747373 },
26888 .dst_temps = .{.{ .ref = .src0 }},
26889 .each = .{ .once = &.{
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 } }},
47374 .dst_temps = .{.mem},
47375 .clobbers = .{ .eflags = true },
2691647376 .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", ._, ._, ._ },
2691847383 } },
2691947384 }, .{
26920 .required_features = .{ .avx2, null, null, null },
26921 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },
26922 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},
47385 .required_features = .{ .@"64bit", null, null, null },
47386 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
47387 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
2692347388 .patterns = &.{
26924 .{ .src = .{ .mem, .none } },
47389 .{ .src = .{ .to_mem, .none, .none } },
2692547390 },
2692647391 .extra_temps = .{
2692747392 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26928 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
47393 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
2692947394 .unused,
2693047395 .unused,
2693147396 .unused,
......@@ -26935,23 +47400,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2693547400 .unused,
2693647401 },
2693747402 .dst_temps = .{.mem},
47403 .clobbers = .{ .eflags = true },
2693847404 .each = .{ .once = &.{
26939 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26940 .{ .@"0:", .vp_q, .movsxb, .tmp1y, .memia(.src0d, .tmp0, .add_size), ._, ._ },
26941 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_size), .tmp1y, ._, ._ },
26942 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
47405 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
47406 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
47407 .{ ._, ._, .@"and", .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
47408 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
47409 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2694347410 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2694447411 } },
2694547412 }, .{
26946 .required_features = .{ .avx2, null, null, null },
26947 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },
26948 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }},
47413 .required_features = .{ .@"64bit", null, null, null },
47414 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },
47415 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }},
2694947416 .patterns = &.{
26950 .{ .src = .{ .mem, .none } },
47417 .{ .src = .{ .to_mem, .none, .none } },
2695147418 },
2695247419 .extra_temps = .{
2695347420 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26954 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
47421 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
2695547422 .unused,
2695647423 .unused,
2695747424 .unused,
......@@ -26961,23 +47428,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2696147428 .unused,
2696247429 },
2696347430 .dst_temps = .{.mem},
47431 .clobbers = .{ .eflags = true },
2696447432 .each = .{ .once = &.{
26965 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26966 .{ .@"0:", .vp_q, .movzxb, .tmp1y, .memia(.src0d, .tmp0, .add_size), ._, ._ },
26967 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_size), .tmp1y, ._, ._ },
26968 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
47433 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
47434 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
47435 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
47436 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2696947437 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2697047438 } },
2697147439 }, .{
26972 .required_features = .{ .avx, null, null, null },
26973 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any },
26974 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
47440 .required_features = .{ .@"64bit", null, null, null },
47441 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .yword } }, .any, .any },
47442 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
2697547443 .patterns = &.{
26976 .{ .src = .{ .mem, .none } },
47444 .{ .src = .{ .to_mem, .none, .none } },
2697747445 },
2697847446 .extra_temps = .{
2697947447 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26980 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
47448 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
2698147449 .unused,
2698247450 .unused,
2698347451 .unused,
......@@ -26987,24 +47455,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2698747455 .unused,
2698847456 },
2698947457 .dst_temps = .{.mem},
47458 .clobbers = .{ .eflags = true },
2699047459 .each = .{ .once = &.{
26991 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26992 .{ .@"0:", .vp_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_size), ._, ._ },
26993 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_size), .tmp1x, ._, ._ },
26994 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
47460 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
47461 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
47462 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
47463 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
47464 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
47465 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2699547466 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2699647467 } },
2699747468 }, .{
26998 .required_features = .{ .avx, null, null, null },
26999 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any },
27000 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
47469 .required_features = .{ .@"64bit", .bmi2, null, null },
47470 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
47471 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
2700147472 .patterns = &.{
27002 .{ .src = .{ .mem, .none } },
47473 .{ .src = .{ .to_mem, .none, .none } },
2700347474 },
2700447475 .extra_temps = .{
2700547476 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27006 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
27007 .unused,
47477 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
47478 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
2700847479 .unused,
2700947480 .unused,
2701047481 .unused,
......@@ -27013,23 +47484,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2701347484 .unused,
2701447485 },
2701547486 .dst_temps = .{.mem},
47487 .clobbers = .{ .eflags = true },
2701647488 .each = .{ .once = &.{
27017 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27018 .{ .@"0:", .vp_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_size), ._, ._ },
27019 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_size), .tmp1x, ._, ._ },
27020 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
47489 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
47490 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
47491 .{ .@"0:", ._, .bzhi, .tmp2q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._ },
47492 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
47493 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2702147494 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2702247495 } },
2702347496 }, .{
27024 .required_features = .{ .sse4_1, null, null, null },
27025 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any },
27026 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
47497 .required_features = .{ .@"64bit", null, null, null },
47498 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
47499 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
2702747500 .patterns = &.{
27028 .{ .src = .{ .mem, .none } },
47501 .{ .src = .{ .to_mem, .none, .none } },
2702947502 },
2703047503 .extra_temps = .{
2703147504 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27032 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
47505 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
2703347506 .unused,
2703447507 .unused,
2703547508 .unused,
......@@ -27039,24 +47512,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2703947512 .unused,
2704047513 },
2704147514 .dst_temps = .{.mem},
47515 .clobbers = .{ .eflags = true },
2704247516 .each = .{ .once = &.{
27043 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27044 .{ .@"0:", .p_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_size), ._, ._ },
27045 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_size), .tmp1x, ._, ._ },
27046 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
47517 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
47518 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
47519 .{ ._, ._, .@"and", .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
47520 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
47521 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2704747522 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2704847523 } },
2704947524 }, .{
27050 .required_features = .{ .sse4_1, null, null, null },
27051 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any },
27052 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
47525 .required_features = .{ .@"64bit", null, null, null },
47526 .src_constraints = .{ .any_scalar_int, .any, .any },
47527 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }},
2705347528 .patterns = &.{
27054 .{ .src = .{ .mem, .none } },
47529 .{ .src = .{ .to_mem, .none, .none } },
2705547530 },
2705647531 .extra_temps = .{
2705747532 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27058 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
27059 .unused,
47533 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
47534 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
2706047535 .unused,
2706147536 .unused,
2706247537 .unused,
......@@ -27065,22 +47540,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2706547540 .unused,
2706647541 },
2706747542 .dst_temps = .{.mem},
47543 .clobbers = .{ .eflags = true },
2706847544 .each = .{ .once = &.{
27069 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27070 .{ .@"0:", .p_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_size), ._, ._ },
27071 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_size), .tmp1x, ._, ._ },
27072 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
47545 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
47546 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
47547 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
47548 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
47549 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
47550 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2707347551 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2707447552 } },
2707547553 }, .{
27076 .required_features = .{ .@"64bit", .slow_incdec, null, null },
27077 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
47554 .required_features = .{ .@"64bit", null, null, null },
47555 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
2707847556 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
2707947557 .patterns = &.{
27080 .{ .src = .{ .to_mem, .none } },
47558 .{ .src = .{ .to_mem, .none, .none } },
2708147559 },
2708247560 .extra_temps = .{
2708347561 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
47562 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
2708447563 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
2708547564 .unused,
2708647565 .unused,
......@@ -27088,28 +47567,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2708847567 .unused,
2708947568 .unused,
2709047569 .unused,
27091 .unused,
2709247570 },
2709347571 .dst_temps = .{.mem},
47572 .clobbers = .{ .eflags = true },
2709447573 .each = .{ .once = &.{
27095 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27096 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
27097 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
27098 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
47574 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
47575 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
47576 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
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), ._, ._ },
2709947582 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2710047583 } },
2710147584 }, .{
27102 .required_features = .{ .@"64bit", null, null, null },
27103 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
27104 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
47585 .required_features = .{ .@"64bit", .bmi2, null, null },
47586 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
47587 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
2710547588 .patterns = &.{
27106 .{ .src = .{ .to_mem, .none } },
47589 .{ .src = .{ .to_mem, .none, .none } },
2710747590 },
2710847591 .extra_temps = .{
2710947592 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27110 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
27111 .unused,
27112 .unused,
47593 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
47594 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
47595 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
2711347596 .unused,
2711447597 .unused,
2711547598 .unused,
......@@ -27117,24 +47600,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2711747600 .unused,
2711847601 },
2711947602 .dst_temps = .{.mem},
47603 .clobbers = .{ .eflags = true },
2712047604 .each = .{ .once = &.{
27121 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27122 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
27123 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
27124 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
27125 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
47605 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
47606 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
47607 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
47608 .{ .@"0:", ._, .bzhi, .tmp3q, .memi(.src0q, .tmp1), .tmp2q, ._ },
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", ._, ._, ._ },
2712647613 } },
2712747614 }, .{
27128 .required_features = .{ .slow_incdec, null, null, null },
27129 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
27130 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
47615 .required_features = .{ .@"64bit", null, null, null },
47616 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
47617 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
2713147618 .patterns = &.{
27132 .{ .src = .{ .to_mem, .none } },
47619 .{ .src = .{ .to_mem, .none, .none } },
2713347620 },
2713447621 .extra_temps = .{
2713547622 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2713647623 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27137 .unused,
47624 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
2713847625 .unused,
2713947626 .unused,
2714047627 .unused,
......@@ -27143,24 +47630,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2714347630 .unused,
2714447631 },
2714547632 .dst_temps = .{.mem},
47633 .clobbers = .{ .eflags = true },
2714647634 .each = .{ .once = &.{
27147 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27148 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
27149 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
27150 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
47635 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
47636 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
47637 .{ .@"0:", ._, .mov, .tmp2q, .ua(.dst0, .add_umax), ._, ._ },
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), ._, ._ },
2715147642 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2715247643 } },
2715347644 }, .{
27154 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
27155 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
47645 .required_features = .{ .@"64bit", .slow_incdec, null, null },
47646 .src_constraints = .{ .any_scalar_int, .any, .any },
47647 .dst_constraints = .{.{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }},
2715647648 .patterns = &.{
27157 .{ .src = .{ .to_mem, .none } },
47649 .{ .src = .{ .to_mem, .none, .none } },
2715847650 },
2715947651 .extra_temps = .{
27160 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2716147652 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27162 .unused,
27163 .unused,
47653 .{ .type = .usize, .kind = .{ .reg = .rsi } },
47654 .{ .type = .usize, .kind = .{ .reg = .rdi } },
47655 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2716447656 .unused,
2716547657 .unused,
2716647658 .unused,
......@@ -27168,132 +47660,128 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2716847660 .unused,
2716947661 },
2717047662 .dst_temps = .{.mem},
47663 .clobbers = .{ .eflags = true },
2717147664 .each = .{ .once = &.{
27172 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27173 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
27174 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
27175 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
27176 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
27177 } },
27178 }, .{
27179 .required_features = .{ .avx, null, null, null },
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, ._, ._ },
47665 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
47666 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
47667 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
47668 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
47669 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
47670 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
47671 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
47672 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
2720347673 } },
2720447674 }, .{
27205 .required_features = .{ .sse4_1, null, null, null },
27206 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
27207 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
47675 .required_features = .{ .@"64bit", null, null, null },
47676 .src_constraints = .{ .any_scalar_int, .any, .any },
47677 .dst_constraints = .{.{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }},
2720847678 .patterns = &.{
27209 .{ .src = .{ .mem, .none } },
27210 .{ .src = .{ .to_sse, .none } },
47679 .{ .src = .{ .to_mem, .none, .none } },
2721147680 },
27212 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27213 .each = .{ .once = &.{
27214 .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ },
27215 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
27216 } },
27217 }, .{
27218 .required_features = .{ .sse4_1, null, null, null },
27219 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any },
27220 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
27221 .patterns = &.{
27222 .{ .src = .{ .mem, .none } },
27223 .{ .src = .{ .to_sse, .none } },
47681 .extra_temps = .{
47682 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
47683 .{ .type = .usize, .kind = .{ .reg = .rsi } },
47684 .{ .type = .usize, .kind = .{ .reg = .rdi } },
47685 .{ .type = .u32, .kind = .{ .reg = .ecx } },
47686 .unused,
47687 .unused,
47688 .unused,
47689 .unused,
47690 .unused,
2722447691 },
27225 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
47692 .dst_temps = .{.mem},
47693 .clobbers = .{ .eflags = true },
2722647694 .each = .{ .once = &.{
27227 .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ },
27228 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
47695 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
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", ._, ._, ._ },
2722947703 } },
2723047704 }, .{
27231 .required_features = .{ .sse2, null, null, null },
27232 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
27233 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
47705 .required_features = .{ .@"64bit", .slow_incdec, null, null },
47706 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
47707 .dst_constraints = .{.{ .scalar_exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
2723447708 .patterns = &.{
27235 .{ .src = .{ .to_mut_sse, .none } },
47709 .{ .src = .{ .to_mem, .none, .none } },
2723647710 },
2723747711 .extra_temps = .{
27238 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
27239 .unused,
27240 .unused,
27241 .unused,
47712 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
47713 .{ .type = .usize, .kind = .{ .reg = .rsi } },
47714 .{ .type = .usize, .kind = .{ .reg = .rdi } },
47715 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2724247716 .unused,
2724347717 .unused,
2724447718 .unused,
2724547719 .unused,
2724647720 .unused,
2724747721 },
27248 .dst_temps = .{.{ .ref = .src0 }},
47722 .dst_temps = .{.mem},
47723 .clobbers = .{ .eflags = true },
2724947724 .each = .{ .once = &.{
27250 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
27251 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },
27252 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
27253 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
27254 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
27255 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
27256 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
27257 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },
27258 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
47725 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
47726 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
47727 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
47728 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
47729 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
47730 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
47731 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
47732 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
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", ._, ._, ._ },
2725947738 } },
2726047739 }, .{
27261 .required_features = .{ .sse2, null, null, null },
27262 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any },
27263 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
47740 .required_features = .{ .@"64bit", null, null, null },
47741 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
47742 .dst_constraints = .{.{ .scalar_exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
2726447743 .patterns = &.{
27265 .{ .src = .{ .to_mut_sse, .none } },
47744 .{ .src = .{ .to_mem, .none, .none } },
2726647745 },
2726747746 .extra_temps = .{
27268 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
27269 .unused,
27270 .unused,
27271 .unused,
47747 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
47748 .{ .type = .usize, .kind = .{ .reg = .rsi } },
47749 .{ .type = .usize, .kind = .{ .reg = .rdi } },
47750 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2727247751 .unused,
2727347752 .unused,
2727447753 .unused,
2727547754 .unused,
2727647755 .unused,
2727747756 },
27278 .dst_temps = .{.{ .ref = .src0 }},
47757 .dst_temps = .{.mem},
47758 .clobbers = .{ .eflags = true },
2727947759 .each = .{ .once = &.{
27280 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
27281 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
27282 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
27283 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
27284 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
47760 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
47761 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
47762 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
47763 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
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", ._, ._, ._ },
2728547773 } },
2728647774 }, .{
2728747775 .required_features = .{ .@"64bit", .slow_incdec, null, null },
27288 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
27289 .dst_constraints = .{.any_scalar_signed_int},
47776 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
47777 .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
2729047778 .patterns = &.{
27291 .{ .src = .{ .to_mem, .none } },
47779 .{ .src = .{ .to_mem, .none, .none } },
2729247780 },
2729347781 .extra_temps = .{
27294 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
47782 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
47783 .{ .type = .usize, .kind = .{ .reg = .rsi } },
2729547784 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27296 .{ .type = .i64, .kind = .{ .reg = .rax } },
2729747785 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2729847786 .unused,
2729947787 .unused,
......@@ -27302,28 +47790,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2730247790 .unused,
2730347791 },
2730447792 .dst_temps = .{.mem},
47793 .clobbers = .{ .eflags = true },
2730547794 .each = .{ .once = &.{
27306 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27307 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
27308 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
27309 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
27310 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
27311 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
27312 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
27313 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
27314 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
47795 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
47796 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
47797 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
47798 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
47799 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
47800 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
47801 .{ ._, ._l, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
47802 .{ ._, ._r, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
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", ._, ._, ._ },
2731547810 } },
2731647811 }, .{
2731747812 .required_features = .{ .@"64bit", null, null, null },
27318 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
27319 .dst_constraints = .{.any_scalar_signed_int},
47813 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
47814 .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
2732047815 .patterns = &.{
27321 .{ .src = .{ .to_mem, .none } },
47816 .{ .src = .{ .to_mem, .none, .none } },
2732247817 },
2732347818 .extra_temps = .{
27324 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
47819 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
47820 .{ .type = .usize, .kind = .{ .reg = .rsi } },
2732547821 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27326 .{ .type = .i64, .kind = .{ .reg = .rax } },
2732747822 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2732847823 .unused,
2732947824 .unused,
......@@ -27332,312 +47827,304 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2733247827 .unused,
2733347828 },
2733447829 .dst_temps = .{.mem},
47830 .clobbers = .{ .eflags = true },
2733547831 .each = .{ .once = &.{
27336 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27337 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
27338 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
27339 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
27340 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
27341 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
27342 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
27343 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
47832 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
47833 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
47834 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
47835 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
47836 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
47837 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
47838 .{ ._, ._l, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
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, ._, ._, ._ },
2734447846 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2734547847 } },
2734647848 }, .{
2734747849 .required_features = .{ .@"64bit", .slow_incdec, null, null },
27348 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
27349 .dst_constraints = .{.any_scalar_int},
47850 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
47851 .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }},
2735047852 .patterns = &.{
27351 .{ .src = .{ .to_mem, .none } },
47853 .{ .src = .{ .to_mem, .none, .none } },
2735247854 },
2735347855 .extra_temps = .{
27354 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
47856 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
47857 .{ .type = .usize, .kind = .{ .reg = .rsi } },
2735547858 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27356 .{ .type = .u64, .kind = .{ .reg = .rax } },
2735747859 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27358 .unused,
47860 .{ .type = .u64, .kind = .{ .reg = .rax } },
2735947861 .unused,
2736047862 .unused,
2736147863 .unused,
2736247864 .unused,
2736347865 },
2736447866 .dst_temps = .{.mem},
47867 .clobbers = .{ .eflags = true },
2736547868 .each = .{ .once = &.{
27366 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27367 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
27368 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
47869 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
47870 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
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), ._, ._ },
2736947877 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
27370 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
27371 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
27372 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
27373 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
27374 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
47878 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
47879 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
47880 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
2737547881 } },
2737647882 }, .{
2737747883 .required_features = .{ .@"64bit", null, null, null },
27378 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
27379 .dst_constraints = .{.any_scalar_int},
47884 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
47885 .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }},
2738047886 .patterns = &.{
27381 .{ .src = .{ .to_mem, .none } },
47887 .{ .src = .{ .to_mem, .none, .none } },
2738247888 },
2738347889 .extra_temps = .{
27384 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
47890 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
47891 .{ .type = .usize, .kind = .{ .reg = .rsi } },
2738547892 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27386 .{ .type = .u64, .kind = .{ .reg = .rax } },
2738747893 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27388 .unused,
47894 .{ .type = .u64, .kind = .{ .reg = .rax } },
2738947895 .unused,
2739047896 .unused,
2739147897 .unused,
2739247898 .unused,
2739347899 },
2739447900 .dst_temps = .{.mem},
47901 .clobbers = .{ .eflags = true },
2739547902 .each = .{ .once = &.{
27396 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27397 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
27398 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
47903 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
47904 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
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), ._, ._ },
2739947911 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
27400 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
27401 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
27402 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
27403 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
47912 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
47913 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
2740447914 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2740547915 } },
2740647916 }, .{
27407 .required_features = .{ .avx, null, null, null },
27408 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
27409 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
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 } }},
47917 .required_features = .{ .@"64bit", .slow_incdec, null, null },
47918 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
47919 .dst_constraints = .{.{ .scalar_exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
2745847920 .patterns = &.{
27459 .{ .src = .{ .to_mut_sse, .none } },
47921 .{ .src = .{ .to_mem, .none, .none } },
2746047922 },
2746147923 .extra_temps = .{
27462 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
27463 .unused,
27464 .unused,
27465 .unused,
27466 .unused,
47924 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
47925 .{ .type = .usize, .kind = .{ .reg = .rsi } },
47926 .{ .type = .usize, .kind = .{ .reg = .rdi } },
47927 .{ .type = .u64, .kind = .{ .reg = .rax } },
47928 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2746747929 .unused,
2746847930 .unused,
2746947931 .unused,
2747047932 .unused,
2747147933 },
27472 .dst_temps = .{.{ .ref = .src0 }},
47934 .dst_temps = .{.mem},
47935 .clobbers = .{ .eflags = true },
2747347936 .each = .{ .once = &.{
27474 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
27475 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
27476 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
47937 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
47938 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
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", ._, ._, ._ },
2747747947 } },
2747847948 }, .{
27479 .required_features = .{ .sse2, null, null, null },
27480 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any },
27481 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
47949 .required_features = .{ .@"64bit", null, null, null },
47950 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
47951 .dst_constraints = .{.{ .scalar_exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
2748247952 .patterns = &.{
27483 .{ .src = .{ .to_mut_sse, .none } },
47953 .{ .src = .{ .to_mem, .none, .none } },
2748447954 },
2748547955 .extra_temps = .{
27486 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
27487 .unused,
27488 .unused,
27489 .unused,
27490 .unused,
47956 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
47957 .{ .type = .usize, .kind = .{ .reg = .rsi } },
47958 .{ .type = .usize, .kind = .{ .reg = .rdi } },
47959 .{ .type = .u64, .kind = .{ .reg = .rax } },
47960 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2749147961 .unused,
2749247962 .unused,
2749347963 .unused,
2749447964 .unused,
2749547965 },
27496 .dst_temps = .{.{ .ref = .src0 }},
27497 .each = .{ .once = &.{
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 } }},
47966 .dst_temps = .{.mem},
47967 .clobbers = .{ .eflags = true },
2752247968 .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", ._, ._, ._ },
2752447979 } },
2752547980 }, .{
27526 .required_features = .{ .avx2, null, null, null },
27527 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },
27528 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }},
47981 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
47982 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
47983 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
2752947984 .patterns = &.{
27530 .{ .src = .{ .mem, .none } },
47985 .{ .src = .{ .to_mem, .none, .none } },
2753147986 },
2753247987 .extra_temps = .{
27533 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27534 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
27535 .unused,
27536 .unused,
27537 .unused,
47988 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
47989 .{ .type = .usize, .kind = .{ .reg = .rsi } },
47990 .{ .type = .usize, .kind = .{ .reg = .rdi } },
47991 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
47992 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2753847993 .unused,
2753947994 .unused,
2754047995 .unused,
2754147996 .unused,
2754247997 },
2754347998 .dst_temps = .{.mem},
47999 .clobbers = .{ .eflags = true },
2754448000 .each = .{ .once = &.{
27545 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27546 .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
27547 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ },
27548 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
27549 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
48001 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
48002 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
48003 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
48004 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
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", ._, ._, ._ },
2755048014 } },
2755148015 }, .{
27552 .required_features = .{ .avx2, null, null, null },
27553 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any },
27554 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }},
48016 .required_features = .{ .@"64bit", .bmi2, null, null },
48017 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
48018 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
2755548019 .patterns = &.{
27556 .{ .src = .{ .mem, .none } },
48020 .{ .src = .{ .to_mem, .none, .none } },
2755748021 },
2755848022 .extra_temps = .{
27559 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27560 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
27561 .unused,
27562 .unused,
27563 .unused,
48023 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
48024 .{ .type = .usize, .kind = .{ .reg = .rsi } },
48025 .{ .type = .usize, .kind = .{ .reg = .rdi } },
48026 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
48027 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2756448028 .unused,
2756548029 .unused,
2756648030 .unused,
2756748031 .unused,
2756848032 },
2756948033 .dst_temps = .{.mem},
48034 .clobbers = .{ .eflags = true },
2757048035 .each = .{ .once = &.{
27571 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27572 .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
27573 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ },
27574 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
27575 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
48036 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
48037 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
48038 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
48039 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
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", ._, ._, ._ },
2757648049 } },
2757748050 }, .{
27578 .required_features = .{ .avx, null, null, null },
27579 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
27580 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
48051 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
48052 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
48053 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
2758148054 .patterns = &.{
27582 .{ .src = .{ .mem, .none } },
48055 .{ .src = .{ .to_mem, .none, .none } },
2758348056 },
2758448057 .extra_temps = .{
27585 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27586 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
27587 .unused,
27588 .unused,
27589 .unused,
27590 .unused,
48058 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
48059 .{ .type = .usize, .kind = .{ .reg = .rsi } },
48060 .{ .type = .usize, .kind = .{ .reg = .rdi } },
48061 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
48062 .{ .type = .u32, .kind = .{ .reg = .ecx } },
48063 .{ .type = .u64, .kind = .{ .reg = .rax } },
2759148064 .unused,
2759248065 .unused,
2759348066 .unused,
2759448067 },
2759548068 .dst_temps = .{.mem},
48069 .clobbers = .{ .eflags = true },
2759648070 .each = .{ .once = &.{
27597 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27598 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
27599 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
27600 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
27601 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
48071 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
48072 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
48073 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
48074 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
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", ._, ._, ._ },
2760248082 } },
2760348083 }, .{
27604 .required_features = .{ .avx, null, null, null },
27605 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any },
27606 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},
48084 .required_features = .{ .@"64bit", .bmi2, null, null },
48085 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
48086 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
2760748087 .patterns = &.{
27608 .{ .src = .{ .mem, .none } },
48088 .{ .src = .{ .to_mem, .none, .none } },
2760948089 },
2761048090 .extra_temps = .{
27611 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27612 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
27613 .unused,
27614 .unused,
27615 .unused,
27616 .unused,
48091 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
48092 .{ .type = .usize, .kind = .{ .reg = .rsi } },
48093 .{ .type = .usize, .kind = .{ .reg = .rdi } },
48094 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
48095 .{ .type = .u32, .kind = .{ .reg = .ecx } },
48096 .{ .type = .u64, .kind = .{ .reg = .rax } },
2761748097 .unused,
2761848098 .unused,
2761948099 .unused,
2762048100 },
2762148101 .dst_temps = .{.mem},
48102 .clobbers = .{ .eflags = true },
2762248103 .each = .{ .once = &.{
27623 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27624 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
27625 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
27626 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
27627 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
48104 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
48105 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
48106 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
48107 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
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", ._, ._, ._ },
2762848115 } },
2762948116 }, .{
27630 .required_features = .{ .sse4_1, null, null, null },
27631 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
27632 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
48117 .required_features = .{ .@"64bit", .slow_incdec, null, null },
48118 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
48119 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
2763348120 .patterns = &.{
27634 .{ .src = .{ .mem, .none } },
48121 .{ .src = .{ .to_mem, .none, .none } },
2763548122 },
2763648123 .extra_temps = .{
27637 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27638 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
27639 .unused,
27640 .unused,
48124 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
48125 .{ .type = .usize, .kind = .{ .reg = .rsi } },
48126 .{ .type = .usize, .kind = .{ .reg = .rdi } },
48127 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2764148128 .unused,
2764248129 .unused,
2764348130 .unused,
......@@ -27645,25 +48132,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2764548132 .unused,
2764648133 },
2764748134 .dst_temps = .{.mem},
48135 .clobbers = .{ .eflags = true },
2764848136 .each = .{ .once = &.{
27649 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27650 .{ .@"0:", .p_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
27651 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
27652 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
27653 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
48137 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
48138 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
48139 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
48140 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
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", ._, ._, ._ },
2765448150 } },
2765548151 }, .{
27656 .required_features = .{ .sse4_1, null, null, null },
27657 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any },
27658 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},
48152 .required_features = .{ .@"64bit", null, null, null },
48153 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
48154 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
2765948155 .patterns = &.{
27660 .{ .src = .{ .mem, .none } },
48156 .{ .src = .{ .to_mem, .none, .none } },
2766148157 },
2766248158 .extra_temps = .{
27663 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27664 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
27665 .unused,
27666 .unused,
48159 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
48160 .{ .type = .usize, .kind = .{ .reg = .rsi } },
48161 .{ .type = .usize, .kind = .{ .reg = .rdi } },
48162 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2766748163 .unused,
2766848164 .unused,
2766948165 .unused,
......@@ -27671,221 +48167,497 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2767148167 .unused,
2767248168 },
2767348169 .dst_temps = .{.mem},
48170 .clobbers = .{ .eflags = true },
2767448171 .each = .{ .once = &.{
27675 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27676 .{ .@"0:", .p_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
27677 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
27678 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
27679 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
48172 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
48173 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
48174 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
48175 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
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", ._, ._, ._ },
2768048185 } },
2768148186 }, .{
27682 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
27683 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
48187 .required_features = .{ .@"64bit", .slow_incdec, null, null },
48188 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
48189 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
2768448190 .patterns = &.{
27685 .{ .src = .{ .to_mem, .none } },
48191 .{ .src = .{ .to_mem, .none, .none } },
2768648192 },
2768748193 .extra_temps = .{
27688 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27689 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
27690 .unused,
27691 .unused,
27692 .unused,
48194 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
48195 .{ .type = .usize, .kind = .{ .reg = .rsi } },
48196 .{ .type = .usize, .kind = .{ .reg = .rdi } },
48197 .{ .type = .u64, .kind = .{ .reg = .rax } },
48198 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2769348199 .unused,
2769448200 .unused,
2769548201 .unused,
2769648202 .unused,
2769748203 },
2769848204 .dst_temps = .{.mem},
48205 .clobbers = .{ .eflags = true },
2769948206 .each = .{ .once = &.{
27700 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27701 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
27702 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
27703 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
27704 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
48207 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
48208 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
48209 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
48210 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
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", ._, ._, ._ },
2770548219 } },
2770648220 }, .{
27707 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
27708 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
48221 .required_features = .{ .@"64bit", null, null, null },
48222 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
48223 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
2770948224 .patterns = &.{
27710 .{ .src = .{ .to_mem, .none } },
48225 .{ .src = .{ .to_mem, .none, .none } },
2771148226 },
2771248227 .extra_temps = .{
27713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2771448228 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27715 .unused,
27716 .unused,
27717 .unused,
48229 .{ .type = .usize, .kind = .{ .reg = .rsi } },
48230 .{ .type = .usize, .kind = .{ .reg = .rdi } },
48231 .{ .type = .u64, .kind = .{ .reg = .rax } },
48232 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2771848233 .unused,
2771948234 .unused,
2772048235 .unused,
2772148236 .unused,
2772248237 },
2772348238 .dst_temps = .{.mem},
48239 .clobbers = .{ .eflags = true },
2772448240 .each = .{ .once = &.{
27725 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27726 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
27727 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
27728 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
27729 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
48241 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
48242 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
48243 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
48244 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
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", ._, ._, ._ },
2773048253 } },
27731 }, .{
27732 .required_features = .{ .avx, null, null, null },
27733 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
27734 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
48254 } }) catch |err| switch (err) {
48255 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
48256 @tagName(air_tag),
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 }},
2773548439 .patterns = &.{
27736 .{ .src = .{ .mem, .none } },
27737 .{ .src = .{ .to_sse, .none } },
48440 .{ .src = .{ .to_gpr, .simm32, .none } },
2773848441 },
27739 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
48442 .dst_temps = .{.{ .rc = .general_purpose }},
2774048443 .each = .{ .once = &.{
27741 .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ },
48444 .{ ._, ._, .movzx, .dst0d, .leaa(.src0b, .add_src0_elem_size_times_src1), ._, ._ },
2774248445 } },
2774348446 }, .{
27744 .required_features = .{ .avx, null, null, null },
27745 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any },
27746 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
48447 .dst_constraints = .{.{ .int = .byte }},
2774748448 .patterns = &.{
27748 .{ .src = .{ .mem, .none } },
27749 .{ .src = .{ .to_sse, .none } },
48449 .{ .src = .{ .to_gpr, .to_gpr, .none } },
2775048450 },
27751 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
48451 .dst_temps = .{.{ .rc = .general_purpose }},
2775248452 .each = .{ .once = &.{
27753 .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ },
48453 .{ ._, ._, .movzx, .dst0d, .leai(.src0b, .src1), ._, ._ },
2775448454 } },
2775548455 }, .{
27756 .required_features = .{ .sse4_1, null, null, null },
27757 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
27758 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
48456 .dst_constraints = .{.{ .int = .word }},
2775948457 .patterns = &.{
27760 .{ .src = .{ .mem, .none } },
27761 .{ .src = .{ .to_sse, .none } },
48458 .{ .src = .{ .to_gpr, .simm32, .none } },
2776248459 },
27763 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
48460 .dst_temps = .{.{ .rc = .general_purpose }},
2776448461 .each = .{ .once = &.{
27765 .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ },
48462 .{ ._, ._, .movzx, .dst0d, .leaa(.src0w, .add_src0_elem_size_times_src1), ._, ._ },
2776648463 } },
2776748464 }, .{
27768 .required_features = .{ .sse4_1, null, null, null },
27769 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any },
27770 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
48465 .dst_constraints = .{.{ .int = .word }},
2777148466 .patterns = &.{
27772 .{ .src = .{ .mem, .none } },
27773 .{ .src = .{ .to_sse, .none } },
48467 .{ .src = .{ .to_gpr, .to_gpr, .none } },
2777448468 },
27775 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
48469 .dst_temps = .{.{ .rc = .general_purpose }},
2777648470 .each = .{ .once = &.{
27777 .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ },
48471 .{ ._, ._, .movzx, .dst0d, .leasi(.src0w, .@"2", .src1), ._, ._ },
2777848472 } },
2777948473 }, .{
27780 .required_features = .{ .sse2, null, null, null },
27781 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
27782 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
48474 .dst_constraints = .{.{ .int = .dword }},
2778348475 .patterns = &.{
27784 .{ .src = .{ .to_mut_sse, .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,
48476 .{ .src = .{ .to_gpr, .simm32, .none } },
2779648477 },
27797 .dst_temps = .{.{ .ref = .src0 }},
48478 .dst_temps = .{.{ .rc = .general_purpose }},
2779848479 .each = .{ .once = &.{
27799 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
27800 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
27801 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
27802 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
27803 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
48480 .{ ._, ._, .mov, .dst0d, .leaa(.src0d, .add_src0_elem_size_times_src1), ._, ._ },
2780448481 } },
2780548482 }, .{
27806 .required_features = .{ .sse2, null, null, null },
27807 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any },
27808 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
48483 .dst_constraints = .{.{ .int = .dword }},
2780948484 .patterns = &.{
27810 .{ .src = .{ .to_mut_sse, .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,
48485 .{ .src = .{ .to_gpr, .to_gpr, .none } },
2782248486 },
27823 .dst_temps = .{.{ .ref = .src0 }},
48487 .dst_temps = .{.{ .rc = .general_purpose }},
2782448488 .each = .{ .once = &.{
27825 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
27826 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
27827 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
48489 .{ ._, ._, .mov, .dst0d, .leasi(.src0d, .@"4", .src1), ._, ._ },
2782848490 } },
2782948491 }, .{
27830 .required_features = .{ .avx2, null, null, null },
27831 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
27832 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},
48492 .dst_constraints = .{.{ .int = .qword }},
2783348493 .patterns = &.{
27834 .{ .src = .{ .mem, .none } },
27835 .{ .src = .{ .to_sse, .none } },
48494 .{ .src = .{ .to_gpr, .simm32, .none } },
2783648495 },
27837 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
48496 .dst_temps = .{.{ .rc = .general_purpose }},
2783848497 .each = .{ .once = &.{
27839 .{ ._, .vp_q, .movsxw, .dst0y, .src0q, ._, ._ },
48498 .{ ._, ._, .mov, .dst0q, .leaa(.src0q, .add_src0_elem_size_times_src1), ._, ._ },
2784048499 } },
2784148500 }, .{
27842 .required_features = .{ .avx2, null, null, null },
27843 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any },
27844 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
48501 .required_features = .{ .@"64bit", null, null, null },
48502 .dst_constraints = .{.{ .int = .qword }},
2784548503 .patterns = &.{
27846 .{ .src = .{ .mem, .none } },
27847 .{ .src = .{ .to_sse, .none } },
48504 .{ .src = .{ .to_gpr, .to_gpr, .none } },
2784848505 },
27849 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
48506 .dst_temps = .{.{ .rc = .general_purpose }},
2785048507 .each = .{ .once = &.{
27851 .{ ._, .vp_q, .movzxw, .dst0y, .src0q, ._, ._ },
48508 .{ ._, ._, .mov, .dst0q, .leasi(.src0q, .@"8", .src1), ._, ._ },
2785248509 } },
27853 }, .{
27854 .required_features = .{ .avx2, null, null, null },
27855 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
27856 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},
27857 .patterns = &.{
27858 .{ .src = .{ .mem, .none } },
48510 } }) catch |err| switch (err) {
48511 error.SelectFailed => {
48512 const elem_size = res_ty.abiSize(zcu);
48513 while (true) for (&ops) |*op| {
48514 if (try op.toRegClass(true, .general_purpose, cg)) break;
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);
2785948550 },
27860 .extra_temps = .{
27861 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27862 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
27863 .unused,
27864 .unused,
27865 .unused,
27866 .unused,
27867 .unused,
27868 .unused,
27869 .unused,
48551 else => |e| return e,
48552 } else {
48553 // hack around Sema OPV bugs
48554 res[0] = try cg.tempInit(res_ty, .none);
48555 }
48556 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
48557 },
48558 .slice_elem_ptr, .ptr_elem_ptr => |air_tag| if (use_old) switch (air_tag) {
48559 else => unreachable,
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 } },
2787048654 },
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 } }},
2788348655 .patterns = &.{
27884 .{ .src = .{ .mem, .none } },
48656 .{ .src = .{ .to_sse, .to_sse, .to_sse } },
2788548657 },
2788648658 .extra_temps = .{
27887 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27888 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
48659 .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
48660 .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
2788948661 .unused,
2789048662 .unused,
2789148663 .unused,
......@@ -27894,24 +48666,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2789448666 .unused,
2789548667 .unused,
2789648668 },
27897 .dst_temps = .{.mem},
48669 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2789848670 .each = .{ .once = &.{
27899 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27900 .{ .@"0:", .vp_q, .movzxw, .tmp1y, .memia(.src0q, .tmp0, .add_size), ._, ._ },
27901 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp1y, ._, ._ },
27902 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
27903 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
48671 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
48672 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
48673 .{ ._, .v_ps, .cvtph2, .tmp1x, .src2q, ._, ._ },
48674 .{ ._, .v_ss, .fmadd213, .dst0x, .tmp0x, .tmp1d, ._ },
48675 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
2790448676 } },
2790548677 }, .{
27906 .required_features = .{ .avx, null, null, null },
27907 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
27908 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
48678 .required_features = .{ .sse, null, null, null },
48679 .src_constraints = .{
48680 .{ .scalar_float = .{ .of = .word, .is = .word } },
48681 .{ .scalar_float = .{ .of = .word, .is = .word } },
48682 .{ .scalar_float = .{ .of = .word, .is = .word } },
48683 },
2790948684 .patterns = &.{
27910 .{ .src = .{ .mem, .none } },
48685 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } },
2791148686 },
48687 .call_frame = .{ .alignment = .@"16" },
2791248688 .extra_temps = .{
27913 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27914 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
48689 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
48690 .unused,
2791548691 .unused,
2791648692 .unused,
2791748693 .unused,
......@@ -27920,24 +48696,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2792048696 .unused,
2792148697 .unused,
2792248698 },
27923 .dst_temps = .{.mem},
48699 .dst_temps = .{.{ .ref = .src0 }},
48700 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2792448701 .each = .{ .once = &.{
27925 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
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", ._, ._, ._ },
48702 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
2793048703 } },
2793148704 }, .{
27932 .required_features = .{ .avx, null, null, null },
27933 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any },
27934 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
48705 .required_features = .{ .fma, .f16c, null, null },
48706 .src_constraints = .{
48707 .{ .scalar_float = .{ .of = .qword, .is = .word } },
48708 .{ .scalar_float = .{ .of = .qword, .is = .word } },
48709 .{ .scalar_float = .{ .of = .qword, .is = .word } },
48710 },
2793548711 .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 } },
2793748720 },
2793848721 .extra_temps = .{
27939 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27940 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
48722 .{ .type = .vector_4_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
48723 .{ .type = .vector_4_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
2794148724 .unused,
2794248725 .unused,
2794348726 .unused,
......@@ -27946,24 +48729,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2794648729 .unused,
2794748730 .unused,
2794848731 },
27949 .dst_temps = .{.mem},
48732 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2795048733 .each = .{ .once = &.{
27951 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27952 .{ .@"0:", .vp_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ },
27953 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ },
27954 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
27955 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
48734 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
48735 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
48736 .{ ._, .v_ps, .cvtph2, .tmp1x, .src2q, ._, ._ },
48737 .{ ._, .v_ps, .fmadd213, .dst0x, .tmp0x, .tmp1x, ._ },
48738 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
2795648739 } },
2795748740 }, .{
27958 .required_features = .{ .sse4_1, null, null, null },
27959 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
27960 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
48741 .required_features = .{ .fma, .f16c, null, null },
48742 .src_constraints = .{
48743 .{ .scalar_float = .{ .of = .xword, .is = .word } },
48744 .{ .scalar_float = .{ .of = .xword, .is = .word } },
48745 .{ .scalar_float = .{ .of = .xword, .is = .word } },
48746 },
2796148747 .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 } },
2796348756 },
2796448757 .extra_temps = .{
27965 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27966 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
48758 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
48759 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
2796748760 .unused,
2796848761 .unused,
2796948762 .unused,
......@@ -27972,26 +48765,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2797248765 .unused,
2797348766 .unused,
2797448767 },
27975 .dst_temps = .{.mem},
48768 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2797648769 .each = .{ .once = &.{
27977 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27978 .{ .@"0:", .p_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ },
27979 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ },
27980 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
27981 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
48770 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
48771 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
48772 .{ ._, .v_ps, .cvtph2, .tmp1y, .src2x, ._, ._ },
48773 .{ ._, .v_ps, .fmadd213, .dst0y, .tmp0y, .tmp1y, ._ },
48774 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
2798248775 } },
2798348776 }, .{
27984 .required_features = .{ .sse4_1, null, null, null },
27985 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any },
27986 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
48777 .required_features = .{ .fma, .f16c, null, null },
48778 .src_constraints = .{
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 },
2798748783 .patterns = &.{
27988 .{ .src = .{ .mem, .none } },
48784 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
2798948785 },
2799048786 .extra_temps = .{
2799148787 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27992 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
27993 .unused,
27994 .unused,
48788 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
48789 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
48790 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
2799548791 .unused,
2799648792 .unused,
2799748793 .unused,
......@@ -28000,286 +48796,230 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2800048796 },
2800148797 .dst_temps = .{.mem},
2800248798 .each = .{ .once = &.{
28003 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
28004 .{ .@"0:", .p_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ },
28005 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ },
28006 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
48799 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
48800 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
48801 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
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), ._, ._ },
2800748806 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2800848807 } },
2800948808 }, .{
28010 .required_features = .{ .@"64bit", null, null, null },
28011 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
28012 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
48809 .required_features = .{ .avx, null, null, null },
48810 .src_constraints = .{
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 },
2801348815 .patterns = &.{
28014 .{ .src = .{ .to_mem, .none } },
48816 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
2801548817 },
48818 .call_frame = .{ .alignment = .@"16" },
2801648819 .extra_temps = .{
2801748820 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28018 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
28019 .unused,
28020 .unused,
28021 .unused,
48821 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
48822 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
48823 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
48824 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
2802248825 .unused,
2802348826 .unused,
2802448827 .unused,
2802548828 .unused,
2802648829 },
2802748830 .dst_temps = .{.mem},
48831 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2802848832 .each = .{ .once = &.{
2802948833 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28030 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
28031 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
48834 .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ },
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), ._ },
2803248840 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2803348841 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2803448842 } },
2803548843 }, .{
28036 .required_features = .{ .@"64bit", null, null, null },
28037 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
28038 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
48844 .required_features = .{ .sse4_1, null, null, null },
48845 .src_constraints = .{
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 },
2803948850 .patterns = &.{
28040 .{ .src = .{ .to_mem, .none } },
48851 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
2804148852 },
48853 .call_frame = .{ .alignment = .@"16" },
2804248854 .extra_temps = .{
2804348855 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28044 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28045 .unused,
28046 .unused,
28047 .unused,
48856 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
48857 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
48858 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
48859 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
2804848860 .unused,
2804948861 .unused,
2805048862 .unused,
2805148863 .unused,
2805248864 },
2805348865 .dst_temps = .{.mem},
48866 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2805448867 .each = .{ .once = &.{
2805548868 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28056 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
28057 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
48869 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
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), ._ },
2805848877 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2805948878 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2806048879 } },
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 } },
2814148880 }, .{
2814248881 .required_features = .{ .sse2, null, null, null },
28143 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any },
28144 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
28145 .patterns = &.{
28146 .{ .src = .{ .to_mut_sse, .none } },
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,
48882 .src_constraints = .{
48883 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
48884 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
48885 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2815848886 },
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},
2817048887 .patterns = &.{
28171 .{ .src = .{ .to_mem, .none } },
48888 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
2817248889 },
48890 .call_frame = .{ .alignment = .@"16" },
2817348891 .extra_temps = .{
2817448892 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28175 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28176 .{ .type = .i64, .kind = .{ .reg = .rax } },
28177 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28178 .unused,
28179 .unused,
48893 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
48894 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
48895 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
48896 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
48897 .{ .type = .f16, .kind = .{ .reg = .ax } },
2818048898 .unused,
2818148899 .unused,
2818248900 .unused,
2818348901 },
2818448902 .dst_temps = .{.mem},
48903 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2818548904 .each = .{ .once = &.{
2818648905 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28187 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
28188 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
28189 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
28190 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
28191 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
28192 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
48906 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
48907 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
48908 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },
48909 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
48910 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
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, ._, ._ },
2819348915 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2819448916 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2819548917 } },
2819648918 }, .{
28197 .required_features = .{ .@"64bit", null, null, null },
28198 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
28199 .dst_constraints = .{.any_scalar_int},
48919 .required_features = .{ .sse, null, null, null },
48920 .src_constraints = .{
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 },
2820048925 .patterns = &.{
28201 .{ .src = .{ .to_mem, .none } },
48926 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
2820248927 },
48928 .call_frame = .{ .alignment = .@"16" },
2820348929 .extra_temps = .{
2820448930 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28205 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28206 .{ .type = .u64, .kind = .{ .reg = .rax } },
28207 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28208 .unused,
28209 .unused,
28210 .unused,
48931 .{ .type = .f16, .kind = .{ .reg = .ax } },
48932 .{ .type = .f32, .kind = .mem },
48933 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
48934 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
48935 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
48936 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
2821148937 .unused,
2821248938 .unused,
2821348939 },
2821448940 .dst_temps = .{.mem},
48941 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2821548942 .each = .{ .once = &.{
2821648943 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28217 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
28218 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
28219 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
28220 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
28221 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
28222 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
48944 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
48945 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
48946 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
48947 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
48948 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
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, ._, ._ },
2822348957 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2822448958 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2822548959 } },
2822648960 }, .{
28227 .required_features = .{ .avx, null, null, null },
28228 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },
28229 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
28230 .patterns = &.{
28231 .{ .src = .{ .mem, .none } },
28232 .{ .src = .{ .to_sse, .none } },
48961 .required_features = .{ .fma, null, null, null },
48962 .src_constraints = .{
48963 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
48964 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
48965 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
2823348966 },
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 } }},
2824248967 .patterns = &.{
28243 .{ .src = .{ .mem, .none } },
28244 .{ .src = .{ .to_sse, .none } },
48968 .{ .src = .{ .to_mut_sse, .mem, .to_sse } },
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 } },
2824548972 },
28246 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
48973 .dst_temps = .{.{ .ref = .src0 }},
2824748974 .each = .{ .once = &.{
28248 .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ },
48975 .{ ._, .v_ss, .fmadd132, .dst0x, .src2x, .src1d, ._ },
2824948976 } },
2825048977 }, .{
28251 .required_features = .{ .sse4_1, null, null, null },
28252 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },
28253 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
48978 .required_features = .{ .fma, null, null, null },
48979 .src_constraints = .{
48980 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
48981 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
48982 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
48983 },
2825448984 .patterns = &.{
28255 .{ .src = .{ .mem, .none } },
28256 .{ .src = .{ .to_sse, .none } },
48985 .{ .src = .{ .to_mut_sse, .to_sse, .mem } },
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 } },
2825748989 },
28258 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
48990 .dst_temps = .{.{ .ref = .src0 }},
2825948991 .each = .{ .once = &.{
28260 .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ },
48992 .{ ._, .v_ss, .fmadd213, .dst0x, .src1x, .src2d, ._ },
2826148993 } },
2826248994 }, .{
28263 .required_features = .{ .sse4_1, null, null, null },
28264 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any },
28265 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
48995 .required_features = .{ .fma, null, null, null },
48996 .src_constraints = .{
48997 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
48998 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
48999 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
49000 },
2826649001 .patterns = &.{
28267 .{ .src = .{ .mem, .none } },
28268 .{ .src = .{ .to_sse, .none } },
49002 .{ .src = .{ .to_sse, .mem, .to_mut_sse } },
49003 .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } },
49004 .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } },
2826949005 },
28270 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
49006 .dst_temps = .{.{ .ref = .src2 }},
2827149007 .each = .{ .once = &.{
28272 .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ },
49008 .{ ._, .v_ss, .fmadd231, .dst0x, .src0x, .src1d, ._ },
2827349009 } },
2827449010 }, .{
28275 .required_features = .{ .sse2, null, null, null },
28276 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },
28277 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
49011 .required_features = .{ .sse, null, null, null },
49012 .src_constraints = .{
49013 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
49014 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
49015 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
49016 },
2827849017 .patterns = &.{
28279 .{ .src = .{ .to_mut_sse, .none } },
49018 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } },
2828049019 },
49020 .call_frame = .{ .alignment = .@"16" },
2828149021 .extra_temps = .{
28282 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
49022 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } },
2828349023 .unused,
2828449024 .unused,
2828549025 .unused,
......@@ -28290,121 +49030,124 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2829049030 .unused,
2829149031 },
2829249032 .dst_temps = .{.{ .ref = .src0 }},
49033 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2829349034 .each = .{ .once = &.{
28294 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
28295 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },
28296 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
49035 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
2829749036 } },
2829849037 }, .{
28299 .required_features = .{ .sse2, null, null, null },
28300 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any },
28301 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
28302 .patterns = &.{
28303 .{ .src = .{ .to_mut_sse, .none } },
49038 .required_features = .{ .fma, null, null, null },
49039 .src_constraints = .{
49040 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
49041 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
49042 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
2830449043 },
28305 .extra_temps = .{
28306 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
28307 .unused,
28308 .unused,
28309 .unused,
28310 .unused,
28311 .unused,
28312 .unused,
28313 .unused,
28314 .unused,
49044 .patterns = &.{
49045 .{ .src = .{ .to_mut_sse, .mem, .to_sse } },
49046 .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } },
49047 .{ .src = .{ .mut_sse, .sse, .sse } },
49048 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
2831549049 },
2831649050 .dst_temps = .{.{ .ref = .src0 }},
2831749051 .each = .{ .once = &.{
28318 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
28319 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
49052 .{ ._, .v_ps, .fmadd132, .dst0x, .src2x, .src1x, ._ },
2832049053 } },
2832149054 }, .{
28322 .required_features = .{ .avx2, null, null, null },
28323 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
28324 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},
49055 .required_features = .{ .fma, null, null, null },
49056 .src_constraints = .{
49057 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
49058 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
49059 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
49060 },
2832549061 .patterns = &.{
28326 .{ .src = .{ .mem, .none } },
28327 .{ .src = .{ .to_sse, .none } },
49062 .{ .src = .{ .to_mut_sse, .to_sse, .mem } },
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 } },
2832849066 },
28329 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
49067 .dst_temps = .{.{ .ref = .src0 }},
2833049068 .each = .{ .once = &.{
28331 .{ ._, .vp_q, .movsxd, .dst0y, .src0x, ._, ._ },
49069 .{ ._, .v_ps, .fmadd213, .dst0x, .src1x, .src2x, ._ },
2833249070 } },
2833349071 }, .{
28334 .required_features = .{ .avx2, null, null, null },
28335 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
28336 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
49072 .required_features = .{ .fma, null, null, null },
49073 .src_constraints = .{
49074 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
49075 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
49076 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
49077 },
2833749078 .patterns = &.{
28338 .{ .src = .{ .mem, .none } },
28339 .{ .src = .{ .to_sse, .none } },
49079 .{ .src = .{ .to_sse, .mem, .to_mut_sse } },
49080 .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } },
49081 .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } },
2834049082 },
28341 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
49083 .dst_temps = .{.{ .ref = .src2 }},
2834249084 .each = .{ .once = &.{
28343 .{ ._, .vp_q, .movzxd, .dst0y, .src0x, ._, ._ },
49085 .{ ._, .v_ps, .fmadd231, .dst0x, .src0x, .src1x, ._ },
2834449086 } },
2834549087 }, .{
28346 .required_features = .{ .avx2, null, null, null },
28347 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
28348 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},
28349 .patterns = &.{
28350 .{ .src = .{ .mem, .none } },
49088 .required_features = .{ .fma, null, null, null },
49089 .src_constraints = .{
49090 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
49091 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
49092 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
2835149093 },
28352 .extra_temps = .{
28353 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28354 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
28355 .unused,
28356 .unused,
28357 .unused,
28358 .unused,
28359 .unused,
28360 .unused,
28361 .unused,
49094 .patterns = &.{
49095 .{ .src = .{ .to_mut_sse, .mem, .to_sse } },
49096 .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } },
49097 .{ .src = .{ .mut_sse, .sse, .sse } },
49098 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
2836249099 },
28363 .dst_temps = .{.mem},
49100 .dst_temps = .{.{ .ref = .src0 }},
2836449101 .each = .{ .once = &.{
28365 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
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", ._, ._, ._ },
49102 .{ ._, .v_ps, .fmadd132, .dst0y, .src2y, .src1y, ._ },
2837049103 } },
2837149104 }, .{
28372 .required_features = .{ .avx2, null, null, null },
28373 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any },
28374 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }},
49105 .required_features = .{ .fma, null, null, null },
49106 .src_constraints = .{
49107 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
49108 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
49109 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
49110 },
2837549111 .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 } },
2837749116 },
28378 .extra_temps = .{
28379 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28380 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
28381 .unused,
28382 .unused,
28383 .unused,
28384 .unused,
28385 .unused,
28386 .unused,
28387 .unused,
49117 .dst_temps = .{.{ .ref = .src0 }},
49118 .each = .{ .once = &.{
49119 .{ ._, .v_ps, .fmadd213, .dst0y, .src1y, .src2y, ._ },
49120 } },
49121 }, .{
49122 .required_features = .{ .fma, null, null, null },
49123 .src_constraints = .{
49124 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
49125 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
49126 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
2838849127 },
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 }},
2839049134 .each = .{ .once = &.{
28391 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
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", ._, ._, ._ },
49135 .{ ._, .v_ps, .fmadd231, .dst0y, .src0y, .src1y, ._ },
2839649136 } },
2839749137 }, .{
28398 .required_features = .{ .avx, null, null, null },
28399 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },
28400 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
49138 .required_features = .{ .fma, null, null, null },
49139 .src_constraints = .{
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 },
2840149144 .patterns = &.{
28402 .{ .src = .{ .mem, .none } },
49145 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
2840349146 },
2840449147 .extra_temps = .{
2840549148 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28406 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
28407 .unused,
49149 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
49150 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
2840849151 .unused,
2840949152 .unused,
2841049153 .unused,
......@@ -28414,126 +49157,146 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2841449157 },
2841549158 .dst_temps = .{.mem},
2841649159 .each = .{ .once = &.{
28417 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
28418 .{ .@"0:", .vp_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
28419 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
28420 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
49160 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
49161 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
49162 .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_unaligned_size), ._, ._ },
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), ._, ._ },
2842149166 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2842249167 } },
2842349168 }, .{
2842449169 .required_features = .{ .avx, null, null, null },
28425 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any },
28426 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
49170 .src_constraints = .{
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 },
2842749175 .patterns = &.{
28428 .{ .src = .{ .mem, .none } },
49176 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
2842949177 },
49178 .call_frame = .{ .alignment = .@"16" },
2843049179 .extra_temps = .{
2843149180 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28432 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
28433 .unused,
28434 .unused,
28435 .unused,
49181 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
49182 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
49183 .{ .type = .f32, .kind = .{ .reg = .xmm2 } },
49184 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } },
2843649185 .unused,
2843749186 .unused,
2843849187 .unused,
2843949188 .unused,
2844049189 },
2844149190 .dst_temps = .{.mem},
49191 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2844249192 .each = .{ .once = &.{
28443 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
28444 .{ .@"0:", .vp_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
28445 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
28446 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
49193 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
49194 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
49195 .{ ._, .v_ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },
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), ._, ._ },
2844749200 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2844849201 } },
2844949202 }, .{
28450 .required_features = .{ .sse4_1, null, null, null },
28451 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },
28452 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
49203 .required_features = .{ .sse, null, null, null },
49204 .src_constraints = .{
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 },
2845349209 .patterns = &.{
28454 .{ .src = .{ .mem, .none } },
49210 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
2845549211 },
49212 .call_frame = .{ .alignment = .@"16" },
2845649213 .extra_temps = .{
2845749214 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28458 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
28459 .unused,
28460 .unused,
28461 .unused,
49215 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
49216 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
49217 .{ .type = .f32, .kind = .{ .reg = .xmm2 } },
49218 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } },
2846249219 .unused,
2846349220 .unused,
2846449221 .unused,
2846549222 .unused,
2846649223 },
2846749224 .dst_temps = .{.mem},
49225 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2846849226 .each = .{ .once = &.{
28469 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
28470 .{ .@"0:", .p_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
28471 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
28472 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
49227 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
49228 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
49229 .{ ._, ._ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },
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), ._, ._ },
2847349234 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2847449235 } },
2847549236 }, .{
28476 .required_features = .{ .sse4_1, null, null, null },
28477 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any },
28478 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
28479 .patterns = &.{
28480 .{ .src = .{ .mem, .none } },
49237 .required_features = .{ .fma, null, null, null },
49238 .src_constraints = .{
49239 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
49240 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
49241 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
2848149242 },
28482 .extra_temps = .{
28483 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28484 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
28485 .unused,
28486 .unused,
28487 .unused,
28488 .unused,
28489 .unused,
28490 .unused,
28491 .unused,
49243 .patterns = &.{
49244 .{ .src = .{ .to_mut_sse, .mem, .to_sse } },
49245 .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } },
49246 .{ .src = .{ .mut_sse, .sse, .sse } },
49247 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
2849249248 },
28493 .dst_temps = .{.mem},
49249 .dst_temps = .{.{ .ref = .src0 }},
2849449250 .each = .{ .once = &.{
28495 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
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", ._, ._, ._ },
49251 .{ ._, .v_sd, .fmadd132, .dst0x, .src2x, .src1q, ._ },
2850049252 } },
2850149253 }, .{
28502 .required_features = .{ .@"64bit", null, null, null },
28503 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
28504 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
49254 .required_features = .{ .fma, null, null, null },
49255 .src_constraints = .{
49256 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
49257 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
49258 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
49259 },
2850549260 .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 } },
2850749265 },
28508 .extra_temps = .{
28509 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28510 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
28511 .unused,
28512 .unused,
28513 .unused,
28514 .unused,
28515 .unused,
28516 .unused,
28517 .unused,
49266 .dst_temps = .{.{ .ref = .src0 }},
49267 .each = .{ .once = &.{
49268 .{ ._, .v_sd, .fmadd213, .dst0x, .src1x, .src2q, ._ },
49269 } },
49270 }, .{
49271 .required_features = .{ .fma, null, null, null },
49272 .src_constraints = .{
49273 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
49274 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
49275 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
2851849276 },
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 }},
2852049283 .each = .{ .once = &.{
28521 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
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", ._, ._, ._ },
49284 .{ ._, .v_sd, .fmadd231, .dst0x, .src0x, .src1q, ._ },
2852649285 } },
2852749286 }, .{
28528 .required_features = .{ .@"64bit", null, null, null },
28529 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },
28530 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
49287 .required_features = .{ .sse, null, null, null },
49288 .src_constraints = .{
49289 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
49290 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
49291 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
49292 },
2853149293 .patterns = &.{
28532 .{ .src = .{ .to_mem, .none } },
49294 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } },
2853349295 },
49296 .call_frame = .{ .alignment = .@"16" },
2853449297 .extra_temps = .{
28535 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28536 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
49298 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },
49299 .unused,
2853749300 .unused,
2853849301 .unused,
2853949302 .unused,
......@@ -28542,103 +49305,125 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2854249305 .unused,
2854349306 .unused,
2854449307 },
28545 .dst_temps = .{.mem},
49308 .dst_temps = .{.{ .ref = .src0 }},
49309 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2854649310 .each = .{ .once = &.{
28547 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
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", ._, ._, ._ },
49311 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
2855249312 } },
2855349313 }, .{
28554 .required_features = .{ .avx, null, null, null },
28555 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
28556 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
49314 .required_features = .{ .fma, null, null, null },
49315 .src_constraints = .{
49316 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
49317 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
49318 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
49319 },
2855749320 .patterns = &.{
28558 .{ .src = .{ .mem, .none } },
28559 .{ .src = .{ .to_sse, .none } },
49321 .{ .src = .{ .to_mut_sse, .mem, .to_sse } },
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 } },
2856049325 },
28561 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
49326 .dst_temps = .{.{ .ref = .src0 }},
2856249327 .each = .{ .once = &.{
28563 .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ },
28564 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
49328 .{ ._, .v_pd, .fmadd132, .dst0x, .src2x, .src1x, ._ },
2856549329 } },
2856649330 }, .{
28567 .required_features = .{ .avx, null, null, null },
28568 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any },
28569 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
49331 .required_features = .{ .fma, null, null, null },
49332 .src_constraints = .{
49333 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
49334 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
49335 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
49336 },
2857049337 .patterns = &.{
28571 .{ .src = .{ .mem, .none } },
28572 .{ .src = .{ .to_sse, .none } },
49338 .{ .src = .{ .to_mut_sse, .to_sse, .mem } },
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 } },
2857349342 },
28574 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
49343 .dst_temps = .{.{ .ref = .src0 }},
2857549344 .each = .{ .once = &.{
28576 .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ },
28577 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
49345 .{ ._, .v_pd, .fmadd213, .dst0x, .src1x, .src2x, ._ },
2857849346 } },
2857949347 }, .{
28580 .required_features = .{ .sse4_1, null, null, null },
28581 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
28582 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
49348 .required_features = .{ .fma, null, null, null },
49349 .src_constraints = .{
49350 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
49351 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
49352 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
49353 },
2858349354 .patterns = &.{
28584 .{ .src = .{ .mem, .none } },
28585 .{ .src = .{ .to_sse, .none } },
49355 .{ .src = .{ .to_sse, .mem, .to_mut_sse } },
49356 .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } },
49357 .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } },
2858649358 },
28587 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
49359 .dst_temps = .{.{ .ref = .src2 }},
2858849360 .each = .{ .once = &.{
28589 .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ },
28590 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
49361 .{ ._, .v_pd, .fmadd231, .dst0x, .src0x, .src1x, ._ },
2859149362 } },
2859249363 }, .{
28593 .required_features = .{ .sse4_1, null, null, null },
28594 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any },
28595 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
49364 .required_features = .{ .fma, null, null, null },
49365 .src_constraints = .{
49366 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
49367 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
49368 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
49369 },
2859649370 .patterns = &.{
28597 .{ .src = .{ .mem, .none } },
28598 .{ .src = .{ .to_sse, .none } },
49371 .{ .src = .{ .to_mut_sse, .mem, .to_sse } },
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 } },
2859949375 },
28600 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
49376 .dst_temps = .{.{ .ref = .src0 }},
2860149377 .each = .{ .once = &.{
28602 .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ },
28603 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
49378 .{ ._, .v_pd, .fmadd132, .dst0y, .src2y, .src1y, ._ },
2860449379 } },
2860549380 }, .{
28606 .required_features = .{ .sse2, null, null, null },
28607 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
28608 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
28609 .patterns = &.{
28610 .{ .src = .{ .to_mut_sse, .none } },
49381 .required_features = .{ .fma, null, null, null },
49382 .src_constraints = .{
49383 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
49384 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
49385 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
2861149386 },
28612 .extra_temps = .{
28613 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
28614 .unused,
28615 .unused,
28616 .unused,
28617 .unused,
28618 .unused,
28619 .unused,
28620 .unused,
28621 .unused,
49387 .patterns = &.{
49388 .{ .src = .{ .to_mut_sse, .to_sse, .mem } },
49389 .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } },
49390 .{ .src = .{ .mut_sse, .sse, .sse } },
49391 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
2862249392 },
2862349393 .dst_temps = .{.{ .ref = .src0 }},
2862449394 .each = .{ .once = &.{
28625 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
28626 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },
28627 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
28628 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },
28629 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
49395 .{ ._, .v_pd, .fmadd213, .dst0y, .src1y, .src2y, ._ },
2863049396 } },
2863149397 }, .{
28632 .required_features = .{ .sse2, null, null, null },
28633 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any },
28634 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
49398 .required_features = .{ .fma, null, null, null },
49399 .src_constraints = .{
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 },
2863549420 .patterns = &.{
28636 .{ .src = .{ .to_mut_sse, .none } },
49421 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
2863749422 },
2863849423 .extra_temps = .{
28639 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
28640 .unused,
28641 .unused,
49424 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
49425 .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
49426 .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
2864249427 .unused,
2864349428 .unused,
2864449429 .unused,
......@@ -28646,592 +49431,332 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2864649431 .unused,
2864749432 .unused,
2864849433 },
28649 .dst_temps = .{.{ .ref = .src0 }},
49434 .dst_temps = .{.mem},
2865049435 .each = .{ .once = &.{
28651 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
28652 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
28653 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
49436 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
49437 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
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", ._, ._, ._ },
2865449443 } },
2865549444 }, .{
28656 .required_features = .{ .@"64bit", null, null, null },
28657 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
28658 .dst_constraints = .{.any_scalar_signed_int},
49445 .required_features = .{ .avx, null, null, null },
49446 .src_constraints = .{
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 },
2865949451 .patterns = &.{
28660 .{ .src = .{ .to_mem, .none } },
49452 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
2866149453 },
49454 .call_frame = .{ .alignment = .@"16" },
2866249455 .extra_temps = .{
2866349456 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28664 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28665 .{ .type = .i64, .kind = .{ .reg = .rax } },
28666 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28667 .unused,
49457 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
49458 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
49459 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },
49460 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },
2866849461 .unused,
2866949462 .unused,
2867049463 .unused,
2867149464 .unused,
2867249465 },
2867349466 .dst_temps = .{.mem},
49467 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2867449468 .each = .{ .once = &.{
2867549469 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28676 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
28677 .{ .@"0:", ._, .movsxd, .tmp2q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
28678 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
28679 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
28680 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
28681 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28682 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
49470 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
49471 .{ ._, .v_sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
49472 .{ ._, .v_sd, .mov, .tmp3x, .memia(.src2q, .tmp0, .add_unaligned_size), ._, ._ },
49473 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
49474 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
49475 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2868349476 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2868449477 } },
2868549478 }, .{
28686 .required_features = .{ .@"64bit", null, null, null },
28687 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },
28688 .dst_constraints = .{.any_scalar_int},
49479 .required_features = .{ .sse2, null, null, null },
49480 .src_constraints = .{
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 },
2868949485 .patterns = &.{
28690 .{ .src = .{ .to_mem, .none } },
49486 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
2869149487 },
49488 .call_frame = .{ .alignment = .@"16" },
2869249489 .extra_temps = .{
2869349490 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28694 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28695 .{ .type = .u64, .kind = .{ .reg = .rax } },
28696 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28697 .unused,
49491 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
49492 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
49493 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },
49494 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },
2869849495 .unused,
2869949496 .unused,
2870049497 .unused,
2870149498 .unused,
2870249499 },
2870349500 .dst_temps = .{.mem},
49501 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2870449502 .each = .{ .once = &.{
2870549503 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28706 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
28707 .{ .@"0:", ._, .mov, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
28708 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
28709 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
28710 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
28711 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28712 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
49504 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
49505 .{ ._, ._sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
49506 .{ ._, ._sd, .mov, .tmp3x, .memia(.src2q, .tmp0, .add_unaligned_size), ._, ._ },
49507 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
49508 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
49509 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2871349510 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2871449511 } },
2871549512 }, .{
28716 .required_features = .{ .@"64bit", .slow_incdec, null, null },
28717 .src_constraints = .{ .any_scalar_signed_int, .any },
28718 .dst_constraints = .{.any_scalar_signed_int},
49513 .required_features = .{ .sse, null, null, null },
49514 .src_constraints = .{
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 },
2871949519 .patterns = &.{
28720 .{ .src = .{ .to_mem, .none } },
49520 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
2872149521 },
49522 .call_frame = .{ .alignment = .@"16" },
2872249523 .extra_temps = .{
28723 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
28724 .{ .type = .usize, .kind = .{ .reg = .rsi } },
28725 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28726 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28727 .{ .type = .i64, .kind = .{ .reg = .rax } },
49524 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
49525 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
49526 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
49527 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },
49528 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },
2872849529 .unused,
2872949530 .unused,
2873049531 .unused,
2873149532 .unused,
2873249533 },
2873349534 .dst_temps = .{.mem},
28734 .clobbers = .{ .eflags = true },
49535 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2873549536 .each = .{ .once = &.{
28736 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
28737 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
28738 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
28739 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ },
28740 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
28741 .{ ._, ._sq, .lod, ._, ._, ._, ._ },
28742 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
28743 .{ ._, ._r, .sa, .tmp4q, .ui(63), ._, ._ },
28744 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
28745 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28746 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
28747 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
49537 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
49538 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
49539 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },
49540 .{ ._, ._ps, .xor, .tmp3x, .tmp3x, ._, ._ },
49541 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
49542 .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
49543 .{ ._, ._ps, .movl, .tmp3x, .memia(.src2q, .tmp0, .add_unaligned_size), ._, ._ },
49544 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
49545 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
49546 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
49547 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2874849548 } },
2874949549 }, .{
28750 .required_features = .{ .@"64bit", null, null, null },
28751 .src_constraints = .{ .any_scalar_signed_int, .any },
28752 .dst_constraints = .{.any_scalar_signed_int},
49550 .required_features = .{ .sse, .x87, null, null },
49551 .src_constraints = .{
49552 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
49553 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
49554 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
49555 },
2875349556 .patterns = &.{
28754 .{ .src = .{ .to_mem, .none } },
49557 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
2875549558 },
49559 .call_frame = .{ .size = 16 * 3, .alignment = .@"16" },
2875649560 .extra_temps = .{
28757 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
28758 .{ .type = .usize, .kind = .{ .reg = .rsi } },
28759 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28760 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28761 .{ .type = .i64, .kind = .{ .reg = .rax } },
49561 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
49562 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
49563 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmax" } } },
49564 .unused,
49565 .unused,
2876249566 .unused,
2876349567 .unused,
2876449568 .unused,
2876549569 .unused,
2876649570 },
28767 .dst_temps = .{.mem},
28768 .clobbers = .{ .eflags = true },
49571 .dst_temps = .{.{ .reg = .st0 }},
49572 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2876949573 .each = .{ .once = &.{
28770 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
28771 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
28772 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
28773 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ },
28774 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
28775 .{ ._, ._sq, .lod, ._, ._, ._, ._ },
28776 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
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", ._, ._, ._ },
49574 .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ },
49575 .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ },
49576 .{ ._, ._ps, .mova, .tmp0x, .mem(.src1x), ._, ._ },
49577 .{ ._, ._ps, .mova, .memd(.tmp1x, 16), .tmp0x, ._, ._ },
49578 .{ ._, ._ps, .mova, .tmp0x, .mem(.src2x), ._, ._ },
49579 .{ ._, ._ps, .mova, .memd(.tmp1x, 16 * 2), .tmp0x, ._, ._ },
49580 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
2878249581 } },
2878349582 }, .{
28784 .required_features = .{ .@"64bit", .slow_incdec, null, null },
28785 .src_constraints = .{ .any_scalar_int, .any },
28786 .dst_constraints = .{.any_scalar_int},
49583 .required_features = .{ .sse, .x87, null, null },
49584 .src_constraints = .{
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 },
2878749589 .patterns = &.{
28788 .{ .src = .{ .to_mem, .none } },
49590 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
2878949591 },
49592 .call_frame = .{ .size = 16 * 3, .alignment = .@"16" },
2879049593 .extra_temps = .{
28791 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
28792 .{ .type = .usize, .kind = .{ .reg = .rsi } },
28793 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28794 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28795 .{ .type = .u64, .kind = .{ .reg = .rax } },
49594 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
49595 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
49596 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
49597 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmax" } } },
49598 .unused,
2879649599 .unused,
2879749600 .unused,
2879849601 .unused,
2879949602 .unused,
2880049603 },
2880149604 .dst_temps = .{.mem},
28802 .clobbers = .{ .eflags = true },
49605 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2880349606 .each = .{ .once = &.{
28804 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
28805 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
28806 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
28807 .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ },
28808 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
28809 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
28810 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
28811 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28812 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
28813 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
49607 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
49608 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
49609 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
49610 .{ ._, ._ps, .mova, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
49611 .{ ._, ._ps, .mova, .memd(.tmp2x, 16), .tmp1x, ._, ._ },
49612 .{ ._, ._ps, .mova, .tmp1x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },
49613 .{ ._, ._ps, .mova, .memd(.tmp2x, 16 * 2), .tmp1x, ._, ._ },
49614 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
49615 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
49616 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
49617 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
49618 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2881449619 } },
2881549620 }, .{
28816 .required_features = .{ .@"64bit", null, null, null },
28817 .src_constraints = .{ .any_scalar_int, .any },
28818 .dst_constraints = .{.any_scalar_int},
49621 .required_features = .{ .sse, null, null, null },
49622 .src_constraints = .{
49623 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
49624 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
49625 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
49626 },
2881949627 .patterns = &.{
28820 .{ .src = .{ .to_mem, .none } },
49628 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } },
2882149629 },
49630 .call_frame = .{ .alignment = .@"16" },
2882249631 .extra_temps = .{
28823 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
28824 .{ .type = .usize, .kind = .{ .reg = .rsi } },
28825 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28826 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28827 .{ .type = .u64, .kind = .{ .reg = .rax } },
49632 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },
49633 .unused,
49634 .unused,
49635 .unused,
49636 .unused,
2882849637 .unused,
2882949638 .unused,
2883049639 .unused,
2883149640 .unused,
2883249641 },
28833 .dst_temps = .{.mem},
28834 .clobbers = .{ .eflags = true },
49642 .dst_temps = .{.{ .ref = .src0 }},
49643 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2883549644 .each = .{ .once = &.{
28836 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
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", ._, ._, ._ },
49645 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
2884649646 } },
28847 } }) catch |err| switch (err) {
28848 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
28849 @tagName(air_tag),
28850 dst_ty.fmt(pt),
28851 src_ty.fmt(pt),
28852 ops[0].tracking(cg),
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,
49647 }, .{
49648 .required_features = .{ .avx, null, null, null },
49649 .src_constraints = .{
49650 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
49651 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
49652 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
2894549653 },
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 }},
2903249654 .patterns = &.{
29033 .{ .src = .{ .to_gpr, .simm32 } },
49655 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
2903449656 },
29035 .dst_temps = .{.{ .rc = .general_purpose }},
29036 .each = .{ .once = &.{
29037 .{ ._, ._, .movzx, .dst0d, .leaa(.src0b, .add_src0_elem_size_times_src1), ._, ._ },
29038 } },
29039 }, .{
29040 .dst_constraints = .{.{ .int = .byte }},
29041 .patterns = &.{
29042 .{ .src = .{ .to_gpr, .to_gpr } },
49657 .call_frame = .{ .alignment = .@"16" },
49658 .extra_temps = .{
49659 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
49660 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
49661 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
49662 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },
49663 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },
49664 .unused,
49665 .unused,
49666 .unused,
49667 .unused,
2904349668 },
29044 .dst_temps = .{.{ .rc = .general_purpose }},
49669 .dst_temps = .{.mem},
49670 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2904549671 .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", ._, ._, ._ },
2904749680 } },
2904849681 }, .{
29049 .dst_constraints = .{.{ .int = .word }},
29050 .patterns = &.{
29051 .{ .src = .{ .to_gpr, .simm32 } },
49682 .required_features = .{ .sse2, null, null, null },
49683 .src_constraints = .{
49684 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
49685 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
49686 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
2905249687 },
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 }},
2905949688 .patterns = &.{
29060 .{ .src = .{ .to_gpr, .to_gpr } },
49689 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
2906149690 },
29062 .dst_temps = .{.{ .rc = .general_purpose }},
29063 .each = .{ .once = &.{
29064 .{ ._, ._, .movzx, .dst0d, .leasi(.src0w, .@"2", .src1), ._, ._ },
29065 } },
29066 }, .{
29067 .dst_constraints = .{.{ .int = .dword }},
29068 .patterns = &.{
29069 .{ .src = .{ .to_gpr, .simm32 } },
49691 .call_frame = .{ .alignment = .@"16" },
49692 .extra_temps = .{
49693 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
49694 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
49695 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
49696 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },
49697 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },
49698 .unused,
49699 .unused,
49700 .unused,
49701 .unused,
2907049702 },
29071 .dst_temps = .{.{ .rc = .general_purpose }},
49703 .dst_temps = .{.mem},
49704 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2907249705 .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", ._, ._, ._ },
2907449714 } },
2907549715 }, .{
29076 .dst_constraints = .{.{ .int = .dword }},
29077 .patterns = &.{
29078 .{ .src = .{ .to_gpr, .to_gpr } },
49716 .required_features = .{ .sse, null, null, null },
49717 .src_constraints = .{
49718 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
49719 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
49720 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
2907949721 },
29080 .dst_temps = .{.{ .rc = .general_purpose }},
29081 .each = .{ .once = &.{
29082 .{ ._, ._, .mov, .dst0d, .leasi(.src0d, .@"4", .src1), ._, ._ },
29083 } },
29084 }, .{
29085 .dst_constraints = .{.{ .int = .qword }},
2908649722 .patterns = &.{
29087 .{ .src = .{ .to_gpr, .simm32 } },
49723 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
2908849724 },
29089 .dst_temps = .{.{ .rc = .general_purpose }},
29090 .each = .{ .once = &.{
29091 .{ ._, ._, .mov, .dst0q, .leaa(.src0q, .add_src0_elem_size_times_src1), ._, ._ },
29092 } },
29093 }, .{
29094 .required_features = .{ .@"64bit", null, null, null },
29095 .dst_constraints = .{.{ .int = .qword }},
29096 .patterns = &.{
29097 .{ .src = .{ .to_gpr, .to_gpr } },
49725 .call_frame = .{ .alignment = .@"16" },
49726 .extra_temps = .{
49727 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
49728 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
49729 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
49730 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },
49731 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },
49732 .unused,
49733 .unused,
49734 .unused,
49735 .unused,
2909849736 },
29099 .dst_temps = .{.{ .rc = .general_purpose }},
49737 .dst_temps = .{.mem},
49738 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2910049739 .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", ._, ._, ._ },
2910249748 } },
2910349749 } }) catch |err| switch (err) {
29104 error.SelectFailed => {
29105 const elem_size = res_ty.abiSize(zcu);
29106 while (true) for (&ops) |*op| {
29107 if (try op.toRegClass(true, .general_purpose, cg)) break;
29108 } else break;
29109 const lhs_reg = ops[0].unwrap(cg).temp.tracking(cg).short.register.to64();
29110 const rhs_reg = ops[1].unwrap(cg).temp.tracking(cg).short.register.to64();
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 },
49750 error.SelectFailed => return cg.fail("failed to select {s} {} {} {} {}", .{
49751 @tagName(air_tag),
49752 cg.typeOf(bin_op.lhs).fmt(pt),
49753 ops[0].tracking(cg),
49754 ops[1].tracking(cg),
49755 ops[2].tracking(cg),
49756 }),
2914449757 else => |e| return e,
29145 } else {
29146 // hack around Sema OPV bugs
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);
49758 };
49759 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs, pl_op.operand }, &ops, cg);
2923549760 },
2923649761 .field_parent_ptr => if (use_old) try cg.airFieldParentPtr(inst) else {
2923749762 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
3416954694 .param_types = &.{ty.toIntern()},
3417054695 .callee = std.fmt.bufPrint(&callee_buf, "{s}{s}{s}", .{
3417154696 floatLibcAbiPrefix(ty),
34172 switch (mode.mode) {
54697 switch (mode.direction) {
3417354698 .down => "floor",
3417454699 .up => "ceil",
3417554700 .zero => "trunc",
......@@ -36813,7 +57338,7 @@ fn genBinOp(
3681357338 } }, &.{ lhs_ty, rhs_ty }, &.{ adjusted, .{ .air_ref = rhs_air } }, .{});
3681457339 },
3681557340 .div_trunc, .div_floor => try self.genRoundLibcall(lhs_ty, result, .{
36816 .mode = switch (air_tag) {
57341 .direction = switch (air_tag) {
3681757342 .div_trunc => .zero,
3681857343 .div_floor => .down,
3681957344 else => unreachable,
......@@ -37271,7 +57796,7 @@ fn genBinOp(
3727157796 dst_reg,
3727257797 dst_reg,
3727357798 bits.RoundMode.imm(.{
37274 .mode = switch (air_tag) {
57799 .direction = switch (air_tag) {
3727557800 .div_trunc => .zero,
3727657801 .div_floor => .down,
3727757802 else => unreachable,
......@@ -38073,7 +58598,7 @@ fn genBinOp(
3807358598 switch (air_tag) {
3807458599 .add, .add_wrap, .sub, .sub_wrap, .mul, .mul_wrap, .div_float, .div_exact => {},
3807558600 .div_trunc, .div_floor => try self.genRound(lhs_ty, dst_reg, .{ .register = dst_reg }, .{
38076 .mode = switch (air_tag) {
58601 .direction = switch (air_tag) {
3807758602 .div_trunc => .zero,
3807858603 .div_floor => .down,
3807958604 else => unreachable,
......@@ -45841,10 +66366,17 @@ fn airReduce(self: *CodeGen, inst: Air.Inst.Index) !void {
4584166366 const acc_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp);
4584266367 const acc_lock = self.register_manager.lockRegAssumeUnused(acc_reg);
4584366368 defer self.register_manager.unlockReg(acc_lock);
45844 var limb_offset: i31 = 0;
45845 while (limb_offset < abi_size) : (limb_offset += 8) {
66369 var limb_offset: i31 = @intCast((mask_len - 1) / 64 * 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) {
4584666378 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) {
4584866380 .Or => .@"or",
4584966381 .And => .@"and",
4585066382 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 {
4585566387 .disp = limb_offset,
4585666388 }),
4585766389 );
66390 if (limb_offset == 0) break;
66391 first = false;
4585866392 }
4585966393 switch (reduce.operation) {
4586066394 .Or => {
......@@ -48345,11 +68879,11 @@ const Temp = struct {
4834568879 };
4834668880 if (commute) std.mem.swap(Temp, &ops[0], &ops[1]);
4834768881 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 },
4834968883 .patterns = &.{
48350 .{ .src = .{ .imm8, .mem }, .commute = .{ 0, 1 } },
48351 .{ .src = .{ .imm8, .to_gpr }, .commute = .{ 0, 1 } },
48352 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },
68884 .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } },
68885 .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } },
68886 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
4835368887 },
4835468888 .dst_temps = .{.{ .cc = .g }},
4835568889 .clobbers = .{ .eflags = true },
......@@ -48357,12 +68891,12 @@ const Temp = struct {
4835768891 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
4835868892 } },
4835968893 }, .{
48360 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } },
68894 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any },
4836168895 .patterns = &.{
48362 .{ .src = .{ .mem, .imm8 } },
48363 .{ .src = .{ .to_gpr, .imm8 } },
48364 .{ .src = .{ .to_gpr, .mem } },
48365 .{ .src = .{ .to_gpr, .to_gpr } },
68896 .{ .src = .{ .mem, .imm8, .none } },
68897 .{ .src = .{ .to_gpr, .imm8, .none } },
68898 .{ .src = .{ .to_gpr, .mem, .none } },
68899 .{ .src = .{ .to_gpr, .to_gpr, .none } },
4836668900 },
4836768901 .dst_temps = .{.{ .cc = .l }},
4836868902 .clobbers = .{ .eflags = true },
......@@ -48370,11 +68904,11 @@ const Temp = struct {
4837068904 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
4837168905 } },
4837268906 }, .{
48373 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } },
68907 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
4837468908 .patterns = &.{
48375 .{ .src = .{ .imm8, .mem }, .commute = .{ 0, 1 } },
48376 .{ .src = .{ .imm8, .to_gpr }, .commute = .{ 0, 1 } },
48377 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },
68909 .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } },
68910 .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } },
68911 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
4837868912 },
4837968913 .dst_temps = .{.{ .cc = .a }},
4838068914 .clobbers = .{ .eflags = true },
......@@ -48382,12 +68916,12 @@ const Temp = struct {
4838268916 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
4838368917 } },
4838468918 }, .{
48385 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } },
68919 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
4838668920 .patterns = &.{
48387 .{ .src = .{ .mem, .imm8 } },
48388 .{ .src = .{ .to_gpr, .imm8 } },
48389 .{ .src = .{ .to_gpr, .mem } },
48390 .{ .src = .{ .to_gpr, .to_gpr } },
68921 .{ .src = .{ .mem, .imm8, .none } },
68922 .{ .src = .{ .to_gpr, .imm8, .none } },
68923 .{ .src = .{ .to_gpr, .mem, .none } },
68924 .{ .src = .{ .to_gpr, .to_gpr, .none } },
4839168925 },
4839268926 .dst_temps = .{.{ .cc = .b }},
4839368927 .clobbers = .{ .eflags = true },
......@@ -48395,11 +68929,11 @@ const Temp = struct {
4839568929 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
4839668930 } },
4839768931 }, .{
48398 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } },
68932 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any },
4839968933 .patterns = &.{
48400 .{ .src = .{ .imm16, .mem }, .commute = .{ 0, 1 } },
48401 .{ .src = .{ .imm16, .to_gpr }, .commute = .{ 0, 1 } },
48402 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },
68934 .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } },
68935 .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } },
68936 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
4840368937 },
4840468938 .dst_temps = .{.{ .cc = .g }},
4840568939 .clobbers = .{ .eflags = true },
......@@ -48407,12 +68941,12 @@ const Temp = struct {
4840768941 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
4840868942 } },
4840968943 }, .{
48410 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } },
68944 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any },
4841168945 .patterns = &.{
48412 .{ .src = .{ .mem, .imm16 } },
48413 .{ .src = .{ .to_gpr, .imm16 } },
48414 .{ .src = .{ .to_gpr, .mem } },
48415 .{ .src = .{ .to_gpr, .to_gpr } },
68946 .{ .src = .{ .mem, .imm16, .none } },
68947 .{ .src = .{ .to_gpr, .imm16, .none } },
68948 .{ .src = .{ .to_gpr, .mem, .none } },
68949 .{ .src = .{ .to_gpr, .to_gpr, .none } },
4841668950 },
4841768951 .dst_temps = .{.{ .cc = .l }},
4841868952 .clobbers = .{ .eflags = true },
......@@ -48420,11 +68954,11 @@ const Temp = struct {
4842068954 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
4842168955 } },
4842268956 }, .{
48423 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } },
68957 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
4842468958 .patterns = &.{
48425 .{ .src = .{ .imm16, .mem }, .commute = .{ 0, 1 } },
48426 .{ .src = .{ .imm16, .to_gpr }, .commute = .{ 0, 1 } },
48427 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },
68959 .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } },
68960 .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } },
68961 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
4842868962 },
4842968963 .dst_temps = .{.{ .cc = .a }},
4843068964 .clobbers = .{ .eflags = true },
......@@ -48432,12 +68966,12 @@ const Temp = struct {
4843268966 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
4843368967 } },
4843468968 }, .{
48435 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } },
68969 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
4843668970 .patterns = &.{
48437 .{ .src = .{ .mem, .imm16 } },
48438 .{ .src = .{ .to_gpr, .imm16 } },
48439 .{ .src = .{ .to_gpr, .mem } },
48440 .{ .src = .{ .to_gpr, .to_gpr } },
68971 .{ .src = .{ .mem, .imm16, .none } },
68972 .{ .src = .{ .to_gpr, .imm16, .none } },
68973 .{ .src = .{ .to_gpr, .mem, .none } },
68974 .{ .src = .{ .to_gpr, .to_gpr, .none } },
4844168975 },
4844268976 .dst_temps = .{.{ .cc = .b }},
4844368977 .clobbers = .{ .eflags = true },
......@@ -48445,11 +68979,11 @@ const Temp = struct {
4844568979 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
4844668980 } },
4844768981 }, .{
48448 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } },
68982 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any },
4844968983 .patterns = &.{
48450 .{ .src = .{ .imm32, .mem }, .commute = .{ 0, 1 } },
48451 .{ .src = .{ .imm32, .to_gpr }, .commute = .{ 0, 1 } },
48452 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },
68984 .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } },
68985 .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
68986 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
4845368987 },
4845468988 .dst_temps = .{.{ .cc = .g }},
4845568989 .clobbers = .{ .eflags = true },
......@@ -48457,12 +68991,12 @@ const Temp = struct {
4845768991 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
4845868992 } },
4845968993 }, .{
48460 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } },
68994 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any },
4846168995 .patterns = &.{
48462 .{ .src = .{ .mem, .imm32 } },
48463 .{ .src = .{ .to_gpr, .imm32 } },
48464 .{ .src = .{ .to_gpr, .mem } },
48465 .{ .src = .{ .to_gpr, .to_gpr } },
68996 .{ .src = .{ .mem, .imm32, .none } },
68997 .{ .src = .{ .to_gpr, .imm32, .none } },
68998 .{ .src = .{ .to_gpr, .mem, .none } },
68999 .{ .src = .{ .to_gpr, .to_gpr, .none } },
4846669000 },
4846769001 .dst_temps = .{.{ .cc = .l }},
4846869002 .clobbers = .{ .eflags = true },
......@@ -48470,11 +69004,11 @@ const Temp = struct {
4847069004 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
4847169005 } },
4847269006 }, .{
48473 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } },
69007 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any },
4847469008 .patterns = &.{
48475 .{ .src = .{ .imm32, .mem }, .commute = .{ 0, 1 } },
48476 .{ .src = .{ .imm32, .to_gpr }, .commute = .{ 0, 1 } },
48477 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },
69009 .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } },
69010 .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
69011 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
4847869012 },
4847969013 .dst_temps = .{.{ .cc = .a }},
4848069014 .clobbers = .{ .eflags = true },
......@@ -48482,12 +69016,12 @@ const Temp = struct {
4848269016 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
4848369017 } },
4848469018 }, .{
48485 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } },
69019 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any },
4848669020 .patterns = &.{
48487 .{ .src = .{ .mem, .imm32 } },
48488 .{ .src = .{ .to_gpr, .imm32 } },
48489 .{ .src = .{ .to_gpr, .mem } },
48490 .{ .src = .{ .to_gpr, .to_gpr } },
69021 .{ .src = .{ .mem, .imm32, .none } },
69022 .{ .src = .{ .to_gpr, .imm32, .none } },
69023 .{ .src = .{ .to_gpr, .mem, .none } },
69024 .{ .src = .{ .to_gpr, .to_gpr, .none } },
4849169025 },
4849269026 .dst_temps = .{.{ .cc = .b }},
4849369027 .clobbers = .{ .eflags = true },
......@@ -48496,11 +69030,11 @@ const Temp = struct {
4849669030 } },
4849769031 }, .{
4849869032 .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 },
4850069034 .patterns = &.{
48501 .{ .src = .{ .simm32, .mem }, .commute = .{ 0, 1 } },
48502 .{ .src = .{ .simm32, .to_gpr }, .commute = .{ 0, 1 } },
48503 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },
69035 .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } },
69036 .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
69037 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
4850469038 },
4850569039 .dst_temps = .{.{ .cc = .g }},
4850669040 .clobbers = .{ .eflags = true },
......@@ -48509,12 +69043,12 @@ const Temp = struct {
4850969043 } },
4851069044 }, .{
4851169045 .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 },
4851369047 .patterns = &.{
48514 .{ .src = .{ .mem, .simm32 } },
48515 .{ .src = .{ .to_gpr, .simm32 } },
48516 .{ .src = .{ .to_gpr, .mem } },
48517 .{ .src = .{ .to_gpr, .to_gpr } },
69048 .{ .src = .{ .mem, .simm32, .none } },
69049 .{ .src = .{ .to_gpr, .simm32, .none } },
69050 .{ .src = .{ .to_gpr, .mem, .none } },
69051 .{ .src = .{ .to_gpr, .to_gpr, .none } },
4851869052 },
4851969053 .dst_temps = .{.{ .cc = .l }},
4852069054 .clobbers = .{ .eflags = true },
......@@ -48523,11 +69057,11 @@ const Temp = struct {
4852369057 } },
4852469058 }, .{
4852569059 .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 },
4852769061 .patterns = &.{
48528 .{ .src = .{ .simm32, .mem }, .commute = .{ 0, 1 } },
48529 .{ .src = .{ .simm32, .to_gpr }, .commute = .{ 0, 1 } },
48530 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },
69062 .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } },
69063 .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
69064 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
4853169065 },
4853269066 .dst_temps = .{.{ .cc = .a }},
4853369067 .clobbers = .{ .eflags = true },
......@@ -48536,12 +69070,12 @@ const Temp = struct {
4853669070 } },
4853769071 }, .{
4853869072 .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 },
4854069074 .patterns = &.{
48541 .{ .src = .{ .mem, .simm32 } },
48542 .{ .src = .{ .to_gpr, .simm32 } },
48543 .{ .src = .{ .to_gpr, .mem } },
48544 .{ .src = .{ .to_gpr, .to_gpr } },
69075 .{ .src = .{ .mem, .simm32, .none } },
69076 .{ .src = .{ .to_gpr, .simm32, .none } },
69077 .{ .src = .{ .to_gpr, .mem, .none } },
69078 .{ .src = .{ .to_gpr, .to_gpr, .none } },
4854569079 },
4854669080 .dst_temps = .{.{ .cc = .b }},
4854769081 .clobbers = .{ .eflags = true },
......@@ -48551,11 +69085,12 @@ const Temp = struct {
4855169085 }, .{
4855269086 .required_features = .{ .@"64bit", null, null, null },
4855369087 .src_constraints = .{
48554 .{ .signed_remainder_int = .{ .of = .qword, .is = .qword } },
48555 .{ .signed_remainder_int = .{ .of = .qword, .is = .qword } },
69088 .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } },
69089 .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } },
69090 .any,
4855669091 },
4855769092 .patterns = &.{
48558 .{ .src = .{ .to_mem, .to_mem } },
69093 .{ .src = .{ .to_mem, .to_mem, .none } },
4855969094 },
4856069095 .extra_temps = .{
4856169096 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -48583,11 +69118,12 @@ const Temp = struct {
4858369118 }, .{
4858469119 .required_features = .{ .@"64bit", null, null, null },
4858569120 .src_constraints = .{
48586 .{ .unsigned_remainder_int = .{ .of = .qword, .is = .qword } },
48587 .{ .unsigned_remainder_int = .{ .of = .qword, .is = .qword } },
69121 .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } },
69122 .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } },
69123 .any,
4858869124 },
4858969125 .patterns = &.{
48590 .{ .src = .{ .to_mem, .to_mem } },
69126 .{ .src = .{ .to_mem, .to_mem, .none } },
4859169127 },
4859269128 .extra_temps = .{
4859369129 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -48612,11 +69148,12 @@ const Temp = struct {
4861269148 } },
4861369149 }, .{
4861469150 .src_constraints = .{
48615 .{ .signed_remainder_int = .{ .of = .dword, .is = .dword } },
48616 .{ .signed_remainder_int = .{ .of = .dword, .is = .dword } },
69151 .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } },
69152 .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } },
69153 .any,
4861769154 },
4861869155 .patterns = &.{
48619 .{ .src = .{ .to_mem, .to_mem } },
69156 .{ .src = .{ .to_mem, .to_mem, .none } },
4862069157 },
4862169158 .extra_temps = .{
4862269159 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -48643,11 +69180,12 @@ const Temp = struct {
4864369180 } },
4864469181 }, .{
4864569182 .src_constraints = .{
48646 .{ .unsigned_remainder_int = .{ .of = .dword, .is = .dword } },
48647 .{ .unsigned_remainder_int = .{ .of = .dword, .is = .dword } },
69183 .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } },
69184 .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } },
69185 .any,
4864869186 },
4864969187 .patterns = &.{
48650 .{ .src = .{ .to_mem, .to_mem } },
69188 .{ .src = .{ .to_mem, .to_mem, .none } },
4865169189 },
4865269190 .extra_temps = .{
4865369191 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -48675,15 +69213,15 @@ const Temp = struct {
4867569213 },
4867669214 .eq, .neq => {
4867769215 try cg.select(&res, &.{.bool}, &ops, comptime &.{ .{
48678 .src_constraints = .{ .{ .int = .byte }, .{ .int = .byte } },
69216 .src_constraints = .{ .{ .int = .byte }, .{ .int = .byte }, .any },
4867969217 .patterns = &.{
48680 .{ .src = .{ .mem, .imm8 } },
48681 .{ .src = .{ .imm8, .mem }, .commute = .{ 0, 1 } },
48682 .{ .src = .{ .to_gpr, .imm8 } },
48683 .{ .src = .{ .imm8, .to_gpr }, .commute = .{ 0, 1 } },
48684 .{ .src = .{ .to_gpr, .mem } },
48685 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },
48686 .{ .src = .{ .to_gpr, .to_gpr } },
69218 .{ .src = .{ .mem, .imm8, .none } },
69219 .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } },
69220 .{ .src = .{ .to_gpr, .imm8, .none } },
69221 .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } },
69222 .{ .src = .{ .to_gpr, .mem, .none } },
69223 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
69224 .{ .src = .{ .to_gpr, .to_gpr, .none } },
4868769225 },
4868869226 .dst_temps = .{.{ .cc = .e }},
4868969227 .clobbers = .{ .eflags = true },
......@@ -48691,15 +69229,15 @@ const Temp = struct {
4869169229 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
4869269230 } },
4869369231 }, .{
48694 .src_constraints = .{ .{ .int = .word }, .{ .int = .word } },
69232 .src_constraints = .{ .{ .int = .word }, .{ .int = .word }, .any },
4869569233 .patterns = &.{
48696 .{ .src = .{ .mem, .imm16 } },
48697 .{ .src = .{ .imm16, .mem }, .commute = .{ 0, 1 } },
48698 .{ .src = .{ .to_gpr, .imm16 } },
48699 .{ .src = .{ .imm16, .to_gpr }, .commute = .{ 0, 1 } },
48700 .{ .src = .{ .to_gpr, .mem } },
48701 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },
48702 .{ .src = .{ .to_gpr, .to_gpr } },
69234 .{ .src = .{ .mem, .imm16, .none } },
69235 .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } },
69236 .{ .src = .{ .to_gpr, .imm16, .none } },
69237 .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } },
69238 .{ .src = .{ .to_gpr, .mem, .none } },
69239 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
69240 .{ .src = .{ .to_gpr, .to_gpr, .none } },
4870369241 },
4870469242 .dst_temps = .{.{ .cc = .e }},
4870569243 .clobbers = .{ .eflags = true },
......@@ -48707,15 +69245,15 @@ const Temp = struct {
4870769245 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
4870869246 } },
4870969247 }, .{
48710 .src_constraints = .{ .{ .int = .dword }, .{ .int = .dword } },
69248 .src_constraints = .{ .{ .int = .dword }, .{ .int = .dword }, .any },
4871169249 .patterns = &.{
48712 .{ .src = .{ .mem, .imm32 } },
48713 .{ .src = .{ .imm32, .mem }, .commute = .{ 0, 1 } },
48714 .{ .src = .{ .to_gpr, .imm32 } },
48715 .{ .src = .{ .imm32, .to_gpr }, .commute = .{ 0, 1 } },
48716 .{ .src = .{ .to_gpr, .mem } },
48717 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },
48718 .{ .src = .{ .to_gpr, .to_gpr } },
69250 .{ .src = .{ .mem, .imm32, .none } },
69251 .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } },
69252 .{ .src = .{ .to_gpr, .imm32, .none } },
69253 .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
69254 .{ .src = .{ .to_gpr, .mem, .none } },
69255 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
69256 .{ .src = .{ .to_gpr, .to_gpr, .none } },
4871969257 },
4872069258 .dst_temps = .{.{ .cc = .e }},
4872169259 .clobbers = .{ .eflags = true },
......@@ -48724,15 +69262,15 @@ const Temp = struct {
4872469262 } },
4872569263 }, .{
4872669264 .required_features = .{ .@"64bit", null, null, null },
48727 .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword } },
69265 .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword }, .any },
4872869266 .patterns = &.{
48729 .{ .src = .{ .mem, .simm32 } },
48730 .{ .src = .{ .simm32, .mem }, .commute = .{ 0, 1 } },
48731 .{ .src = .{ .to_gpr, .simm32 } },
48732 .{ .src = .{ .simm32, .to_gpr }, .commute = .{ 0, 1 } },
48733 .{ .src = .{ .to_gpr, .mem } },
48734 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },
48735 .{ .src = .{ .to_gpr, .to_gpr } },
69267 .{ .src = .{ .mem, .simm32, .none } },
69268 .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } },
69269 .{ .src = .{ .to_gpr, .simm32, .none } },
69270 .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
69271 .{ .src = .{ .to_gpr, .mem, .none } },
69272 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
69273 .{ .src = .{ .to_gpr, .to_gpr, .none } },
4873669274 },
4873769275 .dst_temps = .{.{ .cc = .e }},
4873869276 .clobbers = .{ .eflags = true },
......@@ -48741,11 +69279,11 @@ const Temp = struct {
4874169279 } },
4874269280 }, .{
4874369281 .required_features = .{ .sse, .mmx, null, null },
48744 .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword } },
69282 .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword }, .any },
4874569283 .patterns = &.{
48746 .{ .src = .{ .to_mut_mm, .mem } },
48747 .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } },
48748 .{ .src = .{ .to_mut_mm, .to_mm } },
69284 .{ .src = .{ .to_mut_mm, .mem, .none } },
69285 .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } },
69286 .{ .src = .{ .to_mut_mm, .to_mm, .none } },
4874969287 },
4875069288 .extra_temps = .{
4875169289 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -48769,11 +69307,11 @@ const Temp = struct {
4876969307 } },
4877069308 }, .{
4877169309 .required_features = .{ .avx, null, null, null },
48772 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword } },
69310 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any },
4877369311 .patterns = &.{
48774 .{ .src = .{ .to_xmm, .mem } },
48775 .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } },
48776 .{ .src = .{ .to_xmm, .to_xmm } },
69312 .{ .src = .{ .to_xmm, .mem, .none } },
69313 .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } },
69314 .{ .src = .{ .to_xmm, .to_xmm, .none } },
4877769315 },
4877869316 .extra_temps = .{
4877969317 .{ .kind = .{ .rc = .sse } },
......@@ -48794,11 +69332,11 @@ const Temp = struct {
4879469332 } },
4879569333 }, .{
4879669334 .required_features = .{ .sse4_1, null, null, null },
48797 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword } },
69335 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any },
4879869336 .patterns = &.{
48799 .{ .src = .{ .to_mut_xmm, .mem } },
48800 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },
48801 .{ .src = .{ .to_mut_xmm, .to_xmm } },
69337 .{ .src = .{ .to_mut_xmm, .mem, .none } },
69338 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
69339 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
4880269340 },
4880369341 .dst_temps = .{.{ .cc = .z }},
4880469342 .clobbers = .{ .eflags = true },
......@@ -48808,11 +69346,11 @@ const Temp = struct {
4880869346 } },
4880969347 }, .{
4881069348 .required_features = .{ .sse2, .fast_imm16, null, null },
48811 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword } },
69349 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any },
4881269350 .patterns = &.{
48813 .{ .src = .{ .to_mut_xmm, .mem } },
48814 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },
48815 .{ .src = .{ .to_mut_xmm, .to_xmm } },
69351 .{ .src = .{ .to_mut_xmm, .mem, .none } },
69352 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
69353 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
4881669354 },
4881769355 .extra_temps = .{
4881869356 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -48836,11 +69374,11 @@ const Temp = struct {
4883669374 } },
4883769375 }, .{
4883869376 .required_features = .{ .sse2, null, null, null },
48839 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword } },
69377 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any },
4884069378 .patterns = &.{
48841 .{ .src = .{ .to_mut_xmm, .mem } },
48842 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },
48843 .{ .src = .{ .to_mut_xmm, .to_xmm } },
69379 .{ .src = .{ .to_mut_xmm, .mem, .none } },
69380 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
69381 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
4884469382 },
4884569383 .extra_temps = .{
4884669384 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -48864,11 +69402,11 @@ const Temp = struct {
4886469402 } },
4886569403 }, .{
4886669404 .required_features = .{ .avx2, null, null, null },
48867 .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword } },
69405 .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword }, .any },
4886869406 .patterns = &.{
48869 .{ .src = .{ .to_ymm, .mem } },
48870 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },
48871 .{ .src = .{ .to_ymm, .to_ymm } },
69407 .{ .src = .{ .to_ymm, .mem, .none } },
69408 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
69409 .{ .src = .{ .to_ymm, .to_ymm, .none } },
4887269410 },
4887369411 .extra_temps = .{
4887469412 .{ .kind = .{ .rc = .sse } },
......@@ -48889,11 +69427,11 @@ const Temp = struct {
4888969427 } },
4889069428 }, .{
4889169429 .required_features = .{ .avx, null, null, null },
48892 .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword } },
69430 .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword }, .any },
4889369431 .patterns = &.{
48894 .{ .src = .{ .to_ymm, .mem } },
48895 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },
48896 .{ .src = .{ .to_ymm, .to_ymm } },
69432 .{ .src = .{ .to_ymm, .mem, .none } },
69433 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
69434 .{ .src = .{ .to_ymm, .to_ymm, .none } },
4889769435 },
4889869436 .extra_temps = .{
4889969437 .{ .kind = .{ .rc = .sse } },
......@@ -48917,9 +69455,10 @@ const Temp = struct {
4891769455 .src_constraints = .{
4891869456 .{ .remainder_int = .{ .of = .yword, .is = .xword } },
4891969457 .{ .remainder_int = .{ .of = .yword, .is = .xword } },
69458 .any,
4892069459 },
4892169460 .patterns = &.{
48922 .{ .src = .{ .to_mem, .to_mem } },
69461 .{ .src = .{ .to_mem, .to_mem, .none } },
4892369462 },
4892469463 .extra_temps = .{
4892569464 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -48951,9 +69490,10 @@ const Temp = struct {
4895169490 .src_constraints = .{
4895269491 .{ .remainder_int = .{ .of = .yword, .is = .xword } },
4895369492 .{ .remainder_int = .{ .of = .yword, .is = .xword } },
69493 .any,
4895469494 },
4895569495 .patterns = &.{
48956 .{ .src = .{ .to_mem, .to_mem } },
69496 .{ .src = .{ .to_mem, .to_mem, .none } },
4895769497 },
4895869498 .extra_temps = .{
4895969499 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -48985,9 +69525,10 @@ const Temp = struct {
4898569525 .src_constraints = .{
4898669526 .{ .remainder_int = .{ .of = .yword, .is = .yword } },
4898769527 .{ .remainder_int = .{ .of = .yword, .is = .yword } },
69528 .any,
4898869529 },
4898969530 .patterns = &.{
48990 .{ .src = .{ .to_mem, .to_mem } },
69531 .{ .src = .{ .to_mem, .to_mem, .none } },
4899169532 },
4899269533 .extra_temps = .{
4899369534 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -49016,9 +69557,10 @@ const Temp = struct {
4901669557 .src_constraints = .{
4901769558 .{ .remainder_int = .{ .of = .yword, .is = .yword } },
4901869559 .{ .remainder_int = .{ .of = .yword, .is = .yword } },
69560 .any,
4901969561 },
4902069562 .patterns = &.{
49021 .{ .src = .{ .to_mem, .to_mem } },
69563 .{ .src = .{ .to_mem, .to_mem, .none } },
4902269564 },
4902369565 .extra_temps = .{
4902469566 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -49047,9 +69589,10 @@ const Temp = struct {
4904769589 .src_constraints = .{
4904869590 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
4904969591 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
69592 .any,
4905069593 },
4905169594 .patterns = &.{
49052 .{ .src = .{ .to_mem, .to_mem } },
69595 .{ .src = .{ .to_mem, .to_mem, .none } },
4905369596 },
4905469597 .extra_temps = .{
4905569598 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -49078,9 +69621,10 @@ const Temp = struct {
4907869621 .src_constraints = .{
4907969622 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
4908069623 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
69624 .any,
4908169625 },
4908269626 .patterns = &.{
49083 .{ .src = .{ .to_mem, .to_mem } },
69627 .{ .src = .{ .to_mem, .to_mem, .none } },
4908469628 },
4908569629 .extra_temps = .{
4908669630 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -49109,9 +69653,10 @@ const Temp = struct {
4910969653 .src_constraints = .{
4911069654 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
4911169655 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
69656 .any,
4911269657 },
4911369658 .patterns = &.{
49114 .{ .src = .{ .to_mem, .to_mem } },
69659 .{ .src = .{ .to_mem, .to_mem, .none } },
4911569660 },
4911669661 .extra_temps = .{
4911769662 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -49141,9 +69686,10 @@ const Temp = struct {
4914169686 .src_constraints = .{
4914269687 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
4914369688 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
69689 .any,
4914469690 },
4914569691 .patterns = &.{
49146 .{ .src = .{ .to_mem, .to_mem } },
69692 .{ .src = .{ .to_mem, .to_mem, .none } },
4914769693 },
4914869694 .extra_temps = .{
4914969695 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -49173,9 +69719,10 @@ const Temp = struct {
4917369719 .src_constraints = .{
4917469720 .{ .remainder_int = .{ .of = .qword, .is = .qword } },
4917569721 .{ .remainder_int = .{ .of = .qword, .is = .qword } },
69722 .any,
4917669723 },
4917769724 .patterns = &.{
49178 .{ .src = .{ .to_mem, .to_mem } },
69725 .{ .src = .{ .to_mem, .to_mem, .none } },
4917969726 },
4918069727 .extra_temps = .{
4918169728 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -49205,9 +69752,10 @@ const Temp = struct {
4920569752 .src_constraints = .{
4920669753 .{ .remainder_int = .{ .of = .qword, .is = .qword } },
4920769754 .{ .remainder_int = .{ .of = .qword, .is = .qword } },
69755 .any,
4920869756 },
4920969757 .patterns = &.{
49210 .{ .src = .{ .to_mem, .to_mem } },
69758 .{ .src = .{ .to_mem, .to_mem, .none } },
4921169759 },
4921269760 .extra_temps = .{
4921369761 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -49234,9 +69782,10 @@ const Temp = struct {
4923469782 .src_constraints = .{
4923569783 .{ .remainder_int = .{ .of = .dword, .is = .dword } },
4923669784 .{ .remainder_int = .{ .of = .dword, .is = .dword } },
69785 .any,
4923769786 },
4923869787 .patterns = &.{
49239 .{ .src = .{ .to_mem, .to_mem } },
69788 .{ .src = .{ .to_mem, .to_mem, .none } },
4924069789 },
4924169790 .extra_temps = .{
4924269791 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -49536,6 +70085,7 @@ const Operand = union(enum) {
4953670085
4953770086const Select = struct {
4953870087 cg: *CodeGen,
70088 types: [@intFromEnum(Select.Operand.Ref.none)]Type,
4953970089 temps: [@intFromEnum(Select.Operand.Ref.none)]Temp,
4954070090 labels: [@intFromEnum(Label._)]struct {
4954170091 backward: ?Mir.Inst.Index,
......@@ -49747,7 +70297,15 @@ const Select = struct {
4974770297 multiple_scalar_int: OfIsSizes,
4974870298 multiple_scalar_signed_int: OfIsSizes,
4974970299 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 },
4975070303 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,
4975170309 float: Memory.Size,
4975270310 scalar_any_float: Memory.Size,
4975370311 scalar_float: OfIsSizes,
......@@ -49762,9 +70320,11 @@ const Select = struct {
4976270320 signed_po2_int: Memory.Size,
4976370321 unsigned_po2_or_exact_int: Memory.Size,
4976470322 remainder_int: OfIsSizes,
49765 signed_remainder_int: OfIsSizes,
49766 unsigned_remainder_int: OfIsSizes,
70323 remainder_signed_int: OfIsSizes,
70324 remainder_unsigned_int: OfIsSizes,
4976770325 exact_remainder_int: OfIsSizes,
70326 exact_remainder_signed_int: OfIsSizes,
70327 exact_remainder_unsigned_int: OfIsSizes,
4976870328 signed_or_exact_remainder_int: OfIsSizes,
4976970329 unsigned_or_exact_remainder_int: OfIsSizes,
4977070330 signed_int: Memory.Size,
......@@ -49832,10 +70392,30 @@ const Select = struct {
4983270392 .multiple_scalar_unsigned_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and
4983370393 if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and
4983470394 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,
4983570403 .scalar_remainder_int => |of_is| if (cg.intInfo(ty.scalarType(zcu))) |int_info|
4983670404 of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1
4983770405 else
4983870406 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,
4983970419 .float => |size| if (cg.floatBits(ty)) |float_bits| size.bitSize(cg.target) == float_bits else false,
4984070420 .scalar_any_float => |size| @divExact(size.bitSize(cg.target), 8) >= ty.abiSize(zcu) and
4984170421 cg.floatBits(ty.scalarType(zcu)) != null,
......@@ -49878,14 +70458,18 @@ const Select = struct {
4987870458 of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1
4987970459 else
4988070460 false,
49881 .signed_remainder_int => |of_is| if (cg.intInfo(ty)) |int_info| int_info.signedness == .signed and
70461 .remainder_signed_int => |of_is| if (cg.intInfo(ty)) |int_info| int_info.signedness == .signed and
4988270462 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 and
70463 .remainder_unsigned_int => |of_is| if (cg.intInfo(ty)) |int_info| int_info.signedness == .unsigned and
4988470464 of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false,
4988570465 .exact_remainder_int => |of_is| if (cg.intInfo(ty)) |int_info|
4988670466 of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1
4988770467 else
4988870468 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,
4988970473 .signed_or_exact_remainder_int => |of_is| if (cg.intInfo(ty)) |int_info| switch (int_info.signedness) {
4989070474 .signed => of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1,
4989170475 .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 {
4991370497 };
4991470498
4991570499 const Pattern = struct {
49916 src: [2]Src,
70500 src: [@intFromEnum(Select.Operand.Ref.none) - @intFromEnum(Select.Operand.Ref.src0)]Src,
4991770501 commute: struct { u8, u8 } = .{ 0, 0 },
4991870502
4991970503 const Src = union(enum) {
......@@ -50105,7 +70689,11 @@ const Select = struct {
5010570689 frame: FrameIndex,
5010670690 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
5011070698 fn finish(kind: Kind, temp: Temp, s: *const Select) void {
5011170699 switch (kind) {
......@@ -50129,11 +70717,11 @@ const Select = struct {
5012970717 .unused => unreachable,
5013070718 .any => .{ try cg.tempAlloc(spec.type), true },
5013170719 .cc => |cc| .{ try cg.tempInit(spec.type, .{ .eflags = cc }), true },
50132 .ref => |ref| .{ ref.deref(s), false },
70720 .ref => |ref| .{ ref.tempOf(s), false },
5013370721 .reg => |reg| .{ try cg.tempInit(spec.type, .{ .register = reg }), true },
5013470722 .rc => |rc| .{ try cg.tempAllocReg(spec.type, regSetForRegClass(rc)), true },
5013570723 .mut_rc => |ref_rc| {
50136 const temp = ref_rc.ref.deref(s);
70724 const temp = ref_rc.ref.tempOf(s);
5013770725 if (temp.isMut(cg)) switch (temp.tracking(cg).short) {
5013870726 .register => |reg| if (reg.class() == ref_rc.rc) return .{ temp, false },
5013970727 .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 {
5014170729 };
5014270730 return .{ try cg.tempAllocReg(spec.type, regSetForRegClass(ref_rc.rc)), true };
5014370731 },
50144 .ref_mask => |ref_mask| .{ ref_mask.ref.deref(s), false },
70732 .ref_mask => |ref_mask| .{ ref_mask.ref.tempOf(s), false },
5014570733 .rc_mask => |rc_mask| .{ try cg.tempAllocReg(spec.type, regSetForRegClass(rc_mask.rc)), true },
5014670734 .mut_rc_mask => |ref_rc_mask| {
50147 const temp = ref_rc_mask.ref.deref(s);
70735 const temp = ref_rc_mask.ref.tempOf(s);
5014870736 if (temp.isMut(cg)) switch (temp.tracking(cg).short) {
5014970737 .register => |reg| if (reg.class() == ref_rc_mask.rc) return .{ temp, false },
5015070738 .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 {
5015770745 const pt = cg.pt;
5015870746 const zcu = pt.zcu;
5015970747 const ip = &zcu.intern_pool;
50160 const ty = const_info.ref.deref(s).typeOf(cg);
70748 const ty = const_info.ref.typeOf(s);
5016170749 const vector_len, const scalar_ty: Type = switch (ip.indexToKey(ty.toIntern())) {
5016270750 else => .{ null, ty },
5016370751 .vector_type => |vector_type| .{ vector_type.len, .fromInterned(vector_type.child) },
......@@ -50180,7 +70768,8 @@ const Select = struct {
5018070768 .signedness = .signed,
5018170769 .bits = cg.floatBits(scalar_ty).?,
5018270770 };
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);
5018470773 if (scalar_info.bits <= 64) {
5018570774 const int_val: i64 = switch (spec.kind) {
5018670775 else => unreachable,
......@@ -50190,7 +70779,7 @@ const Select = struct {
5019070779 .umax_mem => -1,
5019170780 };
5019270781 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) {
5019470783 .signed => try pt.intValue_i64(scalar_int_ty, int_val >> shift),
5019570784 .unsigned => try pt.intValue_u64(scalar_int_ty, @as(u64, @bitCast(int_val)) >> shift),
5019670785 } };
......@@ -50206,7 +70795,7 @@ const Select = struct {
5020670795 .smin_mem, .smax_mem => .signed,
5020770796 .umin_mem, .umax_mem => .unsigned,
5020870797 }, 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);
5021070799 break :res_scalar .{ scalar_int_ty, try pt.intValue_big(scalar_int_ty, big_int.toConst()) };
5021170800 },
5021270801 };
......@@ -50246,7 +70835,7 @@ const Select = struct {
5024670835 flags: packed struct(u16) {
5024770836 tag: Tag,
5024870837 adjust: Adjust = .none,
50249 unused: u4 = 0,
70838 unused: u3 = 0,
5025070839 },
5025170840 base: Ref.Sized = .none,
5025270841 index: packed struct(u6) {
......@@ -50265,7 +70854,7 @@ const Select = struct {
5026570854 lea,
5026670855 mem,
5026770856 };
50268 const Adjust = packed struct(u9) {
70857 const Adjust = packed struct(u10) {
5026970858 sign: enum(u1) { neg, pos },
5027070859 lhs: enum(u5) {
5027170860 none,
......@@ -50288,7 +70877,7 @@ const Select = struct {
5028870877 smax,
5028970878 umax,
5029070879 },
50291 op: enum(u1) { mul, div },
70880 op: enum(u2) { mul, div, rem_8_mul },
5029270881 rhs: Memory.Scale,
5029370882
5029470883 const none: Adjust = .{ .sign = .pos, .lhs = .none, .op = .mul, .rhs = .@"1" };
......@@ -50308,6 +70897,8 @@ const Select = struct {
5030870897 const sub_unaligned_size: Adjust = .{ .sign = .neg, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" };
5030970898 const add_2_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"2" };
5031070899 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" };
5031170902 const sub_bit_size: Adjust = .{ .sign = .neg, .lhs = .bit_size, .op = .mul, .rhs = .@"1" };
5031270903 const add_src0_bit_size: Adjust = .{ .sign = .pos, .lhs = .src0_bit_size, .op = .mul, .rhs = .@"1" };
5031370904 const sub_src0_bit_size: Adjust = .{ .sign = .neg, .lhs = .src0_bit_size, .op = .mul, .rhs = .@"1" };
......@@ -50328,6 +70919,7 @@ const Select = struct {
5032870919 const sub_src0_elem_size_times_src1: Adjust = .{ .sign = .neg, .lhs = .src0_elem_size_times_src1, .op = .mul, .rhs = .@"1" };
5032970920 const add_log2_src0_elem_size: Adjust = .{ .sign = .pos, .lhs = .log2_src0_elem_size, .op = .mul, .rhs = .@"1" };
5033070921 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" };
5033170923 const add_umax: Adjust = .{ .sign = .pos, .lhs = .umax, .op = .mul, .rhs = .@"1" };
5033270924 };
5033370925 const Ref = enum(u4) {
......@@ -50343,6 +70935,7 @@ const Select = struct {
5034370935 dst0,
5034470936 src0,
5034570937 src1,
70938 src2,
5034670939 none,
5034770940
5034870941 const Sized = packed struct(u8) {
......@@ -50356,6 +70949,7 @@ const Select = struct {
5035670949 const tmp0w: Sized = .{ .ref = .tmp0, .size = .word };
5035770950 const tmp0d: Sized = .{ .ref = .tmp0, .size = .dword };
5035870951 const tmp0p: Sized = .{ .ref = .tmp0, .size = .ptr };
70952 const tmp0g: Sized = .{ .ref = .tmp0, .size = .gpr };
5035970953 const tmp0q: Sized = .{ .ref = .tmp0, .size = .qword };
5036070954 const tmp0t: Sized = .{ .ref = .tmp0, .size = .tbyte };
5036170955 const tmp0x: Sized = .{ .ref = .tmp0, .size = .xword };
......@@ -50366,6 +70960,7 @@ const Select = struct {
5036670960 const tmp1w: Sized = .{ .ref = .tmp1, .size = .word };
5036770961 const tmp1d: Sized = .{ .ref = .tmp1, .size = .dword };
5036870962 const tmp1p: Sized = .{ .ref = .tmp1, .size = .ptr };
70963 const tmp1g: Sized = .{ .ref = .tmp1, .size = .gpr };
5036970964 const tmp1q: Sized = .{ .ref = .tmp1, .size = .qword };
5037070965 const tmp1t: Sized = .{ .ref = .tmp1, .size = .tbyte };
5037170966 const tmp1x: Sized = .{ .ref = .tmp1, .size = .xword };
......@@ -50376,6 +70971,7 @@ const Select = struct {
5037670971 const tmp2w: Sized = .{ .ref = .tmp2, .size = .word };
5037770972 const tmp2d: Sized = .{ .ref = .tmp2, .size = .dword };
5037870973 const tmp2p: Sized = .{ .ref = .tmp2, .size = .ptr };
70974 const tmp2g: Sized = .{ .ref = .tmp2, .size = .gpr };
5037970975 const tmp2q: Sized = .{ .ref = .tmp2, .size = .qword };
5038070976 const tmp2t: Sized = .{ .ref = .tmp2, .size = .tbyte };
5038170977 const tmp2x: Sized = .{ .ref = .tmp2, .size = .xword };
......@@ -50386,6 +70982,7 @@ const Select = struct {
5038670982 const tmp3w: Sized = .{ .ref = .tmp3, .size = .word };
5038770983 const tmp3d: Sized = .{ .ref = .tmp3, .size = .dword };
5038870984 const tmp3p: Sized = .{ .ref = .tmp3, .size = .ptr };
70985 const tmp3g: Sized = .{ .ref = .tmp3, .size = .gpr };
5038970986 const tmp3q: Sized = .{ .ref = .tmp3, .size = .qword };
5039070987 const tmp3t: Sized = .{ .ref = .tmp3, .size = .tbyte };
5039170988 const tmp3x: Sized = .{ .ref = .tmp3, .size = .xword };
......@@ -50396,6 +70993,7 @@ const Select = struct {
5039670993 const tmp4w: Sized = .{ .ref = .tmp4, .size = .word };
5039770994 const tmp4d: Sized = .{ .ref = .tmp4, .size = .dword };
5039870995 const tmp4p: Sized = .{ .ref = .tmp4, .size = .ptr };
70996 const tmp4g: Sized = .{ .ref = .tmp4, .size = .gpr };
5039970997 const tmp4q: Sized = .{ .ref = .tmp4, .size = .qword };
5040070998 const tmp4t: Sized = .{ .ref = .tmp4, .size = .tbyte };
5040170999 const tmp4x: Sized = .{ .ref = .tmp4, .size = .xword };
......@@ -50406,6 +71004,7 @@ const Select = struct {
5040671004 const tmp5w: Sized = .{ .ref = .tmp5, .size = .word };
5040771005 const tmp5d: Sized = .{ .ref = .tmp5, .size = .dword };
5040871006 const tmp5p: Sized = .{ .ref = .tmp5, .size = .ptr };
71007 const tmp5g: Sized = .{ .ref = .tmp5, .size = .gpr };
5040971008 const tmp5q: Sized = .{ .ref = .tmp5, .size = .qword };
5041071009 const tmp5t: Sized = .{ .ref = .tmp5, .size = .tbyte };
5041171010 const tmp5x: Sized = .{ .ref = .tmp5, .size = .xword };
......@@ -50416,6 +71015,7 @@ const Select = struct {
5041671015 const tmp6w: Sized = .{ .ref = .tmp6, .size = .word };
5041771016 const tmp6d: Sized = .{ .ref = .tmp6, .size = .dword };
5041871017 const tmp6p: Sized = .{ .ref = .tmp6, .size = .ptr };
71018 const tmp6g: Sized = .{ .ref = .tmp6, .size = .gpr };
5041971019 const tmp6q: Sized = .{ .ref = .tmp6, .size = .qword };
5042071020 const tmp6t: Sized = .{ .ref = .tmp6, .size = .tbyte };
5042171021 const tmp6x: Sized = .{ .ref = .tmp6, .size = .xword };
......@@ -50426,6 +71026,7 @@ const Select = struct {
5042671026 const tmp7w: Sized = .{ .ref = .tmp7, .size = .word };
5042771027 const tmp7d: Sized = .{ .ref = .tmp7, .size = .dword };
5042871028 const tmp7p: Sized = .{ .ref = .tmp7, .size = .ptr };
71029 const tmp7g: Sized = .{ .ref = .tmp7, .size = .gpr };
5042971030 const tmp7q: Sized = .{ .ref = .tmp7, .size = .qword };
5043071031 const tmp7t: Sized = .{ .ref = .tmp7, .size = .tbyte };
5043171032 const tmp7x: Sized = .{ .ref = .tmp7, .size = .xword };
......@@ -50436,6 +71037,7 @@ const Select = struct {
5043671037 const tmp8w: Sized = .{ .ref = .tmp8, .size = .word };
5043771038 const tmp8d: Sized = .{ .ref = .tmp8, .size = .dword };
5043871039 const tmp8p: Sized = .{ .ref = .tmp8, .size = .ptr };
71040 const tmp8g: Sized = .{ .ref = .tmp8, .size = .gpr };
5043971041 const tmp8q: Sized = .{ .ref = .tmp8, .size = .qword };
5044071042 const tmp8t: Sized = .{ .ref = .tmp8, .size = .tbyte };
5044171043 const tmp8x: Sized = .{ .ref = .tmp8, .size = .xword };
......@@ -50446,6 +71048,7 @@ const Select = struct {
5044671048 const dst0w: Sized = .{ .ref = .dst0, .size = .word };
5044771049 const dst0d: Sized = .{ .ref = .dst0, .size = .dword };
5044871050 const dst0p: Sized = .{ .ref = .dst0, .size = .ptr };
71051 const dst0g: Sized = .{ .ref = .dst0, .size = .gpr };
5044971052 const dst0q: Sized = .{ .ref = .dst0, .size = .qword };
5045071053 const dst0t: Sized = .{ .ref = .dst0, .size = .tbyte };
5045171054 const dst0x: Sized = .{ .ref = .dst0, .size = .xword };
......@@ -50456,6 +71059,7 @@ const Select = struct {
5045671059 const src0w: Sized = .{ .ref = .src0, .size = .word };
5045771060 const src0d: Sized = .{ .ref = .src0, .size = .dword };
5045871061 const src0p: Sized = .{ .ref = .src0, .size = .ptr };
71062 const src0g: Sized = .{ .ref = .src0, .size = .gpr };
5045971063 const src0q: Sized = .{ .ref = .src0, .size = .qword };
5046071064 const src0t: Sized = .{ .ref = .src0, .size = .tbyte };
5046171065 const src0x: Sized = .{ .ref = .src0, .size = .xword };
......@@ -50466,15 +71070,35 @@ const Select = struct {
5046671070 const src1w: Sized = .{ .ref = .src1, .size = .word };
5046771071 const src1d: Sized = .{ .ref = .src1, .size = .dword };
5046871072 const src1p: Sized = .{ .ref = .src1, .size = .ptr };
71073 const src1g: Sized = .{ .ref = .src1, .size = .gpr };
5046971074 const src1q: Sized = .{ .ref = .src1, .size = .qword };
5047071075 const src1t: Sized = .{ .ref = .src1, .size = .tbyte };
5047171076 const src1x: Sized = .{ .ref = .src1, .size = .xword };
5047271077 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 };
5047371089 };
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 {
5047671096 return s.temps[@intFromEnum(ref)];
5047771097 }
71098
71099 fn valueOf(ref: Ref, s: *const Select) MCValue {
71100 return s.temps[@intFromEnum(ref)].tracking(s.cg).short;
71101 }
5047871102 };
5047971103
5048071104 const @"_": Select.Operand = .{ .flags = .{ .tag = .none } };
......@@ -50490,6 +71114,7 @@ const Select = struct {
5049071114 const tmp0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0w };
5049171115 const tmp0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0d };
5049271116 const tmp0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0p };
71117 const tmp0g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0g };
5049371118 const tmp0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0q };
5049471119 const tmp0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0t };
5049571120 const tmp0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0x };
......@@ -50499,6 +71124,7 @@ const Select = struct {
5049971124 const tmp1w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1w };
5050071125 const tmp1d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1d };
5050171126 const tmp1p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1p };
71127 const tmp1g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1g };
5050271128 const tmp1q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1q };
5050371129 const tmp1t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1t };
5050471130 const tmp1x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1x };
......@@ -50508,6 +71134,7 @@ const Select = struct {
5050871134 const tmp2w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2w };
5050971135 const tmp2d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2d };
5051071136 const tmp2p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2p };
71137 const tmp2g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2g };
5051171138 const tmp2q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2q };
5051271139 const tmp2t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2t };
5051371140 const tmp2x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2x };
......@@ -50517,6 +71144,7 @@ const Select = struct {
5051771144 const tmp3w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3w };
5051871145 const tmp3d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3d };
5051971146 const tmp3p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3p };
71147 const tmp3g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3g };
5052071148 const tmp3q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3q };
5052171149 const tmp3t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3t };
5052271150 const tmp3x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3x };
......@@ -50526,6 +71154,7 @@ const Select = struct {
5052671154 const tmp4w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4w };
5052771155 const tmp4d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4d };
5052871156 const tmp4p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4p };
71157 const tmp4g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4g };
5052971158 const tmp4q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4q };
5053071159 const tmp4t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4t };
5053171160 const tmp4x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4x };
......@@ -50535,6 +71164,7 @@ const Select = struct {
5053571164 const tmp5w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5w };
5053671165 const tmp5d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5d };
5053771166 const tmp5p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5p };
71167 const tmp5g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5g };
5053871168 const tmp5q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5q };
5053971169 const tmp5t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5t };
5054071170 const tmp5x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5x };
......@@ -50544,6 +71174,7 @@ const Select = struct {
5054471174 const tmp6w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6w };
5054571175 const tmp6d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6d };
5054671176 const tmp6p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6p };
71177 const tmp6g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6g };
5054771178 const tmp6q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6q };
5054871179 const tmp6t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6t };
5054971180 const tmp6x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6x };
......@@ -50553,6 +71184,7 @@ const Select = struct {
5055371184 const tmp7w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7w };
5055471185 const tmp7d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7d };
5055571186 const tmp7p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7p };
71187 const tmp7g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7g };
5055671188 const tmp7q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7q };
5055771189 const tmp7t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7t };
5055871190 const tmp7x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7x };
......@@ -50562,6 +71194,7 @@ const Select = struct {
5056271194 const tmp8w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8w };
5056371195 const tmp8d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8d };
5056471196 const tmp8p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8p };
71197 const tmp8g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8g };
5056571198 const tmp8q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8q };
5056671199 const tmp8t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8t };
5056771200 const tmp8x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8x };
......@@ -50571,6 +71204,7 @@ const Select = struct {
5057171204 const dst0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0w };
5057271205 const dst0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0d };
5057371206 const dst0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0p };
71207 const dst0g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0g };
5057471208 const dst0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0q };
5057571209 const dst0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0t };
5057671210 const dst0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0x };
......@@ -50580,6 +71214,7 @@ const Select = struct {
5058071214 const src0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0w };
5058171215 const src0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0d };
5058271216 const src0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0p };
71217 const src0g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0g };
5058371218 const src0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0q };
5058471219 const src0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0t };
5058571220 const src0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0x };
......@@ -50589,11 +71224,22 @@ const Select = struct {
5058971224 const src1w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1w };
5059071225 const src1d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1d };
5059171226 const src1p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1p };
71227 const src1g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1g };
5059271228 const src1q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1q };
5059371229 const src1t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1t };
5059471230 const src1x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1x };
5059571231 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
5059771243 fn si(imm: i32) Select.Operand {
5059871244 return .{ .flags = .{ .tag = .simm }, .imm = imm };
5059971245 }
......@@ -50606,6 +71252,9 @@ const Select = struct {
5060671252 fn sia(imm: i32, base: Ref.Sized, adjust: Adjust) Select.Operand {
5060771253 return .{ .flags = .{ .tag = .simm, .adjust = adjust }, .base = base, .imm = imm };
5060871254 }
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 }
5060971258 fn ui(imm: u32) Select.Operand {
5061071259 return .{ .flags = .{ .tag = .uimm }, .imm = @bitCast(imm) };
5061171260 }
......@@ -50786,36 +71435,36 @@ const Select = struct {
5078671435 .none => 0,
5078771436 .ptr_size => @divExact(s.cg.target.ptrBitWidth(), 8),
5078871437 .ptr_bit_size => s.cg.target.ptrBitWidth(),
50789 .size => @intCast(op.base.ref.deref(s).typeOf(s.cg).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))) -
50791 @as(SignedImm, @intCast(op.index.ref.deref(s).typeOf(s.cg).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))) -
50793 @as(SignedImm, @intCast(op.index.ref.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)))),
71438 .size => @intCast(op.base.ref.typeOf(s).abiSize(s.cg.pt.zcu)),
71439 .delta_size => @intCast(@as(SignedImm, @intCast(op.base.ref.typeOf(s).abiSize(s.cg.pt.zcu))) -
71440 @as(SignedImm, @intCast(op.index.ref.typeOf(s).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))) -
71442 @as(SignedImm, @intCast(op.index.ref.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)))),
5079471443 .size_sub_elem_size => {
50795 const ty = op.base.ref.deref(s).typeOf(s.cg);
71444 const ty = op.base.ref.typeOf(s);
5079671445 break :lhs @intCast(ty.abiSize(s.cg.pt.zcu) - ty.elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu));
5079771446 },
50798 .unaligned_size => @intCast(s.cg.unalignedSize(op.base.ref.deref(s).typeOf(s.cg))),
50799 .bit_size => @intCast(op.base.ref.deref(s).typeOf(s.cg).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)),
50801 .len => @intCast(op.base.ref.deref(s).typeOf(s.cg).vectorLen(s.cg.pt.zcu)),
71447 .unaligned_size => @intCast(s.cg.unalignedSize(op.base.ref.typeOf(s))),
71448 .bit_size => @intCast(op.base.ref.typeOf(s).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)),
71450 .len => @intCast(op.base.ref.typeOf(s).vectorLen(s.cg.pt.zcu)),
5080271451 .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),
5080471453 @divExact(op.base.size.bitSize(s.cg.target), 8),
5080571454 )),
50806 .elem_size => @intCast(op.base.ref.deref(s).typeOf(s.cg).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)),
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) *
50809 Select.Operand.Ref.src1.deref(s).tracking(s.cg).short.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))),
71455 .elem_size => @intCast(op.base.ref.typeOf(s).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)),
71457 .src0_elem_size_times_src1 => @intCast(Select.Operand.Ref.src0.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu) *
71458 Select.Operand.Ref.src1.valueOf(s).immediate),
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))),
5081171460 .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),
5081371462 ),
5081471463 .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),
5081671465 ),
5081771466 .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),
5081971468 )),
5082071469 };
5082171470 const rhs = op.flags.adjust.rhs.toLog2();
......@@ -50826,6 +71475,7 @@ const Select = struct {
5082671475 break :res res[0];
5082771476 },
5082871477 .div => @shrExact(lhs, rhs),
71478 .rem_8_mul => lhs & (@as(SignedImm, 1) << @intCast(@as(u3, 3) + rhs)) - 1,
5082971479 };
5083071480 return switch (op.flags.adjust.sign) {
5083171481 .neg => op.imm - res,
......@@ -50842,7 +71492,7 @@ const Select = struct {
5084271492 label.* = @intCast(s.cg.mir_instructions.len);
5084371493 break .{ .inst = undefined };
5084471494 } else unreachable,
50845 .ref => switch (op.base.ref.deref(s).tracking(s.cg).short) {
71495 .ref => switch (op.base.ref.valueOf(s)) {
5084671496 .immediate => |imm| .{ .imm = switch (op.base.size) {
5084771497 .byte => if (std.math.cast(i8, @as(i64, @bitCast(imm)))) |simm| .s(simm) else .u(@as(u8, @intCast(imm))),
5084871498 .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 {
5085771507 .simm => .{ .imm = .s(op.adjustedImm(i32, s)) },
5085871508 .uimm => .{ .imm = .u(@bitCast(op.adjustedImm(i64, s))) },
5085971509 .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)) },
5086171511 .mod = .{ .rm = .{
5086271512 .size = op.base.size,
5086371513 .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)),
5086571515 .none => .none,
5086671516 },
5086771517 .scale = op.index.scale,
5086871518 .disp = op.adjustedImm(i32, s),
5086971519 } },
5087071520 } },
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, .{
5087271522 .size = op.base.size,
5087371523 .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)),
5087571525 .none => .none,
5087671526 },
5087771527 .scale = op.index.scale,
......@@ -50888,7 +71538,7 @@ fn select(
5088871538 src_temps: []Temp,
5088971539 cases: []const Select.Case,
5089071540) !void {
50891 @setEvalBranchQuota(33_600);
71541 @setEvalBranchQuota(33_500);
5089271542 cases: for (cases) |case| {
5089371543 for (case.required_features) |required_feature| if (required_feature) |feature| if (!cg.hasFeature(feature)) continue :cases;
5089471544 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(
5091471564 var s: Select = .{
5091571565 .cg = cg,
5091671566 .temps = undefined,
71567 .types = undefined,
5091771568 .labels = @splat(.{ .forward = @splat(null), .backward = null }),
5091871569 .top = 0,
5091971570 };
50920 const tmp_slots = s.temps[@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)];
50922 const src_slots = s.temps[@intFromEnum(Select.Operand.Ref.src0)..@intFromEnum(Select.Operand.Ref.none)];
71571 const s_tmp_types = s.types[@intFromEnum(Select.Operand.Ref.tmp0)..@intFromEnum(Select.Operand.Ref.dst0)];
71572 const s_tmp_temps = s.temps[@intFromEnum(Select.Operand.Ref.tmp0)..@intFromEnum(Select.Operand.Ref.dst0)];
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
5092471583 caller_preserved: {
5092571584 const cc = switch (case.clobbers.caller_preserved) {
......@@ -50943,23 +71602,23 @@ fn select(
5094371602 }
5094471603 }
5094571604
50946 @memcpy(src_slots[0..src_temps.len], src_temps);
50947 std.mem.swap(Temp, &src_slots[pattern.commute[0]], &src_slots[pattern.commute[1]]);
71605 @memcpy(s_src_temps[0..src_temps.len], src_temps);
71606 std.mem.swap(Temp, &s_src_temps[pattern.commute[0]], &s_src_temps[pattern.commute[1]]);
5094871607 for (dst_temps, dst_tys, case.dst_temps[0..dst_temps.len]) |*dst_temp, dst_ty, dst_kind| {
5094971608 if (dst_kind.pass() != 1) continue;
5095071609 dst_temp.*, _ = try Select.TempSpec.create(.{ .type = dst_ty, .kind = dst_kind }, &s);
5095171610 }
50952 var tmp_owned: [tmp_slots.len]bool = @splat(false);
50953 for (1..3) |pass| for (tmp_slots, &tmp_owned, case.extra_temps) |*slot, *owned, spec| {
71611 var tmp_owned: [s_tmp_temps.len]bool = @splat(false);
71612 for (1..3) |pass| for (s_tmp_temps, &tmp_owned, case.extra_temps) |*temp, *owned, spec| {
5095471613 if (spec.kind.pass() != pass) continue;
50955 slot.*, owned.* = try spec.create(&s);
71614 temp.*, owned.* = try spec.create(&s);
5095671615 };
5095771616
5095871617 while (true) for (pattern.src[0..src_temps.len], src_temps) |src_pattern, *src_temp| {
5095971618 if (try src_pattern.convert(src_temp, cg)) break;
5096071619 } else break;
50961 @memcpy(src_slots[0..src_temps.len], src_temps);
50962 std.mem.swap(Temp, &src_slots[pattern.commute[0]], &src_slots[pattern.commute[1]]);
71620 @memcpy(s_src_temps[0..src_temps.len], src_temps);
71621 std.mem.swap(Temp, &s_src_temps[pattern.commute[0]], &s_src_temps[pattern.commute[1]]);
5096371622
5096471623 if (case.clobbers.eflags) try cg.spillEflagsIfOccupied();
5096571624
......@@ -50967,7 +71626,7 @@ fn select(
5096771626 if (dst_kind.pass() != 2) continue;
5096871627 dst_temp.*, _ = try Select.TempSpec.create(.{ .type = dst_ty, .kind = dst_kind }, &s);
5096971628 }
50970 @memcpy(dst_slots[0..dst_temps.len], dst_temps);
71629 @memcpy(s_dst_temps[0..dst_temps.len], dst_temps);
5097171630
5097271631 switch (case.each) {
5097371632 .once => |body| {
......@@ -50996,7 +71655,7 @@ fn select(
5099671655 }
5099771656 }
5099871657 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);
5100071659 return;
5100171660 }
5100271661 }
src/arch/x86_64/bits.zig+15-7
......@@ -177,7 +177,13 @@ pub const Condition = enum(u5) {
177177
178178/// The immediate operand of vcvtps2ph.
179179pub 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) {
181187 /// Round to nearest (even)
182188 nearest = 0b0_00,
183189 /// Round down (toward -∞)
......@@ -188,11 +194,7 @@ pub const RoundMode = packed struct(u5) {
188194 zero = 0b0_11,
189195 /// Use current rounding mode of MXCSR.RC
190196 mxcsr = 0b1_00,
191 } = .mxcsr,
192 precision: enum(u1) {
193 normal = 0b0,
194 inexact = 0b1,
195 } = .normal,
197 };
196198
197199 pub fn imm(mode: RoundMode) Immediate {
198200 return .u(@as(@typeInfo(RoundMode).@"struct".backing_integer.?, @bitCast(mode)));
......@@ -702,6 +704,7 @@ pub const Memory = struct {
702704 pub const Size = enum(u4) {
703705 none,
704706 ptr,
707 gpr,
705708 byte,
706709 word,
707710 dword,
......@@ -742,6 +745,11 @@ pub const Memory = struct {
742745 return switch (s) {
743746 .none => 0,
744747 .ptr => target.ptrBitWidth(),
748 .gpr => switch (target.cpu.arch) {
749 else => unreachable,
750 .x86 => 32,
751 .x86_64 => 64,
752 },
745753 .byte => 8,
746754 .word => 16,
747755 .dword => 32,
......@@ -763,7 +771,7 @@ pub const Memory = struct {
763771 try writer.writeAll(@tagName(s));
764772 switch (s) {
765773 .none => unreachable,
766 .ptr => {},
774 .ptr, .gpr => {},
767775 else => {
768776 try writer.writeByte(' ');
769777 try writer.writeAll("ptr");
src/arch/x86_64/encodings.zig+1-1
......@@ -19,7 +19,7 @@ pub const table = [_]Entry{
1919 .{ .aad, .zi, &.{ .imm8 }, &.{ 0xd5 }, 0, .none, .@"32bit" },
2020
2121 .{ .aam, .z, &.{ }, &.{ 0xd4, 0x0a }, 0, .none, .@"32bit" },
22 .{ .aam, .z, &.{ .imm8 }, &.{ 0xd4 }, 0, .none, .@"32bit" },
22 .{ .aam, .zi, &.{ .imm8 }, &.{ 0xd4 }, 0, .none, .@"32bit" },
2323
2424 .{ .aas, .z, &.{}, &.{ 0x3f }, 0, .none, .@"32bit" },
2525
test/behavior/floatop.zig+18-15
......@@ -156,7 +156,13 @@ test "cmp f128" {
156156}
157157
158158test "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
161167 try testCmp(f80);
162168 try comptime testCmp(f80);
......@@ -453,7 +459,7 @@ test "@sin with vectors" {
453459 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
454460 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
455461 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;
457463 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
458464
459465 try testSinWithVectors();
......@@ -526,7 +532,7 @@ test "@cos with vectors" {
526532 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
527533 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
528534 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;
530536 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
531537
532538 try testCosWithVectors();
......@@ -600,7 +606,7 @@ test "@tan with vectors" {
600606 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
601607 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
602608 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;
604610 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
605611
606612 try testTanWithVectors();
......@@ -677,7 +683,7 @@ test "@exp with vectors" {
677683 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
678684 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
679685 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;
681687 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
682688
683689 try testExpWithVectors();
......@@ -749,7 +755,7 @@ test "@exp2 with @vectors" {
749755 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
750756 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
751757 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;
753759 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
754760
755761 try testExp2WithVectors();
......@@ -822,7 +828,7 @@ test "@log with @vectors" {
822828 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
823829 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
824830 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;
826832 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
827833
828834 {
......@@ -896,7 +902,7 @@ test "@log2 with vectors" {
896902 if (builtin.zig_backend == .stage2_llvm and
897903 builtin.cpu.arch == .aarch64 and
898904 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
901907 try testLog2WithVectors();
902908 try comptime testLog2WithVectors();
......@@ -967,7 +973,7 @@ test "@log10 with vectors" {
967973 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
968974 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
969975 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;
971977 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
972978
973979 try testLog10WithVectors();
......@@ -1188,8 +1194,7 @@ test "@floor with vectors" {
11881194 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11891195 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
11901196 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1191 if (builtin.zig_backend == .stage2_x86_64 and
1192 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest;
1197 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
11931198
11941199 try testFloorWithVectors();
11951200 try comptime testFloorWithVectors();
......@@ -1286,8 +1291,7 @@ test "@ceil with vectors" {
12861291 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12871292 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
12881293 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1289 if (builtin.zig_backend == .stage2_x86_64 and
1290 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest;
1294 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
12911295
12921296 try testCeilWithVectors();
12931297 try comptime testCeilWithVectors();
......@@ -1384,8 +1388,7 @@ test "@trunc with vectors" {
13841388 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13851389 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
13861390 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1387 if (builtin.zig_backend == .stage2_x86_64 and
1388 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest;
1391 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
13891392
13901393 try testTruncWithVectors();
13911394 try comptime testTruncWithVectors();
test/behavior/memset.zig+2
......@@ -84,6 +84,7 @@ test "memset with 1-byte struct element" {
8484 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
8585 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
8686 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
87 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
8788
8889 const S = struct { x: bool };
8990 var buf: [5]S = undefined;
......@@ -97,6 +98,7 @@ test "memset with 1-byte array element" {
9798 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
9899 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
99100 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
101 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
100102
101103 const A = [1]bool;
102104 var buf: [5]A = undefined;
test/behavior/muladd.zig+9-13
......@@ -2,16 +2,12 @@ const std = @import("std");
22const builtin = @import("builtin");
33const 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
85test "@mulAdd" {
9 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10
11 if (no_x86_64_hardware_fma_support) return error.SkipZigTest; // TODO
126 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
137 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
148 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
1612 try comptime testMulAdd();
1713 try testMulAdd();
......@@ -110,10 +106,10 @@ fn vector16() !void {
110106
111107test "vector f16" {
112108 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
113 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
114109 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
115110 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
116111 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;
117113 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
118114
119115 try comptime vector16();
......@@ -135,11 +131,11 @@ fn vector32() !void {
135131
136132test "vector f32" {
137133 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
140134 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
141135 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
142136 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
144140 try comptime vector32();
145141 try vector32();
......@@ -160,11 +156,11 @@ fn vector64() !void {
160156
161157test "vector f64" {
162158 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
165159 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
166160 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
167161 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
169165 try comptime vector64();
170166 try vector64();
......@@ -184,12 +180,12 @@ fn vector80() !void {
184180
185181test "vector f80" {
186182 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
187 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
188183 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
189184 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
190185 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
191186 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
192187 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;
193189 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
194190
195191 try comptime vector80();
......@@ -211,12 +207,12 @@ fn vector128() !void {
211207
212208test "vector f128" {
213209 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
214 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
215210 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
216211 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
217212 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
218213 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
219214 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;
220216 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
221217
222218 try comptime vector128();
test/behavior/vector.zig+1-1
......@@ -102,7 +102,7 @@ test "vector float operators" {
102102 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
103103 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
104104 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; // TODO
105 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
106106
107107 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {
108108 // 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 {
3737 .vector => @splat(scalar),
3838 };
3939}
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}
4048fn sign(rhs: anytype) switch (@typeInfo(@TypeOf(rhs))) {
4149 else => bool,
4250 .vector => |vector| @Vector(vector.len, bool),
......@@ -84,65 +92,81 @@ fn boolOr(lhs: anytype, rhs: @TypeOf(lhs)) @TypeOf(lhs) {
8492 @compileError("unsupported boolOr type: " ++ @typeName(@TypeOf(lhs)));
8593}
8694
95const Compare = enum { strict, relaxed, approx, approx_int };
8796// noinline for a more helpful stack trace
88noinline fn checkExpected(expected: anytype, actual: @TypeOf(expected), comptime strict: bool) !void {
89 const info = @typeInfo(@TypeOf(expected));
90 const unexpected = unexpected: switch (switch (info) {
91 else => info,
92 .vector => |vector| @typeInfo(vector.child),
93 }) {
97noinline fn checkExpected(expected: anytype, actual: @TypeOf(expected), comptime compare: Compare) !void {
98 const Expected = @TypeOf(expected);
99 const unexpected = unexpected: switch (@typeInfo(Scalar(Expected))) {
94100 else => expected != actual,
95 .float => {
96 const unequal = boolAnd(expected != actual, boolOr(expected == expected, actual == actual));
97 break :unexpected switch (strict) {
98 false => unequal,
99 true => boolOr(unequal, sign(expected) != sign(actual)),
100 };
101 .float => switch (compare) {
102 .strict, .relaxed => {
103 const unequal = boolAnd(expected != actual, boolOr(expected == expected, actual == actual));
104 break :unexpected switch (compare) {
105 .strict => boolOr(unequal, sign(expected) != sign(actual)),
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 },
101122 },
102123 };
103 if (switch (info) {
124 if (switch (@typeInfo(Expected)) {
104125 else => unexpected,
105126 .vector => @reduce(.Or, unexpected),
106127 }) return error.Unexpected;
107128}
108129test checkExpected {
109 if (checkExpected(nan(f16), nan(f16), true) == error.Unexpected) return error.Unexpected;
110 if (checkExpected(nan(f16), -nan(f16), true) != error.Unexpected) return error.Unexpected;
111 if (checkExpected(@as(f16, 0.0), @as(f16, 0.0), true) == error.Unexpected) return error.Unexpected;
112 if (checkExpected(@as(f16, -0.0), @as(f16, -0.0), true) == error.Unexpected) return error.Unexpected;
113 if (checkExpected(@as(f16, -0.0), @as(f16, 0.0), true) != error.Unexpected) return error.Unexpected;
114 if (checkExpected(@as(f16, 0.0), @as(f16, -0.0), true) != error.Unexpected) return error.Unexpected;
115
116 if (checkExpected(nan(f32), nan(f32), true) == error.Unexpected) return error.Unexpected;
117 if (checkExpected(nan(f32), -nan(f32), true) != error.Unexpected) return error.Unexpected;
118 if (checkExpected(@as(f32, 0.0), @as(f32, 0.0), true) == error.Unexpected) return error.Unexpected;
119 if (checkExpected(@as(f32, -0.0), @as(f32, -0.0), true) == error.Unexpected) return error.Unexpected;
120 if (checkExpected(@as(f32, -0.0), @as(f32, 0.0), true) != error.Unexpected) return error.Unexpected;
121 if (checkExpected(@as(f32, 0.0), @as(f32, -0.0), true) != error.Unexpected) return error.Unexpected;
122
123 if (checkExpected(nan(f64), nan(f64), true) == error.Unexpected) return error.Unexpected;
124 if (checkExpected(nan(f64), -nan(f64), true) != error.Unexpected) return error.Unexpected;
125 if (checkExpected(@as(f64, 0.0), @as(f64, 0.0), true) == error.Unexpected) return error.Unexpected;
126 if (checkExpected(@as(f64, -0.0), @as(f64, -0.0), true) == error.Unexpected) return error.Unexpected;
127 if (checkExpected(@as(f64, -0.0), @as(f64, 0.0), true) != error.Unexpected) return error.Unexpected;
128 if (checkExpected(@as(f64, 0.0), @as(f64, -0.0), true) != error.Unexpected) return error.Unexpected;
129
130 if (checkExpected(nan(f80), nan(f80), true) == error.Unexpected) return error.Unexpected;
131 if (checkExpected(nan(f80), -nan(f80), true) != error.Unexpected) return error.Unexpected;
132 if (checkExpected(@as(f80, 0.0), @as(f80, 0.0), true) == error.Unexpected) return error.Unexpected;
133 if (checkExpected(@as(f80, -0.0), @as(f80, -0.0), true) == error.Unexpected) return error.Unexpected;
134 if (checkExpected(@as(f80, -0.0), @as(f80, 0.0), true) != error.Unexpected) return error.Unexpected;
135 if (checkExpected(@as(f80, 0.0), @as(f80, -0.0), true) != error.Unexpected) return error.Unexpected;
136
137 if (checkExpected(nan(f128), nan(f128), true) == error.Unexpected) return error.Unexpected;
138 if (checkExpected(nan(f128), -nan(f128), true) != error.Unexpected) return error.Unexpected;
139 if (checkExpected(@as(f128, 0.0), @as(f128, 0.0), true) == error.Unexpected) return error.Unexpected;
140 if (checkExpected(@as(f128, -0.0), @as(f128, -0.0), true) == error.Unexpected) return error.Unexpected;
141 if (checkExpected(@as(f128, -0.0), @as(f128, 0.0), true) != error.Unexpected) return error.Unexpected;
142 if (checkExpected(@as(f128, 0.0), @as(f128, -0.0), true) != error.Unexpected) return error.Unexpected;
130 if (checkExpected(nan(f16), nan(f16), .strict) == error.Unexpected) return error.Unexpected;
131 if (checkExpected(nan(f16), -nan(f16), .strict) != error.Unexpected) return error.Unexpected;
132 if (checkExpected(@as(f16, 0.0), @as(f16, 0.0), .strict) == error.Unexpected) return error.Unexpected;
133 if (checkExpected(@as(f16, -0.0), @as(f16, -0.0), .strict) == error.Unexpected) return error.Unexpected;
134 if (checkExpected(@as(f16, -0.0), @as(f16, 0.0), .strict) != error.Unexpected) return error.Unexpected;
135 if (checkExpected(@as(f16, 0.0), @as(f16, -0.0), .strict) != error.Unexpected) return error.Unexpected;
136
137 if (checkExpected(nan(f32), nan(f32), .strict) == error.Unexpected) return error.Unexpected;
138 if (checkExpected(nan(f32), -nan(f32), .strict) != error.Unexpected) return error.Unexpected;
139 if (checkExpected(@as(f32, 0.0), @as(f32, 0.0), .strict) == error.Unexpected) return error.Unexpected;
140 if (checkExpected(@as(f32, -0.0), @as(f32, -0.0), .strict) == error.Unexpected) return error.Unexpected;
141 if (checkExpected(@as(f32, -0.0), @as(f32, 0.0), .strict) != error.Unexpected) return error.Unexpected;
142 if (checkExpected(@as(f32, 0.0), @as(f32, -0.0), .strict) != error.Unexpected) return error.Unexpected;
143
144 if (checkExpected(nan(f64), nan(f64), .strict) == error.Unexpected) return error.Unexpected;
145 if (checkExpected(nan(f64), -nan(f64), .strict) != error.Unexpected) return error.Unexpected;
146 if (checkExpected(@as(f64, 0.0), @as(f64, 0.0), .strict) == error.Unexpected) return error.Unexpected;
147 if (checkExpected(@as(f64, -0.0), @as(f64, -0.0), .strict) == error.Unexpected) return error.Unexpected;
148 if (checkExpected(@as(f64, -0.0), @as(f64, 0.0), .strict) != error.Unexpected) return error.Unexpected;
149 if (checkExpected(@as(f64, 0.0), @as(f64, -0.0), .strict) != error.Unexpected) return error.Unexpected;
150
151 if (checkExpected(nan(f80), nan(f80), .strict) == error.Unexpected) return error.Unexpected;
152 if (checkExpected(nan(f80), -nan(f80), .strict) != error.Unexpected) return error.Unexpected;
153 if (checkExpected(@as(f80, 0.0), @as(f80, 0.0), .strict) == error.Unexpected) return error.Unexpected;
154 if (checkExpected(@as(f80, -0.0), @as(f80, -0.0), .strict) == error.Unexpected) return error.Unexpected;
155 if (checkExpected(@as(f80, -0.0), @as(f80, 0.0), .strict) != error.Unexpected) return error.Unexpected;
156 if (checkExpected(@as(f80, 0.0), @as(f80, -0.0), .strict) != error.Unexpected) return error.Unexpected;
157
158 if (checkExpected(nan(f128), nan(f128), .strict) == error.Unexpected) return error.Unexpected;
159 if (checkExpected(nan(f128), -nan(f128), .strict) != error.Unexpected) return error.Unexpected;
160 if (checkExpected(@as(f128, 0.0), @as(f128, 0.0), .strict) == error.Unexpected) return error.Unexpected;
161 if (checkExpected(@as(f128, -0.0), @as(f128, -0.0), .strict) == error.Unexpected) return error.Unexpected;
162 if (checkExpected(@as(f128, -0.0), @as(f128, 0.0), .strict) != error.Unexpected) return error.Unexpected;
163 if (checkExpected(@as(f128, 0.0), @as(f128, -0.0), .strict) != error.Unexpected) return error.Unexpected;
143164}
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 {
146170 return struct {
147171 // noinline so that `mem_arg` is on the stack
148172 noinline fn testArgKinds(
......@@ -166,12 +190,34 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
166190 comptime imm_arg: Type,
167191 mem_arg: Type,
168192 ) !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 };
170216 var reg_arg = mem_arg;
171217 _ = .{&reg_arg};
172 try checkExpected(expected, op(Type, reg_arg), opts.strict);
173 try checkExpected(expected, op(Type, mem_arg), opts.strict);
174 try checkExpected(expected, op(Type, imm_arg), opts.strict);
218 try checkExpected(expected, op(Type, reg_arg), opts.compare);
219 try checkExpected(expected, op(Type, mem_arg), opts.compare);
220 if (opts.libc_name == null) try checkExpected(expected, op(Type, imm_arg), opts.compare);
175221 }
176222 // noinline for a more helpful stack trace
177223 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
16281674 };
16291675}
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 {
16321678 return struct {
16331679 // noinline so that `mem_arg` is on the stack
16341680 noinline fn testArgKinds(
......@@ -1656,9 +1702,9 @@ fn cast(comptime op: anytype, comptime opts: struct { strict: bool = false }) ty
16561702 const expected = comptime op(Result, Type, imm_arg, imm_arg);
16571703 var reg_arg = mem_arg;
16581704 _ = .{&reg_arg};
1659 try checkExpected(expected, op(Result, Type, reg_arg, imm_arg), opts.strict);
1660 try checkExpected(expected, op(Result, Type, mem_arg, imm_arg), opts.strict);
1661 try checkExpected(expected, op(Result, Type, imm_arg, imm_arg), opts.strict);
1705 try checkExpected(expected, op(Result, Type, reg_arg, imm_arg), opts.compare);
1706 try checkExpected(expected, op(Result, Type, mem_arg, imm_arg), opts.compare);
1707 try checkExpected(expected, op(Result, Type, imm_arg, imm_arg), opts.compare);
16621708 }
16631709 // noinline for a more helpful stack trace
16641710 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
52225268 try testArgs(f128, f128, inf(f128));
52235269 try testArgs(f128, f128, nan(f128));
52245270 }
5225 fn testIntVectors() !void {
5271 fn testSameSignednessIntVectors() !void {
5272 try testArgs(@Vector(1, i7), @Vector(1, i1), .{-1});
52265273 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});
52285276 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});
52305279 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});
52325282 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});
52345285 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});
52365288 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});
52385291 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});
52405294 try testArgs(@Vector(1, i1024), @Vector(1, i1), .{-1});
5241 try testArgs(@Vector(1, u1024), @Vector(1, i1), .{-1});
5242 try testArgs(@Vector(1, i8), @Vector(1, u1), .{1});
5295 try testArgs(@Vector(1, i1025), @Vector(1, i1), .{-1});
5296 try testArgs(@Vector(1, u7), @Vector(1, u1), .{1});
52435297 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});
52455300 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});
52475303 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});
52495306 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});
52515309 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});
52535312 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});
52555315 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});
52575318 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 });
52595322 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 });
52615325 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 });
52635328 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 });
52655331 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 });
52675334 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 });
52695337 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 });
52715340 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 });
52735343 try testArgs(@Vector(2, i1024), @Vector(2, i1), .{ -1, 0 });
5274 try testArgs(@Vector(2, u1024), @Vector(2, i1), .{ -1, 0 });
5275 try testArgs(@Vector(2, i8), @Vector(2, u1), .{ 0, 1 });
5344 try testArgs(@Vector(2, i1025), @Vector(2, i1), .{ -1, 0 });
5345 try testArgs(@Vector(2, u7), @Vector(2, u1), .{ 0, 1 });
52765346 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 });
52785349 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 });
52805352 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 });
52825355 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 });
52845358 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 });
52865361 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 });
52885364 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 });
52905367 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 });
52925371 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 });
52945374 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 });
52965377 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 });
52985380 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 });
53005383 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 });
53025386 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 });
53045389 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 });
53065392 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 });
5308 try testArgs(@Vector(3, i8), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5393 try testArgs(@Vector(3, i1025), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5394 try testArgs(@Vector(3, u7), @Vector(3, u2), .{ 0, 1, 1 << 1 });
53095395 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 });
53115398 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 });
53135401 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 });
53155404 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 });
53175407 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 });
53195410 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 });
53215413 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 });
53235416 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 });
53255420 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 });
53275423 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 });
53295426 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 });
53315429 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 });
53335432 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 });
53355435 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 });
53375438 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 });
53395441 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 });
5341 try testArgs(@Vector(3, i8), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5442 try testArgs(@Vector(3, i1025), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5443 try testArgs(@Vector(3, u7), @Vector(3, u3), .{ 0, 1, 1 << 2 });
53425444 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 });
53445447 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 });
53465450 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 });
53485453 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 });
53505456 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 });
53525459 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 });
53545462 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 });
53565465 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 });
53585469 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 });
53605472 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 });
53625475 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 });
53645478 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 });
53665481 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 });
53685484 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 });
53705487 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 });
53725490 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 });
5374 try testArgs(@Vector(3, i8), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5491 try testArgs(@Vector(3, i1025), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5492 try testArgs(@Vector(3, u7), @Vector(3, u4), .{ 0, 1, 1 << 3 });
53755493 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 });
53775496 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 });
53795499 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 });
53815502 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 });
53835505 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 });
53855508 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 });
53875511 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 });
53895514 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 });
53915518 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 });
53935521 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 });
53955524 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 });
53975527 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 });
53995530 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 });
54015533 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 });
54035536 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 });
54055539 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 });
5407 try testArgs(@Vector(3, i8), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5540 try testArgs(@Vector(3, i1025), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5541 try testArgs(@Vector(3, u7), @Vector(3, u5), .{ 0, 1, 1 << 4 });
54085542 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 });
54105545 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 });
54125548 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 });
54145551 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 });
54165554 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 });
54185557 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 });
54205560 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 });
54225563 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 });
54245567 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 });
54265570 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 });
54285573 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 });
54305576 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 });
54325579 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 });
54345582 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 });
54365585 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 });
54385588 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 });
5440 try testArgs(@Vector(3, i8), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5589 try testArgs(@Vector(3, i1025), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5590 try testArgs(@Vector(3, u7), @Vector(3, u7), .{ 0, 1, 1 << 6 });
54415591 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 });
54435594 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 });
54455597 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 });
54475600 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 });
54495603 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 });
54515606 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 });
54535609 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 });
54555612 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 });
54575616 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 });
54595619 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 });
54615622 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 });
54635625 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 });
54655628 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 });
54675631 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 });
54695634 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 });
54715637 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 });
5473 try testArgs(@Vector(3, i8), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5638 try testArgs(@Vector(3, i1025), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5639 try testArgs(@Vector(3, u7), @Vector(3, u8), .{ 0, 1, 1 << 7 });
54745640 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 });
54765643 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 });
54785646 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 });
54805649 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 });
54825652 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 });
54845655 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 });
54865658 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 });
54885661 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 });
54905665 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 });
54925668 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 });
54945671 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 });
54965674 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 });
54985677 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 });
55005680 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 });
55025683 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 });
55045686 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 });
5506 try testArgs(@Vector(3, i8), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5687 try testArgs(@Vector(3, i1025), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5688 try testArgs(@Vector(3, u7), @Vector(3, u9), .{ 0, 1, 1 << 8 });
55075689 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 });
55095692 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 });
55115695 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 });
55135698 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 });
55155701 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 });
55175704 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 });
55195707 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 });
55215710 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 });
55235714 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 });
55255717 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 });
55275720 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 });
55295723 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 });
55315726 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 });
55335729 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 });
55355732 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 });
55375735 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 });
5539 try testArgs(@Vector(3, i8), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5736 try testArgs(@Vector(3, i1025), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5737 try testArgs(@Vector(3, u7), @Vector(3, u15), .{ 0, 1, 1 << 14 });
55405738 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 });
55425741 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 });
55445744 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 });
55465747 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 });
55485750 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 });
55505753 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 });
55525756 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 });
55545759 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 });
55565763 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 });
55585766 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 });
55605769 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 });
55625772 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 });
55645775 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 });
55665778 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 });
55685781 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 });
55705784 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 });
5572 try testArgs(@Vector(3, i8), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5785 try testArgs(@Vector(3, i1025), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5786 try testArgs(@Vector(3, u7), @Vector(3, u16), .{ 0, 1, 1 << 15 });
55735787 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 });
55755790 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 });
55775793 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 });
55795796 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 });
55815799 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 });
55835802 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 });
55855805 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 });
55875808 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 });
55895812 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 });
55915815 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 });
55935818 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 });
55955821 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 });
55975824 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 });
55995827 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 });
56015830 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 });
56035833 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 });
5605 try testArgs(@Vector(3, i8), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5834 try testArgs(@Vector(3, i1025), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5835 try testArgs(@Vector(3, u7), @Vector(3, u17), .{ 0, 1, 1 << 16 });
56065836 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 });
56085839 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 });
56105842 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 });
56125845 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 });
56145848 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 });
56165851 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 });
56185854 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 });
56205857 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 });
56225861 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 });
56245864 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 });
56265867 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 });
56285870 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 });
56305873 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 });
56325876 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 });
56345879 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 });
56365882 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 });
5638 try testArgs(@Vector(3, i8), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5883 try testArgs(@Vector(3, i1025), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5884 try testArgs(@Vector(3, u7), @Vector(3, u31), .{ 0, 1, 1 << 30 });
56395885 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 });
56415888 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 });
56435891 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 });
56455894 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 });
56475897 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 });
56495900 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 });
56515903 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 });
56535906 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 });
56555910 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 });
56575913 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 });
56595916 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 });
56615919 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 });
56635922 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 });
56655925 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 });
56675928 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 });
56695931 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 });
5671 try testArgs(@Vector(3, i8), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5932 try testArgs(@Vector(3, i1025), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5933 try testArgs(@Vector(3, u7), @Vector(3, u32), .{ 0, 1, 1 << 31 });
56725934 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 });
56745937 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 });
56765940 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 });
56785943 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 });
56805946 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 });
56825949 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 });
56845952 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 });
56865955 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 });
56885959 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 });
56905962 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 });
56925965 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 });
56945968 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 });
56965971 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 });
56985974 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 });
57005977 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 });
57025980 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 });
5704 try testArgs(@Vector(3, i8), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5981 try testArgs(@Vector(3, i1025), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5982 try testArgs(@Vector(3, u7), @Vector(3, u33), .{ 0, 1, 1 << 32 });
57055983 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 });
57075986 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 });
57095989 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 });
57115992 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 });
57135995 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 });
57155998 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 });
57176001 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 });
57196004 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 });
57216008 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 });
57236011 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 });
57256014 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 });
57276017 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 });
57296020 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 });
57316023 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 });
57336026 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 });
57356029 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 });
5737 try testArgs(@Vector(3, i8), @Vector(3, u63), .{ 0, 1, 1 << 62 });
6030 try testArgs(@Vector(3, i1025), @Vector(3, i63), .{ -1 << 62, -1, 0 });
6031 try testArgs(@Vector(3, u7), @Vector(3, u63), .{ 0, 1, 1 << 62 });
57386032 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 });
57397597 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 });
57417598 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 });
57437599 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 });
57457600 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 });
57477601 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 });
57497602 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 });
57517603 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 });
57557605 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 });
57577606 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 });
57597607 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 });
57617608 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 });
57637609 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 });
57657610 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 });
57677611 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 });
57697612 try testArgs(@Vector(3, u1024), @Vector(3, i64), .{ -1 << 63, -1, 0 });
57707613 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 });
57727614 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 });
57747615 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 });
57767616 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 });
57787617 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 });
57807618 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 });
57827619 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 });
57847620 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 });
57887622 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 });
57907623 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 });
57927624 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 });
57947625 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 });
57967626 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 });
57987627 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 });
58007628 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 });
58027629 try testArgs(@Vector(3, u1024), @Vector(3, i65), .{ -1 << 64, -1, 0 });
58037630 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 });
58057631 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 });
58077632 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 });
58097633 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 });
58117634 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 });
58137635 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 });
58157636 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 });
58177637 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 });
58217639 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 });
58237640 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 });
58257641 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 });
58277642 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 });
58297643 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 });
58317644 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 });
58337645 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 });
58357646 try testArgs(@Vector(3, u1024), @Vector(3, i95), .{ -1 << 94, -1, 0 });
58367647 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 });
58387648 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 });
58407649 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 });
58427650 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 });
58447651 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 });
58467652 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 });
58487653 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 });
58507654 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 });
58547656 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 });
58567657 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 });
58587658 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 });
58607659 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 });
58627660 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 });
58647661 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 });
58667662 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 });
58687663 try testArgs(@Vector(3, u1024), @Vector(3, i96), .{ -1 << 95, -1, 0 });
58697664 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 });
58717665 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 });
58737666 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 });
58757667 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 });
58777668 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 });
58797669 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 });
58817670 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 });
58837671 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 });
58877673 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 });
58897674 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 });
58917675 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 });
58937676 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 });
58957677 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 });
58977678 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 });
58997679 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 });
59017680 try testArgs(@Vector(3, u1024), @Vector(3, i97), .{ -1 << 96, -1, 0 });
59027681 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 });
59047682 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 });
59067683 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 });
59087684 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 });
59107685 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 });
59127686 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 });
59147687 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 });
59167688 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 });
59207690 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 });
59227691 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 });
59247692 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 });
59267693 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 });
59287694 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 });
59307695 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 });
59327696 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 });
59347697 try testArgs(@Vector(3, u1024), @Vector(3, i127), .{ -1 << 126, -1, 0 });
59357698 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 });
59377699 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 });
59397700 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 });
59417701 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 });
59437702 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 });
59457703 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 });
59477704 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 });
59497705 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 });
59537707 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 });
59557708 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 });
59577709 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 });
59597710 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 });
59617711 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 });
59637712 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 });
59657713 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 });
59677714 try testArgs(@Vector(3, u1024), @Vector(3, i128), .{ -1 << 127, -1, 0 });
59687715 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 });
59707716 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 });
59727717 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 });
59747718 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 });
59767719 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 });
59787720 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 });
59807721 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 });
59827722 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 });
59867724 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 });
59887725 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 });
59907726 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 });
59927727 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 });
59947728 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 });
59967729 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 });
59987730 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 });
60007731 try testArgs(@Vector(3, u1024), @Vector(3, i129), .{ -1 << 128, -1, 0 });
60017732 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 });
60037733 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 });
60057734 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 });
60077735 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 });
60097736 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 });
60117737 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 });
60137738 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 });
60157739 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 });
60197741 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 });
60217742 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 });
60237743 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 });
60257744 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 });
60277745 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 });
60297746 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 });
60317747 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 });
60337748 try testArgs(@Vector(3, u1024), @Vector(3, i159), .{ -1 << 158, -1, 0 });
60347749 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 });
60367750 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 });
60387751 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 });
60407752 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 });
60427753 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 });
60447754 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 });
60467755 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 });
60487756 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 });
60527758 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 });
60547759 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 });
60567760 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 });
60587761 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 });
60607762 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 });
60627763 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 });
60647764 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 });
60667765 try testArgs(@Vector(3, u1024), @Vector(3, i160), .{ -1 << 159, -1, 0 });
60677766 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 });
60697767 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 });
60717768 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 });
60737769 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 });
60757770 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 });
60777771 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 });
60797772 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 });
60817773 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 });
60857775 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 });
60877776 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 });
60897777 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 });
60917778 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 });
60937779 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 });
60957780 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 });
60977781 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 });
60997782 try testArgs(@Vector(3, u1024), @Vector(3, i161), .{ -1 << 160, -1, 0 });
61007783 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 });
61027784 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 });
61047785 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 });
61067786 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 });
61087787 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 });
61107788 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 });
61127789 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 });
61147790 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 });
61187792 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 });
61207793 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 });
61227794 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 });
61247795 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 });
61267796 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 });
61287797 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 });
61307798 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 });
61327799 try testArgs(@Vector(3, u1024), @Vector(3, i191), .{ -1 << 190, -1, 0 });
61337800 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 });
61357801 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 });
61377802 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 });
61397803 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 });
61417804 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 });
61437805 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 });
61457806 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 });
61477807 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 });
61517809 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 });
61537810 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 });
61557811 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 });
61577812 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 });
61597813 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 });
61617814 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 });
61637815 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 });
61657816 try testArgs(@Vector(3, u1024), @Vector(3, i192), .{ -1 << 191, -1, 0 });
61667817 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 });
61687818 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 });
61707819 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 });
61727820 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 });
61747821 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 });
61767822 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 });
61787823 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 });
61807824 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 });
61847826 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 });
61867827 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 });
61887828 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 });
61907829 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 });
61927830 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 });
61947831 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 });
61967832 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 });
61987833 try testArgs(@Vector(3, u1024), @Vector(3, i193), .{ -1 << 192, -1, 0 });
61997834 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 });
62017835 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 });
62037836 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 });
62057837 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 });
62077838 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 });
62097839 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 });
62117840 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 });
62137841 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 });
62177843 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 });
62197844 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 });
62217845 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 });
62237846 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 });
62257847 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 });
62277848 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 });
62297849 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 });
62317850 try testArgs(@Vector(3, u1024), @Vector(3, i223), .{ -1 << 222, -1, 0 });
62327851 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 });
62347852 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 });
62367853 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 });
62387854 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 });
62407855 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 });
62427856 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 });
62447857 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 });
62467858 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 });
62507860 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 });
62527861 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 });
62547862 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 });
62567863 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 });
62587864 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 });
62607865 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 });
62627866 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 });
62647867 try testArgs(@Vector(3, u1024), @Vector(3, i224), .{ -1 << 223, -1, 0 });
62657868 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 });
62677869 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 });
62697870 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 });
62717871 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 });
62737872 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 });
62757873 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 });
62777874 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 });
62797875 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 });
62837877 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 });
62857878 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 });
62877879 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 });
62897880 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 });
62917881 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 });
62937882 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 });
62957883 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 });
62977884 try testArgs(@Vector(3, u1024), @Vector(3, i225), .{ -1 << 224, -1, 0 });
62987885 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 });
63007886 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 });
63027887 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 });
63047888 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 });
63067889 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 });
63087890 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 });
63107891 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 });
63127892 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 });
63167894 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 });
63187895 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 });
63207896 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 });
63227897 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 });
63247898 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 });
63267899 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 });
63287900 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 });
63307901 try testArgs(@Vector(3, u1024), @Vector(3, i255), .{ -1 << 254, -1, 0 });
63317902 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 });
63337903 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 });
63357904 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 });
63377905 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 });
63397906 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 });
63417907 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 });
63437908 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 });
63457909 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 });
63497911 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 });
63517912 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 });
63537913 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 });
63557914 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 });
63577915 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 });
63597916 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 });
63617917 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 });
63637918 try testArgs(@Vector(3, u1024), @Vector(3, i256), .{ -1 << 255, -1, 0 });
63647919 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 });
63667920 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 });
63687921 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 });
63707922 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 });
63727923 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 });
63747924 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 });
63767925 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 });
63787926 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 });
63827928 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 });
63847929 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 });
63867930 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 });
63887931 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 });
63907932 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 });
63927933 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 });
63947934 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 });
63967935 try testArgs(@Vector(3, u1024), @Vector(3, i257), .{ -1 << 256, -1, 0 });
63977936 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 });
63997937 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 });
64017938 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 });
64037939 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 });
64057940 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 });
64077941 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 });
64097942 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 });
64117943 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 });
64157945 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 });
64177946 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 });
64197947 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 });
64217948 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 });
64237949 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 });
64257950 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 });
64277951 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 });
64297952 try testArgs(@Vector(3, u1024), @Vector(3, i511), .{ -1 << 510, -1, 0 });
64307953 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 });
64327954 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 });
64347955 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 });
64367956 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 });
64387957 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 });
64407958 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 });
64427959 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 });
64447960 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 });
64487962 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 });
64507963 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 });
64527964 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 });
64547965 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 });
64567966 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 });
64587967 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 });
64607968 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 });
64627969 try testArgs(@Vector(3, u1024), @Vector(3, i512), .{ -1 << 511, -1, 0 });
64637970 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 });
64657971 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 });
64677972 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 });
64697973 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 });
64717974 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 });
64737975 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 });
64757976 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 });
64777977 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 });
64817979 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 });
64837980 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 });
64857981 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 });
64877982 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 });
64897983 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 });
64917984 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 });
64937985 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 });
64957986 try testArgs(@Vector(3, u1024), @Vector(3, i513), .{ -1 << 512, -1, 0 });
64967987 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 });
64987988 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 });
65007989 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 });
65027990 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 });
65047991 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 });
65067992 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 });
65087993 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 });
65107994 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 });
65147996 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 });
65167997 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 });
65187998 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 });
65207999 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 });
65228000 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 });
65248001 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 });
65268002 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 });
65288003 try testArgs(@Vector(3, u1024), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
65298004 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 });
65318005 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 });
65338006 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 });
65358007 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 });
65378008 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 });
65398009 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 });
65418010 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 });
65438011 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 });
65478013 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 });
65498014 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 });
65518015 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 });
65538016 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 });
65558017 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 });
65578018 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 });
65598019 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 });
65618020 try testArgs(@Vector(3, u1024), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
65628021 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 });
65648022 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 });
65668023 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 });
65688024 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 });
65708025 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 });
65728026 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 });
65748027 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 });
65768028 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 });
65808030 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 });
65828031 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 });
65848032 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 });
65868033 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 });
65888034 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 });
65908035 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 });
65928036 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 });
65948037 try testArgs(@Vector(3, u1024), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
65958038 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 });
65978039 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 });
65998040 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 });
66018041 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 });
66038042 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 });
66058043 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 });
66078044 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 });
66098045 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 });
66118046 }
66128047 fn testFloatVectors() !void {
66138048 @setEvalBranchQuota(6_700);
......@@ -7115,7 +8550,7 @@ fn cast(comptime op: anytype, comptime opts: struct { strict: bool = false }) ty
71158550 };
71168551}
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 {
71198554 return struct {
71208555 // noinline so that `mem_lhs` and `mem_rhs` are on the stack
71218556 noinline fn testArgKinds(
......@@ -7145,14 +8580,14 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
71458580 var reg_lhs = mem_lhs;
71468581 var reg_rhs = mem_rhs;
71478582 _ = .{ &reg_lhs, &reg_rhs };
7148 try checkExpected(expected, op(Type, reg_lhs, reg_rhs), opts.strict);
7149 try checkExpected(expected, op(Type, reg_lhs, mem_rhs), opts.strict);
7150 try checkExpected(expected, op(Type, reg_lhs, imm_rhs), opts.strict);
7151 try checkExpected(expected, op(Type, mem_lhs, reg_rhs), opts.strict);
7152 try checkExpected(expected, op(Type, mem_lhs, mem_rhs), opts.strict);
7153 try checkExpected(expected, op(Type, mem_lhs, imm_rhs), opts.strict);
7154 try checkExpected(expected, op(Type, imm_lhs, reg_rhs), opts.strict);
7155 try checkExpected(expected, op(Type, imm_lhs, mem_rhs), opts.strict);
8583 try checkExpected(expected, op(Type, reg_lhs, reg_rhs), opts.compare);
8584 try checkExpected(expected, op(Type, reg_lhs, mem_rhs), opts.compare);
8585 try checkExpected(expected, op(Type, reg_lhs, imm_rhs), opts.compare);
8586 try checkExpected(expected, op(Type, mem_lhs, reg_rhs), opts.compare);
8587 try checkExpected(expected, op(Type, mem_lhs, mem_rhs), opts.compare);
8588 try checkExpected(expected, op(Type, mem_lhs, imm_rhs), opts.compare);
8589 try checkExpected(expected, op(Type, imm_lhs, reg_rhs), opts.compare);
8590 try checkExpected(expected, op(Type, imm_lhs, mem_rhs), opts.compare);
71568591 }
71578592 // noinline for a more helpful stack trace
71588593 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 })
992611361 };
992711362}
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
992911521inline fn bitNot(comptime Type: type, rhs: Type) @TypeOf(~rhs) {
993011522 return ~rhs;
993111523}
......@@ -9935,24 +11527,150 @@ test bitNot {
993511527 try test_bit_not.testIntVectors();
993611528}
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
993811620inline fn abs(comptime Type: type, rhs: Type) @TypeOf(@abs(rhs)) {
993911621 return @abs(rhs);
994011622}
994111623test abs {
9942 const test_abs = unary(abs, .{ .strict = true });
11624 const test_abs = unary(abs, .{ .compare = .strict });
994311625 try test_abs.testInts();
994411626 try test_abs.testIntVectors();
994511627 try test_abs.testFloats();
994611628 try test_abs.testFloatVectors();
994711629}
994811630
9949inline fn clz(comptime Type: type, rhs: Type) @TypeOf(@clz(rhs)) {
9950 return @clz(rhs);
11631inline fn floor(comptime Type: type, rhs: Type) @TypeOf(@floor(rhs)) {
11632 return @floor(rhs);
995111633}
9952test clz {
9953 const test_clz = unary(clz, .{});
9954 try test_clz.testInts();
9955 try test_clz.testIntVectors();
11634test floor {
11635 const test_floor = unary(floor, .{ .libc_name = "floor", .compare = .strict });
11636 try test_floor.testFloats();
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();
995611674}
995711675
995811676inline fn intCast(comptime Result: type, comptime Type: type, rhs: Type, comptime ct_rhs: Type) Result {
......@@ -10005,11 +11723,20 @@ test intCast {
1000511723 try test_int_cast.testIntVectors();
1000611724}
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
1000811735inline fn floatCast(comptime Result: type, comptime Type: type, rhs: Type, comptime _: Type) Result {
1000911736 return @floatCast(rhs);
1001011737}
1001111738test floatCast {
10012 const test_float_cast = cast(floatCast, .{ .strict = true });
11739 const test_float_cast = cast(floatCast, .{ .compare = .strict });
1001311740 try test_float_cast.testFloats();
1001411741 try test_float_cast.testFloatVectors();
1001511742}
......@@ -10212,3 +11939,12 @@ test optionalsNotEqual {
1021211939 try test_optionals_not_equal.testInts();
1021311940 try test_optionals_not_equal.testFloats();
1021411941}
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}