authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-05-17 09:45:18-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-05-17 18:00:17-04:00
loga3b0c242b00e9bb25a15b3c50e3d884ec1a15100
tree5ed6e571902f93da4eee3c67652f6360b9274e05
parent58d2bd601e3b25e818d6bca2b3267052a12f9917

x86_64: rewrite `@splat`


15 files changed, 22975 insertions(+), 21094 deletions(-)

lib/std/zig/Zir.zig+2-1
......@@ -2142,7 +2142,7 @@ pub const Inst = struct {
21422142 ref_start_index = static_len,
21432143 _,
21442144
2145 pub const static_len = 100;
2145 pub const static_len = 101;
21462146
21472147 pub fn toRef(i: Index) Inst.Ref {
21482148 return @enumFromInt(@intFromEnum(Index.ref_start_index) + @intFromEnum(i));
......@@ -2248,6 +2248,7 @@ pub const Inst = struct {
22482248 vector_4_i64_type,
22492249 vector_2_u64_type,
22502250 vector_4_u64_type,
2251 vector_2_u128_type,
22512252 vector_4_f16_type,
22522253 vector_8_f16_type,
22532254 vector_2_f32_type,
src/Air.zig+1
......@@ -1020,6 +1020,7 @@ pub const Inst = struct {
10201020 vector_4_i64_type = @intFromEnum(InternPool.Index.vector_4_i64_type),
10211021 vector_2_u64_type = @intFromEnum(InternPool.Index.vector_2_u64_type),
10221022 vector_4_u64_type = @intFromEnum(InternPool.Index.vector_4_u64_type),
1023 vector_2_u128_type = @intFromEnum(InternPool.Index.vector_2_u128_type),
10231024 vector_4_f16_type = @intFromEnum(InternPool.Index.vector_4_f16_type),
10241025 vector_8_f16_type = @intFromEnum(InternPool.Index.vector_8_f16_type),
10251026 vector_2_f32_type = @intFromEnum(InternPool.Index.vector_2_f32_type),
src/InternPool.zig+5
......@@ -4595,6 +4595,7 @@ pub const Index = enum(u32) {
45954595 vector_4_i64_type,
45964596 vector_2_u64_type,
45974597 vector_4_u64_type,
4598 vector_2_u128_type,
45984599 vector_4_f16_type,
45994600 vector_8_f16_type,
46004601 vector_2_f32_type,
......@@ -5139,6 +5140,8 @@ pub const static_keys = [_]Key{
51395140 .{ .vector_type = .{ .len = 2, .child = .u64_type } },
51405141 // @Vector(8, u64)
51415142 .{ .vector_type = .{ .len = 4, .child = .u64_type } },
5143 // @Vector(2, u128)
5144 .{ .vector_type = .{ .len = 2, .child = .u128_type } },
51425145 // @Vector(4, f16)
51435146 .{ .vector_type = .{ .len = 4, .child = .f16_type } },
51445147 // @Vector(8, f16)
......@@ -11809,6 +11812,7 @@ pub fn typeOf(ip: *const InternPool, index: Index) Index {
1180911812 .vector_4_i64_type,
1181011813 .vector_2_u64_type,
1181111814 .vector_4_u64_type,
11815 .vector_2_u128_type,
1181211816 .vector_4_f16_type,
1181311817 .vector_8_f16_type,
1181411818 .vector_2_f32_type,
......@@ -12156,6 +12160,7 @@ pub fn zigTypeTag(ip: *const InternPool, index: Index) std.builtin.TypeId {
1215612160 .vector_4_i64_type,
1215712161 .vector_2_u64_type,
1215812162 .vector_4_u64_type,
12163 .vector_2_u128_type,
1215912164 .vector_4_f16_type,
1216012165 .vector_8_f16_type,
1216112166 .vector_2_f32_type,
src/Sema.zig+1
......@@ -36540,6 +36540,7 @@ pub fn typeHasOnePossibleValue(sema: *Sema, ty: Type) CompileError!?Value {
3654036540 .vector_4_i64_type,
3654136541 .vector_2_u64_type,
3654236542 .vector_4_u64_type,
36543 .vector_2_u128_type,
3654336544 .vector_4_f16_type,
3654436545 .vector_8_f16_type,
3654536546 .vector_2_f32_type,
src/Type.zig+1
......@@ -4119,6 +4119,7 @@ pub const vector_2_i64: Type = .{ .ip_index = .vector_2_i64_type };
41194119pub const vector_4_i64: Type = .{ .ip_index = .vector_4_i64_type };
41204120pub const vector_2_u64: Type = .{ .ip_index = .vector_2_u64_type };
41214121pub const vector_4_u64: Type = .{ .ip_index = .vector_4_u64_type };
4122pub const vector_2_u128: Type = .{ .ip_index = .vector_2_u128_type };
41224123pub const vector_4_f16: Type = .{ .ip_index = .vector_4_f16_type };
41234124pub const vector_8_f16: Type = .{ .ip_index = .vector_8_f16_type };
41244125pub const vector_2_f32: Type = .{ .ip_index = .vector_2_f32_type };
src/arch/x86_64/CodeGen.zig+22931-21075
......@@ -2408,7 +2408,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24082408}
24092409
24102410fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2411 @setEvalBranchQuota(20_000);
2411 @setEvalBranchQuota(20_200);
24122412 const pt = cg.pt;
24132413 const zcu = pt.zcu;
24142414 const ip = &zcu.intern_pool;
......@@ -2444,9 +2444,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24442444 try cg.inst_tracking.ensureUnusedCapacity(cg.gpa, 1);
24452445 switch (air_tags[@intFromEnum(inst)]) {
24462446 // zig fmt: off
2447 .bitcast => try cg.airBitCast(inst),
2448
2449 .splat => try cg.airSplat(inst),
24502447 .select => try cg.airSelect(inst),
24512448 .shuffle => try cg.airShuffle(inst),
24522449 .reduce => try cg.airReduce(inst),
......@@ -14818,6 +14815,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1481814815 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
1481914816 .src_constraints = .{ .{ .exact_int = 1 }, .{ .exact_int = 1 }, .any },
1482014817 .patterns = &.{
14818 .{ .src = .{ .mut_mem, .{ .imm = 0 }, .none } },
1482114819 .{ .src = .{ .to_mut_gpr, .{ .imm = 0 }, .none } },
1482214820 },
1482314821 .dst_temps = .{ .{ .ref = .src0 }, .unused },
......@@ -58735,6 +58733,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5873558733 }, .{
5873658734 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
5873758735 .patterns = &.{
58736 .{ .src = .{ .mut_mem, .none, .none } },
5873858737 .{ .src = .{ .to_mut_gpr, .none, .none } },
5873958738 },
5874058739 .dst_temps = .{ .{ .ref = .src0 }, .unused },
......@@ -63194,7 +63193,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6319463193 } },
6319563194 }, .{
6319663195 .required_features = .{ .sse, null, null, null },
63197 .src_constraints = .{ .{ .vec = .xword }, .any, .any },
63196 .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any, .any },
6319863197 .patterns = &.{
6319963198 .{ .src = .{ .to_mut_xmm, .none, .none } },
6320063199 },
......@@ -63348,14 +63347,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6334863347 } }) catch |err| switch (err) {
6334963348 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
6335063349 @tagName(air_tag),
63351 cg.typeOf(ty_op.operand).fmt(pt),
63350 ty_op.ty.toType().fmt(pt),
6335263351 ops[0].tracking(cg),
6335363352 }),
6335463353 else => |e| return e,
6335563354 };
6335663355 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
6335763356 },
63358
63357 .bitcast => try cg.airBitCast(inst),
6335963358 .block => {
6336063359 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
6336163360 const extra = cg.air.extraData(Air.Block, ty_pl.payload);
......@@ -71582,7077 +71581,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7158271581 };
7158371582 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
7158471583 },
71585
71586 .cmp_vector, .cmp_vector_optimized => |air_tag| if (use_old) try cg.airCmpVector(inst) else fallback: {
71587 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
71588 const extra = cg.air.extraData(Air.VectorCmp, ty_pl.payload).data;
71589 switch (extra.compareOperator()) {
71590 .eq, .neq => {},
71591 .lt, .lte, .gte, .gt => if (cg.floatBits(cg.typeOf(extra.lhs).childType(zcu)) == null)
71592 break :fallback try cg.airCmpVector(inst),
71593 }
71594 var ops = try cg.tempsFromOperands(inst, .{ extra.lhs, extra.rhs });
71595 var res: [1]Temp = undefined;
71596 (err: switch (extra.compareOperator()) {
71597 .lt, .lte, .gte, .gt => |cmp_op| {
71598 switch (cmp_op) {
71599 else => unreachable,
71600 .lt, .lte => {},
71601 .gt, .gte => std.mem.swap(Temp, &ops[0], &ops[1]),
71602 }
71603 break :err cg.select(&res, &.{ty_pl.ty.toType()}, &ops, switch (@as(Condition, switch (cmp_op) {
71604 else => unreachable,
71605 .lt, .gt => .l,
71606 .lte, .gte => .le,
71607 })) {
71608 else => unreachable,
71609 inline .l, .le => |cc| comptime &.{ .{
71610 .required_features = .{ .f16c, null, null, null },
71611 .src_constraints = .{
71612 .{ .scalar_float = .{ .of = .word, .is = .word } },
71613 .{ .scalar_float = .{ .of = .word, .is = .word } },
71614 .any,
71615 },
71616 .patterns = &.{
71617 .{ .src = .{ .to_sse, .to_sse, .none } },
71618 },
71619 .extra_temps = .{
71620 .{ .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
71621 .unused,
71622 .unused,
71623 .unused,
71624 .unused,
71625 .unused,
71626 .unused,
71627 .unused,
71628 .unused,
71629 .unused,
71630 .unused,
71631 },
71632 .dst_temps = .{ .{ .mut_rc_mask = .{
71633 .ref = .src0,
71634 .rc = .sse,
71635 .info = .{ .kind = .all, .scalar = .dword },
71636 } }, .unused },
71637 .each = .{ .once = &.{
71638 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
71639 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
71640 .{ ._, .v_ss, .cmp, .dst0x, .dst0x, .tmp0d, .vp(switch (cc) {
71641 else => unreachable,
71642 .l => .lt,
71643 .le => .le,
71644 }) },
71645 } },
71646 }, .{
71647 .required_features = .{ .f16c, null, null, null },
71648 .src_constraints = .{
71649 .{ .scalar_float = .{ .of = .qword, .is = .word } },
71650 .{ .scalar_float = .{ .of = .qword, .is = .word } },
71651 .any,
71652 },
71653 .patterns = &.{
71654 .{ .src = .{ .mem, .mem, .none } },
71655 .{ .src = .{ .sse, .mem, .none } },
71656 .{ .src = .{ .mem, .sse, .none } },
71657 .{ .src = .{ .to_sse, .to_sse, .none } },
71658 },
71659 .extra_temps = .{
71660 .{ .kind = .{ .rc = .sse } },
71661 .unused,
71662 .unused,
71663 .unused,
71664 .unused,
71665 .unused,
71666 .unused,
71667 .unused,
71668 .unused,
71669 .unused,
71670 .unused,
71671 },
71672 .dst_temps = .{ .{ .mut_rc_mask = .{
71673 .ref = .src0,
71674 .rc = .sse,
71675 .info = .{ .kind = .all, .scalar = .dword },
71676 } }, .unused },
71677 .each = .{ .once = &.{
71678 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
71679 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
71680 .{ ._, .v_ps, .cmp, .dst0x, .dst0x, .tmp0x, .vp(switch (cc) {
71681 else => unreachable,
71682 .l => .lt,
71683 .le => .le,
71684 }) },
71685 } },
71686 }, .{
71687 .required_features = .{ .f16c, null, null, null },
71688 .src_constraints = .{
71689 .{ .scalar_float = .{ .of = .xword, .is = .word } },
71690 .{ .scalar_float = .{ .of = .xword, .is = .word } },
71691 .any,
71692 },
71693 .patterns = &.{
71694 .{ .src = .{ .mem, .mem, .none } },
71695 .{ .src = .{ .to_sse, .mem, .none } },
71696 .{ .src = .{ .mem, .to_sse, .none } },
71697 .{ .src = .{ .to_sse, .to_sse, .none } },
71698 },
71699 .extra_temps = .{
71700 .{ .kind = .{ .rc = .sse } },
71701 .unused,
71702 .unused,
71703 .unused,
71704 .unused,
71705 .unused,
71706 .unused,
71707 .unused,
71708 .unused,
71709 .unused,
71710 .unused,
71711 },
71712 .dst_temps = .{ .{ .mut_rc_mask = .{
71713 .ref = .src0,
71714 .rc = .sse,
71715 .info = .{ .kind = .all, .scalar = .dword },
71716 } }, .unused },
71717 .each = .{ .once = &.{
71718 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
71719 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
71720 .{ ._, .v_ps, .cmp, .dst0y, .dst0y, .tmp0y, .vp(switch (cc) {
71721 else => unreachable,
71722 .l => .lt,
71723 .le => .le,
71724 }) },
71725 } },
71726 }, .{
71727 .required_features = .{ .avx, null, null, null },
71728 .src_constraints = .{
71729 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
71730 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
71731 .any,
71732 },
71733 .patterns = &.{
71734 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
71735 },
71736 .dst_temps = .{ .{ .mut_rc_mask = .{
71737 .ref = .src0,
71738 .rc = .sse,
71739 .info = .{ .kind = .all, .scalar = .dword },
71740 } }, .unused },
71741 .each = .{ .once = &.{
71742 .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1d, .vp(switch (cc) {
71743 else => unreachable,
71744 .l => .gt,
71745 .le => .ge,
71746 }) },
71747 } },
71748 }, .{
71749 .required_features = .{ .avx, null, null, null },
71750 .src_constraints = .{
71751 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
71752 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
71753 .any,
71754 },
71755 .patterns = &.{
71756 .{ .src = .{ .to_sse, .mem, .none } },
71757 .{ .src = .{ .to_sse, .to_sse, .none } },
71758 },
71759 .dst_temps = .{ .{ .mut_rc_mask = .{
71760 .ref = .src0,
71761 .rc = .sse,
71762 .info = .{ .kind = .all, .scalar = .dword },
71763 } }, .unused },
71764 .each = .{ .once = &.{
71765 .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1d, .vp(switch (cc) {
71766 else => unreachable,
71767 .l => .lt,
71768 .le => .le,
71769 }) },
71770 } },
71771 }, .{
71772 .required_features = .{ .sse, null, null, null },
71773 .src_constraints = .{
71774 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
71775 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
71776 .any,
71777 },
71778 .patterns = &.{
71779 .{ .src = .{ .to_mut_sse, .mem, .none } },
71780 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
71781 },
71782 .dst_temps = .{ .{ .ref_mask = .{
71783 .ref = .src0,
71784 .info = .{ .kind = .all, .scalar = .dword },
71785 } }, .unused },
71786 .each = .{ .once = &.{
71787 .{ ._, ._ss, .cmp, .dst0x, .src1d, .sp(switch (cc) {
71788 else => unreachable,
71789 .l => .lt,
71790 .le => .le,
71791 }), ._ },
71792 } },
71793 }, .{
71794 .required_features = .{ .avx, null, null, null },
71795 .src_constraints = .{
71796 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
71797 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
71798 .any,
71799 },
71800 .patterns = &.{
71801 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
71802 },
71803 .dst_temps = .{ .{ .mut_rc_mask = .{
71804 .ref = .src0,
71805 .rc = .sse,
71806 .info = .{ .kind = .all, .scalar = .dword },
71807 } }, .unused },
71808 .each = .{ .once = &.{
71809 .{ ._, .v_ps, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) {
71810 else => unreachable,
71811 .l => .gt,
71812 .le => .ge,
71813 }) },
71814 } },
71815 }, .{
71816 .required_features = .{ .avx, null, null, null },
71817 .src_constraints = .{
71818 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
71819 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
71820 .any,
71821 },
71822 .patterns = &.{
71823 .{ .src = .{ .to_sse, .mem, .none } },
71824 .{ .src = .{ .to_sse, .to_sse, .none } },
71825 },
71826 .dst_temps = .{ .{ .mut_rc_mask = .{
71827 .ref = .src0,
71828 .rc = .sse,
71829 .info = .{ .kind = .all, .scalar = .dword },
71830 } }, .unused },
71831 .each = .{ .once = &.{
71832 .{ ._, .v_ps, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) {
71833 else => unreachable,
71834 .l => .lt,
71835 .le => .le,
71836 }) },
71837 } },
71838 }, .{
71839 .required_features = .{ .sse, null, null, null },
71840 .src_constraints = .{
71841 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
71842 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
71843 .any,
71844 },
71845 .patterns = &.{
71846 .{ .src = .{ .to_mut_sse, .mem, .none } },
71847 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
71848 },
71849 .dst_temps = .{ .{ .ref_mask = .{
71850 .ref = .src0,
71851 .info = .{ .kind = .all, .scalar = .dword },
71852 } }, .unused },
71853 .each = .{ .once = &.{
71854 .{ ._, ._ps, .cmp, .dst0x, .src1x, .sp(switch (cc) {
71855 else => unreachable,
71856 .l => .lt,
71857 .le => .le,
71858 }), ._ },
71859 } },
71860 }, .{
71861 .required_features = .{ .avx, null, null, null },
71862 .src_constraints = .{
71863 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
71864 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
71865 .any,
71866 },
71867 .patterns = &.{
71868 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
71869 },
71870 .dst_temps = .{ .{ .mut_rc_mask = .{
71871 .ref = .src0,
71872 .rc = .sse,
71873 .info = .{ .kind = .all, .scalar = .dword },
71874 } }, .unused },
71875 .each = .{ .once = &.{
71876 .{ ._, .v_ps, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) {
71877 else => unreachable,
71878 .l => .gt,
71879 .le => .ge,
71880 }) },
71881 } },
71882 }, .{
71883 .required_features = .{ .avx, null, null, null },
71884 .src_constraints = .{
71885 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
71886 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
71887 .any,
71888 },
71889 .patterns = &.{
71890 .{ .src = .{ .to_sse, .mem, .none } },
71891 .{ .src = .{ .to_sse, .to_sse, .none } },
71892 },
71893 .dst_temps = .{ .{ .mut_rc_mask = .{
71894 .ref = .src0,
71895 .rc = .sse,
71896 .info = .{ .kind = .all, .scalar = .dword },
71897 } }, .unused },
71898 .each = .{ .once = &.{
71899 .{ ._, .v_ps, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) {
71900 else => unreachable,
71901 .l => .lt,
71902 .le => .le,
71903 }) },
71904 } },
71905 }, .{
71906 .required_features = .{ .avx, null, null, null },
71907 .src_constraints = .{
71908 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
71909 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
71910 .any,
71911 },
71912 .patterns = &.{
71913 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
71914 },
71915 .dst_temps = .{ .{ .mut_rc_mask = .{
71916 .ref = .src0,
71917 .rc = .sse,
71918 .info = .{ .kind = .all, .scalar = .qword },
71919 } }, .unused },
71920 .each = .{ .once = &.{
71921 .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1q, .vp(switch (cc) {
71922 else => unreachable,
71923 .l => .gt,
71924 .le => .ge,
71925 }) },
71926 } },
71927 }, .{
71928 .required_features = .{ .avx, null, null, null },
71929 .src_constraints = .{
71930 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
71931 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
71932 .any,
71933 },
71934 .patterns = &.{
71935 .{ .src = .{ .to_sse, .mem, .none } },
71936 .{ .src = .{ .to_sse, .to_sse, .none } },
71937 },
71938 .dst_temps = .{ .{ .mut_rc_mask = .{
71939 .ref = .src0,
71940 .rc = .sse,
71941 .info = .{ .kind = .all, .scalar = .qword },
71942 } }, .unused },
71943 .each = .{ .once = &.{
71944 .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1q, .vp(switch (cc) {
71945 else => unreachable,
71946 .l => .lt,
71947 .le => .le,
71948 }) },
71949 } },
71950 }, .{
71951 .required_features = .{ .sse2, null, null, null },
71952 .src_constraints = .{
71953 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
71954 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
71955 .any,
71956 },
71957 .patterns = &.{
71958 .{ .src = .{ .to_mut_sse, .mem, .none } },
71959 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
71960 },
71961 .dst_temps = .{ .{ .ref_mask = .{
71962 .ref = .src0,
71963 .info = .{ .kind = .all, .scalar = .qword },
71964 } }, .unused },
71965 .each = .{ .once = &.{
71966 .{ ._, ._sd, .cmp, .dst0x, .src1q, .sp(switch (cc) {
71967 else => unreachable,
71968 .l => .lt,
71969 .le => .le,
71970 }), ._ },
71971 } },
71972 }, .{
71973 .required_features = .{ .avx, null, null, null },
71974 .src_constraints = .{
71975 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
71976 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
71977 .any,
71978 },
71979 .patterns = &.{
71980 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
71981 },
71982 .dst_temps = .{ .{ .mut_rc_mask = .{
71983 .ref = .src0,
71984 .rc = .sse,
71985 .info = .{ .kind = .all, .scalar = .qword },
71986 } }, .unused },
71987 .each = .{ .once = &.{
71988 .{ ._, .v_pd, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) {
71989 else => unreachable,
71990 .l => .gt,
71991 .le => .ge,
71992 }) },
71993 } },
71994 }, .{
71995 .required_features = .{ .avx, null, null, null },
71996 .src_constraints = .{
71997 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
71998 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
71999 .any,
72000 },
72001 .patterns = &.{
72002 .{ .src = .{ .to_sse, .mem, .none } },
72003 .{ .src = .{ .to_sse, .to_sse, .none } },
72004 },
72005 .dst_temps = .{ .{ .mut_rc_mask = .{
72006 .ref = .src0,
72007 .rc = .sse,
72008 .info = .{ .kind = .all, .scalar = .qword },
72009 } }, .unused },
72010 .each = .{ .once = &.{
72011 .{ ._, .v_pd, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) {
72012 else => unreachable,
72013 .l => .lt,
72014 .le => .le,
72015 }) },
72016 } },
72017 }, .{
72018 .required_features = .{ .sse2, null, null, null },
72019 .src_constraints = .{
72020 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
72021 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
72022 .any,
72023 },
72024 .patterns = &.{
72025 .{ .src = .{ .to_mut_sse, .mem, .none } },
72026 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
72027 },
72028 .dst_temps = .{ .{ .ref_mask = .{
72029 .ref = .src0,
72030 .info = .{ .kind = .all, .scalar = .qword },
72031 } }, .unused },
72032 .each = .{ .once = &.{
72033 .{ ._, ._pd, .cmp, .dst0x, .src1x, .sp(switch (cc) {
72034 else => unreachable,
72035 .l => .lt,
72036 .le => .le,
72037 }), ._ },
72038 } },
72039 }, .{
72040 .required_features = .{ .avx, null, null, null },
72041 .src_constraints = .{
72042 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
72043 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
72044 .any,
72045 },
72046 .patterns = &.{
72047 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
72048 },
72049 .dst_temps = .{ .{ .mut_rc_mask = .{
72050 .ref = .src0,
72051 .rc = .sse,
72052 .info = .{ .kind = .all, .scalar = .qword },
72053 } }, .unused },
72054 .each = .{ .once = &.{
72055 .{ ._, .v_pd, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) {
72056 else => unreachable,
72057 .l => .gt,
72058 .le => .ge,
72059 }) },
72060 } },
72061 }, .{
72062 .required_features = .{ .avx, null, null, null },
72063 .src_constraints = .{
72064 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
72065 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
72066 .any,
72067 },
72068 .patterns = &.{
72069 .{ .src = .{ .to_sse, .mem, .none } },
72070 .{ .src = .{ .to_sse, .to_sse, .none } },
72071 },
72072 .dst_temps = .{ .{ .mut_rc_mask = .{
72073 .ref = .src0,
72074 .rc = .sse,
72075 .info = .{ .kind = .all, .scalar = .qword },
72076 } }, .unused },
72077 .each = .{ .once = &.{
72078 .{ ._, .v_pd, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) {
72079 else => unreachable,
72080 .l => .lt,
72081 .le => .le,
72082 }) },
72083 } },
72084 }, .{
72085 .required_features = .{ .f16c, .slow_incdec, null, null },
72086 .src_constraints = .{
72087 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
72088 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
72089 .any,
72090 },
72091 .patterns = &.{
72092 .{ .src = .{ .to_mem, .to_mem, .none } },
72093 },
72094 .extra_temps = .{
72095 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72096 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
72097 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
72098 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
72099 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
72100 .unused,
72101 .unused,
72102 .unused,
72103 .unused,
72104 .unused,
72105 .unused,
72106 },
72107 .dst_temps = .{ .mem, .unused },
72108 .clobbers = .{ .eflags = true },
72109 .each = .{ .once = &.{
72110 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
72111 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
72112 .{ .@"0:", .v_ps, .cvtph2, .tmp2y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
72113 .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src1x, .tmp0, .add_size), ._, ._ },
72114 .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .tmp3y, .vp(switch (cc) {
72115 else => unreachable,
72116 .l => .lt,
72117 .le => .le,
72118 }) },
72119 .{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ },
72120 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
72121 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
72122 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
72123 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
72124 } },
72125 }, .{
72126 .required_features = .{ .f16c, null, null, null },
72127 .src_constraints = .{
72128 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
72129 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
72130 .any,
72131 },
72132 .patterns = &.{
72133 .{ .src = .{ .to_mem, .to_mem, .none } },
72134 },
72135 .extra_temps = .{
72136 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72137 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
72138 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
72139 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
72140 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
72141 .unused,
72142 .unused,
72143 .unused,
72144 .unused,
72145 .unused,
72146 .unused,
72147 },
72148 .dst_temps = .{ .mem, .unused },
72149 .clobbers = .{ .eflags = true },
72150 .each = .{ .once = &.{
72151 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
72152 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
72153 .{ .@"0:", .v_ps, .cvtph2, .tmp2y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
72154 .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src1x, .tmp0, .add_size), ._, ._ },
72155 .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .tmp3y, .vp(switch (cc) {
72156 else => unreachable,
72157 .l => .lt,
72158 .le => .le,
72159 }) },
72160 .{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ },
72161 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
72162 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
72163 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
72164 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
72165 } },
72166 }, .{
72167 .required_features = .{ .avx, .slow_incdec, null, null },
72168 .src_constraints = .{
72169 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
72170 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
72171 .any,
72172 },
72173 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
72174 .patterns = &.{
72175 .{ .src = .{ .to_mem, .to_mem, .none } },
72176 },
72177 .call_frame = .{ .alignment = .@"16" },
72178 .extra_temps = .{
72179 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
72180 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
72181 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
72182 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
72183 .{ .type = .i32, .kind = .{ .reg = .eax } },
72184 .{ .type = .u8, .kind = .{ .reg = .cl } },
72185 .{ .type = .u32, .kind = .{ .reg = .edx } },
72186 .unused,
72187 .unused,
72188 .unused,
72189 .unused,
72190 },
72191 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
72192 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
72193 .each = .{ .once = &.{
72194 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
72195 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
72196 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
72197 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
72198 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0) },
72199 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
72200 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
72201 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
72202 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
72203 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
72204 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
72205 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
72206 .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ },
72207 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
72208 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
72209 } },
72210 }, .{
72211 .required_features = .{ .avx, null, null, null },
72212 .src_constraints = .{
72213 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
72214 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
72215 .any,
72216 },
72217 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
72218 .patterns = &.{
72219 .{ .src = .{ .to_mem, .to_mem, .none } },
72220 },
72221 .call_frame = .{ .alignment = .@"16" },
72222 .extra_temps = .{
72223 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
72224 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
72225 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
72226 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
72227 .{ .type = .i32, .kind = .{ .reg = .eax } },
72228 .{ .type = .u8, .kind = .{ .reg = .cl } },
72229 .{ .type = .u32, .kind = .{ .reg = .edx } },
72230 .unused,
72231 .unused,
72232 .unused,
72233 .unused,
72234 },
72235 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
72236 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
72237 .each = .{ .once = &.{
72238 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
72239 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
72240 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
72241 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
72242 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0) },
72243 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
72244 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
72245 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
72246 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
72247 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
72248 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
72249 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
72250 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
72251 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
72252 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
72253 } },
72254 }, .{
72255 .required_features = .{ .sse2, .slow_incdec, null, null },
72256 .src_constraints = .{
72257 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
72258 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
72259 .any,
72260 },
72261 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
72262 .patterns = &.{
72263 .{ .src = .{ .to_mem, .to_mem, .none } },
72264 },
72265 .call_frame = .{ .alignment = .@"16" },
72266 .extra_temps = .{
72267 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
72268 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
72269 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
72270 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
72271 .{ .type = .i32, .kind = .{ .reg = .eax } },
72272 .{ .type = .u8, .kind = .{ .reg = .cl } },
72273 .{ .type = .u32, .kind = .{ .reg = .edx } },
72274 .unused,
72275 .unused,
72276 .unused,
72277 .unused,
72278 },
72279 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
72280 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
72281 .each = .{ .once = &.{
72282 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
72283 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
72284 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
72285 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
72286 .{ ._, .p_w, .insr, .tmp1x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
72287 .{ ._, .p_w, .insr, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ },
72288 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
72289 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
72290 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
72291 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
72292 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
72293 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
72294 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
72295 .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ },
72296 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
72297 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
72298 } },
72299 }, .{
72300 .required_features = .{ .sse2, null, null, null },
72301 .src_constraints = .{
72302 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
72303 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
72304 .any,
72305 },
72306 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
72307 .patterns = &.{
72308 .{ .src = .{ .to_mem, .to_mem, .none } },
72309 },
72310 .call_frame = .{ .alignment = .@"16" },
72311 .extra_temps = .{
72312 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
72313 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
72314 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
72315 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
72316 .{ .type = .i32, .kind = .{ .reg = .eax } },
72317 .{ .type = .u8, .kind = .{ .reg = .cl } },
72318 .{ .type = .u32, .kind = .{ .reg = .edx } },
72319 .unused,
72320 .unused,
72321 .unused,
72322 .unused,
72323 },
72324 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
72325 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
72326 .each = .{ .once = &.{
72327 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
72328 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
72329 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
72330 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
72331 .{ ._, .p_w, .insr, .tmp1x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
72332 .{ ._, .p_w, .insr, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ },
72333 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
72334 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
72335 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
72336 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
72337 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
72338 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
72339 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
72340 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
72341 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
72342 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
72343 } },
72344 }, .{
72345 .required_features = .{ .sse, .slow_incdec, null, null },
72346 .src_constraints = .{
72347 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
72348 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
72349 .any,
72350 },
72351 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
72352 .patterns = &.{
72353 .{ .src = .{ .to_mem, .to_mem, .none } },
72354 },
72355 .call_frame = .{ .alignment = .@"16" },
72356 .extra_temps = .{
72357 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
72358 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
72359 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
72360 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
72361 .{ .type = .i32, .kind = .{ .reg = .eax } },
72362 .{ .type = .u8, .kind = .{ .reg = .cl } },
72363 .{ .type = .u32, .kind = .{ .reg = .edx } },
72364 .{ .type = .f32, .kind = .mem },
72365 .unused,
72366 .unused,
72367 .unused,
72368 },
72369 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
72370 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
72371 .each = .{ .once = &.{
72372 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
72373 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
72374 .{ .@"0:", ._, .movzx, .tmp4d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
72375 .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ },
72376 .{ ._, ._ss, .mov, .tmp1x, .mem(.tmp7d), ._, ._ },
72377 .{ ._, ._, .movzx, .tmp4d, .memsi(.src1w, .@"2", .tmp0), ._, ._ },
72378 .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ },
72379 .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp7d), ._, ._ },
72380 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
72381 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
72382 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
72383 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
72384 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
72385 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
72386 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
72387 .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ },
72388 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
72389 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
72390 } },
72391 }, .{
72392 .required_features = .{ .sse, null, null, null },
72393 .src_constraints = .{
72394 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
72395 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
72396 .any,
72397 },
72398 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
72399 .patterns = &.{
72400 .{ .src = .{ .to_mem, .to_mem, .none } },
72401 },
72402 .call_frame = .{ .alignment = .@"16" },
72403 .extra_temps = .{
72404 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
72405 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
72406 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
72407 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
72408 .{ .type = .i32, .kind = .{ .reg = .eax } },
72409 .{ .type = .u8, .kind = .{ .reg = .cl } },
72410 .{ .type = .u32, .kind = .{ .reg = .edx } },
72411 .{ .type = .f32, .kind = .mem },
72412 .unused,
72413 .unused,
72414 .unused,
72415 },
72416 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
72417 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
72418 .each = .{ .once = &.{
72419 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
72420 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
72421 .{ .@"0:", ._, .movzx, .tmp4d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
72422 .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ },
72423 .{ ._, ._ss, .mov, .tmp1x, .mem(.tmp7d), ._, ._ },
72424 .{ ._, ._, .movzx, .tmp4d, .memsi(.src1w, .@"2", .tmp0), ._, ._ },
72425 .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ },
72426 .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp7d), ._, ._ },
72427 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
72428 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
72429 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
72430 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
72431 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
72432 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
72433 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
72434 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
72435 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
72436 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
72437 } },
72438 }, .{
72439 .required_features = .{ .@"64bit", .avx, .slow_incdec, null },
72440 .src_constraints = .{
72441 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
72442 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
72443 .any,
72444 },
72445 .patterns = &.{
72446 .{ .src = .{ .to_mem, .to_mem, .none } },
72447 },
72448 .call_frame = .{ .alignment = .@"16" },
72449 .extra_temps = .{
72450 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
72451 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
72452 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
72453 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
72454 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
72455 .{ .type = .i32, .kind = .{ .reg = .eax } },
72456 .{ .type = .u8, .kind = .{ .reg = .cl } },
72457 .{ .type = .u64, .kind = .{ .reg = .rdx } },
72458 .unused,
72459 .unused,
72460 .unused,
72461 },
72462 .dst_temps = .{ .mem, .unused },
72463 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
72464 .each = .{ .once = &.{
72465 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
72466 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
72467 .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ },
72468 .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
72469 .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0) },
72470 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
72471 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
72472 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
72473 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
72474 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
72475 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
72476 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
72477 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
72478 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
72479 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
72480 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
72481 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
72482 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
72483 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
72484 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
72485 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
72486 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
72487 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
72488 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
72489 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
72490 } },
72491 }, .{
72492 .required_features = .{ .@"64bit", .avx, null, null },
72493 .src_constraints = .{
72494 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
72495 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
72496 .any,
72497 },
72498 .patterns = &.{
72499 .{ .src = .{ .to_mem, .to_mem, .none } },
72500 },
72501 .call_frame = .{ .alignment = .@"16" },
72502 .extra_temps = .{
72503 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
72504 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
72505 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
72506 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
72507 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
72508 .{ .type = .i32, .kind = .{ .reg = .eax } },
72509 .{ .type = .u8, .kind = .{ .reg = .cl } },
72510 .{ .type = .u64, .kind = .{ .reg = .rdx } },
72511 .unused,
72512 .unused,
72513 .unused,
72514 },
72515 .dst_temps = .{ .mem, .unused },
72516 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
72517 .each = .{ .once = &.{
72518 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
72519 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
72520 .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ },
72521 .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
72522 .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0) },
72523 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
72524 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
72525 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
72526 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
72527 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
72528 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
72529 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
72530 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
72531 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
72532 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
72533 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
72534 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
72535 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
72536 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
72537 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
72538 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
72539 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
72540 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
72541 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
72542 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
72543 } },
72544 }, .{
72545 .required_features = .{ .@"64bit", .sse2, .slow_incdec, null },
72546 .src_constraints = .{
72547 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
72548 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
72549 .any,
72550 },
72551 .patterns = &.{
72552 .{ .src = .{ .to_mem, .to_mem, .none } },
72553 },
72554 .call_frame = .{ .alignment = .@"16" },
72555 .extra_temps = .{
72556 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
72557 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
72558 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
72559 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
72560 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
72561 .{ .type = .i32, .kind = .{ .reg = .eax } },
72562 .{ .type = .u8, .kind = .{ .reg = .cl } },
72563 .{ .type = .u64, .kind = .{ .reg = .rdx } },
72564 .unused,
72565 .unused,
72566 .unused,
72567 },
72568 .dst_temps = .{ .mem, .unused },
72569 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
72570 .each = .{ .once = &.{
72571 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
72572 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
72573 .{ .@"0:", .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
72574 .{ ._, .p_w, .insr, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
72575 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },
72576 .{ ._, .p_w, .insr, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ },
72577 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
72578 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
72579 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
72580 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
72581 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
72582 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
72583 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
72584 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
72585 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
72586 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
72587 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
72588 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
72589 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
72590 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
72591 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
72592 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
72593 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
72594 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
72595 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
72596 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
72597 } },
72598 }, .{
72599 .required_features = .{ .@"64bit", .sse2, null, null },
72600 .src_constraints = .{
72601 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
72602 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
72603 .any,
72604 },
72605 .patterns = &.{
72606 .{ .src = .{ .to_mem, .to_mem, .none } },
72607 },
72608 .call_frame = .{ .alignment = .@"16" },
72609 .extra_temps = .{
72610 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
72611 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
72612 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
72613 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
72614 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
72615 .{ .type = .i32, .kind = .{ .reg = .eax } },
72616 .{ .type = .u8, .kind = .{ .reg = .cl } },
72617 .{ .type = .u64, .kind = .{ .reg = .rdx } },
72618 .unused,
72619 .unused,
72620 .unused,
72621 },
72622 .dst_temps = .{ .mem, .unused },
72623 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
72624 .each = .{ .once = &.{
72625 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
72626 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
72627 .{ .@"0:", .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
72628 .{ ._, .p_w, .insr, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
72629 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },
72630 .{ ._, .p_w, .insr, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ },
72631 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
72632 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
72633 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
72634 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
72635 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
72636 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
72637 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
72638 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
72639 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
72640 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
72641 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
72642 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
72643 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
72644 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
72645 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
72646 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
72647 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
72648 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
72649 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
72650 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
72651 } },
72652 }, .{
72653 .required_features = .{ .@"64bit", .sse, .slow_incdec, null },
72654 .src_constraints = .{
72655 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
72656 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
72657 .any,
72658 },
72659 .patterns = &.{
72660 .{ .src = .{ .to_mem, .to_mem, .none } },
72661 },
72662 .call_frame = .{ .alignment = .@"16" },
72663 .extra_temps = .{
72664 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
72665 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
72666 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
72667 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
72668 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
72669 .{ .type = .i32, .kind = .{ .reg = .eax } },
72670 .{ .type = .u8, .kind = .{ .reg = .cl } },
72671 .{ .type = .u64, .kind = .{ .reg = .rdx } },
72672 .{ .type = .f32, .kind = .mem },
72673 .unused,
72674 .unused,
72675 },
72676 .dst_temps = .{ .mem, .unused },
72677 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
72678 .each = .{ .once = &.{
72679 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
72680 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
72681 .{ .@"0:", ._, .movzx, .tmp5d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
72682 .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ },
72683 .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp8d), ._, ._ },
72684 .{ ._, ._, .movzx, .tmp5d, .memsi(.src1w, .@"2", .tmp0), ._, ._ },
72685 .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ },
72686 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp8d), ._, ._ },
72687 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
72688 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
72689 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
72690 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
72691 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
72692 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
72693 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
72694 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
72695 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
72696 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
72697 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
72698 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
72699 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
72700 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
72701 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
72702 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
72703 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
72704 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
72705 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
72706 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
72707 } },
72708 }, .{
72709 .required_features = .{ .@"64bit", .sse, null, null },
72710 .src_constraints = .{
72711 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
72712 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
72713 .any,
72714 },
72715 .patterns = &.{
72716 .{ .src = .{ .to_mem, .to_mem, .none } },
72717 },
72718 .call_frame = .{ .alignment = .@"16" },
72719 .extra_temps = .{
72720 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
72721 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
72722 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
72723 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
72724 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
72725 .{ .type = .i32, .kind = .{ .reg = .eax } },
72726 .{ .type = .u8, .kind = .{ .reg = .cl } },
72727 .{ .type = .u64, .kind = .{ .reg = .rdx } },
72728 .{ .type = .f32, .kind = .mem },
72729 .unused,
72730 .unused,
72731 },
72732 .dst_temps = .{ .mem, .unused },
72733 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
72734 .each = .{ .once = &.{
72735 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
72736 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
72737 .{ .@"0:", ._, .movzx, .tmp5d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
72738 .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ },
72739 .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp8d), ._, ._ },
72740 .{ ._, ._, .movzx, .tmp5d, .memsi(.src1w, .@"2", .tmp0), ._, ._ },
72741 .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ },
72742 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp8d), ._, ._ },
72743 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
72744 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
72745 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
72746 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
72747 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
72748 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
72749 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
72750 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
72751 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
72752 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
72753 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
72754 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
72755 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
72756 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
72757 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
72758 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
72759 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
72760 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
72761 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
72762 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
72763 } },
72764 }, .{
72765 .required_features = .{ .avx, .slow_incdec, null, null },
72766 .src_constraints = .{
72767 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
72768 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
72769 .any,
72770 },
72771 .patterns = &.{
72772 .{ .src = .{ .to_mem, .to_mem, .none } },
72773 },
72774 .extra_temps = .{
72775 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72776 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
72777 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
72778 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
72779 .unused,
72780 .unused,
72781 .unused,
72782 .unused,
72783 .unused,
72784 .unused,
72785 .unused,
72786 },
72787 .dst_temps = .{ .mem, .unused },
72788 .clobbers = .{ .eflags = true },
72789 .each = .{ .once = &.{
72790 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
72791 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
72792 .{ .@"0:", .v_ps, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
72793 .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
72794 else => unreachable,
72795 .l => .lt,
72796 .le => .le,
72797 }) },
72798 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ },
72799 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
72800 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
72801 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
72802 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
72803 } },
72804 }, .{
72805 .required_features = .{ .avx, null, null, null },
72806 .src_constraints = .{
72807 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
72808 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
72809 .any,
72810 },
72811 .patterns = &.{
72812 .{ .src = .{ .to_mem, .to_mem, .none } },
72813 },
72814 .extra_temps = .{
72815 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72816 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
72817 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
72818 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
72819 .unused,
72820 .unused,
72821 .unused,
72822 .unused,
72823 .unused,
72824 .unused,
72825 .unused,
72826 },
72827 .dst_temps = .{ .mem, .unused },
72828 .clobbers = .{ .eflags = true },
72829 .each = .{ .once = &.{
72830 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
72831 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
72832 .{ .@"0:", .v_ps, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
72833 .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
72834 else => unreachable,
72835 .l => .lt,
72836 .le => .le,
72837 }) },
72838 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ },
72839 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
72840 .{ ._, ._c, .in, .tmp1q, ._, ._, ._ },
72841 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
72842 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
72843 } },
72844 }, .{
72845 .required_features = .{ .sse2, null, null, null },
72846 .src_constraints = .{
72847 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
72848 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
72849 .any,
72850 },
72851 .patterns = &.{
72852 .{ .src = .{ .to_mem, .to_mem, .none } },
72853 },
72854 .extra_temps = .{
72855 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72856 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
72857 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
72858 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
72859 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
72860 .unused,
72861 .unused,
72862 .unused,
72863 .unused,
72864 .unused,
72865 .unused,
72866 },
72867 .dst_temps = .{ .mem, .unused },
72868 .clobbers = .{ .eflags = true },
72869 .each = .{ .once = &.{
72870 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
72871 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
72872 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
72873 .{ ._, ._ps, .mova, .tmp3x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ },
72874 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
72875 else => unreachable,
72876 .l => .lt,
72877 .le => .le,
72878 }), ._ },
72879 .{ ._, ._ps, .cmp, .tmp3x, .memiad(.src1x, .tmp0, .add_size, 16), .sp(switch (cc) {
72880 else => unreachable,
72881 .l => .lt,
72882 .le => .le,
72883 }), ._ },
72884 .{ ._, .p_w, .ackssd, .tmp2x, .tmp3x, ._, ._ },
72885 .{ ._, .p_b, .ackssw, .tmp2x, .tmp2x, ._, ._ },
72886 .{ ._, .p_b, .movmsk, .tmp4d, .tmp2x, ._, ._ },
72887 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
72888 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
72889 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
72890 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
72891 } },
72892 }, .{
72893 .required_features = .{ .sse, null, null, null },
72894 .src_constraints = .{
72895 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
72896 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
72897 .any,
72898 },
72899 .patterns = &.{
72900 .{ .src = .{ .to_mem, .to_mem, .none } },
72901 },
72902 .extra_temps = .{
72903 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72904 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
72905 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
72906 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
72907 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
72908 .unused,
72909 .unused,
72910 .unused,
72911 .unused,
72912 .unused,
72913 .unused,
72914 },
72915 .dst_temps = .{ .mem, .unused },
72916 .clobbers = .{ .eflags = true },
72917 .each = .{ .once = &.{
72918 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
72919 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
72920 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
72921 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
72922 else => unreachable,
72923 .l => .lt,
72924 .le => .le,
72925 }), ._ },
72926 .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ },
72927 .{ ._, ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ },
72928 .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, 16), .sp(switch (cc) {
72929 else => unreachable,
72930 .l => .lt,
72931 .le => .le,
72932 }), ._ },
72933 .{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ },
72934 .{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ },
72935 .{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ },
72936 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
72937 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
72938 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
72939 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
72940 } },
72941 }, .{
72942 .required_features = .{ .sse, null, null, null },
72943 .src_constraints = .{
72944 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
72945 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
72946 .any,
72947 },
72948 .patterns = &.{
72949 .{ .src = .{ .to_mem, .to_mem, .none } },
72950 },
72951 .extra_temps = .{
72952 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72953 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
72954 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
72955 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
72956 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
72957 .unused,
72958 .unused,
72959 .unused,
72960 .unused,
72961 .unused,
72962 .unused,
72963 },
72964 .dst_temps = .{ .mem, .unused },
72965 .clobbers = .{ .eflags = true },
72966 .each = .{ .once = &.{
72967 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
72968 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
72969 .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
72970 .{ .@"0:", ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, -16), ._, ._ },
72971 .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, -16), .sp(switch (cc) {
72972 else => unreachable,
72973 .l => .lt,
72974 .le => .le,
72975 }), ._ },
72976 .{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ },
72977 .{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ },
72978 .{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ },
72979 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
72980 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
72981 .{ .@"1:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
72982 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
72983 else => unreachable,
72984 .l => .lt,
72985 .le => .le,
72986 }), ._ },
72987 .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ },
72988 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
72989 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
72990 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
72991 } },
72992 }, .{
72993 .required_features = .{ .avx, .slow_incdec, null, null },
72994 .src_constraints = .{
72995 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
72996 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
72997 .any,
72998 },
72999 .patterns = &.{
73000 .{ .src = .{ .to_mem, .to_mem, .none } },
73001 },
73002 .extra_temps = .{
73003 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73004 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
73005 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
73006 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
73007 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
73008 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
73009 .unused,
73010 .unused,
73011 .unused,
73012 .unused,
73013 .unused,
73014 },
73015 .dst_temps = .{ .mem, .unused },
73016 .clobbers = .{ .eflags = true },
73017 .each = .{ .once = &.{
73018 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
73019 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
73020 .{ .@"0:", .v_pd, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
73021 .{ ._, .v_pd, .mova, .tmp3y, .memiad(.src0y, .tmp0, .add_size, 32), ._, ._ },
73022 .{ ._, .v_pd, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
73023 else => unreachable,
73024 .l => .lt,
73025 .le => .le,
73026 }) },
73027 .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memiad(.src1y, .tmp0, .add_size, 32), .vp(switch (cc) {
73028 else => unreachable,
73029 .l => .lt,
73030 .le => .le,
73031 }) },
73032 .{ ._, .v_pd, .movmsk, .tmp4d, .tmp2y, ._, ._ },
73033 .{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ },
73034 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
73035 .{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ },
73036 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
73037 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
73038 .{ ._, ._, .add, .tmp0p, .si(64), ._, ._ },
73039 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
73040 } },
73041 }, .{
73042 .required_features = .{ .avx, null, null, null },
73043 .src_constraints = .{
73044 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
73045 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
73046 .any,
73047 },
73048 .patterns = &.{
73049 .{ .src = .{ .to_mem, .to_mem, .none } },
73050 },
73051 .extra_temps = .{
73052 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73053 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
73054 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
73055 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
73056 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
73057 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
73058 .unused,
73059 .unused,
73060 .unused,
73061 .unused,
73062 .unused,
73063 },
73064 .dst_temps = .{ .mem, .unused },
73065 .clobbers = .{ .eflags = true },
73066 .each = .{ .once = &.{
73067 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
73068 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
73069 .{ .@"0:", .v_pd, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
73070 .{ ._, .v_pd, .mova, .tmp3y, .memiad(.src0y, .tmp0, .add_size, 32), ._, ._ },
73071 .{ ._, .v_pd, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
73072 else => unreachable,
73073 .l => .lt,
73074 .le => .le,
73075 }) },
73076 .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memiad(.src1y, .tmp0, .add_size, 32), .vp(switch (cc) {
73077 else => unreachable,
73078 .l => .lt,
73079 .le => .le,
73080 }) },
73081 .{ ._, .v_pd, .movmsk, .tmp4d, .tmp2y, ._, ._ },
73082 .{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ },
73083 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
73084 .{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ },
73085 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
73086 .{ ._, ._c, .in, .tmp1q, ._, ._, ._ },
73087 .{ ._, ._, .add, .tmp0p, .si(64), ._, ._ },
73088 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
73089 } },
73090 }, .{
73091 .required_features = .{ .avx, null, null, null },
73092 .src_constraints = .{
73093 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
73094 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
73095 .any,
73096 },
73097 .patterns = &.{
73098 .{ .src = .{ .to_mem, .to_mem, .none } },
73099 },
73100 .extra_temps = .{
73101 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73102 .{ .type = .u32, .kind = .{ .reg = .rcx } },
73103 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73104 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
73105 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
73106 .unused,
73107 .unused,
73108 .unused,
73109 .unused,
73110 .unused,
73111 .unused,
73112 },
73113 .dst_temps = .{ .mem, .unused },
73114 .clobbers = .{ .eflags = true },
73115 .each = .{ .once = &.{
73116 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
73117 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
73118 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
73119 .{ .@"0:", .v_pd, .mova, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
73120 .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
73121 else => unreachable,
73122 .l => .lt,
73123 .le => .le,
73124 }) },
73125 .{ ._, .v_pd, .movmsk, .tmp4d, .tmp3y, ._, ._ },
73126 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
73127 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
73128 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
73129 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
73130 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
73131 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
73132 .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ },
73133 .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ },
73134 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
73135 .{ .@"1:", ._, .add, .tmp0p, .si(32), ._, ._ },
73136 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
73137 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
73138 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
73139 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
73140 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
73141 } },
73142 }, .{
73143 .required_features = .{ .sse2, null, null, null },
73144 .src_constraints = .{
73145 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
73146 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
73147 .any,
73148 },
73149 .patterns = &.{
73150 .{ .src = .{ .to_mem, .to_mem, .none } },
73151 },
73152 .extra_temps = .{
73153 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73154 .{ .type = .u32, .kind = .{ .reg = .rcx } },
73155 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73156 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
73157 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
73158 .unused,
73159 .unused,
73160 .unused,
73161 .unused,
73162 .unused,
73163 .unused,
73164 },
73165 .dst_temps = .{ .mem, .unused },
73166 .clobbers = .{ .eflags = true },
73167 .each = .{ .once = &.{
73168 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
73169 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
73170 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
73171 .{ .@"0:", ._pd, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
73172 .{ ._, ._pd, .cmp, .tmp3x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
73173 else => unreachable,
73174 .l => .lt,
73175 .le => .le,
73176 }), ._ },
73177 .{ ._, ._pd, .movmsk, .tmp4d, .tmp3x, ._, ._ },
73178 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
73179 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
73180 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
73181 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
73182 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
73183 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
73184 .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ },
73185 .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ },
73186 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
73187 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
73188 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
73189 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
73190 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
73191 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
73192 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
73193 } },
73194 }, .{
73195 .required_features = .{ .x87, .cmov, .slow_incdec, null },
73196 .src_constraints = .{
73197 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
73198 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
73199 .any,
73200 },
73201 .patterns = &.{
73202 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
73203 },
73204 .extra_temps = .{
73205 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73206 .{ .type = .u32, .kind = .{ .reg = .rcx } },
73207 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73208 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
73209 .{ .type = .f64, .kind = .{ .reg = .st6 } },
73210 .{ .type = .f64, .kind = .{ .reg = .st7 } },
73211 .unused,
73212 .unused,
73213 .unused,
73214 .unused,
73215 .unused,
73216 },
73217 .dst_temps = .{ .mem, .unused },
73218 .clobbers = .{ .eflags = true },
73219 .each = .{ .once = &.{
73220 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
73221 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
73222 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
73223 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
73224 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ },
73225 .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ },
73226 .{ ._, .f_p, .ucomi, .tmp4t, .tmp5t, ._, ._ },
73227 .{ ._, .f_p, .st, .tmp5t, ._, ._, ._ },
73228 .{ ._, .fromCond(switch (cc) {
73229 else => unreachable,
73230 .l => .a,
73231 .le => .ae,
73232 }), .set, .tmp3b, ._, ._, ._ },
73233 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
73234 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
73235 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
73236 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
73237 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
73238 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
73239 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
73240 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
73241 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
73242 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
73243 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
73244 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
73245 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
73246 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
73247 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
73248 } },
73249 }, .{
73250 .required_features = .{ .x87, .cmov, null, null },
73251 .src_constraints = .{
73252 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
73253 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
73254 .any,
73255 },
73256 .patterns = &.{
73257 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
73258 },
73259 .extra_temps = .{
73260 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73261 .{ .type = .u32, .kind = .{ .reg = .rcx } },
73262 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73263 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
73264 .{ .type = .f64, .kind = .{ .reg = .st6 } },
73265 .{ .type = .f64, .kind = .{ .reg = .st7 } },
73266 .unused,
73267 .unused,
73268 .unused,
73269 .unused,
73270 .unused,
73271 },
73272 .dst_temps = .{ .mem, .unused },
73273 .clobbers = .{ .eflags = true },
73274 .each = .{ .once = &.{
73275 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
73276 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
73277 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
73278 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
73279 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ },
73280 .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ },
73281 .{ ._, .f_p, .ucomi, .tmp4t, .tmp5t, ._, ._ },
73282 .{ ._, .f_p, .st, .tmp5t, ._, ._, ._ },
73283 .{ ._, .fromCond(switch (cc) {
73284 else => unreachable,
73285 .l => .a,
73286 .le => .ae,
73287 }), .set, .tmp3b, ._, ._, ._ },
73288 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
73289 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
73290 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
73291 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
73292 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
73293 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
73294 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
73295 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
73296 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
73297 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
73298 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
73299 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
73300 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
73301 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
73302 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
73303 } },
73304 }, .{
73305 .required_features = .{ .x87, null, null, null },
73306 .src_constraints = .{
73307 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
73308 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
73309 .any,
73310 },
73311 .patterns = &.{
73312 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
73313 },
73314 .extra_temps = .{
73315 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73316 .{ .type = .u32, .kind = .{ .reg = .rcx } },
73317 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73318 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
73319 .{ .type = .f64, .kind = .{ .reg = .st6 } },
73320 .{ .type = .f64, .kind = .{ .reg = .st7 } },
73321 .{ .type = .u16, .kind = .{ .reg = .ax } },
73322 .unused,
73323 .unused,
73324 .unused,
73325 .unused,
73326 },
73327 .dst_temps = .{ .mem, .unused },
73328 .clobbers = .{ .eflags = true },
73329 .each = .{ .once = &.{
73330 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
73331 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
73332 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
73333 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
73334 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ },
73335 .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ },
73336 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
73337 .{ ._, .fn_sw, .st, .tmp6w, ._, ._, ._ },
73338 switch (cc) {
73339 else => unreachable,
73340 .l => .{ ._, ._, .@"test", .tmp6h, .si(0b1_000_001), ._, ._ },
73341 .le => .{ ._, ._r, .sh, .tmp6h, .ui(1), ._, ._ },
73342 },
73343 .{ ._, .fromCond(switch (cc) {
73344 else => unreachable,
73345 .l => .z,
73346 .le => .nc,
73347 }), .set, .tmp3b, ._, ._, ._ },
73348 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
73349 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
73350 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
73351 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
73352 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
73353 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
73354 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
73355 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
73356 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
73357 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
73358 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
73359 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
73360 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
73361 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
73362 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
73363 } },
73364 }, .{
73365 .required_features = .{ .x87, .cmov, .slow_incdec, null },
73366 .src_constraints = .{
73367 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
73368 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
73369 .any,
73370 },
73371 .patterns = &.{
73372 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
73373 },
73374 .extra_temps = .{
73375 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73376 .{ .type = .u32, .kind = .{ .reg = .rcx } },
73377 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73378 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
73379 .{ .type = .f80, .kind = .{ .reg = .st6 } },
73380 .{ .type = .f80, .kind = .{ .reg = .st7 } },
73381 .unused,
73382 .unused,
73383 .unused,
73384 .unused,
73385 .unused,
73386 },
73387 .dst_temps = .{ .mem, .unused },
73388 .clobbers = .{ .eflags = true },
73389 .each = .{ .once = &.{
73390 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
73391 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
73392 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
73393 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
73394 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
73395 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
73396 .{ ._, .f_p, .ucomi, .tmp4t, .tmp5t, ._, ._ },
73397 .{ ._, .f_p, .st, .tmp5t, ._, ._, ._ },
73398 .{ ._, .fromCond(switch (cc) {
73399 else => unreachable,
73400 .l => .a,
73401 .le => .ae,
73402 }), .set, .tmp3b, ._, ._, ._ },
73403 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
73404 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
73405 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
73406 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
73407 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
73408 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
73409 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
73410 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
73411 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
73412 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
73413 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
73414 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
73415 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
73416 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
73417 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
73418 } },
73419 }, .{
73420 .required_features = .{ .x87, .cmov, null, null },
73421 .src_constraints = .{
73422 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
73423 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
73424 .any,
73425 },
73426 .patterns = &.{
73427 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
73428 },
73429 .extra_temps = .{
73430 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73431 .{ .type = .u32, .kind = .{ .reg = .rcx } },
73432 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73433 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
73434 .{ .type = .f80, .kind = .{ .reg = .st6 } },
73435 .{ .type = .f80, .kind = .{ .reg = .st7 } },
73436 .unused,
73437 .unused,
73438 .unused,
73439 .unused,
73440 .unused,
73441 },
73442 .dst_temps = .{ .mem, .unused },
73443 .clobbers = .{ .eflags = true },
73444 .each = .{ .once = &.{
73445 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
73446 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
73447 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
73448 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
73449 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
73450 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
73451 .{ ._, .f_p, .ucomi, .tmp4t, .tmp5t, ._, ._ },
73452 .{ ._, .f_p, .st, .tmp5t, ._, ._, ._ },
73453 .{ ._, .fromCond(switch (cc) {
73454 else => unreachable,
73455 .l => .a,
73456 .le => .ae,
73457 }), .set, .tmp3b, ._, ._, ._ },
73458 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
73459 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
73460 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
73461 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
73462 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
73463 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
73464 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
73465 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
73466 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
73467 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
73468 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
73469 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
73470 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
73471 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
73472 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
73473 } },
73474 }, .{
73475 .required_features = .{ .x87, null, null, null },
73476 .src_constraints = .{
73477 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
73478 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
73479 .any,
73480 },
73481 .patterns = &.{
73482 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
73483 },
73484 .extra_temps = .{
73485 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73486 .{ .type = .u32, .kind = .{ .reg = .rcx } },
73487 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73488 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
73489 .{ .type = .f80, .kind = .{ .reg = .st6 } },
73490 .{ .type = .f80, .kind = .{ .reg = .st7 } },
73491 .{ .type = .u16, .kind = .{ .reg = .ax } },
73492 .unused,
73493 .unused,
73494 .unused,
73495 .unused,
73496 },
73497 .dst_temps = .{ .mem, .unused },
73498 .clobbers = .{ .eflags = true },
73499 .each = .{ .once = &.{
73500 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
73501 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
73502 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
73503 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
73504 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
73505 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
73506 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
73507 .{ ._, .fn_sw, .st, .tmp6w, ._, ._, ._ },
73508 switch (cc) {
73509 else => unreachable,
73510 .l => .{ ._, ._, .@"test", .tmp6h, .si(0b1_000_001), ._, ._ },
73511 .le => .{ ._, ._r, .sh, .tmp6h, .ui(1), ._, ._ },
73512 },
73513 .{ ._, .fromCond(switch (cc) {
73514 else => unreachable,
73515 .l => .z,
73516 .le => .nc,
73517 }), .set, .tmp3b, ._, ._, ._ },
73518 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
73519 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
73520 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
73521 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
73522 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
73523 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
73524 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
73525 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
73526 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
73527 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
73528 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
73529 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
73530 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
73531 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
73532 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
73533 } },
73534 }, .{
73535 .required_features = .{ .avx, .slow_incdec, null, null },
73536 .src_constraints = .{
73537 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
73538 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
73539 .any,
73540 },
73541 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
73542 .patterns = &.{
73543 .{ .src = .{ .to_mem, .to_mem, .none } },
73544 },
73545 .call_frame = .{ .alignment = .@"16" },
73546 .extra_temps = .{
73547 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73548 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73549 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
73550 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
73551 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
73552 .{ .type = .i32, .kind = .{ .reg = .eax } },
73553 .{ .type = .u8, .kind = .{ .reg = .cl } },
73554 .{ .type = .u32, .kind = .{ .reg = .edx } },
73555 .unused,
73556 .unused,
73557 .unused,
73558 },
73559 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
73560 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73561 .each = .{ .once = &.{
73562 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
73563 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
73564 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
73565 .{ .@"0:", .v_dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
73566 .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
73567 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
73568 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
73569 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
73570 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
73571 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
73572 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
73573 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
73574 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
73575 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
73576 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
73577 } },
73578 }, .{
73579 .required_features = .{ .avx, .slow_incdec, null, null },
73580 .src_constraints = .{
73581 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
73582 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
73583 .any,
73584 },
73585 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
73586 .patterns = &.{
73587 .{ .src = .{ .to_mem, .to_mem, .none } },
73588 },
73589 .call_frame = .{ .alignment = .@"16" },
73590 .extra_temps = .{
73591 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73592 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73593 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
73594 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
73595 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
73596 .{ .type = .i32, .kind = .{ .reg = .eax } },
73597 .{ .type = .u8, .kind = .{ .reg = .cl } },
73598 .{ .type = .u32, .kind = .{ .reg = .edx } },
73599 .unused,
73600 .unused,
73601 .unused,
73602 },
73603 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
73604 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73605 .each = .{ .once = &.{
73606 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
73607 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
73608 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
73609 .{ .@"0:", .v_dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
73610 .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
73611 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
73612 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
73613 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
73614 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
73615 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
73616 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
73617 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
73618 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
73619 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
73620 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
73621 } },
73622 }, .{
73623 .required_features = .{ .sse2, .slow_incdec, null, null },
73624 .src_constraints = .{
73625 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
73626 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
73627 .any,
73628 },
73629 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
73630 .patterns = &.{
73631 .{ .src = .{ .to_mem, .to_mem, .none } },
73632 },
73633 .call_frame = .{ .alignment = .@"16" },
73634 .extra_temps = .{
73635 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73636 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73637 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
73638 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
73639 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
73640 .{ .type = .i32, .kind = .{ .reg = .eax } },
73641 .{ .type = .u8, .kind = .{ .reg = .cl } },
73642 .{ .type = .u32, .kind = .{ .reg = .edx } },
73643 .unused,
73644 .unused,
73645 .unused,
73646 },
73647 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
73648 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73649 .each = .{ .once = &.{
73650 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
73651 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
73652 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
73653 .{ .@"0:", ._dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
73654 .{ ._, ._dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
73655 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
73656 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
73657 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
73658 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
73659 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
73660 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
73661 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
73662 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
73663 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
73664 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
73665 } },
73666 }, .{
73667 .required_features = .{ .sse2, .slow_incdec, null, null },
73668 .src_constraints = .{
73669 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
73670 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
73671 .any,
73672 },
73673 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
73674 .patterns = &.{
73675 .{ .src = .{ .to_mem, .to_mem, .none } },
73676 },
73677 .call_frame = .{ .alignment = .@"16" },
73678 .extra_temps = .{
73679 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73680 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73681 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
73682 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
73683 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
73684 .{ .type = .i32, .kind = .{ .reg = .eax } },
73685 .{ .type = .u8, .kind = .{ .reg = .cl } },
73686 .{ .type = .u32, .kind = .{ .reg = .edx } },
73687 .unused,
73688 .unused,
73689 .unused,
73690 },
73691 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
73692 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73693 .each = .{ .once = &.{
73694 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
73695 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
73696 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
73697 .{ .@"0:", ._dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
73698 .{ ._, ._dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
73699 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
73700 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
73701 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
73702 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
73703 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
73704 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
73705 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
73706 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
73707 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
73708 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
73709 } },
73710 }, .{
73711 .required_features = .{ .sse, .slow_incdec, null, null },
73712 .src_constraints = .{
73713 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
73714 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
73715 .any,
73716 },
73717 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
73718 .patterns = &.{
73719 .{ .src = .{ .to_mem, .to_mem, .none } },
73720 },
73721 .call_frame = .{ .alignment = .@"16" },
73722 .extra_temps = .{
73723 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73724 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73725 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
73726 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
73727 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
73728 .{ .type = .i32, .kind = .{ .reg = .eax } },
73729 .{ .type = .u8, .kind = .{ .reg = .cl } },
73730 .{ .type = .u32, .kind = .{ .reg = .edx } },
73731 .unused,
73732 .unused,
73733 .unused,
73734 },
73735 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
73736 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73737 .each = .{ .once = &.{
73738 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
73739 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
73740 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
73741 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
73742 .{ ._, ._ps, .mova, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
73743 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
73744 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
73745 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
73746 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
73747 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
73748 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
73749 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
73750 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
73751 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
73752 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
73753 } },
73754 }, .{
73755 .required_features = .{ .sse2, .slow_incdec, null, null },
73756 .src_constraints = .{
73757 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
73758 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
73759 .any,
73760 },
73761 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
73762 .patterns = &.{
73763 .{ .src = .{ .to_mem, .to_mem, .none } },
73764 },
73765 .call_frame = .{ .alignment = .@"16" },
73766 .extra_temps = .{
73767 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73768 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73769 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
73770 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
73771 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
73772 .{ .type = .i32, .kind = .{ .reg = .eax } },
73773 .{ .type = .u8, .kind = .{ .reg = .cl } },
73774 .{ .type = .u32, .kind = .{ .reg = .edx } },
73775 .unused,
73776 .unused,
73777 .unused,
73778 },
73779 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
73780 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73781 .each = .{ .once = &.{
73782 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
73783 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
73784 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
73785 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
73786 .{ ._, ._ps, .mova, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
73787 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
73788 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
73789 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
73790 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
73791 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
73792 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
73793 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
73794 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
73795 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
73796 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
73797 } },
73798 }, .{
73799 .required_features = .{ .@"64bit", .avx, .slow_incdec, null },
73800 .src_constraints = .{
73801 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
73802 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
73803 .any,
73804 },
73805 .patterns = &.{
73806 .{ .src = .{ .to_mem, .to_mem, .none } },
73807 },
73808 .call_frame = .{ .alignment = .@"16" },
73809 .extra_temps = .{
73810 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73811 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73812 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
73813 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
73814 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
73815 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
73816 .{ .type = .i32, .kind = .{ .reg = .eax } },
73817 .{ .type = .u8, .kind = .{ .reg = .cl } },
73818 .{ .type = .u64, .kind = .{ .reg = .rdx } },
73819 .unused,
73820 .unused,
73821 },
73822 .dst_temps = .{ .mem, .unused },
73823 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73824 .each = .{ .once = &.{
73825 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
73826 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
73827 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
73828 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
73829 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
73830 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
73831 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
73832 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
73833 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
73834 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
73835 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
73836 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
73837 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
73838 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
73839 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
73840 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
73841 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
73842 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
73843 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
73844 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
73845 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
73846 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
73847 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
73848 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
73849 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
73850 } },
73851 }, .{
73852 .required_features = .{ .@"64bit", .avx, null, null },
73853 .src_constraints = .{
73854 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
73855 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
73856 .any,
73857 },
73858 .patterns = &.{
73859 .{ .src = .{ .to_mem, .to_mem, .none } },
73860 },
73861 .call_frame = .{ .alignment = .@"16" },
73862 .extra_temps = .{
73863 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73864 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73865 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
73866 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
73867 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
73868 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
73869 .{ .type = .i32, .kind = .{ .reg = .eax } },
73870 .{ .type = .u8, .kind = .{ .reg = .cl } },
73871 .{ .type = .u64, .kind = .{ .reg = .rdx } },
73872 .unused,
73873 .unused,
73874 },
73875 .dst_temps = .{ .mem, .unused },
73876 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73877 .each = .{ .once = &.{
73878 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
73879 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
73880 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
73881 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
73882 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
73883 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
73884 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
73885 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
73886 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
73887 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
73888 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
73889 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
73890 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
73891 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
73892 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
73893 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
73894 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
73895 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
73896 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
73897 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
73898 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
73899 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
73900 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
73901 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
73902 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
73903 } },
73904 }, .{
73905 .required_features = .{ .@"64bit", .sse2, .slow_incdec, null },
73906 .src_constraints = .{
73907 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
73908 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
73909 .any,
73910 },
73911 .patterns = &.{
73912 .{ .src = .{ .to_mem, .to_mem, .none } },
73913 },
73914 .call_frame = .{ .alignment = .@"16" },
73915 .extra_temps = .{
73916 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73917 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73918 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
73919 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
73920 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
73921 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
73922 .{ .type = .i32, .kind = .{ .reg = .eax } },
73923 .{ .type = .u8, .kind = .{ .reg = .cl } },
73924 .{ .type = .u64, .kind = .{ .reg = .rdx } },
73925 .unused,
73926 .unused,
73927 },
73928 .dst_temps = .{ .mem, .unused },
73929 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73930 .each = .{ .once = &.{
73931 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
73932 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
73933 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
73934 .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
73935 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
73936 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
73937 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
73938 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
73939 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
73940 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
73941 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
73942 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
73943 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
73944 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
73945 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
73946 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
73947 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
73948 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
73949 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
73950 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
73951 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
73952 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
73953 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
73954 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
73955 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
73956 } },
73957 }, .{
73958 .required_features = .{ .@"64bit", .sse2, null, null },
73959 .src_constraints = .{
73960 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
73961 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
73962 .any,
73963 },
73964 .patterns = &.{
73965 .{ .src = .{ .to_mem, .to_mem, .none } },
73966 },
73967 .call_frame = .{ .alignment = .@"16" },
73968 .extra_temps = .{
73969 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73970 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73971 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
73972 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
73973 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
73974 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
73975 .{ .type = .i32, .kind = .{ .reg = .eax } },
73976 .{ .type = .u8, .kind = .{ .reg = .cl } },
73977 .{ .type = .u64, .kind = .{ .reg = .rdx } },
73978 .unused,
73979 .unused,
73980 },
73981 .dst_temps = .{ .mem, .unused },
73982 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73983 .each = .{ .once = &.{
73984 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
73985 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
73986 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
73987 .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
73988 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
73989 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
73990 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
73991 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
73992 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
73993 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
73994 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
73995 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
73996 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
73997 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
73998 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
73999 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
74000 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
74001 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
74002 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
74003 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
74004 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74005 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
74006 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
74007 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
74008 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
74009 } },
74010 }, .{
74011 .required_features = .{ .@"64bit", .sse, .slow_incdec, null },
74012 .src_constraints = .{
74013 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
74014 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
74015 .any,
74016 },
74017 .patterns = &.{
74018 .{ .src = .{ .to_mem, .to_mem, .none } },
74019 },
74020 .call_frame = .{ .alignment = .@"16" },
74021 .extra_temps = .{
74022 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
74023 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
74024 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
74025 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
74026 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
74027 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
74028 .{ .type = .i32, .kind = .{ .reg = .eax } },
74029 .{ .type = .u8, .kind = .{ .reg = .cl } },
74030 .{ .type = .u64, .kind = .{ .reg = .rdx } },
74031 .unused,
74032 .unused,
74033 },
74034 .dst_temps = .{ .mem, .unused },
74035 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
74036 .each = .{ .once = &.{
74037 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
74038 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
74039 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
74040 .{ .@"0:", ._ps, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
74041 .{ ._, ._ps, .mova, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
74042 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
74043 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
74044 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
74045 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
74046 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
74047 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
74048 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
74049 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
74050 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
74051 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
74052 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
74053 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
74054 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
74055 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
74056 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
74057 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74058 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
74059 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
74060 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
74061 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
74062 } },
74063 }, .{
74064 .required_features = .{ .@"64bit", .sse, null, null },
74065 .src_constraints = .{
74066 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
74067 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
74068 .any,
74069 },
74070 .patterns = &.{
74071 .{ .src = .{ .to_mem, .to_mem, .none } },
74072 },
74073 .call_frame = .{ .alignment = .@"16" },
74074 .extra_temps = .{
74075 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
74076 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
74077 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
74078 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
74079 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
74080 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
74081 .{ .type = .i32, .kind = .{ .reg = .eax } },
74082 .{ .type = .u8, .kind = .{ .reg = .cl } },
74083 .{ .type = .u64, .kind = .{ .reg = .rdx } },
74084 .unused,
74085 .unused,
74086 },
74087 .dst_temps = .{ .mem, .unused },
74088 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
74089 .each = .{ .once = &.{
74090 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
74091 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
74092 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
74093 .{ .@"0:", ._ps, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
74094 .{ ._, ._ps, .mova, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
74095 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
74096 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
74097 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
74098 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
74099 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
74100 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
74101 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
74102 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
74103 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
74104 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
74105 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
74106 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
74107 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
74108 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
74109 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
74110 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74111 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
74112 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
74113 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
74114 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
74115 } },
74116 } },
74117 });
74118 },
74119 .eq, .neq => |cmp_op| cg.select(&res, &.{ty_pl.ty.toType()}, &ops, switch (@as(Condition, switch (cmp_op) {
74120 else => unreachable,
74121 .eq => .e,
74122 .neq => .ne,
74123 })) {
74124 else => unreachable,
74125 inline .e, .ne => |cc| comptime &.{ .{
74126 .src_constraints = .{ .{ .bool_vec = .byte }, .{ .bool_vec = .byte }, .any },
74127 .patterns = &.{
74128 .{ .src = .{ .mut_mem, .imm8, .none } },
74129 .{ .src = .{ .imm8, .mut_mem, .none }, .commute = .{ 0, 1 } },
74130 .{ .src = .{ .to_mut_gpr, .imm8, .none } },
74131 .{ .src = .{ .imm8, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
74132 .{ .src = .{ .mut_mem, .to_gpr, .none } },
74133 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
74134 .{ .src = .{ .to_mut_gpr, .mem, .none } },
74135 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
74136 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
74137 },
74138 .dst_temps = .{ .{ .ref = .src0 }, .unused },
74139 .clobbers = .{ .eflags = true },
74140 .each = .{ .once = switch (cc) {
74141 else => unreachable,
74142 .e => &.{
74143 .{ ._, ._, .xor, .dst0b, .src1b, ._, ._ },
74144 .{ ._, ._, .not, .dst0b, ._, ._, ._ },
74145 },
74146 .ne => &.{
74147 .{ ._, ._, .xor, .dst0b, .src1b, ._, ._ },
74148 },
74149 } },
74150 }, .{
74151 .src_constraints = .{ .{ .bool_vec = .word }, .{ .bool_vec = .word }, .any },
74152 .patterns = &.{
74153 .{ .src = .{ .mut_mem, .imm16, .none } },
74154 .{ .src = .{ .imm16, .mut_mem, .none }, .commute = .{ 0, 1 } },
74155 .{ .src = .{ .to_mut_gpr, .imm16, .none } },
74156 .{ .src = .{ .imm16, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
74157 .{ .src = .{ .mut_mem, .to_gpr, .none } },
74158 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
74159 .{ .src = .{ .to_mut_gpr, .mem, .none } },
74160 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
74161 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
74162 },
74163 .dst_temps = .{ .{ .ref = .src0 }, .unused },
74164 .clobbers = .{ .eflags = true },
74165 .each = .{ .once = switch (cc) {
74166 else => unreachable,
74167 .e => &.{
74168 .{ ._, ._, .xor, .dst0w, .src1w, ._, ._ },
74169 .{ ._, ._, .not, .dst0w, ._, ._, ._ },
74170 },
74171 .ne => &.{
74172 .{ ._, ._, .xor, .dst0w, .src1w, ._, ._ },
74173 },
74174 } },
74175 }, .{
74176 .src_constraints = .{ .{ .bool_vec = .dword }, .{ .bool_vec = .dword }, .any },
74177 .patterns = &.{
74178 .{ .src = .{ .mut_mem, .imm32, .none } },
74179 .{ .src = .{ .imm32, .mut_mem, .none }, .commute = .{ 0, 1 } },
74180 .{ .src = .{ .to_mut_gpr, .imm32, .none } },
74181 .{ .src = .{ .imm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
74182 .{ .src = .{ .mut_mem, .to_gpr, .none } },
74183 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
74184 .{ .src = .{ .to_mut_gpr, .mem, .none } },
74185 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
74186 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
74187 },
74188 .dst_temps = .{ .{ .ref = .src0 }, .unused },
74189 .clobbers = .{ .eflags = true },
74190 .each = .{ .once = switch (cc) {
74191 else => unreachable,
74192 .e => &.{
74193 .{ ._, ._, .xor, .dst0d, .src1d, ._, ._ },
74194 .{ ._, ._, .not, .dst0d, ._, ._, ._ },
74195 },
74196 .ne => &.{
74197 .{ ._, ._, .xor, .dst0d, .src1d, ._, ._ },
74198 },
74199 } },
74200 }, .{
74201 .required_features = .{ .@"64bit", null, null, null },
74202 .src_constraints = .{ .{ .bool_vec = .qword }, .{ .bool_vec = .qword }, .any },
74203 .patterns = &.{
74204 .{ .src = .{ .mut_mem, .simm32, .none } },
74205 .{ .src = .{ .simm32, .mut_mem, .none }, .commute = .{ 0, 1 } },
74206 .{ .src = .{ .to_mut_gpr, .simm32, .none } },
74207 .{ .src = .{ .simm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
74208 .{ .src = .{ .mut_mem, .to_gpr, .none } },
74209 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
74210 .{ .src = .{ .to_mut_gpr, .mem, .none } },
74211 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
74212 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
74213 },
74214 .dst_temps = .{ .{ .ref = .src0 }, .unused },
74215 .clobbers = .{ .eflags = true },
74216 .each = .{ .once = switch (cc) {
74217 else => unreachable,
74218 .e => &.{
74219 .{ ._, ._, .xor, .dst0q, .src1q, ._, ._ },
74220 .{ ._, ._, .not, .dst0q, ._, ._, ._ },
74221 },
74222 .ne => &.{
74223 .{ ._, ._, .xor, .dst0q, .src1q, ._, ._ },
74224 },
74225 } },
74226 }, .{
74227 .src_constraints = .{ .any_bool_vec, .any_bool_vec, .any },
74228 .patterns = &.{
74229 .{ .src = .{ .to_mem, .to_mem, .none } },
74230 },
74231 .extra_temps = .{
74232 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
74233 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
74234 .unused,
74235 .unused,
74236 .unused,
74237 .unused,
74238 .unused,
74239 .unused,
74240 .unused,
74241 .unused,
74242 .unused,
74243 },
74244 .dst_temps = .{ .mem, .unused },
74245 .clobbers = .{ .eflags = true },
74246 .each = .{ .once = switch (cc) {
74247 else => unreachable,
74248 .e => &.{
74249 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
74250 .{ .@"0:", ._, .mov, .tmp1p, .memia(.src0p, .tmp0, .add_size), ._, ._ },
74251 .{ ._, ._, .xor, .tmp1p, .memia(.src1p, .tmp0, .add_size), ._, ._ },
74252 .{ ._, ._, .not, .tmp1p, ._, ._, ._ },
74253 .{ ._, ._, .mov, .memia(.dst0p, .tmp0, .add_size), .tmp1p, ._, ._ },
74254 .{ ._, ._, .add, .tmp0p, .sa(.tmp1, .add_size), ._, ._ },
74255 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74256 },
74257 .ne => &.{
74258 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
74259 .{ .@"0:", ._, .mov, .tmp1p, .memia(.src0p, .tmp0, .add_size), ._, ._ },
74260 .{ ._, ._, .xor, .tmp1p, .memia(.src1p, .tmp0, .add_size), ._, ._ },
74261 .{ ._, ._, .mov, .memia(.dst0p, .tmp0, .add_size), .tmp1p, ._, ._ },
74262 .{ ._, ._, .add, .tmp0p, .sa(.tmp1, .add_size), ._, ._ },
74263 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74264 },
74265 } },
74266 }, .{
74267 .required_features = .{ .avx, null, null, null },
74268 .src_constraints = .{
74269 .{ .scalar_int = .{ .of = .xword, .is = .byte } },
74270 .{ .scalar_int = .{ .of = .xword, .is = .byte } },
74271 .any,
74272 },
74273 .patterns = &.{
74274 .{ .src = .{ .to_sse, .mem, .none } },
74275 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
74276 .{ .src = .{ .to_sse, .to_sse, .none } },
74277 },
74278 .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
74279 .kind = .all,
74280 .inverted = switch (cc) {
74281 else => unreachable,
74282 .e => false,
74283 .ne => true,
74284 },
74285 .scalar = .byte,
74286 } } }, .unused },
74287 .each = .{ .once = &.{
74288 .{ ._, .vp_b, .cmpeq, .dst0x, .src0x, .src1x, ._ },
74289 } },
74290 }, .{
74291 .required_features = .{ .avx, null, null, null },
74292 .src_constraints = .{
74293 .{ .scalar_int = .{ .of = .xword, .is = .word } },
74294 .{ .scalar_int = .{ .of = .xword, .is = .word } },
74295 .any,
74296 },
74297 .patterns = &.{
74298 .{ .src = .{ .to_sse, .mem, .none } },
74299 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
74300 .{ .src = .{ .to_sse, .to_sse, .none } },
74301 },
74302 .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
74303 .kind = .all,
74304 .inverted = switch (cc) {
74305 else => unreachable,
74306 .e => false,
74307 .ne => true,
74308 },
74309 .scalar = .word,
74310 } } }, .unused },
74311 .each = .{ .once = &.{
74312 .{ ._, .vp_w, .cmpeq, .dst0x, .src0x, .src1x, ._ },
74313 } },
74314 }, .{
74315 .required_features = .{ .avx, null, null, null },
74316 .src_constraints = .{
74317 .{ .scalar_int = .{ .of = .xword, .is = .dword } },
74318 .{ .scalar_int = .{ .of = .xword, .is = .dword } },
74319 .any,
74320 },
74321 .patterns = &.{
74322 .{ .src = .{ .to_sse, .mem, .none } },
74323 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
74324 .{ .src = .{ .to_sse, .to_sse, .none } },
74325 },
74326 .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
74327 .kind = .all,
74328 .inverted = switch (cc) {
74329 else => unreachable,
74330 .e => false,
74331 .ne => true,
74332 },
74333 .scalar = .dword,
74334 } } }, .unused },
74335 .each = .{ .once = &.{
74336 .{ ._, .vp_d, .cmpeq, .dst0x, .src0x, .src1x, ._ },
74337 } },
74338 }, .{
74339 .required_features = .{ .avx, null, null, null },
74340 .src_constraints = .{
74341 .{ .scalar_int = .{ .of = .xword, .is = .qword } },
74342 .{ .scalar_int = .{ .of = .xword, .is = .qword } },
74343 .any,
74344 },
74345 .patterns = &.{
74346 .{ .src = .{ .to_sse, .mem, .none } },
74347 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
74348 .{ .src = .{ .to_sse, .to_sse, .none } },
74349 },
74350 .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
74351 .kind = .all,
74352 .inverted = switch (cc) {
74353 else => unreachable,
74354 .e => false,
74355 .ne => true,
74356 },
74357 .scalar = .qword,
74358 } } }, .unused },
74359 .each = .{ .once = &.{
74360 .{ ._, .vp_q, .cmpeq, .dst0x, .src0x, .src1x, ._ },
74361 } },
74362 }, .{
74363 .required_features = .{ .sse2, null, null, null },
74364 .src_constraints = .{
74365 .{ .scalar_int = .{ .of = .xword, .is = .byte } },
74366 .{ .scalar_int = .{ .of = .xword, .is = .byte } },
74367 .any,
74368 },
74369 .patterns = &.{
74370 .{ .src = .{ .to_mut_sse, .mem, .none } },
74371 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
74372 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
74373 },
74374 .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{
74375 .kind = .all,
74376 .inverted = switch (cc) {
74377 else => unreachable,
74378 .e => false,
74379 .ne => true,
74380 },
74381 .scalar = .byte,
74382 } } }, .unused },
74383 .each = .{ .once = &.{
74384 .{ ._, .p_b, .cmpeq, .dst0x, .src1x, ._, ._ },
74385 } },
74386 }, .{
74387 .required_features = .{ .sse2, null, null, null },
74388 .src_constraints = .{
74389 .{ .scalar_int = .{ .of = .xword, .is = .word } },
74390 .{ .scalar_int = .{ .of = .xword, .is = .word } },
74391 .any,
74392 },
74393 .patterns = &.{
74394 .{ .src = .{ .to_mut_sse, .mem, .none } },
74395 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
74396 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
74397 },
74398 .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{
74399 .kind = .all,
74400 .inverted = switch (cc) {
74401 else => unreachable,
74402 .e => false,
74403 .ne => true,
74404 },
74405 .scalar = .word,
74406 } } }, .unused },
74407 .each = .{ .once = &.{
74408 .{ ._, .p_w, .cmpeq, .dst0x, .src1x, ._, ._ },
74409 } },
74410 }, .{
74411 .required_features = .{ .sse2, null, null, null },
74412 .src_constraints = .{
74413 .{ .scalar_int = .{ .of = .xword, .is = .dword } },
74414 .{ .scalar_int = .{ .of = .xword, .is = .dword } },
74415 .any,
74416 },
74417 .patterns = &.{
74418 .{ .src = .{ .to_mut_sse, .mem, .none } },
74419 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
74420 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
74421 },
74422 .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{
74423 .kind = .all,
74424 .inverted = switch (cc) {
74425 else => unreachable,
74426 .e => false,
74427 .ne => true,
74428 },
74429 .scalar = .dword,
74430 } } }, .unused },
74431 .each = .{ .once = &.{
74432 .{ ._, .p_d, .cmpeq, .dst0x, .src1x, ._, ._ },
74433 } },
74434 }, .{
74435 .required_features = .{ .sse4_1, null, null, null },
74436 .src_constraints = .{
74437 .{ .scalar_int = .{ .of = .xword, .is = .qword } },
74438 .{ .scalar_int = .{ .of = .xword, .is = .qword } },
74439 .any,
74440 },
74441 .patterns = &.{
74442 .{ .src = .{ .to_mut_sse, .mem, .none } },
74443 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
74444 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
74445 },
74446 .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{
74447 .kind = .all,
74448 .inverted = switch (cc) {
74449 else => unreachable,
74450 .e => false,
74451 .ne => true,
74452 },
74453 .scalar = .qword,
74454 } } }, .unused },
74455 .each = .{ .once = &.{
74456 .{ ._, .p_q, .cmpeq, .dst0x, .src1x, ._, ._ },
74457 } },
74458 }, .{
74459 .required_features = .{ .mmx, null, null, null },
74460 .src_constraints = .{
74461 .{ .scalar_int = .{ .of = .qword, .is = .byte } },
74462 .{ .scalar_int = .{ .of = .qword, .is = .byte } },
74463 .any,
74464 },
74465 .patterns = &.{
74466 .{ .src = .{ .to_mut_mmx, .mem, .none } },
74467 .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } },
74468 .{ .src = .{ .to_mut_mmx, .to_mmx, .none } },
74469 },
74470 .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{
74471 .kind = .all,
74472 .inverted = switch (cc) {
74473 else => unreachable,
74474 .e => false,
74475 .ne => true,
74476 },
74477 .scalar = .byte,
74478 } } }, .unused },
74479 .each = .{ .once = &.{
74480 .{ ._, .p_b, .cmpeq, .dst0q, .src1q, ._, ._ },
74481 } },
74482 }, .{
74483 .required_features = .{ .mmx, null, null, null },
74484 .src_constraints = .{
74485 .{ .scalar_int = .{ .of = .qword, .is = .word } },
74486 .{ .scalar_int = .{ .of = .qword, .is = .word } },
74487 .any,
74488 },
74489 .patterns = &.{
74490 .{ .src = .{ .to_mut_mmx, .mem, .none } },
74491 .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } },
74492 .{ .src = .{ .to_mut_mmx, .to_mmx, .none } },
74493 },
74494 .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{
74495 .kind = .all,
74496 .inverted = switch (cc) {
74497 else => unreachable,
74498 .e => false,
74499 .ne => true,
74500 },
74501 .scalar = .word,
74502 } } }, .unused },
74503 .each = .{ .once = &.{
74504 .{ ._, .p_w, .cmpeq, .dst0q, .src1q, ._, ._ },
74505 } },
74506 }, .{
74507 .required_features = .{ .mmx, null, null, null },
74508 .src_constraints = .{
74509 .{ .scalar_int = .{ .of = .qword, .is = .dword } },
74510 .{ .scalar_int = .{ .of = .qword, .is = .dword } },
74511 .any,
74512 },
74513 .patterns = &.{
74514 .{ .src = .{ .to_mut_mmx, .mem, .none } },
74515 .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } },
74516 .{ .src = .{ .to_mut_mmx, .to_mmx, .none } },
74517 },
74518 .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{
74519 .kind = .all,
74520 .inverted = switch (cc) {
74521 else => unreachable,
74522 .e => false,
74523 .ne => true,
74524 },
74525 .scalar = .dword,
74526 } } }, .unused },
74527 .each = .{ .once = &.{
74528 .{ ._, .p_d, .cmpeq, .dst0q, .src1q, ._, ._ },
74529 } },
74530 }, .{
74531 .required_features = .{ .avx2, null, null, null },
74532 .src_constraints = .{
74533 .{ .scalar_int = .{ .of = .yword, .is = .byte } },
74534 .{ .scalar_int = .{ .of = .yword, .is = .byte } },
74535 .any,
74536 },
74537 .patterns = &.{
74538 .{ .src = .{ .to_sse, .mem, .none } },
74539 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
74540 .{ .src = .{ .to_sse, .to_sse, .none } },
74541 },
74542 .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
74543 .kind = .all,
74544 .inverted = switch (cc) {
74545 else => unreachable,
74546 .e => false,
74547 .ne => true,
74548 },
74549 .scalar = .byte,
74550 } } }, .unused },
74551 .each = .{ .once = &.{
74552 .{ ._, .vp_b, .cmpeq, .dst0y, .src0y, .src1y, ._ },
74553 } },
74554 }, .{
74555 .required_features = .{ .avx2, null, null, null },
74556 .src_constraints = .{
74557 .{ .scalar_int = .{ .of = .yword, .is = .word } },
74558 .{ .scalar_int = .{ .of = .yword, .is = .word } },
74559 .any,
74560 },
74561 .patterns = &.{
74562 .{ .src = .{ .to_sse, .mem, .none } },
74563 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
74564 .{ .src = .{ .to_sse, .to_sse, .none } },
74565 },
74566 .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
74567 .kind = .all,
74568 .inverted = switch (cc) {
74569 else => unreachable,
74570 .e => false,
74571 .ne => true,
74572 },
74573 .scalar = .word,
74574 } } }, .unused },
74575 .each = .{ .once = &.{
74576 .{ ._, .vp_w, .cmpeq, .dst0y, .src0y, .src1y, ._ },
74577 } },
74578 }, .{
74579 .required_features = .{ .avx2, null, null, null },
74580 .src_constraints = .{
74581 .{ .scalar_int = .{ .of = .yword, .is = .dword } },
74582 .{ .scalar_int = .{ .of = .yword, .is = .dword } },
74583 .any,
74584 },
74585 .patterns = &.{
74586 .{ .src = .{ .to_sse, .mem, .none } },
74587 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
74588 .{ .src = .{ .to_sse, .to_sse, .none } },
74589 },
74590 .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
74591 .kind = .all,
74592 .inverted = switch (cc) {
74593 else => unreachable,
74594 .e => false,
74595 .ne => true,
74596 },
74597 .scalar = .dword,
74598 } } }, .unused },
74599 .each = .{ .once = &.{
74600 .{ ._, .vp_d, .cmpeq, .dst0y, .src0y, .src1y, ._ },
74601 } },
74602 }, .{
74603 .required_features = .{ .avx2, null, null, null },
74604 .src_constraints = .{
74605 .{ .scalar_int = .{ .of = .yword, .is = .qword } },
74606 .{ .scalar_int = .{ .of = .yword, .is = .qword } },
74607 .any,
74608 },
74609 .patterns = &.{
74610 .{ .src = .{ .to_sse, .mem, .none } },
74611 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
74612 .{ .src = .{ .to_sse, .to_sse, .none } },
74613 },
74614 .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
74615 .kind = .all,
74616 .inverted = switch (cc) {
74617 else => unreachable,
74618 .e => false,
74619 .ne => true,
74620 },
74621 .scalar = .qword,
74622 } } }, .unused },
74623 .each = .{ .once = &.{
74624 .{ ._, .vp_q, .cmpeq, .dst0y, .src0y, .src1y, ._ },
74625 } },
74626 }, .{
74627 .required_features = .{ .avx2, null, null, null },
74628 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
74629 .patterns = &.{
74630 .{ .src = .{ .to_mem, .to_mem, .none } },
74631 },
74632 .extra_temps = .{
74633 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
74634 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
74635 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
74636 .{ .kind = .{ .rc = .sse } },
74637 .unused,
74638 .unused,
74639 .unused,
74640 .unused,
74641 .unused,
74642 .unused,
74643 .unused,
74644 },
74645 .dst_temps = .{ .mem, .unused },
74646 .clobbers = .{ .eflags = true },
74647 .each = .{ .once = switch (cc) {
74648 else => unreachable,
74649 .e => &.{
74650 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
74651 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
74652 .{ .@"0:", .v_dqu, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
74653 .{ ._, .vp_b, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },
74654 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },
74655 .{ ._, ._, .mov, .memi(.dst0d, .tmp1), .tmp2d, ._, ._ },
74656 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
74657 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
74658 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74659 },
74660 .ne => &.{
74661 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
74662 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
74663 .{ .@"0:", .v_dqu, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
74664 .{ ._, .vp_b, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },
74665 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },
74666 .{ ._, ._, .not, .tmp2d, ._, ._, ._ },
74667 .{ ._, ._, .mov, .memi(.dst0d, .tmp1), .tmp2d, ._, ._ },
74668 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
74669 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
74670 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74671 },
74672 } },
74673 }, .{
74674 .required_features = .{ .avx2, null, null, null },
74675 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
74676 .patterns = &.{
74677 .{ .src = .{ .to_mem, .to_mem, .none } },
74678 },
74679 .extra_temps = .{
74680 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
74681 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
74682 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
74683 .{ .kind = .{ .rc = .sse } },
74684 .unused,
74685 .unused,
74686 .unused,
74687 .unused,
74688 .unused,
74689 .unused,
74690 .unused,
74691 },
74692 .dst_temps = .{ .mem, .unused },
74693 .clobbers = .{ .eflags = true },
74694 .each = .{ .once = switch (cc) {
74695 else => unreachable,
74696 .e => &.{
74697 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
74698 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
74699 .{ .@"0:", .v_dqu, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
74700 .{ ._, .vp_w, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },
74701 .{ ._, .vp_b, .ackssw, .tmp3y, .tmp3y, .tmp3y, ._ },
74702 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },
74703 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
74704 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
74705 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
74706 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74707 },
74708 .ne => &.{
74709 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
74710 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
74711 .{ .@"0:", .v_dqu, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
74712 .{ ._, .vp_w, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },
74713 .{ ._, .vp_b, .ackssw, .tmp3y, .tmp3y, .tmp3y, ._ },
74714 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },
74715 .{ ._, ._, .not, .tmp2d, ._, ._, ._ },
74716 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
74717 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
74718 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
74719 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74720 },
74721 } },
74722 }, .{
74723 .required_features = .{ .avx2, null, null, null },
74724 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
74725 .patterns = &.{
74726 .{ .src = .{ .to_mem, .to_mem, .none } },
74727 },
74728 .extra_temps = .{
74729 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
74730 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
74731 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
74732 .{ .kind = .{ .rc = .sse } },
74733 .unused,
74734 .unused,
74735 .unused,
74736 .unused,
74737 .unused,
74738 .unused,
74739 .unused,
74740 },
74741 .dst_temps = .{ .mem, .unused },
74742 .clobbers = .{ .eflags = true },
74743 .each = .{ .once = switch (cc) {
74744 else => unreachable,
74745 .e => &.{
74746 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
74747 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
74748 .{ .@"0:", .v_dqu, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
74749 .{ ._, .vp_d, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },
74750 .{ ._, .v_ps, .movmsk, .tmp2d, .tmp3y, ._, ._ },
74751 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
74752 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
74753 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
74754 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74755 },
74756 .ne => &.{
74757 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
74758 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
74759 .{ .@"0:", .v_dqu, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
74760 .{ ._, .vp_d, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },
74761 .{ ._, .v_ps, .movmsk, .tmp2d, .tmp3y, ._, ._ },
74762 .{ ._, ._, .not, .tmp2b, ._, ._, ._ },
74763 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
74764 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
74765 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
74766 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74767 },
74768 } },
74769 }, .{
74770 .required_features = .{ .avx2, null, null, null },
74771 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
74772 .patterns = &.{
74773 .{ .src = .{ .to_mem, .to_mem, .none } },
74774 },
74775 .extra_temps = .{
74776 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
74777 .{ .type = .u32, .kind = .{ .reg = .rcx } },
74778 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
74779 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
74780 .{ .kind = .{ .rc = .sse } },
74781 .unused,
74782 .unused,
74783 .unused,
74784 .unused,
74785 .unused,
74786 .unused,
74787 },
74788 .dst_temps = .{ .mem, .unused },
74789 .clobbers = .{ .eflags = true },
74790 .each = .{ .once = switch (cc) {
74791 else => unreachable,
74792 .e => &.{
74793 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
74794 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
74795 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
74796 .{ .@"0:", .v_dqu, .mov, .tmp4y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
74797 .{ ._, .vp_q, .cmpeq, .tmp4y, .tmp4y, .memia(.src1y, .tmp0, .add_size), ._ },
74798 .{ ._, .v_pd, .movmsk, .tmp3d, .tmp4y, ._, ._ },
74799 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
74800 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
74801 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
74802 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
74803 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
74804 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
74805 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
74806 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
74807 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
74808 .{ .@"1:", ._, .add, .tmp0p, .si(32), ._, ._ },
74809 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74810 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
74811 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
74812 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
74813 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
74814 },
74815 .ne => &.{
74816 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
74817 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
74818 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
74819 .{ .@"0:", .v_dqu, .mov, .tmp4y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
74820 .{ ._, .vp_q, .cmpeq, .tmp4y, .tmp4y, .memia(.src1y, .tmp0, .add_size), ._ },
74821 .{ ._, .v_pd, .movmsk, .tmp3d, .tmp4y, ._, ._ },
74822 .{ ._, ._, .xor, .tmp3b, .si(0b1111), ._, ._ },
74823 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
74824 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
74825 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
74826 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
74827 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
74828 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
74829 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
74830 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
74831 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
74832 .{ .@"1:", ._, .add, .tmp0p, .si(32), ._, ._ },
74833 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74834 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
74835 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
74836 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
74837 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
74838 },
74839 } },
74840 }, .{
74841 .required_features = .{ .avx, null, null, null },
74842 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
74843 .patterns = &.{
74844 .{ .src = .{ .to_mem, .to_mem, .none } },
74845 },
74846 .extra_temps = .{
74847 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
74848 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
74849 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
74850 .{ .kind = .{ .rc = .sse } },
74851 .unused,
74852 .unused,
74853 .unused,
74854 .unused,
74855 .unused,
74856 .unused,
74857 .unused,
74858 },
74859 .dst_temps = .{ .mem, .unused },
74860 .clobbers = .{ .eflags = true },
74861 .each = .{ .once = switch (cc) {
74862 else => unreachable,
74863 .e => &.{
74864 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
74865 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
74866 .{ .@"0:", .v_dqu, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
74867 .{ ._, .vp_b, .cmpeq, .tmp3x, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._ },
74868 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
74869 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
74870 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
74871 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
74872 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74873 },
74874 .ne => &.{
74875 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
74876 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
74877 .{ .@"0:", .v_dqu, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
74878 .{ ._, .vp_b, .cmpeq, .tmp3x, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._ },
74879 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
74880 .{ ._, ._, .not, .tmp2d, ._, ._, ._ },
74881 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
74882 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
74883 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
74884 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74885 },
74886 } },
74887 }, .{
74888 .required_features = .{ .avx, null, null, null },
74889 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
74890 .patterns = &.{
74891 .{ .src = .{ .to_mem, .to_mem, .none } },
74892 },
74893 .extra_temps = .{
74894 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
74895 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
74896 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
74897 .{ .kind = .{ .rc = .sse } },
74898 .unused,
74899 .unused,
74900 .unused,
74901 .unused,
74902 .unused,
74903 .unused,
74904 .unused,
74905 },
74906 .dst_temps = .{ .mem, .unused },
74907 .clobbers = .{ .eflags = true },
74908 .each = .{ .once = switch (cc) {
74909 else => unreachable,
74910 .e => &.{
74911 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
74912 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
74913 .{ .@"0:", .v_dqu, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
74914 .{ ._, .vp_w, .cmpeq, .tmp3x, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._ },
74915 .{ ._, .vp_b, .ackssw, .tmp3x, .tmp3x, .tmp3x, ._ },
74916 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
74917 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
74918 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
74919 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
74920 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74921 },
74922 .ne => &.{
74923 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
74924 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
74925 .{ .@"0:", .v_dqu, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
74926 .{ ._, .vp_w, .cmpeq, .tmp3x, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._ },
74927 .{ ._, .vp_b, .ackssw, .tmp3x, .tmp3x, .tmp3x, ._ },
74928 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
74929 .{ ._, ._, .not, .tmp2b, ._, ._, ._ },
74930 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
74931 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
74932 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
74933 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74934 },
74935 } },
74936 }, .{
74937 .required_features = .{ .avx, null, null, null },
74938 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
74939 .patterns = &.{
74940 .{ .src = .{ .to_mem, .to_mem, .none } },
74941 },
74942 .extra_temps = .{
74943 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
74944 .{ .type = .u32, .kind = .{ .reg = .rcx } },
74945 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
74946 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
74947 .{ .kind = .{ .rc = .sse } },
74948 .unused,
74949 .unused,
74950 .unused,
74951 .unused,
74952 .unused,
74953 .unused,
74954 },
74955 .dst_temps = .{ .mem, .unused },
74956 .clobbers = .{ .eflags = true },
74957 .each = .{ .once = switch (cc) {
74958 else => unreachable,
74959 .e => &.{
74960 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
74961 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
74962 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
74963 .{ .@"0:", .v_dqu, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
74964 .{ ._, .vp_d, .cmpeq, .tmp4x, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._ },
74965 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp4x, ._, ._ },
74966 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
74967 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
74968 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
74969 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
74970 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
74971 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
74972 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
74973 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
74974 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
74975 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
74976 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74977 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
74978 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
74979 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
74980 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
74981 },
74982 .ne => &.{
74983 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
74984 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
74985 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
74986 .{ .@"0:", .v_dqu, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
74987 .{ ._, .vp_d, .cmpeq, .tmp4x, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._ },
74988 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp4x, ._, ._ },
74989 .{ ._, ._, .xor, .tmp3b, .si(0b1111), ._, ._ },
74990 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
74991 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
74992 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
74993 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
74994 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
74995 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
74996 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
74997 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
74998 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
74999 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
75000 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75001 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
75002 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
75003 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
75004 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
75005 },
75006 } },
75007 }, .{
75008 .required_features = .{ .avx, null, null, null },
75009 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
75010 .patterns = &.{
75011 .{ .src = .{ .to_mem, .to_mem, .none } },
75012 },
75013 .extra_temps = .{
75014 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75015 .{ .type = .u32, .kind = .{ .reg = .rcx } },
75016 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
75017 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
75018 .{ .kind = .{ .rc = .sse } },
75019 .unused,
75020 .unused,
75021 .unused,
75022 .unused,
75023 .unused,
75024 .unused,
75025 },
75026 .dst_temps = .{ .mem, .unused },
75027 .clobbers = .{ .eflags = true },
75028 .each = .{ .once = switch (cc) {
75029 else => unreachable,
75030 .e => &.{
75031 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75032 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
75033 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
75034 .{ .@"0:", .v_dqu, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
75035 .{ ._, .vp_q, .cmpeq, .tmp4x, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._ },
75036 .{ ._, .v_pd, .movmsk, .tmp3d, .tmp4x, ._, ._ },
75037 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
75038 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
75039 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
75040 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
75041 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
75042 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
75043 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
75044 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
75045 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
75046 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
75047 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75048 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
75049 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
75050 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
75051 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
75052 },
75053 .ne => &.{
75054 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75055 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
75056 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
75057 .{ .@"0:", .v_dqu, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
75058 .{ ._, .vp_q, .cmpeq, .tmp4x, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._ },
75059 .{ ._, .v_pd, .movmsk, .tmp3d, .tmp4x, ._, ._ },
75060 .{ ._, ._, .xor, .tmp3b, .si(0b11), ._, ._ },
75061 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
75062 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
75063 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
75064 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
75065 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
75066 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
75067 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
75068 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
75069 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
75070 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
75071 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75072 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
75073 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
75074 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
75075 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
75076 },
75077 } },
75078 }, .{
75079 .required_features = .{ .sse2, null, null, null },
75080 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
75081 .patterns = &.{
75082 .{ .src = .{ .to_mem, .to_mem, .none } },
75083 },
75084 .extra_temps = .{
75085 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75086 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
75087 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
75088 .{ .kind = .{ .rc = .sse } },
75089 .unused,
75090 .unused,
75091 .unused,
75092 .unused,
75093 .unused,
75094 .unused,
75095 .unused,
75096 },
75097 .dst_temps = .{ .mem, .unused },
75098 .clobbers = .{ .eflags = true },
75099 .each = .{ .once = switch (cc) {
75100 else => unreachable,
75101 .e => &.{
75102 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75103 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
75104 .{ .@"0:", ._dqu, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
75105 .{ ._, .p_b, .cmpeq, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
75106 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
75107 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
75108 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
75109 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
75110 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75111 },
75112 .ne => &.{
75113 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75114 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
75115 .{ .@"0:", ._dqu, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
75116 .{ ._, .p_b, .cmpeq, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
75117 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
75118 .{ ._, ._, .not, .tmp2d, ._, ._, ._ },
75119 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
75120 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
75121 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
75122 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75123 },
75124 } },
75125 }, .{
75126 .required_features = .{ .sse2, null, null, null },
75127 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
75128 .patterns = &.{
75129 .{ .src = .{ .to_mem, .to_mem, .none } },
75130 },
75131 .extra_temps = .{
75132 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75133 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
75134 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
75135 .{ .kind = .{ .rc = .sse } },
75136 .unused,
75137 .unused,
75138 .unused,
75139 .unused,
75140 .unused,
75141 .unused,
75142 .unused,
75143 },
75144 .dst_temps = .{ .mem, .unused },
75145 .clobbers = .{ .eflags = true },
75146 .each = .{ .once = switch (cc) {
75147 else => unreachable,
75148 .e => &.{
75149 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75150 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
75151 .{ .@"0:", ._dqu, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
75152 .{ ._, .p_w, .cmpeq, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
75153 .{ ._, .p_b, .ackssw, .tmp3x, .tmp3x, ._, ._ },
75154 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
75155 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
75156 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
75157 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
75158 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75159 },
75160 .ne => &.{
75161 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75162 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
75163 .{ .@"0:", ._dqu, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
75164 .{ ._, .p_w, .cmpeq, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
75165 .{ ._, .p_b, .ackssw, .tmp3x, .tmp3x, ._, ._ },
75166 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
75167 .{ ._, ._, .not, .tmp2b, ._, ._, ._ },
75168 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
75169 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
75170 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
75171 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75172 },
75173 } },
75174 }, .{
75175 .required_features = .{ .sse2, null, null, null },
75176 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
75177 .patterns = &.{
75178 .{ .src = .{ .to_mem, .to_mem, .none } },
75179 },
75180 .extra_temps = .{
75181 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75182 .{ .type = .u32, .kind = .{ .reg = .rcx } },
75183 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
75184 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
75185 .{ .kind = .{ .rc = .sse } },
75186 .unused,
75187 .unused,
75188 .unused,
75189 .unused,
75190 .unused,
75191 .unused,
75192 },
75193 .dst_temps = .{ .mem, .unused },
75194 .clobbers = .{ .eflags = true },
75195 .each = .{ .once = switch (cc) {
75196 else => unreachable,
75197 .e => &.{
75198 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75199 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
75200 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
75201 .{ .@"0:", ._dqu, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
75202 .{ ._, .p_d, .cmpeq, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
75203 .{ ._, ._ps, .movmsk, .tmp3d, .tmp4x, ._, ._ },
75204 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
75205 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
75206 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
75207 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
75208 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
75209 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
75210 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
75211 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
75212 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
75213 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
75214 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75215 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
75216 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
75217 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
75218 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
75219 },
75220 .ne => &.{
75221 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75222 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
75223 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
75224 .{ .@"0:", ._dqu, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
75225 .{ ._, .p_d, .cmpeq, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
75226 .{ ._, ._ps, .movmsk, .tmp3d, .tmp4x, ._, ._ },
75227 .{ ._, ._, .xor, .tmp3b, .si(0b1111), ._, ._ },
75228 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
75229 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
75230 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
75231 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
75232 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
75233 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
75234 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
75235 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
75236 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
75237 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
75238 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75239 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
75240 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
75241 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
75242 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
75243 },
75244 } },
75245 }, .{
75246 .required_features = .{ .sse4_1, null, null, null },
75247 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
75248 .patterns = &.{
75249 .{ .src = .{ .to_mem, .to_mem, .none } },
75250 },
75251 .extra_temps = .{
75252 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75253 .{ .type = .u32, .kind = .{ .reg = .rcx } },
75254 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
75255 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
75256 .{ .kind = .{ .rc = .sse } },
75257 .unused,
75258 .unused,
75259 .unused,
75260 .unused,
75261 .unused,
75262 .unused,
75263 },
75264 .dst_temps = .{ .mem, .unused },
75265 .clobbers = .{ .eflags = true },
75266 .each = .{ .once = switch (cc) {
75267 else => unreachable,
75268 .e => &.{
75269 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75270 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
75271 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
75272 .{ .@"0:", ._dqu, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
75273 .{ ._, .p_q, .cmpeq, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
75274 .{ ._, ._pd, .movmsk, .tmp3d, .tmp4x, ._, ._ },
75275 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
75276 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
75277 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
75278 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
75279 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
75280 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
75281 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
75282 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
75283 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
75284 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
75285 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75286 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
75287 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
75288 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
75289 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
75290 },
75291 .ne => &.{
75292 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75293 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
75294 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
75295 .{ .@"0:", ._dqu, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
75296 .{ ._, .p_q, .cmpeq, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
75297 .{ ._, ._pd, .movmsk, .tmp3d, .tmp4x, ._, ._ },
75298 .{ ._, ._, .xor, .tmp3b, .si(0b11), ._, ._ },
75299 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
75300 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
75301 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
75302 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
75303 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
75304 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
75305 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
75306 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
75307 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
75308 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
75309 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75310 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
75311 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
75312 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
75313 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
75314 },
75315 } },
75316 }, .{
75317 .required_features = .{ .sse, .mmx, null, null },
75318 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
75319 .patterns = &.{
75320 .{ .src = .{ .to_mem, .to_mem, .none } },
75321 },
75322 .extra_temps = .{
75323 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75324 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
75325 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
75326 .{ .kind = .{ .rc = .mmx } },
75327 .unused,
75328 .unused,
75329 .unused,
75330 .unused,
75331 .unused,
75332 .unused,
75333 .unused,
75334 },
75335 .dst_temps = .{ .mem, .unused },
75336 .clobbers = .{ .eflags = true },
75337 .each = .{ .once = switch (cc) {
75338 else => unreachable,
75339 .e => &.{
75340 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75341 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
75342 .{ .@"0:", ._q, .mov, .tmp3q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
75343 .{ ._, .p_b, .cmpeq, .tmp3q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
75344 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3q, ._, ._ },
75345 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
75346 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
75347 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
75348 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75349 },
75350 .ne => &.{
75351 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75352 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
75353 .{ .@"0:", ._q, .mov, .tmp3q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
75354 .{ ._, .p_b, .cmpeq, .tmp3q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
75355 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3q, ._, ._ },
75356 .{ ._, ._, .not, .tmp2b, ._, ._, ._ },
75357 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
75358 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
75359 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
75360 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75361 },
75362 } },
75363 }, .{
75364 .required_features = .{ .sse, .mmx, null, null },
75365 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
75366 .patterns = &.{
75367 .{ .src = .{ .to_mem, .to_mem, .none } },
75368 },
75369 .extra_temps = .{
75370 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75371 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
75372 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
75373 .{ .kind = .{ .rc = .mmx } },
75374 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
75375 .{ .kind = .{ .rc = .mmx } },
75376 .unused,
75377 .unused,
75378 .unused,
75379 .unused,
75380 .unused,
75381 },
75382 .dst_temps = .{ .mem, .unused },
75383 .clobbers = .{ .eflags = true },
75384 .each = .{ .once = switch (cc) {
75385 else => unreachable,
75386 .e => &.{
75387 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75388 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
75389 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
75390 .{ ._, .p_, .xor, .tmp3q, .tmp3q, ._, ._ },
75391 .{ .@"0:", ._q, .mov, .tmp5q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
75392 .{ ._, .p_w, .cmpeq, .tmp5q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
75393 .{ ._, .p_b, .ackssw, .tmp5q, .tmp3q, ._, ._ },
75394 .{ ._, .p_b, .movmsk, .tmp4d, .tmp5q, ._, ._ },
75395 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
75396 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
75397 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
75398 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
75399 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
75400 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
75401 .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ },
75402 .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ },
75403 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
75404 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
75405 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75406 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
75407 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
75408 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
75409 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
75410 },
75411 .ne => &.{
75412 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75413 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
75414 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
75415 .{ ._, .p_, .xor, .tmp3q, .tmp3q, ._, ._ },
75416 .{ .@"0:", ._q, .mov, .tmp5q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
75417 .{ ._, .p_w, .cmpeq, .tmp5q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
75418 .{ ._, .p_b, .ackssw, .tmp5q, .tmp3q, ._, ._ },
75419 .{ ._, .p_b, .movmsk, .tmp4d, .tmp5q, ._, ._ },
75420 .{ ._, ._, .xor, .tmp4b, .si(0b1111), ._, ._ },
75421 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
75422 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
75423 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
75424 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
75425 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
75426 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
75427 .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ },
75428 .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ },
75429 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
75430 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
75431 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75432 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
75433 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
75434 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
75435 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
75436 },
75437 } },
75438 }, .{
75439 .required_features = .{ .sse, .mmx, null, null },
75440 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
75441 .patterns = &.{
75442 .{ .src = .{ .to_mem, .to_mem, .none } },
75443 },
75444 .extra_temps = .{
75445 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75446 .{ .type = .u32, .kind = .{ .reg = .rcx } },
75447 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
75448 .{ .kind = .{ .rc = .mmx } },
75449 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
75450 .{ .kind = .{ .rc = .mmx } },
75451 .unused,
75452 .unused,
75453 .unused,
75454 .unused,
75455 .unused,
75456 },
75457 .dst_temps = .{ .mem, .unused },
75458 .clobbers = .{ .eflags = true },
75459 .each = .{ .once = switch (cc) {
75460 else => unreachable,
75461 .e => &.{
75462 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75463 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
75464 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
75465 .{ ._, .p_, .xor, .tmp3q, .tmp3q, ._, ._ },
75466 .{ .@"0:", ._q, .mov, .tmp5q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
75467 .{ ._, .p_d, .cmpeq, .tmp5q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
75468 .{ ._, .p_w, .ackssd, .tmp5q, .tmp3q, ._, ._ },
75469 .{ ._, .p_b, .ackssw, .tmp5q, .tmp3q, ._, ._ },
75470 .{ ._, .p_b, .movmsk, .tmp4d, .tmp5q, ._, ._ },
75471 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
75472 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
75473 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
75474 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
75475 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
75476 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
75477 .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ },
75478 .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ },
75479 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
75480 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
75481 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75482 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
75483 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
75484 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
75485 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
75486 },
75487 .ne => &.{
75488 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75489 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
75490 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
75491 .{ ._, .p_, .xor, .tmp3q, .tmp3q, ._, ._ },
75492 .{ .@"0:", ._q, .mov, .tmp5q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
75493 .{ ._, .p_d, .cmpeq, .tmp5q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
75494 .{ ._, .p_w, .ackssd, .tmp5q, .tmp3q, ._, ._ },
75495 .{ ._, .p_b, .ackssw, .tmp5q, .tmp3q, ._, ._ },
75496 .{ ._, .p_b, .movmsk, .tmp4d, .tmp5q, ._, ._ },
75497 .{ ._, ._, .xor, .tmp4b, .si(0b11), ._, ._ },
75498 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
75499 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
75500 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
75501 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
75502 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
75503 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
75504 .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ },
75505 .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ },
75506 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
75507 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
75508 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75509 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
75510 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
75511 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
75512 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
75513 },
75514 } },
75515 }, .{
75516 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
75517 .dst_constraints = .{ .{ .bool_vec = .byte }, .any },
75518 .patterns = &.{
75519 .{ .src = .{ .to_mem, .to_mem, .none } },
75520 },
75521 .extra_temps = .{
75522 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75523 .{ .type = .u8, .kind = .{ .reg = .cl } },
75524 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
75525 .unused,
75526 .unused,
75527 .unused,
75528 .unused,
75529 .unused,
75530 .unused,
75531 .unused,
75532 .unused,
75533 },
75534 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
75535 .clobbers = .{ .eflags = true },
75536 .each = .{ .once = &.{
75537 .{ ._, ._, .xor, .dst0b, .dst0b, ._, ._ },
75538 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75539 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
75540 .{ .@"0:", ._, .mov, .tmp2b, .memia(.src0b, .tmp0, .add_size), ._, ._ },
75541 .{ ._, ._, .cmp, .tmp2b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
75542 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
75543 .{ ._, ._l, .sh, .tmp2b, .tmp1b, ._, ._ },
75544 .{ ._, ._, .@"or", .dst0b, .tmp2b, ._, ._ },
75545 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
75546 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
75547 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75548 } },
75549 }, .{
75550 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
75551 .dst_constraints = .{ .{ .bool_vec = .byte }, .any },
75552 .patterns = &.{
75553 .{ .src = .{ .to_mem, .to_mem, .none } },
75554 },
75555 .extra_temps = .{
75556 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75557 .{ .type = .u8, .kind = .{ .reg = .cl } },
75558 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
75559 .unused,
75560 .unused,
75561 .unused,
75562 .unused,
75563 .unused,
75564 .unused,
75565 .unused,
75566 .unused,
75567 },
75568 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
75569 .clobbers = .{ .eflags = true },
75570 .each = .{ .once = &.{
75571 .{ ._, ._, .xor, .dst0b, .dst0b, ._, ._ },
75572 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75573 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
75574 .{ .@"0:", ._, .mov, .tmp2w, .memia(.src0w, .tmp0, .add_size), ._, ._ },
75575 .{ ._, ._, .cmp, .tmp2w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
75576 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
75577 .{ ._, ._l, .sh, .tmp2d, .tmp1b, ._, ._ },
75578 .{ ._, ._, .@"or", .dst0d, .tmp2d, ._, ._ },
75579 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
75580 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
75581 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75582 } },
75583 }, .{
75584 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
75585 .dst_constraints = .{ .{ .bool_vec = .byte }, .any },
75586 .patterns = &.{
75587 .{ .src = .{ .to_mem, .to_mem, .none } },
75588 },
75589 .extra_temps = .{
75590 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75591 .{ .type = .u8, .kind = .{ .reg = .cl } },
75592 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
75593 .unused,
75594 .unused,
75595 .unused,
75596 .unused,
75597 .unused,
75598 .unused,
75599 .unused,
75600 .unused,
75601 },
75602 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
75603 .clobbers = .{ .eflags = true },
75604 .each = .{ .once = &.{
75605 .{ ._, ._, .xor, .dst0b, .dst0b, ._, ._ },
75606 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75607 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
75608 .{ .@"0:", ._, .mov, .tmp2d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
75609 .{ ._, ._, .cmp, .tmp2d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
75610 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
75611 .{ ._, ._l, .sh, .tmp2b, .tmp1b, ._, ._ },
75612 .{ ._, ._, .@"or", .dst0b, .tmp2b, ._, ._ },
75613 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
75614 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
75615 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75616 } },
75617 }, .{
75618 .required_features = .{ .@"64bit", null, null, null },
75619 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
75620 .dst_constraints = .{ .{ .bool_vec = .byte }, .any },
75621 .patterns = &.{
75622 .{ .src = .{ .to_mem, .to_mem, .none } },
75623 },
75624 .extra_temps = .{
75625 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75626 .{ .type = .u8, .kind = .{ .reg = .cl } },
75627 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
75628 .unused,
75629 .unused,
75630 .unused,
75631 .unused,
75632 .unused,
75633 .unused,
75634 .unused,
75635 .unused,
75636 },
75637 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
75638 .clobbers = .{ .eflags = true },
75639 .each = .{ .once = &.{
75640 .{ ._, ._, .xor, .dst0b, .dst0b, ._, ._ },
75641 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75642 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
75643 .{ .@"0:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
75644 .{ ._, ._, .cmp, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
75645 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
75646 .{ ._, ._l, .sh, .tmp2b, .tmp1b, ._, ._ },
75647 .{ ._, ._, .@"or", .dst0b, .tmp2b, ._, ._ },
75648 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
75649 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
75650 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75651 } },
75652 }, .{
75653 .src_constraints = .{ .any_scalar_int, .any_scalar_int, .any },
75654 .dst_constraints = .{ .{ .bool_vec = .byte }, .any },
75655 .patterns = &.{
75656 .{ .src = .{ .to_mem, .to_mem, .none } },
75657 },
75658 .extra_temps = .{
75659 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
75660 .{ .type = .u8, .kind = .{ .reg = .cl } },
75661 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
75662 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
75663 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
75664 .unused,
75665 .unused,
75666 .unused,
75667 .unused,
75668 .unused,
75669 .unused,
75670 },
75671 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
75672 .clobbers = .{ .eflags = true },
75673 .each = .{ .once = &.{
75674 .{ ._, ._, .xor, .dst0b, .dst0b, ._, ._ },
75675 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
75676 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
75677 .{ .@"0:", ._, .mov, .tmp2d, .sa(.src0p, .add_elem_limbs), ._, ._ },
75678 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
75679 .{ .@"1:", ._, .mov, .tmp4p, .memi(.src0p, .tmp0), ._, ._ },
75680 .{ ._, ._, .xor, .tmp4p, .memi(.src1p, .tmp0), ._, ._ },
75681 .{ ._, ._, .@"or", .tmp3p, .tmp4p, ._, ._ },
75682 .{ ._, ._, .add, .tmp0p, .sa(.tmp4, .add_size), ._, ._ },
75683 .{ ._, ._, .sub, .tmp2d, .si(1), ._, ._ },
75684 .{ ._, ._a, .j, .@"1b", ._, ._, ._ },
75685 .{ ._, ._, .@"test", .tmp3p, .tmp3p, ._, ._ },
75686 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
75687 .{ ._, ._l, .sh, .tmp2b, .tmp1b, ._, ._ },
75688 .{ ._, ._, .@"or", .dst0b, .tmp2b, ._, ._ },
75689 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
75690 .{ ._, ._, .cmp, .tmp1b, .sa(.dst0, .add_len), ._, ._ },
75691 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
75692 } },
75693 }, .{
75694 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
75695 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
75696 .patterns = &.{
75697 .{ .src = .{ .to_mem, .to_mem, .none } },
75698 },
75699 .extra_temps = .{
75700 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75701 .{ .type = .u8, .kind = .{ .reg = .cl } },
75702 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
75703 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
75704 .unused,
75705 .unused,
75706 .unused,
75707 .unused,
75708 .unused,
75709 .unused,
75710 .unused,
75711 },
75712 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
75713 .clobbers = .{ .eflags = true },
75714 .each = .{ .once = &.{
75715 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
75716 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75717 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
75718 .{ .@"0:", ._, .xor, .tmp2d, .tmp2d, ._, ._ },
75719 .{ ._, ._, .mov, .tmp3b, .memia(.src0b, .tmp0, .add_size), ._, ._ },
75720 .{ ._, ._, .cmp, .tmp3b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
75721 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
75722 .{ ._, ._l, .sh, .tmp2d, .tmp1b, ._, ._ },
75723 .{ ._, ._, .@"or", .dst0d, .tmp2d, ._, ._ },
75724 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
75725 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
75726 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75727 } },
75728 }, .{
75729 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
75730 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
75731 .patterns = &.{
75732 .{ .src = .{ .to_mem, .to_mem, .none } },
75733 },
75734 .extra_temps = .{
75735 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75736 .{ .type = .u8, .kind = .{ .reg = .cl } },
75737 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
75738 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
75739 .unused,
75740 .unused,
75741 .unused,
75742 .unused,
75743 .unused,
75744 .unused,
75745 .unused,
75746 },
75747 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
75748 .clobbers = .{ .eflags = true },
75749 .each = .{ .once = &.{
75750 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
75751 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75752 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
75753 .{ .@"0:", ._, .xor, .tmp2d, .tmp2d, ._, ._ },
75754 .{ ._, ._, .mov, .tmp3w, .memia(.src0w, .tmp0, .add_size), ._, ._ },
75755 .{ ._, ._, .cmp, .tmp3w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
75756 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
75757 .{ ._, ._l, .sh, .tmp2d, .tmp1b, ._, ._ },
75758 .{ ._, ._, .@"or", .dst0d, .tmp2d, ._, ._ },
75759 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
75760 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
75761 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75762 } },
75763 }, .{
75764 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
75765 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
75766 .patterns = &.{
75767 .{ .src = .{ .to_mem, .to_mem, .none } },
75768 },
75769 .extra_temps = .{
75770 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75771 .{ .type = .u8, .kind = .{ .reg = .cl } },
75772 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
75773 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
75774 .unused,
75775 .unused,
75776 .unused,
75777 .unused,
75778 .unused,
75779 .unused,
75780 .unused,
75781 },
75782 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
75783 .clobbers = .{ .eflags = true },
75784 .each = .{ .once = &.{
75785 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
75786 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75787 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
75788 .{ .@"0:", ._, .xor, .tmp2d, .tmp2d, ._, ._ },
75789 .{ ._, ._, .mov, .tmp3d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
75790 .{ ._, ._, .cmp, .tmp3d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
75791 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
75792 .{ ._, ._l, .sh, .tmp2d, .tmp1b, ._, ._ },
75793 .{ ._, ._, .@"or", .dst0d, .tmp2d, ._, ._ },
75794 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
75795 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
75796 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75797 } },
75798 }, .{
75799 .required_features = .{ .@"64bit", null, null, null },
75800 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
75801 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
75802 .patterns = &.{
75803 .{ .src = .{ .to_mem, .to_mem, .none } },
75804 },
75805 .extra_temps = .{
75806 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75807 .{ .type = .u8, .kind = .{ .reg = .cl } },
75808 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
75809 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
75810 .unused,
75811 .unused,
75812 .unused,
75813 .unused,
75814 .unused,
75815 .unused,
75816 .unused,
75817 },
75818 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
75819 .clobbers = .{ .eflags = true },
75820 .each = .{ .once = &.{
75821 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
75822 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75823 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
75824 .{ .@"0:", ._, .xor, .tmp2d, .tmp2d, ._, ._ },
75825 .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
75826 .{ ._, ._, .cmp, .tmp3q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
75827 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
75828 .{ ._, ._l, .sh, .tmp2d, .tmp1b, ._, ._ },
75829 .{ ._, ._, .@"or", .dst0d, .tmp2d, ._, ._ },
75830 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
75831 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
75832 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75833 } },
75834 }, .{
75835 .src_constraints = .{ .any_scalar_int, .any_scalar_int, .any },
75836 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
75837 .patterns = &.{
75838 .{ .src = .{ .to_mem, .to_mem, .none } },
75839 },
75840 .extra_temps = .{
75841 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
75842 .{ .type = .u8, .kind = .{ .reg = .cl } },
75843 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
75844 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
75845 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
75846 .unused,
75847 .unused,
75848 .unused,
75849 .unused,
75850 .unused,
75851 .unused,
75852 },
75853 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
75854 .clobbers = .{ .eflags = true },
75855 .each = .{ .once = &.{
75856 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
75857 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
75858 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
75859 .{ .@"0:", ._, .mov, .tmp2d, .sa(.src0p, .add_elem_limbs), ._, ._ },
75860 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
75861 .{ .@"1:", ._, .mov, .tmp4p, .memi(.src0p, .tmp0), ._, ._ },
75862 .{ ._, ._, .xor, .tmp4p, .memi(.src1p, .tmp0), ._, ._ },
75863 .{ ._, ._, .@"or", .tmp3p, .tmp4p, ._, ._ },
75864 .{ ._, ._, .add, .tmp0p, .sa(.tmp4, .add_size), ._, ._ },
75865 .{ ._, ._, .sub, .tmp2d, .si(1), ._, ._ },
75866 .{ ._, ._a, .j, .@"1b", ._, ._, ._ },
75867 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
75868 .{ ._, ._, .@"test", .tmp3p, .tmp3p, ._, ._ },
75869 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
75870 .{ ._, ._l, .sh, .tmp2d, .tmp1b, ._, ._ },
75871 .{ ._, ._, .@"or", .dst0d, .tmp2d, ._, ._ },
75872 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
75873 .{ ._, ._, .cmp, .tmp1b, .sa(.dst0, .add_len), ._, ._ },
75874 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
75875 } },
75876 }, .{
75877 .required_features = .{ .@"64bit", null, null, null },
75878 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
75879 .dst_constraints = .{ .{ .bool_vec = .qword }, .any },
75880 .patterns = &.{
75881 .{ .src = .{ .to_mem, .to_mem, .none } },
75882 },
75883 .extra_temps = .{
75884 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75885 .{ .type = .u8, .kind = .{ .reg = .cl } },
75886 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
75887 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
75888 .unused,
75889 .unused,
75890 .unused,
75891 .unused,
75892 .unused,
75893 .unused,
75894 .unused,
75895 },
75896 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
75897 .clobbers = .{ .eflags = true },
75898 .each = .{ .once = &.{
75899 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
75900 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75901 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
75902 .{ .@"0:", ._, .xor, .tmp2d, .tmp2d, ._, ._ },
75903 .{ ._, ._, .mov, .tmp3b, .memia(.src0b, .tmp0, .add_size), ._, ._ },
75904 .{ ._, ._, .cmp, .tmp3b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
75905 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
75906 .{ ._, ._l, .sh, .tmp2q, .tmp1b, ._, ._ },
75907 .{ ._, ._, .@"or", .dst0q, .tmp2q, ._, ._ },
75908 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
75909 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
75910 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75911 } },
75912 }, .{
75913 .required_features = .{ .@"64bit", null, null, null },
75914 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
75915 .dst_constraints = .{ .{ .bool_vec = .qword }, .any },
75916 .patterns = &.{
75917 .{ .src = .{ .to_mem, .to_mem, .none } },
75918 },
75919 .extra_temps = .{
75920 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75921 .{ .type = .u8, .kind = .{ .reg = .cl } },
75922 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
75923 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
75924 .unused,
75925 .unused,
75926 .unused,
75927 .unused,
75928 .unused,
75929 .unused,
75930 .unused,
75931 },
75932 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
75933 .clobbers = .{ .eflags = true },
75934 .each = .{ .once = &.{
75935 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
75936 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75937 .{ .@"0:", ._, .xor, .tmp2d, .tmp2d, ._, ._ },
75938 .{ ._, ._, .mov, .tmp3w, .memia(.src0w, .tmp0, .add_size), ._, ._ },
75939 .{ ._, ._, .cmp, .tmp3w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
75940 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
75941 .{ ._, ._l, .sh, .tmp2q, .tmp1b, ._, ._ },
75942 .{ ._, ._, .@"or", .dst0q, .tmp2q, ._, ._ },
75943 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
75944 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
75945 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75946 } },
75947 }, .{
75948 .required_features = .{ .@"64bit", null, null, null },
75949 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
75950 .dst_constraints = .{ .{ .bool_vec = .qword }, .any },
75951 .patterns = &.{
75952 .{ .src = .{ .to_mem, .to_mem, .none } },
75953 },
75954 .extra_temps = .{
75955 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75956 .{ .type = .u8, .kind = .{ .reg = .cl } },
75957 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
75958 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
75959 .unused,
75960 .unused,
75961 .unused,
75962 .unused,
75963 .unused,
75964 .unused,
75965 .unused,
75966 },
75967 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
75968 .clobbers = .{ .eflags = true },
75969 .each = .{ .once = &.{
75970 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
75971 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
75972 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
75973 .{ .@"0:", ._, .xor, .tmp2d, .tmp2d, ._, ._ },
75974 .{ ._, ._, .mov, .tmp3d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
75975 .{ ._, ._, .cmp, .tmp3d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
75976 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
75977 .{ ._, ._l, .sh, .tmp2q, .tmp1b, ._, ._ },
75978 .{ ._, ._, .@"or", .dst0q, .tmp2q, ._, ._ },
75979 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
75980 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
75981 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75982 } },
75983 }, .{
75984 .required_features = .{ .@"64bit", null, null, null },
75985 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
75986 .dst_constraints = .{ .{ .bool_vec = .qword }, .any },
75987 .patterns = &.{
75988 .{ .src = .{ .to_mem, .to_mem, .none } },
75989 },
75990 .extra_temps = .{
75991 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75992 .{ .type = .u8, .kind = .{ .reg = .cl } },
75993 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
75994 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
75995 .unused,
75996 .unused,
75997 .unused,
75998 .unused,
75999 .unused,
76000 .unused,
76001 .unused,
76002 },
76003 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
76004 .clobbers = .{ .eflags = true },
76005 .each = .{ .once = &.{
76006 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
76007 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
76008 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
76009 .{ .@"0:", ._, .xor, .tmp2d, .tmp2d, ._, ._ },
76010 .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
76011 .{ ._, ._, .cmp, .tmp3q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
76012 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
76013 .{ ._, ._l, .sh, .tmp2q, .tmp1b, ._, ._ },
76014 .{ ._, ._, .@"or", .dst0q, .tmp2q, ._, ._ },
76015 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
76016 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
76017 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
76018 } },
76019 }, .{
76020 .required_features = .{ .@"64bit", null, null, null },
76021 .src_constraints = .{ .any_scalar_int, .any_scalar_int, .any },
76022 .dst_constraints = .{ .{ .bool_vec = .qword }, .any },
76023 .patterns = &.{
76024 .{ .src = .{ .to_mem, .to_mem, .none } },
76025 },
76026 .extra_temps = .{
76027 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
76028 .{ .type = .u8, .kind = .{ .reg = .cl } },
76029 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
76030 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
76031 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
76032 .unused,
76033 .unused,
76034 .unused,
76035 .unused,
76036 .unused,
76037 .unused,
76038 },
76039 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
76040 .clobbers = .{ .eflags = true },
76041 .each = .{ .once = &.{
76042 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
76043 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
76044 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
76045 .{ .@"0:", ._, .mov, .tmp2d, .sa(.src0p, .add_elem_limbs), ._, ._ },
76046 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
76047 .{ .@"1:", ._, .mov, .tmp4p, .memi(.src0p, .tmp0), ._, ._ },
76048 .{ ._, ._, .xor, .tmp4p, .memi(.src1p, .tmp0), ._, ._ },
76049 .{ ._, ._, .@"or", .tmp3p, .tmp4p, ._, ._ },
76050 .{ ._, ._, .add, .tmp0p, .sa(.tmp4, .add_size), ._, ._ },
76051 .{ ._, ._, .sub, .tmp2d, .si(1), ._, ._ },
76052 .{ ._, ._a, .j, .@"1b", ._, ._, ._ },
76053 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
76054 .{ ._, ._, .@"test", .tmp3p, .tmp3p, ._, ._ },
76055 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
76056 .{ ._, ._l, .sh, .tmp2q, .tmp1b, ._, ._ },
76057 .{ ._, ._, .@"or", .dst0q, .tmp2q, ._, ._ },
76058 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
76059 .{ ._, ._, .cmp, .tmp1b, .sa(.dst0, .add_len), ._, ._ },
76060 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
76061 } },
76062 }, .{
76063 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
76064 .patterns = &.{
76065 .{ .src = .{ .to_mem, .to_mem, .none } },
76066 },
76067 .extra_temps = .{
76068 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76069 .{ .type = .u32, .kind = .{ .reg = .ecx } },
76070 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
76071 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
76072 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
76073 .unused,
76074 .unused,
76075 .unused,
76076 .unused,
76077 .unused,
76078 .unused,
76079 },
76080 .dst_temps = .{ .mem, .unused },
76081 .clobbers = .{ .eflags = true },
76082 .each = .{ .once = &.{
76083 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
76084 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
76085 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
76086 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
76087 .{ ._, ._, .mov, .tmp4b, .memia(.src0b, .tmp0, .add_size), ._, ._ },
76088 .{ ._, ._, .cmp, .tmp4b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
76089 .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ },
76090 .{ ._, ._l, .sh, .tmp3p, .tmp1b, ._, ._ },
76091 .{ ._, ._, .@"or", .tmp2p, .tmp3p, ._, ._ },
76092 .{ ._, ._, .add, .tmp1d, .si(1), ._, ._ },
76093 .{ ._, ._, .@"test", .tmp1d, .sia(-1, .none, .add_ptr_bit_size), ._, ._ },
76094 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
76095 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
76096 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
76097 .{ ._, ._, .mov, .memia(.dst0p, .tmp3, .sub_ptr_size), .tmp2p, ._, ._ },
76098 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
76099 .{ .@"1:", ._, .add, .tmp0p, .si(1), ._, ._ },
76100 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
76101 .{ ._, ._, .@"test", .tmp1d, .sia(-1, .none, .add_ptr_bit_size), ._, ._ },
76102 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
76103 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
76104 .{ ._, ._, .mov, .memsi(.dst0p, .@"8", .tmp1), .tmp2p, ._, ._ },
76105 } },
76106 }, .{
76107 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
76108 .patterns = &.{
76109 .{ .src = .{ .to_mem, .to_mem, .none } },
76110 },
76111 .extra_temps = .{
76112 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76113 .{ .type = .u32, .kind = .{ .reg = .ecx } },
76114 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
76115 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
76116 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
76117 .unused,
76118 .unused,
76119 .unused,
76120 .unused,
76121 .unused,
76122 .unused,
76123 },
76124 .dst_temps = .{ .mem, .unused },
76125 .clobbers = .{ .eflags = true },
76126 .each = .{ .once = &.{
76127 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
76128 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
76129 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
76130 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
76131 .{ ._, ._, .mov, .tmp4w, .memia(.src0w, .tmp0, .add_size), ._, ._ },
76132 .{ ._, ._, .cmp, .tmp4w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
76133 .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ },
76134 .{ ._, ._l, .sh, .tmp3p, .tmp1b, ._, ._ },
76135 .{ ._, ._, .@"or", .tmp2p, .tmp3p, ._, ._ },
76136 .{ ._, ._, .add, .tmp1d, .si(1), ._, ._ },
76137 .{ ._, ._, .@"test", .tmp1d, .sia(-1, .none, .add_ptr_bit_size), ._, ._ },
76138 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
76139 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
76140 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
76141 .{ ._, ._, .mov, .memia(.dst0p, .tmp3, .sub_ptr_size), .tmp2p, ._, ._ },
76142 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
76143 .{ .@"1:", ._, .add, .tmp0p, .si(2), ._, ._ },
76144 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
76145 .{ ._, ._, .@"test", .tmp1d, .sia(-1, .none, .add_ptr_bit_size), ._, ._ },
76146 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
76147 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
76148 .{ ._, ._, .mov, .memsi(.dst0p, .@"8", .tmp1), .tmp2p, ._, ._ },
76149 } },
76150 }, .{
76151 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
76152 .patterns = &.{
76153 .{ .src = .{ .to_mem, .to_mem, .none } },
76154 },
76155 .extra_temps = .{
76156 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76157 .{ .type = .u32, .kind = .{ .reg = .ecx } },
76158 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
76159 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
76160 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
76161 .unused,
76162 .unused,
76163 .unused,
76164 .unused,
76165 .unused,
76166 .unused,
76167 },
76168 .dst_temps = .{ .mem, .unused },
76169 .clobbers = .{ .eflags = true },
76170 .each = .{ .once = &.{
76171 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
76172 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
76173 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
76174 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
76175 .{ ._, ._, .mov, .tmp4d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
76176 .{ ._, ._, .cmp, .tmp4d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
76177 .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ },
76178 .{ ._, ._l, .sh, .tmp3p, .tmp1b, ._, ._ },
76179 .{ ._, ._, .@"or", .tmp2p, .tmp3p, ._, ._ },
76180 .{ ._, ._, .add, .tmp1d, .si(1), ._, ._ },
76181 .{ ._, ._, .@"test", .tmp1d, .sia(-1, .none, .add_ptr_bit_size), ._, ._ },
76182 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
76183 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
76184 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
76185 .{ ._, ._, .mov, .memia(.dst0p, .tmp3, .sub_ptr_size), .tmp2p, ._, ._ },
76186 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
76187 .{ .@"1:", ._, .add, .tmp0p, .si(4), ._, ._ },
76188 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
76189 .{ ._, ._, .@"test", .tmp1d, .sia(-1, .none, .add_ptr_bit_size), ._, ._ },
76190 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
76191 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
76192 .{ ._, ._, .mov, .memsi(.dst0p, .@"8", .tmp1), .tmp2p, ._, ._ },
76193 } },
76194 }, .{
76195 .required_features = .{ .@"64bit", null, null, null },
76196 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
76197 .patterns = &.{
76198 .{ .src = .{ .to_mem, .to_mem, .none } },
76199 },
76200 .extra_temps = .{
76201 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76202 .{ .type = .u32, .kind = .{ .reg = .ecx } },
76203 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
76204 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
76205 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
76206 .unused,
76207 .unused,
76208 .unused,
76209 .unused,
76210 .unused,
76211 .unused,
76212 },
76213 .dst_temps = .{ .mem, .unused },
76214 .clobbers = .{ .eflags = true },
76215 .each = .{ .once = &.{
76216 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
76217 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
76218 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
76219 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
76220 .{ ._, ._, .mov, .tmp4q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
76221 .{ ._, ._, .cmp, .tmp4q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
76222 .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ },
76223 .{ ._, ._l, .sh, .tmp3p, .tmp1b, ._, ._ },
76224 .{ ._, ._, .@"or", .tmp2p, .tmp3p, ._, ._ },
76225 .{ ._, ._, .add, .tmp1d, .si(1), ._, ._ },
76226 .{ ._, ._, .@"test", .tmp1d, .sia(-1, .none, .add_ptr_bit_size), ._, ._ },
76227 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
76228 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
76229 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
76230 .{ ._, ._, .mov, .memia(.dst0p, .tmp3, .sub_ptr_size), .tmp2p, ._, ._ },
76231 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
76232 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
76233 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
76234 .{ ._, ._, .@"test", .tmp1d, .sia(-1, .none, .add_ptr_bit_size), ._, ._ },
76235 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
76236 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
76237 .{ ._, ._, .mov, .memsi(.dst0p, .@"8", .tmp1), .tmp2p, ._, ._ },
76238 } },
76239 }, .{
76240 .required_features = .{ .f16c, null, null, null },
76241 .src_constraints = .{
76242 .{ .scalar_float = .{ .of = .word, .is = .word } },
76243 .{ .scalar_float = .{ .of = .word, .is = .word } },
76244 .any,
76245 },
76246 .patterns = &.{
76247 .{ .src = .{ .to_sse, .to_sse, .none } },
76248 },
76249 .extra_temps = .{
76250 .{ .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
76251 .unused,
76252 .unused,
76253 .unused,
76254 .unused,
76255 .unused,
76256 .unused,
76257 .unused,
76258 .unused,
76259 .unused,
76260 .unused,
76261 },
76262 .dst_temps = .{ .{ .mut_rc_mask = .{
76263 .ref = .src0,
76264 .rc = .sse,
76265 .info = .{ .kind = .all, .scalar = .dword },
76266 } }, .unused },
76267 .each = .{ .once = &.{
76268 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
76269 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
76270 .{ ._, .v_ss, .cmp, .dst0x, .dst0x, .tmp0d, .vp(switch (cc) {
76271 else => unreachable,
76272 .e => .eq,
76273 .ne => .neq,
76274 }) },
76275 } },
76276 }, .{
76277 .required_features = .{ .f16c, null, null, null },
76278 .src_constraints = .{
76279 .{ .scalar_float = .{ .of = .qword, .is = .word } },
76280 .{ .scalar_float = .{ .of = .qword, .is = .word } },
76281 .any,
76282 },
76283 .patterns = &.{
76284 .{ .src = .{ .mem, .mem, .none } },
76285 .{ .src = .{ .sse, .mem, .none } },
76286 .{ .src = .{ .mem, .sse, .none } },
76287 .{ .src = .{ .to_sse, .to_sse, .none } },
76288 },
76289 .extra_temps = .{
76290 .{ .kind = .{ .rc = .sse } },
76291 .unused,
76292 .unused,
76293 .unused,
76294 .unused,
76295 .unused,
76296 .unused,
76297 .unused,
76298 .unused,
76299 .unused,
76300 .unused,
76301 },
76302 .dst_temps = .{ .{ .mut_rc_mask = .{
76303 .ref = .src0,
76304 .rc = .sse,
76305 .info = .{ .kind = .all, .scalar = .dword },
76306 } }, .unused },
76307 .each = .{ .once = &.{
76308 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
76309 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
76310 .{ ._, .v_ps, .cmp, .dst0x, .dst0x, .tmp0x, .vp(switch (cc) {
76311 else => unreachable,
76312 .e => .eq,
76313 .ne => .neq,
76314 }) },
76315 } },
76316 }, .{
76317 .required_features = .{ .f16c, null, null, null },
76318 .src_constraints = .{
76319 .{ .scalar_float = .{ .of = .xword, .is = .word } },
76320 .{ .scalar_float = .{ .of = .xword, .is = .word } },
76321 .any,
76322 },
76323 .patterns = &.{
76324 .{ .src = .{ .mem, .mem, .none } },
76325 .{ .src = .{ .to_sse, .mem, .none } },
76326 .{ .src = .{ .mem, .to_sse, .none } },
76327 .{ .src = .{ .to_sse, .to_sse, .none } },
76328 },
76329 .extra_temps = .{
76330 .{ .kind = .{ .rc = .sse } },
76331 .unused,
76332 .unused,
76333 .unused,
76334 .unused,
76335 .unused,
76336 .unused,
76337 .unused,
76338 .unused,
76339 .unused,
76340 .unused,
76341 },
76342 .dst_temps = .{ .{ .mut_rc_mask = .{
76343 .ref = .src0,
76344 .rc = .sse,
76345 .info = .{ .kind = .all, .scalar = .dword },
76346 } }, .unused },
76347 .each = .{ .once = &.{
76348 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
76349 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
76350 .{ ._, .v_ps, .cmp, .dst0y, .dst0y, .tmp0y, .vp(switch (cc) {
76351 else => unreachable,
76352 .e => .eq,
76353 .ne => .neq,
76354 }) },
76355 } },
76356 }, .{
76357 .required_features = .{ .avx, null, null, null },
76358 .src_constraints = .{
76359 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
76360 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
76361 .any,
76362 },
76363 .patterns = &.{
76364 .{ .src = .{ .to_sse, .mem, .none } },
76365 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
76366 .{ .src = .{ .to_sse, .to_sse, .none } },
76367 },
76368 .dst_temps = .{ .{ .mut_rc_mask = .{
76369 .ref = .src0,
76370 .rc = .sse,
76371 .info = .{ .kind = .all, .scalar = .dword },
76372 } }, .unused },
76373 .each = .{ .once = &.{
76374 .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1d, .vp(switch (cc) {
76375 else => unreachable,
76376 .e => .eq,
76377 .ne => .neq,
76378 }) },
76379 } },
76380 }, .{
76381 .required_features = .{ .sse, null, null, null },
76382 .src_constraints = .{
76383 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
76384 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
76385 .any,
76386 },
76387 .patterns = &.{
76388 .{ .src = .{ .to_mut_sse, .mem, .none } },
76389 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
76390 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
76391 },
76392 .dst_temps = .{ .{ .ref_mask = .{
76393 .ref = .src0,
76394 .info = .{ .kind = .all, .scalar = .dword },
76395 } }, .unused },
76396 .each = .{ .once = &.{
76397 .{ ._, ._ss, .cmp, .dst0x, .src1d, .sp(switch (cc) {
76398 else => unreachable,
76399 .e => .eq,
76400 .ne => .neq,
76401 }), ._ },
76402 } },
76403 }, .{
76404 .required_features = .{ .avx, null, null, null },
76405 .src_constraints = .{
76406 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
76407 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
76408 .any,
76409 },
76410 .patterns = &.{
76411 .{ .src = .{ .to_sse, .mem, .none } },
76412 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
76413 .{ .src = .{ .to_sse, .to_sse, .none } },
76414 },
76415 .dst_temps = .{ .{ .mut_rc_mask = .{
76416 .ref = .src0,
76417 .rc = .sse,
76418 .info = .{ .kind = .all, .scalar = .dword },
76419 } }, .unused },
76420 .each = .{ .once = &.{
76421 .{ ._, .v_ps, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) {
76422 else => unreachable,
76423 .e => .eq,
76424 .ne => .neq,
76425 }) },
76426 } },
76427 }, .{
76428 .required_features = .{ .sse, null, null, null },
76429 .src_constraints = .{
76430 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
76431 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
76432 .any,
76433 },
76434 .patterns = &.{
76435 .{ .src = .{ .to_mut_sse, .mem, .none } },
76436 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
76437 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
76438 },
76439 .dst_temps = .{ .{ .ref_mask = .{
76440 .ref = .src0,
76441 .info = .{ .kind = .all, .scalar = .dword },
76442 } }, .unused },
76443 .each = .{ .once = &.{
76444 .{ ._, ._ps, .cmp, .dst0x, .src1x, .sp(switch (cc) {
76445 else => unreachable,
76446 .e => .eq,
76447 .ne => .neq,
76448 }), ._ },
76449 } },
76450 }, .{
76451 .required_features = .{ .avx, null, null, null },
76452 .src_constraints = .{
76453 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
76454 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
76455 .any,
76456 },
76457 .patterns = &.{
76458 .{ .src = .{ .to_sse, .mem, .none } },
76459 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
76460 .{ .src = .{ .to_sse, .to_sse, .none } },
76461 },
76462 .dst_temps = .{ .{ .mut_rc_mask = .{
76463 .ref = .src0,
76464 .rc = .sse,
76465 .info = .{ .kind = .all, .scalar = .dword },
76466 } }, .unused },
76467 .each = .{ .once = &.{
76468 .{ ._, .v_ps, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) {
76469 else => unreachable,
76470 .e => .eq,
76471 .ne => .neq,
76472 }) },
76473 } },
76474 }, .{
76475 .required_features = .{ .avx, null, null, null },
76476 .src_constraints = .{
76477 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
76478 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
76479 .any,
76480 },
76481 .patterns = &.{
76482 .{ .src = .{ .to_sse, .mem, .none } },
76483 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
76484 .{ .src = .{ .to_sse, .to_sse, .none } },
76485 },
76486 .dst_temps = .{ .{ .mut_rc_mask = .{
76487 .ref = .src0,
76488 .rc = .sse,
76489 .info = .{ .kind = .all, .scalar = .qword },
76490 } }, .unused },
76491 .each = .{ .once = &.{
76492 .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1q, .vp(switch (cc) {
76493 else => unreachable,
76494 .e => .eq,
76495 .ne => .neq,
76496 }) },
76497 } },
76498 }, .{
76499 .required_features = .{ .sse2, null, null, null },
76500 .src_constraints = .{
76501 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
76502 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
76503 .any,
76504 },
76505 .patterns = &.{
76506 .{ .src = .{ .to_mut_sse, .mem, .none } },
76507 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
76508 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
76509 },
76510 .dst_temps = .{ .{ .ref_mask = .{
76511 .ref = .src0,
76512 .info = .{ .kind = .all, .scalar = .qword },
76513 } }, .unused },
76514 .each = .{ .once = &.{
76515 .{ ._, ._sd, .cmp, .dst0x, .src1q, .sp(switch (cc) {
76516 else => unreachable,
76517 .e => .eq,
76518 .ne => .neq,
76519 }), ._ },
76520 } },
76521 }, .{
76522 .required_features = .{ .avx, null, null, null },
76523 .src_constraints = .{
76524 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
76525 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
76526 .any,
76527 },
76528 .patterns = &.{
76529 .{ .src = .{ .to_sse, .mem, .none } },
76530 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
76531 .{ .src = .{ .to_sse, .to_sse, .none } },
76532 },
76533 .dst_temps = .{ .{ .mut_rc_mask = .{
76534 .ref = .src0,
76535 .rc = .sse,
76536 .info = .{ .kind = .all, .scalar = .qword },
76537 } }, .unused },
76538 .each = .{ .once = &.{
76539 .{ ._, .v_pd, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) {
76540 else => unreachable,
76541 .e => .eq,
76542 .ne => .neq,
76543 }) },
76544 } },
76545 }, .{
76546 .required_features = .{ .sse2, null, null, null },
76547 .src_constraints = .{
76548 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
76549 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
76550 .any,
76551 },
76552 .patterns = &.{
76553 .{ .src = .{ .to_mut_sse, .mem, .none } },
76554 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
76555 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
76556 },
76557 .dst_temps = .{ .{ .ref_mask = .{
76558 .ref = .src0,
76559 .info = .{ .kind = .all, .scalar = .qword },
76560 } }, .unused },
76561 .each = .{ .once = &.{
76562 .{ ._, ._pd, .cmp, .dst0x, .src1x, .sp(switch (cc) {
76563 else => unreachable,
76564 .e => .eq,
76565 .ne => .neq,
76566 }), ._ },
76567 } },
76568 }, .{
76569 .required_features = .{ .avx, null, null, null },
76570 .src_constraints = .{
76571 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
76572 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
76573 .any,
76574 },
76575 .patterns = &.{
76576 .{ .src = .{ .to_sse, .mem, .none } },
76577 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
76578 .{ .src = .{ .to_sse, .to_sse, .none } },
76579 },
76580 .dst_temps = .{ .{ .mut_rc_mask = .{
76581 .ref = .src0,
76582 .rc = .sse,
76583 .info = .{ .kind = .all, .scalar = .qword },
76584 } }, .unused },
76585 .each = .{ .once = &.{
76586 .{ ._, .v_pd, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) {
76587 else => unreachable,
76588 .e => .eq,
76589 .ne => .neq,
76590 }) },
76591 } },
76592 }, .{
76593 .required_features = .{ .f16c, .slow_incdec, null, null },
76594 .src_constraints = .{
76595 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
76596 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
76597 .any,
76598 },
76599 .patterns = &.{
76600 .{ .src = .{ .to_mem, .to_mem, .none } },
76601 },
76602 .extra_temps = .{
76603 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76604 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
76605 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
76606 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
76607 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
76608 .unused,
76609 .unused,
76610 .unused,
76611 .unused,
76612 .unused,
76613 .unused,
76614 },
76615 .dst_temps = .{ .mem, .unused },
76616 .clobbers = .{ .eflags = true },
76617 .each = .{ .once = &.{
76618 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
76619 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
76620 .{ .@"0:", .v_ps, .cvtph2, .tmp2y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
76621 .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src1x, .tmp0, .add_size), ._, ._ },
76622 .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .tmp3y, .vp(switch (cc) {
76623 else => unreachable,
76624 .e => .eq,
76625 .ne => .neq,
76626 }) },
76627 .{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ },
76628 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
76629 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
76630 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
76631 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
76632 } },
76633 }, .{
76634 .required_features = .{ .f16c, null, null, null },
76635 .src_constraints = .{
76636 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
76637 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
76638 .any,
76639 },
76640 .patterns = &.{
76641 .{ .src = .{ .to_mem, .to_mem, .none } },
76642 },
76643 .extra_temps = .{
76644 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76645 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
76646 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
76647 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
76648 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
76649 .unused,
76650 .unused,
76651 .unused,
76652 .unused,
76653 .unused,
76654 .unused,
76655 },
76656 .dst_temps = .{ .mem, .unused },
76657 .clobbers = .{ .eflags = true },
76658 .each = .{ .once = &.{
76659 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
76660 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
76661 .{ .@"0:", .v_ps, .cvtph2, .tmp2y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
76662 .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src1x, .tmp0, .add_size), ._, ._ },
76663 .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .tmp3y, .vp(switch (cc) {
76664 else => unreachable,
76665 .e => .eq,
76666 .ne => .neq,
76667 }) },
76668 .{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ },
76669 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
76670 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
76671 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
76672 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
76673 } },
76674 }, .{
76675 .required_features = .{ .avx, .slow_incdec, null, null },
76676 .src_constraints = .{
76677 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
76678 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
76679 .any,
76680 },
76681 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
76682 .patterns = &.{
76683 .{ .src = .{ .to_mem, .to_mem, .none } },
76684 },
76685 .call_frame = .{ .alignment = .@"16" },
76686 .extra_temps = .{
76687 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
76688 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
76689 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
76690 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
76691 .{ .type = .i32, .kind = .{ .reg = .eax } },
76692 .{ .type = .u8, .kind = .{ .reg = .cl } },
76693 .{ .type = .u32, .kind = .{ .reg = .edx } },
76694 .unused,
76695 .unused,
76696 .unused,
76697 .unused,
76698 },
76699 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
76700 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
76701 .each = .{ .once = &.{
76702 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
76703 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
76704 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
76705 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
76706 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0) },
76707 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
76708 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
76709 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
76710 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
76711 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
76712 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
76713 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
76714 .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ },
76715 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
76716 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
76717 } },
76718 }, .{
76719 .required_features = .{ .avx, null, null, null },
76720 .src_constraints = .{
76721 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
76722 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
76723 .any,
76724 },
76725 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
76726 .patterns = &.{
76727 .{ .src = .{ .to_mem, .to_mem, .none } },
76728 },
76729 .call_frame = .{ .alignment = .@"16" },
76730 .extra_temps = .{
76731 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
76732 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
76733 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
76734 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
76735 .{ .type = .i32, .kind = .{ .reg = .eax } },
76736 .{ .type = .u8, .kind = .{ .reg = .cl } },
76737 .{ .type = .u32, .kind = .{ .reg = .edx } },
76738 .unused,
76739 .unused,
76740 .unused,
76741 .unused,
76742 },
76743 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
76744 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
76745 .each = .{ .once = &.{
76746 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
76747 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
76748 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
76749 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
76750 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0) },
76751 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
76752 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
76753 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
76754 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
76755 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
76756 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
76757 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
76758 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
76759 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
76760 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
76761 } },
76762 }, .{
76763 .required_features = .{ .sse2, .slow_incdec, null, null },
76764 .src_constraints = .{
76765 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
76766 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
76767 .any,
76768 },
76769 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
76770 .patterns = &.{
76771 .{ .src = .{ .to_mem, .to_mem, .none } },
76772 },
76773 .call_frame = .{ .alignment = .@"16" },
76774 .extra_temps = .{
76775 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
76776 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
76777 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
76778 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
76779 .{ .type = .i32, .kind = .{ .reg = .eax } },
76780 .{ .type = .u8, .kind = .{ .reg = .cl } },
76781 .{ .type = .u32, .kind = .{ .reg = .edx } },
76782 .unused,
76783 .unused,
76784 .unused,
76785 .unused,
76786 },
76787 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
76788 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
76789 .each = .{ .once = &.{
76790 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
76791 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
76792 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
76793 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
76794 .{ ._, .p_w, .insr, .tmp1x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
76795 .{ ._, .p_w, .insr, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ },
76796 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
76797 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
76798 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
76799 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
76800 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
76801 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
76802 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
76803 .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ },
76804 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
76805 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
76806 } },
76807 }, .{
76808 .required_features = .{ .sse2, null, null, null },
76809 .src_constraints = .{
76810 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
76811 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
76812 .any,
76813 },
76814 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
76815 .patterns = &.{
76816 .{ .src = .{ .to_mem, .to_mem, .none } },
76817 },
76818 .call_frame = .{ .alignment = .@"16" },
76819 .extra_temps = .{
76820 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
76821 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
76822 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
76823 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
76824 .{ .type = .i32, .kind = .{ .reg = .eax } },
76825 .{ .type = .u8, .kind = .{ .reg = .cl } },
76826 .{ .type = .u32, .kind = .{ .reg = .edx } },
76827 .unused,
76828 .unused,
76829 .unused,
76830 .unused,
76831 },
76832 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
76833 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
76834 .each = .{ .once = &.{
76835 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
76836 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
76837 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
76838 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
76839 .{ ._, .p_w, .insr, .tmp1x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
76840 .{ ._, .p_w, .insr, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ },
76841 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
76842 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
76843 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
76844 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
76845 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
76846 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
76847 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
76848 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
76849 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
76850 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
76851 } },
76852 }, .{
76853 .required_features = .{ .sse, .slow_incdec, null, null },
76854 .src_constraints = .{
76855 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
76856 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
76857 .any,
76858 },
76859 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
76860 .patterns = &.{
76861 .{ .src = .{ .to_mem, .to_mem, .none } },
76862 },
76863 .call_frame = .{ .alignment = .@"16" },
76864 .extra_temps = .{
76865 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
76866 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
76867 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
76868 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
76869 .{ .type = .i32, .kind = .{ .reg = .eax } },
76870 .{ .type = .u8, .kind = .{ .reg = .cl } },
76871 .{ .type = .u32, .kind = .{ .reg = .edx } },
76872 .{ .type = .f32, .kind = .mem },
76873 .unused,
76874 .unused,
76875 .unused,
76876 },
76877 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
76878 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
76879 .each = .{ .once = &.{
76880 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
76881 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
76882 .{ .@"0:", ._, .movzx, .tmp4d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
76883 .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ },
76884 .{ ._, ._ss, .mov, .tmp1x, .mem(.tmp7d), ._, ._ },
76885 .{ ._, ._, .movzx, .tmp4d, .memsi(.src1w, .@"2", .tmp0), ._, ._ },
76886 .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ },
76887 .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp7d), ._, ._ },
76888 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
76889 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
76890 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
76891 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
76892 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
76893 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
76894 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
76895 .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ },
76896 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
76897 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
76898 } },
76899 }, .{
76900 .required_features = .{ .sse, null, null, null },
76901 .src_constraints = .{
76902 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
76903 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
76904 .any,
76905 },
76906 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
76907 .patterns = &.{
76908 .{ .src = .{ .to_mem, .to_mem, .none } },
76909 },
76910 .call_frame = .{ .alignment = .@"16" },
76911 .extra_temps = .{
76912 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
76913 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
76914 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
76915 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
76916 .{ .type = .i32, .kind = .{ .reg = .eax } },
76917 .{ .type = .u8, .kind = .{ .reg = .cl } },
76918 .{ .type = .u32, .kind = .{ .reg = .edx } },
76919 .{ .type = .f32, .kind = .mem },
76920 .unused,
76921 .unused,
76922 .unused,
76923 },
76924 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
76925 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
76926 .each = .{ .once = &.{
76927 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
76928 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
76929 .{ .@"0:", ._, .movzx, .tmp4d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
76930 .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ },
76931 .{ ._, ._ss, .mov, .tmp1x, .mem(.tmp7d), ._, ._ },
76932 .{ ._, ._, .movzx, .tmp4d, .memsi(.src1w, .@"2", .tmp0), ._, ._ },
76933 .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ },
76934 .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp7d), ._, ._ },
76935 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
76936 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
76937 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
76938 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
76939 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
76940 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
76941 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
76942 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
76943 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
76944 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
76945 } },
76946 }, .{
76947 .required_features = .{ .@"64bit", .avx, .slow_incdec, null },
76948 .src_constraints = .{
76949 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
76950 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
76951 .any,
76952 },
76953 .patterns = &.{
76954 .{ .src = .{ .to_mem, .to_mem, .none } },
76955 },
76956 .call_frame = .{ .alignment = .@"16" },
76957 .extra_temps = .{
76958 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
76959 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
76960 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
76961 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
76962 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
76963 .{ .type = .i32, .kind = .{ .reg = .eax } },
76964 .{ .type = .u8, .kind = .{ .reg = .cl } },
76965 .{ .type = .u64, .kind = .{ .reg = .rdx } },
76966 .unused,
76967 .unused,
76968 .unused,
76969 },
76970 .dst_temps = .{ .mem, .unused },
76971 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
76972 .each = .{ .once = &.{
76973 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
76974 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
76975 .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ },
76976 .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
76977 .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0) },
76978 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
76979 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
76980 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
76981 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
76982 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
76983 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
76984 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
76985 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
76986 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
76987 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
76988 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
76989 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
76990 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
76991 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
76992 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
76993 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
76994 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
76995 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
76996 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
76997 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
76998 } },
76999 }, .{
77000 .required_features = .{ .@"64bit", .avx, null, null },
77001 .src_constraints = .{
77002 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
77003 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
77004 .any,
77005 },
77006 .patterns = &.{
77007 .{ .src = .{ .to_mem, .to_mem, .none } },
77008 },
77009 .call_frame = .{ .alignment = .@"16" },
77010 .extra_temps = .{
77011 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
77012 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
77013 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
77014 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
77015 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
77016 .{ .type = .i32, .kind = .{ .reg = .eax } },
77017 .{ .type = .u8, .kind = .{ .reg = .cl } },
77018 .{ .type = .u64, .kind = .{ .reg = .rdx } },
77019 .unused,
77020 .unused,
77021 .unused,
77022 },
77023 .dst_temps = .{ .mem, .unused },
77024 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
77025 .each = .{ .once = &.{
77026 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
77027 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
77028 .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ },
77029 .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
77030 .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0) },
77031 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
77032 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
77033 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
77034 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
77035 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
77036 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
77037 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
77038 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
77039 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
77040 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
77041 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
77042 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
77043 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
77044 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
77045 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
77046 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
77047 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
77048 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
77049 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
77050 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
77051 } },
77052 }, .{
77053 .required_features = .{ .@"64bit", .sse2, .slow_incdec, null },
77054 .src_constraints = .{
77055 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
77056 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
77057 .any,
77058 },
77059 .patterns = &.{
77060 .{ .src = .{ .to_mem, .to_mem, .none } },
77061 },
77062 .call_frame = .{ .alignment = .@"16" },
77063 .extra_temps = .{
77064 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
77065 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
77066 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
77067 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
77068 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
77069 .{ .type = .i32, .kind = .{ .reg = .eax } },
77070 .{ .type = .u8, .kind = .{ .reg = .cl } },
77071 .{ .type = .u64, .kind = .{ .reg = .rdx } },
77072 .unused,
77073 .unused,
77074 .unused,
77075 },
77076 .dst_temps = .{ .mem, .unused },
77077 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
77078 .each = .{ .once = &.{
77079 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
77080 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
77081 .{ .@"0:", .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
77082 .{ ._, .p_w, .insr, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
77083 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },
77084 .{ ._, .p_w, .insr, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ },
77085 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
77086 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
77087 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
77088 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
77089 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
77090 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
77091 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
77092 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
77093 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
77094 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
77095 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
77096 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
77097 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
77098 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
77099 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
77100 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
77101 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
77102 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
77103 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
77104 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
77105 } },
77106 }, .{
77107 .required_features = .{ .@"64bit", .sse2, null, null },
77108 .src_constraints = .{
77109 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
77110 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
77111 .any,
77112 },
77113 .patterns = &.{
77114 .{ .src = .{ .to_mem, .to_mem, .none } },
77115 },
77116 .call_frame = .{ .alignment = .@"16" },
77117 .extra_temps = .{
77118 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
77119 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
77120 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
77121 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
77122 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
77123 .{ .type = .i32, .kind = .{ .reg = .eax } },
77124 .{ .type = .u8, .kind = .{ .reg = .cl } },
77125 .{ .type = .u64, .kind = .{ .reg = .rdx } },
77126 .unused,
77127 .unused,
77128 .unused,
77129 },
77130 .dst_temps = .{ .mem, .unused },
77131 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
77132 .each = .{ .once = &.{
77133 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
77134 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
77135 .{ .@"0:", .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
77136 .{ ._, .p_w, .insr, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
77137 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },
77138 .{ ._, .p_w, .insr, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ },
77139 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
77140 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
77141 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
77142 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
77143 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
77144 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
77145 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
77146 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
77147 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
77148 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
77149 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
77150 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
77151 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
77152 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
77153 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
77154 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
77155 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
77156 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
77157 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
77158 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
77159 } },
77160 }, .{
77161 .required_features = .{ .@"64bit", .sse, .slow_incdec, null },
77162 .src_constraints = .{
77163 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
77164 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
77165 .any,
77166 },
77167 .patterns = &.{
77168 .{ .src = .{ .to_mem, .to_mem, .none } },
77169 },
77170 .call_frame = .{ .alignment = .@"16" },
77171 .extra_temps = .{
77172 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
77173 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
77174 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
77175 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
77176 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
77177 .{ .type = .i32, .kind = .{ .reg = .eax } },
77178 .{ .type = .u8, .kind = .{ .reg = .cl } },
77179 .{ .type = .u64, .kind = .{ .reg = .rdx } },
77180 .{ .type = .f32, .kind = .mem },
77181 .unused,
77182 .unused,
77183 },
77184 .dst_temps = .{ .mem, .unused },
77185 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
77186 .each = .{ .once = &.{
77187 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
77188 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
77189 .{ .@"0:", ._, .movzx, .tmp5d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
77190 .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ },
77191 .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp8d), ._, ._ },
77192 .{ ._, ._, .movzx, .tmp5d, .memsi(.src1w, .@"2", .tmp0), ._, ._ },
77193 .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ },
77194 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp8d), ._, ._ },
77195 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
77196 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
77197 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
77198 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
77199 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
77200 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
77201 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
77202 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
77203 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
77204 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
77205 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
77206 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
77207 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
77208 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
77209 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
77210 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
77211 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
77212 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
77213 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
77214 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
77215 } },
77216 }, .{
77217 .required_features = .{ .@"64bit", .sse, null, null },
77218 .src_constraints = .{
77219 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
77220 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
77221 .any,
77222 },
77223 .patterns = &.{
77224 .{ .src = .{ .to_mem, .to_mem, .none } },
77225 },
77226 .call_frame = .{ .alignment = .@"16" },
77227 .extra_temps = .{
77228 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
77229 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
77230 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
77231 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
77232 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
77233 .{ .type = .i32, .kind = .{ .reg = .eax } },
77234 .{ .type = .u8, .kind = .{ .reg = .cl } },
77235 .{ .type = .u64, .kind = .{ .reg = .rdx } },
77236 .{ .type = .f32, .kind = .mem },
77237 .unused,
77238 .unused,
77239 },
77240 .dst_temps = .{ .mem, .unused },
77241 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
77242 .each = .{ .once = &.{
77243 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
77244 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
77245 .{ .@"0:", ._, .movzx, .tmp5d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
77246 .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ },
77247 .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp8d), ._, ._ },
77248 .{ ._, ._, .movzx, .tmp5d, .memsi(.src1w, .@"2", .tmp0), ._, ._ },
77249 .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ },
77250 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp8d), ._, ._ },
77251 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
77252 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
77253 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
77254 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
77255 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
77256 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
77257 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
77258 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
77259 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
77260 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
77261 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
77262 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
77263 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
77264 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
77265 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
77266 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
77267 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
77268 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
77269 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
77270 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
77271 } },
77272 }, .{
77273 .required_features = .{ .avx, .slow_incdec, null, null },
77274 .src_constraints = .{
77275 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
77276 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
77277 .any,
77278 },
77279 .patterns = &.{
77280 .{ .src = .{ .to_mem, .to_mem, .none } },
77281 },
77282 .extra_temps = .{
77283 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
77284 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
77285 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
77286 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
77287 .unused,
77288 .unused,
77289 .unused,
77290 .unused,
77291 .unused,
77292 .unused,
77293 .unused,
77294 },
77295 .dst_temps = .{ .mem, .unused },
77296 .clobbers = .{ .eflags = true },
77297 .each = .{ .once = &.{
77298 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
77299 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
77300 .{ .@"0:", .v_ps, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
77301 .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
77302 else => unreachable,
77303 .e => .eq,
77304 .ne => .neq,
77305 }) },
77306 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ },
77307 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
77308 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
77309 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
77310 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
77311 } },
77312 }, .{
77313 .required_features = .{ .avx, null, null, null },
77314 .src_constraints = .{
77315 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
77316 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
77317 .any,
77318 },
77319 .patterns = &.{
77320 .{ .src = .{ .to_mem, .to_mem, .none } },
77321 },
77322 .extra_temps = .{
77323 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
77324 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
77325 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
77326 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
77327 .unused,
77328 .unused,
77329 .unused,
77330 .unused,
77331 .unused,
77332 .unused,
77333 .unused,
77334 },
77335 .dst_temps = .{ .mem, .unused },
77336 .clobbers = .{ .eflags = true },
77337 .each = .{ .once = &.{
77338 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
77339 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
77340 .{ .@"0:", .v_ps, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
77341 .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
77342 else => unreachable,
77343 .e => .eq,
77344 .ne => .neq,
77345 }) },
77346 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ },
77347 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
77348 .{ ._, ._c, .in, .tmp1q, ._, ._, ._ },
77349 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
77350 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
77351 } },
77352 }, .{
77353 .required_features = .{ .sse2, null, null, null },
77354 .src_constraints = .{
77355 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
77356 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
77357 .any,
77358 },
77359 .patterns = &.{
77360 .{ .src = .{ .to_mem, .to_mem, .none } },
77361 },
77362 .extra_temps = .{
77363 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
77364 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
77365 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
77366 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
77367 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
77368 .unused,
77369 .unused,
77370 .unused,
77371 .unused,
77372 .unused,
77373 .unused,
77374 },
77375 .dst_temps = .{ .mem, .unused },
77376 .clobbers = .{ .eflags = true },
77377 .each = .{ .once = &.{
77378 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
77379 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
77380 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
77381 .{ ._, ._ps, .mova, .tmp3x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ },
77382 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
77383 else => unreachable,
77384 .e => .eq,
77385 .ne => .neq,
77386 }), ._ },
77387 .{ ._, ._ps, .cmp, .tmp3x, .memiad(.src1x, .tmp0, .add_size, 16), .sp(switch (cc) {
77388 else => unreachable,
77389 .e => .eq,
77390 .ne => .neq,
77391 }), ._ },
77392 .{ ._, .p_w, .ackssd, .tmp2x, .tmp3x, ._, ._ },
77393 .{ ._, .p_b, .ackssw, .tmp2x, .tmp2x, ._, ._ },
77394 .{ ._, .p_b, .movmsk, .tmp4d, .tmp2x, ._, ._ },
77395 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
77396 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
77397 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
77398 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
77399 } },
77400 }, .{
77401 .required_features = .{ .sse, null, null, null },
77402 .src_constraints = .{
77403 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
77404 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
77405 .any,
77406 },
77407 .patterns = &.{
77408 .{ .src = .{ .to_mem, .to_mem, .none } },
77409 },
77410 .extra_temps = .{
77411 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
77412 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
77413 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
77414 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
77415 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
77416 .unused,
77417 .unused,
77418 .unused,
77419 .unused,
77420 .unused,
77421 .unused,
77422 },
77423 .dst_temps = .{ .mem, .unused },
77424 .clobbers = .{ .eflags = true },
77425 .each = .{ .once = &.{
77426 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
77427 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
77428 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
77429 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
77430 else => unreachable,
77431 .e => .eq,
77432 .ne => .neq,
77433 }), ._ },
77434 .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ },
77435 .{ ._, ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ },
77436 .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, 16), .sp(switch (cc) {
77437 else => unreachable,
77438 .e => .eq,
77439 .ne => .neq,
77440 }), ._ },
77441 .{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ },
77442 .{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ },
77443 .{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ },
77444 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
77445 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
77446 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
77447 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
77448 } },
77449 }, .{
77450 .required_features = .{ .sse, null, null, null },
77451 .src_constraints = .{
77452 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
77453 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
77454 .any,
77455 },
77456 .patterns = &.{
77457 .{ .src = .{ .to_mem, .to_mem, .none } },
77458 },
77459 .extra_temps = .{
77460 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
77461 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
77462 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
77463 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
77464 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
77465 .unused,
77466 .unused,
77467 .unused,
77468 .unused,
77469 .unused,
77470 .unused,
77471 },
77472 .dst_temps = .{ .mem, .unused },
77473 .clobbers = .{ .eflags = true },
77474 .each = .{ .once = &.{
77475 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
77476 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
77477 .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
77478 .{ .@"0:", ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, -16), ._, ._ },
77479 .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, -16), .sp(switch (cc) {
77480 else => unreachable,
77481 .e => .eq,
77482 .ne => .neq,
77483 }), ._ },
77484 .{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ },
77485 .{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ },
77486 .{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ },
77487 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
77488 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
77489 .{ .@"1:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
77490 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
77491 else => unreachable,
77492 .e => .eq,
77493 .ne => .neq,
77494 }), ._ },
77495 .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ },
77496 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
77497 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
77498 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
77499 } },
77500 }, .{
77501 .required_features = .{ .avx, .slow_incdec, null, null },
77502 .src_constraints = .{
77503 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
77504 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
77505 .any,
77506 },
77507 .patterns = &.{
77508 .{ .src = .{ .to_mem, .to_mem, .none } },
77509 },
77510 .extra_temps = .{
77511 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
77512 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
77513 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
77514 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
77515 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
77516 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
77517 .unused,
77518 .unused,
77519 .unused,
77520 .unused,
77521 .unused,
77522 },
77523 .dst_temps = .{ .mem, .unused },
77524 .clobbers = .{ .eflags = true },
77525 .each = .{ .once = &.{
77526 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
77527 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
77528 .{ .@"0:", .v_pd, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
77529 .{ ._, .v_pd, .mova, .tmp3y, .memiad(.src0y, .tmp0, .add_size, 32), ._, ._ },
77530 .{ ._, .v_pd, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
77531 else => unreachable,
77532 .e => .eq,
77533 .ne => .neq,
77534 }) },
77535 .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memiad(.src1y, .tmp0, .add_size, 32), .vp(switch (cc) {
77536 else => unreachable,
77537 .e => .eq,
77538 .ne => .neq,
77539 }) },
77540 .{ ._, .v_pd, .movmsk, .tmp4d, .tmp2y, ._, ._ },
77541 .{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ },
77542 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
77543 .{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ },
77544 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
77545 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
77546 .{ ._, ._, .add, .tmp0p, .si(64), ._, ._ },
77547 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
77548 } },
77549 }, .{
77550 .required_features = .{ .avx, null, null, null },
77551 .src_constraints = .{
77552 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
77553 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
77554 .any,
77555 },
77556 .patterns = &.{
77557 .{ .src = .{ .to_mem, .to_mem, .none } },
77558 },
77559 .extra_temps = .{
77560 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
77561 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
77562 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
77563 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
77564 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
77565 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
77566 .unused,
77567 .unused,
77568 .unused,
77569 .unused,
77570 .unused,
77571 },
77572 .dst_temps = .{ .mem, .unused },
77573 .clobbers = .{ .eflags = true },
77574 .each = .{ .once = &.{
77575 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
77576 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
77577 .{ .@"0:", .v_pd, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
77578 .{ ._, .v_pd, .mova, .tmp3y, .memiad(.src0y, .tmp0, .add_size, 32), ._, ._ },
77579 .{ ._, .v_pd, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
77580 else => unreachable,
77581 .e => .eq,
77582 .ne => .neq,
77583 }) },
77584 .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memiad(.src1y, .tmp0, .add_size, 32), .vp(switch (cc) {
77585 else => unreachable,
77586 .e => .eq,
77587 .ne => .neq,
77588 }) },
77589 .{ ._, .v_pd, .movmsk, .tmp4d, .tmp2y, ._, ._ },
77590 .{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ },
77591 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
77592 .{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ },
77593 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
77594 .{ ._, ._c, .in, .tmp1q, ._, ._, ._ },
77595 .{ ._, ._, .add, .tmp0p, .si(64), ._, ._ },
77596 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
77597 } },
77598 }, .{
77599 .required_features = .{ .avx, null, null, null },
77600 .src_constraints = .{
77601 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
77602 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
77603 .any,
77604 },
77605 .patterns = &.{
77606 .{ .src = .{ .to_mem, .to_mem, .none } },
77607 },
77608 .extra_temps = .{
77609 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
77610 .{ .type = .u32, .kind = .{ .reg = .rcx } },
77611 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
77612 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
77613 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
77614 .unused,
77615 .unused,
77616 .unused,
77617 .unused,
77618 .unused,
77619 .unused,
77620 },
77621 .dst_temps = .{ .mem, .unused },
77622 .clobbers = .{ .eflags = true },
77623 .each = .{ .once = &.{
77624 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
77625 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
77626 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
77627 .{ .@"0:", .v_pd, .mova, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
77628 .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
77629 else => unreachable,
77630 .e => .eq,
77631 .ne => .neq,
77632 }) },
77633 .{ ._, .v_pd, .movmsk, .tmp4d, .tmp3y, ._, ._ },
77634 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
77635 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
77636 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
77637 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
77638 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
77639 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
77640 .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ },
77641 .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ },
77642 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
77643 .{ .@"1:", ._, .add, .tmp0p, .si(32), ._, ._ },
77644 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
77645 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
77646 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
77647 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
77648 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
77649 } },
77650 }, .{
77651 .required_features = .{ .sse2, null, null, null },
77652 .src_constraints = .{
77653 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
77654 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
77655 .any,
77656 },
77657 .patterns = &.{
77658 .{ .src = .{ .to_mem, .to_mem, .none } },
77659 },
77660 .extra_temps = .{
77661 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
77662 .{ .type = .u32, .kind = .{ .reg = .rcx } },
77663 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
77664 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
77665 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
77666 .unused,
77667 .unused,
77668 .unused,
77669 .unused,
77670 .unused,
77671 .unused,
77672 },
77673 .dst_temps = .{ .mem, .unused },
77674 .clobbers = .{ .eflags = true },
77675 .each = .{ .once = &.{
77676 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
77677 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
77678 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
77679 .{ .@"0:", ._pd, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
77680 .{ ._, ._pd, .cmp, .tmp3x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
77681 else => unreachable,
77682 .e => .eq,
77683 .ne => .neq,
77684 }), ._ },
77685 .{ ._, ._pd, .movmsk, .tmp4d, .tmp3x, ._, ._ },
77686 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
77687 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
77688 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
77689 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
77690 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
77691 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
77692 .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ },
77693 .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ },
77694 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
77695 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
77696 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
77697 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
77698 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
77699 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
77700 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
77701 } },
77702 }, .{
77703 .required_features = .{ .x87, .cmov, .slow_incdec, null },
77704 .src_constraints = .{
77705 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
77706 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
77707 .any,
77708 },
77709 .patterns = &.{
77710 .{ .src = .{ .to_mem, .to_mem, .none } },
77711 },
77712 .extra_temps = .{
77713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
77714 .{ .type = .u32, .kind = .{ .reg = .rcx } },
77715 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
77716 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
77717 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
77718 .{ .type = .f64, .kind = .{ .reg = .st6 } },
77719 .{ .type = .f64, .kind = .{ .reg = .st7 } },
77720 .unused,
77721 .unused,
77722 .unused,
77723 .unused,
77724 },
77725 .dst_temps = .{ .mem, .unused },
77726 .clobbers = .{ .eflags = true },
77727 .each = .{ .once = &.{
77728 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
77729 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
77730 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
77731 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
77732 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
77733 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ },
77734 .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ },
77735 .{ ._, .f_p, .ucomi, .tmp5t, .tmp6t, ._, ._ },
77736 .{ ._, .f_p, .st, .tmp6t, ._, ._, ._ },
77737 .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ },
77738 .{ ._, switch (cc) {
77739 else => unreachable,
77740 .e => ._np,
77741 .ne => ._p,
77742 }, .set, .tmp4b, ._, ._, ._ },
77743 .{ ._, ._, switch (cc) {
77744 else => unreachable,
77745 .e => .@"and",
77746 .ne => .@"or",
77747 }, .tmp3b, .tmp4b, ._, ._ },
77748 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
77749 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
77750 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
77751 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
77752 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
77753 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
77754 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
77755 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
77756 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
77757 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
77758 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
77759 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
77760 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
77761 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
77762 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
77763 } },
77764 }, .{
77765 .required_features = .{ .x87, .cmov, null, null },
77766 .src_constraints = .{
77767 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
77768 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
77769 .any,
77770 },
77771 .patterns = &.{
77772 .{ .src = .{ .to_mem, .to_mem, .none } },
77773 },
77774 .extra_temps = .{
77775 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
77776 .{ .type = .u32, .kind = .{ .reg = .rcx } },
77777 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
77778 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
77779 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
77780 .{ .type = .f64, .kind = .{ .reg = .st6 } },
77781 .{ .type = .f64, .kind = .{ .reg = .st7 } },
77782 .unused,
77783 .unused,
77784 .unused,
77785 .unused,
77786 },
77787 .dst_temps = .{ .mem, .unused },
77788 .clobbers = .{ .eflags = true },
77789 .each = .{ .once = &.{
77790 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
77791 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
77792 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
77793 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
77794 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
77795 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ },
77796 .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ },
77797 .{ ._, .f_p, .ucomi, .tmp5t, .tmp6t, ._, ._ },
77798 .{ ._, .f_p, .st, .tmp6t, ._, ._, ._ },
77799 .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ },
77800 .{ ._, switch (cc) {
77801 else => unreachable,
77802 .e => ._np,
77803 .ne => ._p,
77804 }, .set, .tmp4b, ._, ._, ._ },
77805 .{ ._, ._, switch (cc) {
77806 else => unreachable,
77807 .e => .@"and",
77808 .ne => .@"or",
77809 }, .tmp3b, .tmp4b, ._, ._ },
77810 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
77811 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
77812 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
77813 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
77814 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
77815 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
77816 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
77817 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
77818 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
77819 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
77820 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
77821 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
77822 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
77823 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
77824 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
77825 } },
77826 }, .{
77827 .required_features = .{ .x87, null, null, null },
77828 .src_constraints = .{
77829 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
77830 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
77831 .any,
77832 },
77833 .patterns = &.{
77834 .{ .src = .{ .to_mem, .to_mem, .none } },
77835 },
77836 .extra_temps = .{
77837 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
77838 .{ .type = .u32, .kind = .{ .reg = .rcx } },
77839 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
77840 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
77841 .{ .type = .f64, .kind = .{ .reg = .st6 } },
77842 .{ .type = .f64, .kind = .{ .reg = .st7 } },
77843 .{ .type = .u16, .kind = .{ .reg = .ax } },
77844 .unused,
77845 .unused,
77846 .unused,
77847 .unused,
77848 },
77849 .dst_temps = .{ .mem, .unused },
77850 .clobbers = .{ .eflags = true },
77851 .each = .{ .once = &.{
77852 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
77853 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
77854 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
77855 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
77856 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ },
77857 .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ },
77858 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
77859 .{ ._, .fn_sw, .st, .tmp6w, ._, ._, ._ },
77860 .{ ._, ._, .xor, .tmp6h, .si(0b1_000_000), ._, ._ },
77861 .{ ._, ._, .@"test", .tmp6h, .si(0b1_000_100), ._, ._ },
77862 .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ },
77863 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
77864 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
77865 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
77866 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
77867 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
77868 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
77869 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
77870 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
77871 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
77872 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
77873 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
77874 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
77875 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
77876 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
77877 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
77878 } },
77879 }, .{
77880 .required_features = .{ .x87, .cmov, .slow_incdec, null },
77881 .src_constraints = .{
77882 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
77883 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
77884 .any,
77885 },
77886 .patterns = &.{
77887 .{ .src = .{ .to_mem, .to_mem, .none } },
77888 },
77889 .extra_temps = .{
77890 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
77891 .{ .type = .u32, .kind = .{ .reg = .rcx } },
77892 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
77893 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
77894 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
77895 .{ .type = .f80, .kind = .{ .reg = .st6 } },
77896 .{ .type = .f80, .kind = .{ .reg = .st7 } },
77897 .unused,
77898 .unused,
77899 .unused,
77900 .unused,
77901 },
77902 .dst_temps = .{ .mem, .unused },
77903 .clobbers = .{ .eflags = true },
77904 .each = .{ .once = &.{
77905 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
77906 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
77907 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
77908 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
77909 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
77910 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
77911 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
77912 .{ ._, .f_p, .ucomi, .tmp5t, .tmp6t, ._, ._ },
77913 .{ ._, .f_p, .st, .tmp6t, ._, ._, ._ },
77914 .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ },
77915 .{ ._, switch (cc) {
77916 else => unreachable,
77917 .e => ._np,
77918 .ne => ._p,
77919 }, .set, .tmp4b, ._, ._, ._ },
77920 .{ ._, ._, switch (cc) {
77921 else => unreachable,
77922 .e => .@"and",
77923 .ne => .@"or",
77924 }, .tmp3b, .tmp4b, ._, ._ },
77925 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
77926 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
77927 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
77928 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
77929 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
77930 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
77931 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
77932 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
77933 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
77934 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
77935 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
77936 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
77937 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
77938 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
77939 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
77940 } },
77941 }, .{
77942 .required_features = .{ .x87, .cmov, null, null },
77943 .src_constraints = .{
77944 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
77945 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
77946 .any,
77947 },
77948 .patterns = &.{
77949 .{ .src = .{ .to_mem, .to_mem, .none } },
77950 },
77951 .extra_temps = .{
77952 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
77953 .{ .type = .u32, .kind = .{ .reg = .rcx } },
77954 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
77955 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
77956 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
77957 .{ .type = .f80, .kind = .{ .reg = .st6 } },
77958 .{ .type = .f80, .kind = .{ .reg = .st7 } },
77959 .unused,
77960 .unused,
77961 .unused,
77962 .unused,
77963 },
77964 .dst_temps = .{ .mem, .unused },
77965 .clobbers = .{ .eflags = true },
77966 .each = .{ .once = &.{
77967 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
77968 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
77969 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
77970 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
77971 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
77972 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
77973 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
77974 .{ ._, .f_p, .ucomi, .tmp5t, .tmp6t, ._, ._ },
77975 .{ ._, .f_p, .st, .tmp6t, ._, ._, ._ },
77976 .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ },
77977 .{ ._, switch (cc) {
77978 else => unreachable,
77979 .e => ._np,
77980 .ne => ._p,
77981 }, .set, .tmp4b, ._, ._, ._ },
77982 .{ ._, ._, switch (cc) {
77983 else => unreachable,
77984 .e => .@"and",
77985 .ne => .@"or",
77986 }, .tmp3b, .tmp4b, ._, ._ },
77987 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
77988 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
77989 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
77990 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
77991 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
77992 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
77993 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
77994 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
77995 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
77996 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
77997 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
77998 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
77999 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
78000 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
78001 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
78002 } },
78003 }, .{
78004 .required_features = .{ .x87, null, null, null },
78005 .src_constraints = .{
78006 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
78007 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
78008 .any,
78009 },
78010 .patterns = &.{
78011 .{ .src = .{ .to_mem, .to_mem, .none } },
78012 },
78013 .extra_temps = .{
78014 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
78015 .{ .type = .u32, .kind = .{ .reg = .rcx } },
78016 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78017 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
78018 .{ .type = .f80, .kind = .{ .reg = .st6 } },
78019 .{ .type = .f80, .kind = .{ .reg = .st7 } },
78020 .{ .type = .u16, .kind = .{ .reg = .ax } },
78021 .unused,
78022 .unused,
78023 .unused,
78024 .unused,
78025 },
78026 .dst_temps = .{ .mem, .unused },
78027 .clobbers = .{ .eflags = true },
78028 .each = .{ .once = &.{
78029 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
78030 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78031 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
78032 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
78033 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
78034 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
78035 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
78036 .{ ._, .fn_sw, .st, .tmp6w, ._, ._, ._ },
78037 .{ ._, ._, .xor, .tmp6h, .si(0b1_000_000), ._, ._ },
78038 .{ ._, ._, .@"test", .tmp6h, .si(0b1_000_100), ._, ._ },
78039 .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ },
78040 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
78041 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
78042 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
78043 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
78044 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
78045 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
78046 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
78047 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
78048 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
78049 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
78050 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
78051 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
78052 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
78053 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
78054 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
78055 } },
78056 }, .{
78057 .required_features = .{ .avx, .slow_incdec, null, null },
78058 .src_constraints = .{
78059 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
78060 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
78061 .any,
78062 },
78063 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
78064 .patterns = &.{
78065 .{ .src = .{ .to_mem, .to_mem, .none } },
78066 },
78067 .call_frame = .{ .alignment = .@"16" },
78068 .extra_temps = .{
78069 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
78070 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78071 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
78072 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
78073 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
78074 .{ .type = .i32, .kind = .{ .reg = .eax } },
78075 .{ .type = .u8, .kind = .{ .reg = .cl } },
78076 .{ .type = .u32, .kind = .{ .reg = .edx } },
78077 .unused,
78078 .unused,
78079 .unused,
78080 },
78081 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
78082 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
78083 .each = .{ .once = &.{
78084 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
78085 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
78086 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78087 .{ .@"0:", .v_dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
78088 .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
78089 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
78090 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
78091 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
78092 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
78093 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
78094 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
78095 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
78096 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
78097 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
78098 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
78099 } },
78100 }, .{
78101 .required_features = .{ .avx, .slow_incdec, null, null },
78102 .src_constraints = .{
78103 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
78104 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
78105 .any,
78106 },
78107 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
78108 .patterns = &.{
78109 .{ .src = .{ .to_mem, .to_mem, .none } },
78110 },
78111 .call_frame = .{ .alignment = .@"16" },
78112 .extra_temps = .{
78113 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
78114 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78115 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
78116 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
78117 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
78118 .{ .type = .i32, .kind = .{ .reg = .eax } },
78119 .{ .type = .u8, .kind = .{ .reg = .cl } },
78120 .{ .type = .u32, .kind = .{ .reg = .edx } },
78121 .unused,
78122 .unused,
78123 .unused,
78124 },
78125 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
78126 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
78127 .each = .{ .once = &.{
78128 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
78129 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
78130 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78131 .{ .@"0:", .v_dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
78132 .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
78133 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
78134 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
78135 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
78136 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
78137 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
78138 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
78139 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
78140 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
78141 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
78142 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
78143 } },
78144 }, .{
78145 .required_features = .{ .sse2, .slow_incdec, null, null },
78146 .src_constraints = .{
78147 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
78148 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
78149 .any,
78150 },
78151 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
78152 .patterns = &.{
78153 .{ .src = .{ .to_mem, .to_mem, .none } },
78154 },
78155 .call_frame = .{ .alignment = .@"16" },
78156 .extra_temps = .{
78157 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
78158 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78159 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
78160 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
78161 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
78162 .{ .type = .i32, .kind = .{ .reg = .eax } },
78163 .{ .type = .u8, .kind = .{ .reg = .cl } },
78164 .{ .type = .u32, .kind = .{ .reg = .edx } },
78165 .unused,
78166 .unused,
78167 .unused,
78168 },
78169 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
78170 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
78171 .each = .{ .once = &.{
78172 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
78173 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
78174 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78175 .{ .@"0:", ._dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
78176 .{ ._, ._dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
78177 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
78178 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
78179 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
78180 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
78181 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
78182 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
78183 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
78184 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
78185 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
78186 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
78187 } },
78188 }, .{
78189 .required_features = .{ .sse2, .slow_incdec, null, null },
78190 .src_constraints = .{
78191 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
78192 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
78193 .any,
78194 },
78195 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
78196 .patterns = &.{
78197 .{ .src = .{ .to_mem, .to_mem, .none } },
78198 },
78199 .call_frame = .{ .alignment = .@"16" },
78200 .extra_temps = .{
78201 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
78202 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78203 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
78204 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
78205 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
78206 .{ .type = .i32, .kind = .{ .reg = .eax } },
78207 .{ .type = .u8, .kind = .{ .reg = .cl } },
78208 .{ .type = .u32, .kind = .{ .reg = .edx } },
78209 .unused,
78210 .unused,
78211 .unused,
78212 },
78213 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
78214 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
78215 .each = .{ .once = &.{
78216 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
78217 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
78218 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78219 .{ .@"0:", ._dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
78220 .{ ._, ._dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
78221 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
78222 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
78223 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
78224 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
78225 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
78226 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
78227 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
78228 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
78229 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
78230 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
78231 } },
78232 }, .{
78233 .required_features = .{ .sse, .slow_incdec, null, null },
78234 .src_constraints = .{
78235 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
78236 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
78237 .any,
78238 },
78239 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
78240 .patterns = &.{
78241 .{ .src = .{ .to_mem, .to_mem, .none } },
78242 },
78243 .call_frame = .{ .alignment = .@"16" },
78244 .extra_temps = .{
78245 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
78246 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78247 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
78248 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
78249 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
78250 .{ .type = .i32, .kind = .{ .reg = .eax } },
78251 .{ .type = .u8, .kind = .{ .reg = .cl } },
78252 .{ .type = .u32, .kind = .{ .reg = .edx } },
78253 .unused,
78254 .unused,
78255 .unused,
78256 },
78257 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
78258 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
78259 .each = .{ .once = &.{
78260 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
78261 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
78262 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78263 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
78264 .{ ._, ._ps, .mova, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
78265 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
78266 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
78267 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
78268 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
78269 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
78270 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
78271 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
78272 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
78273 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
78274 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
78275 } },
78276 }, .{
78277 .required_features = .{ .sse2, .slow_incdec, null, null },
78278 .src_constraints = .{
78279 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
78280 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
78281 .any,
78282 },
78283 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
78284 .patterns = &.{
78285 .{ .src = .{ .to_mem, .to_mem, .none } },
78286 },
78287 .call_frame = .{ .alignment = .@"16" },
78288 .extra_temps = .{
78289 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
78290 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78291 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
78292 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
78293 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
78294 .{ .type = .i32, .kind = .{ .reg = .eax } },
78295 .{ .type = .u8, .kind = .{ .reg = .cl } },
78296 .{ .type = .u32, .kind = .{ .reg = .edx } },
78297 .unused,
78298 .unused,
78299 .unused,
78300 },
78301 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
78302 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
78303 .each = .{ .once = &.{
78304 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
78305 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
78306 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78307 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
78308 .{ ._, ._ps, .mova, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
78309 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
78310 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
78311 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
78312 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
78313 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
78314 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
78315 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
78316 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
78317 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
78318 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
78319 } },
78320 }, .{
78321 .required_features = .{ .@"64bit", .avx, .slow_incdec, null },
78322 .src_constraints = .{
78323 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
78324 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
78325 .any,
78326 },
78327 .patterns = &.{
78328 .{ .src = .{ .to_mem, .to_mem, .none } },
78329 },
78330 .call_frame = .{ .alignment = .@"16" },
78331 .extra_temps = .{
78332 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
78333 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78334 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
78335 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
78336 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
78337 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
78338 .{ .type = .i32, .kind = .{ .reg = .eax } },
78339 .{ .type = .u8, .kind = .{ .reg = .cl } },
78340 .{ .type = .u64, .kind = .{ .reg = .rdx } },
78341 .unused,
78342 .unused,
78343 },
78344 .dst_temps = .{ .mem, .unused },
78345 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
78346 .each = .{ .once = &.{
78347 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
78348 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78349 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
78350 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
78351 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
78352 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
78353 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
78354 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
78355 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
78356 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
78357 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
78358 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
78359 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
78360 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
78361 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
78362 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
78363 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
78364 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
78365 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
78366 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
78367 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
78368 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
78369 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
78370 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
78371 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
78372 } },
78373 }, .{
78374 .required_features = .{ .@"64bit", .avx, null, null },
78375 .src_constraints = .{
78376 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
78377 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
78378 .any,
78379 },
78380 .patterns = &.{
78381 .{ .src = .{ .to_mem, .to_mem, .none } },
78382 },
78383 .call_frame = .{ .alignment = .@"16" },
78384 .extra_temps = .{
78385 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
78386 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78387 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
78388 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
78389 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
78390 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
78391 .{ .type = .i32, .kind = .{ .reg = .eax } },
78392 .{ .type = .u8, .kind = .{ .reg = .cl } },
78393 .{ .type = .u64, .kind = .{ .reg = .rdx } },
78394 .unused,
78395 .unused,
78396 },
78397 .dst_temps = .{ .mem, .unused },
78398 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
78399 .each = .{ .once = &.{
78400 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
78401 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78402 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
78403 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
78404 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
78405 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
78406 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
78407 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
78408 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
78409 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
78410 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
78411 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
78412 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
78413 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
78414 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
78415 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
78416 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
78417 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
78418 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
78419 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
78420 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
78421 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
78422 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
78423 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
78424 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
78425 } },
78426 }, .{
78427 .required_features = .{ .@"64bit", .sse2, .slow_incdec, null },
78428 .src_constraints = .{
78429 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
78430 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
78431 .any,
78432 },
78433 .patterns = &.{
78434 .{ .src = .{ .to_mem, .to_mem, .none } },
78435 },
78436 .call_frame = .{ .alignment = .@"16" },
78437 .extra_temps = .{
78438 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
78439 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78440 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
78441 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
78442 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
78443 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
78444 .{ .type = .i32, .kind = .{ .reg = .eax } },
78445 .{ .type = .u8, .kind = .{ .reg = .cl } },
78446 .{ .type = .u64, .kind = .{ .reg = .rdx } },
78447 .unused,
78448 .unused,
78449 },
78450 .dst_temps = .{ .mem, .unused },
78451 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
78452 .each = .{ .once = &.{
78453 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
78454 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78455 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
78456 .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
78457 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
78458 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
78459 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
78460 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
78461 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
78462 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
78463 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
78464 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
78465 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
78466 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
78467 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
78468 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
78469 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
78470 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
78471 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
78472 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
78473 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
78474 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
78475 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
78476 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
78477 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
78478 } },
78479 }, .{
78480 .required_features = .{ .@"64bit", .sse2, null, null },
78481 .src_constraints = .{
78482 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
78483 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
78484 .any,
78485 },
78486 .patterns = &.{
78487 .{ .src = .{ .to_mem, .to_mem, .none } },
78488 },
78489 .call_frame = .{ .alignment = .@"16" },
78490 .extra_temps = .{
78491 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
78492 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78493 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
78494 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
78495 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
78496 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
78497 .{ .type = .i32, .kind = .{ .reg = .eax } },
78498 .{ .type = .u8, .kind = .{ .reg = .cl } },
78499 .{ .type = .u64, .kind = .{ .reg = .rdx } },
78500 .unused,
78501 .unused,
78502 },
78503 .dst_temps = .{ .mem, .unused },
78504 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
78505 .each = .{ .once = &.{
78506 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
78507 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78508 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
78509 .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
78510 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
78511 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
78512 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
78513 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
78514 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
78515 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
78516 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
78517 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
78518 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
78519 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
78520 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
78521 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
78522 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
78523 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
78524 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
78525 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
78526 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
78527 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
78528 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
78529 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
78530 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
78531 } },
78532 }, .{
78533 .required_features = .{ .@"64bit", .sse, .slow_incdec, null },
78534 .src_constraints = .{
78535 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
78536 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
78537 .any,
78538 },
78539 .patterns = &.{
78540 .{ .src = .{ .to_mem, .to_mem, .none } },
78541 },
78542 .call_frame = .{ .alignment = .@"16" },
78543 .extra_temps = .{
78544 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
78545 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78546 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
78547 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
78548 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
78549 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
78550 .{ .type = .i32, .kind = .{ .reg = .eax } },
78551 .{ .type = .u8, .kind = .{ .reg = .cl } },
78552 .{ .type = .u64, .kind = .{ .reg = .rdx } },
78553 .unused,
78554 .unused,
78555 },
78556 .dst_temps = .{ .mem, .unused },
78557 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
78558 .each = .{ .once = &.{
78559 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
78560 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78561 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
78562 .{ .@"0:", ._ps, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
78563 .{ ._, ._ps, .mova, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
78564 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
78565 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
78566 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
78567 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
78568 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
78569 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
78570 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
78571 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
78572 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
78573 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
78574 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
78575 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
78576 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
78577 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
78578 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
78579 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
78580 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
78581 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
78582 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
78583 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
78584 } },
78585 }, .{
78586 .required_features = .{ .@"64bit", .sse, null, null },
78587 .src_constraints = .{
78588 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
78589 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
78590 .any,
78591 },
78592 .patterns = &.{
78593 .{ .src = .{ .to_mem, .to_mem, .none } },
78594 },
78595 .call_frame = .{ .alignment = .@"16" },
78596 .extra_temps = .{
78597 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
78598 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78599 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
78600 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
78601 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
78602 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
78603 .{ .type = .i32, .kind = .{ .reg = .eax } },
78604 .{ .type = .u8, .kind = .{ .reg = .cl } },
78605 .{ .type = .u64, .kind = .{ .reg = .rdx } },
78606 .unused,
78607 .unused,
78608 },
78609 .dst_temps = .{ .mem, .unused },
78610 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
78611 .each = .{ .once = &.{
78612 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
78613 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78614 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
78615 .{ .@"0:", ._ps, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
78616 .{ ._, ._ps, .mova, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
78617 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
78618 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
78619 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
78620 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
78621 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
78622 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
78623 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
78624 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
78625 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
78626 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
78627 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
78628 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
78629 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
78630 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
78631 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
78632 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
78633 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
78634 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
78635 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
78636 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
78637 } },
78638 } },
78639 }),
78640 }) catch |err| switch (err) {
78641 error.SelectFailed => return cg.fail("failed to select {s} {s} {} {} {}", .{
78642 @tagName(air_tag),
78643 @tagName(extra.compareOperator()),
78644 cg.typeOf(extra.lhs).fmt(pt),
78645 ops[0].tracking(cg),
78646 ops[1].tracking(cg),
78647 }),
78648 else => |e| return e,
78649 };
78650 try res[0].finish(inst, &.{ extra.lhs, extra.rhs }, &ops, cg);
78651 },
78652
78653 .sqrt => |air_tag| if (use_old) try cg.airSqrt(inst) else {
78654 const un_op = air_datas[@intFromEnum(inst)].un_op;
78655 var ops = try cg.tempsFromOperands(inst, .{un_op});
71584 .sqrt => |air_tag| if (use_old) try cg.airSqrt(inst) else {
71585 const un_op = air_datas[@intFromEnum(inst)].un_op;
71586 var ops = try cg.tempsFromOperands(inst, .{un_op});
7865671587 var res: [1]Temp = undefined;
7865771588 cg.select(&res, &.{cg.typeOf(un_op)}, &ops, comptime &.{ .{
7865871589 .required_features = .{ .f16c, null, null, null },
......@@ -82366,15 +75297,465 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8236675297 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8236775298 } },
8236875299 }, .{
82369 .required_features = .{ .sse4_1, null, null, null },
82370 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
75300 .required_features = .{ .sse4_1, null, null, null },
75301 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
75302 .patterns = &.{
75303 .{ .src = .{ .to_mem, .none, .none } },
75304 },
75305 .extra_temps = .{
75306 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75307 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
75308 .unused,
75309 .unused,
75310 .unused,
75311 .unused,
75312 .unused,
75313 .unused,
75314 .unused,
75315 .unused,
75316 .unused,
75317 },
75318 .dst_temps = .{ .mem, .unused },
75319 .clobbers = .{ .eflags = true },
75320 .each = .{ .once = &.{
75321 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
75322 .{ .@"0:", ._pd, .round, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), .rm(.{
75323 .direction = direction,
75324 .precision = .inexact,
75325 }), ._ },
75326 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
75327 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
75328 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75329 } },
75330 }, .{
75331 .required_features = .{ .avx, null, null, null },
75332 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
75333 .patterns = &.{
75334 .{ .src = .{ .to_mem, .none, .none } },
75335 },
75336 .call_frame = .{ .alignment = .@"16" },
75337 .extra_temps = .{
75338 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75339 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
75340 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75341 else => unreachable,
75342 .down => "floor",
75343 .up => "ceil",
75344 .zero => "trunc",
75345 } } } },
75346 .unused,
75347 .unused,
75348 .unused,
75349 .unused,
75350 .unused,
75351 .unused,
75352 .unused,
75353 .unused,
75354 },
75355 .dst_temps = .{ .mem, .unused },
75356 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
75357 .each = .{ .once = &.{
75358 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
75359 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
75360 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
75361 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
75362 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
75363 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75364 } },
75365 }, .{
75366 .required_features = .{ .sse2, null, null, null },
75367 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
75368 .patterns = &.{
75369 .{ .src = .{ .to_mem, .none, .none } },
75370 },
75371 .call_frame = .{ .alignment = .@"16" },
75372 .extra_temps = .{
75373 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75374 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
75375 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75376 else => unreachable,
75377 .down => "floor",
75378 .up => "ceil",
75379 .zero => "trunc",
75380 } } } },
75381 .unused,
75382 .unused,
75383 .unused,
75384 .unused,
75385 .unused,
75386 .unused,
75387 .unused,
75388 .unused,
75389 },
75390 .dst_temps = .{ .mem, .unused },
75391 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
75392 .each = .{ .once = &.{
75393 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
75394 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
75395 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
75396 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
75397 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
75398 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75399 } },
75400 }, .{
75401 .required_features = .{ .sse, null, null, null },
75402 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
75403 .patterns = &.{
75404 .{ .src = .{ .to_mem, .none, .none } },
75405 },
75406 .call_frame = .{ .alignment = .@"16" },
75407 .extra_temps = .{
75408 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75409 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
75410 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75411 else => unreachable,
75412 .down => "floor",
75413 .up => "ceil",
75414 .zero => "trunc",
75415 } } } },
75416 .unused,
75417 .unused,
75418 .unused,
75419 .unused,
75420 .unused,
75421 .unused,
75422 .unused,
75423 .unused,
75424 },
75425 .dst_temps = .{ .mem, .unused },
75426 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
75427 .each = .{ .once = &.{
75428 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
75429 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
75430 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
75431 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
75432 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
75433 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
75434 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75435 } },
75436 }, .{
75437 .required_features = .{ .avx, .x87, null, null },
75438 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
75439 .patterns = &.{
75440 .{ .src = .{ .to_mem, .none, .none } },
75441 },
75442 .call_frame = .{ .size = 16, .alignment = .@"16" },
75443 .extra_temps = .{
75444 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
75445 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
75446 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75447 else => unreachable,
75448 .down => "__floorx",
75449 .up => "__ceilx",
75450 .zero => "__truncx",
75451 } } } },
75452 .unused,
75453 .unused,
75454 .unused,
75455 .unused,
75456 .unused,
75457 .unused,
75458 .unused,
75459 .unused,
75460 },
75461 .dst_temps = .{ .{ .reg = .st0 }, .unused },
75462 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
75463 .each = .{ .once = &.{
75464 .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ },
75465 .{ ._, .v_dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ },
75466 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
75467 } },
75468 }, .{
75469 .required_features = .{ .sse2, .x87, null, null },
75470 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
75471 .patterns = &.{
75472 .{ .src = .{ .to_mem, .none, .none } },
75473 },
75474 .call_frame = .{ .size = 16, .alignment = .@"16" },
75475 .extra_temps = .{
75476 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
75477 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
75478 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75479 else => unreachable,
75480 .down => "__floorx",
75481 .up => "__ceilx",
75482 .zero => "__truncx",
75483 } } } },
75484 .unused,
75485 .unused,
75486 .unused,
75487 .unused,
75488 .unused,
75489 .unused,
75490 .unused,
75491 .unused,
75492 },
75493 .dst_temps = .{ .{ .reg = .st0 }, .unused },
75494 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
75495 .each = .{ .once = &.{
75496 .{ ._, ._dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ },
75497 .{ ._, ._dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ },
75498 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
75499 } },
75500 }, .{
75501 .required_features = .{ .sse, .x87, null, null },
75502 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
75503 .patterns = &.{
75504 .{ .src = .{ .to_mem, .none, .none } },
75505 },
75506 .call_frame = .{ .size = 16, .alignment = .@"16" },
75507 .extra_temps = .{
75508 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
75509 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
75510 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75511 else => unreachable,
75512 .down => "__floorx",
75513 .up => "__ceilx",
75514 .zero => "__truncx",
75515 } } } },
75516 .unused,
75517 .unused,
75518 .unused,
75519 .unused,
75520 .unused,
75521 .unused,
75522 .unused,
75523 .unused,
75524 },
75525 .dst_temps = .{ .{ .reg = .st0 }, .unused },
75526 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
75527 .each = .{ .once = &.{
75528 .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ },
75529 .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ },
75530 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
75531 } },
75532 }, .{
75533 .required_features = .{ .avx, .x87, null, null },
75534 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
75535 .patterns = &.{
75536 .{ .src = .{ .to_mem, .none, .none } },
75537 },
75538 .call_frame = .{ .size = 16, .alignment = .@"16" },
75539 .extra_temps = .{
75540 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75541 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
75542 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
75543 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75544 else => unreachable,
75545 .down => "__floorx",
75546 .up => "__ceilx",
75547 .zero => "__truncx",
75548 } } } },
75549 .unused,
75550 .unused,
75551 .unused,
75552 .unused,
75553 .unused,
75554 .unused,
75555 .unused,
75556 },
75557 .dst_temps = .{ .mem, .unused },
75558 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
75559 .each = .{ .once = &.{
75560 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
75561 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
75562 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
75563 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
75564 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
75565 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
75566 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
75567 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75568 } },
75569 }, .{
75570 .required_features = .{ .sse2, .x87, null, null },
75571 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
75572 .patterns = &.{
75573 .{ .src = .{ .to_mem, .none, .none } },
75574 },
75575 .call_frame = .{ .size = 16, .alignment = .@"16" },
75576 .extra_temps = .{
75577 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75578 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
75579 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
75580 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75581 else => unreachable,
75582 .down => "__floorx",
75583 .up => "__ceilx",
75584 .zero => "__truncx",
75585 } } } },
75586 .unused,
75587 .unused,
75588 .unused,
75589 .unused,
75590 .unused,
75591 .unused,
75592 .unused,
75593 },
75594 .dst_temps = .{ .mem, .unused },
75595 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
75596 .each = .{ .once = &.{
75597 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
75598 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
75599 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
75600 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
75601 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
75602 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
75603 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
75604 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75605 } },
75606 }, .{
75607 .required_features = .{ .sse, .x87, null, null },
75608 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
75609 .patterns = &.{
75610 .{ .src = .{ .to_mem, .none, .none } },
75611 },
75612 .call_frame = .{ .size = 16, .alignment = .@"16" },
75613 .extra_temps = .{
75614 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75615 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
75616 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
75617 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75618 else => unreachable,
75619 .down => "__floorx",
75620 .up => "__ceilx",
75621 .zero => "__truncx",
75622 } } } },
75623 .unused,
75624 .unused,
75625 .unused,
75626 .unused,
75627 .unused,
75628 .unused,
75629 .unused,
75630 },
75631 .dst_temps = .{ .mem, .unused },
75632 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
75633 .each = .{ .once = &.{
75634 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
75635 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
75636 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
75637 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
75638 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
75639 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
75640 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
75641 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75642 } },
75643 }, .{
75644 .required_features = .{ .sse, null, null, null },
75645 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
75646 .patterns = &.{
75647 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
75648 },
75649 .call_frame = .{ .alignment = .@"16" },
75650 .extra_temps = .{
75651 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75652 else => unreachable,
75653 .down => "floorq",
75654 .up => "ceilq",
75655 .zero => "truncq",
75656 } } } },
75657 .unused,
75658 .unused,
75659 .unused,
75660 .unused,
75661 .unused,
75662 .unused,
75663 .unused,
75664 .unused,
75665 .unused,
75666 .unused,
75667 },
75668 .dst_temps = .{ .{ .ref = .src0 }, .unused },
75669 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
75670 .each = .{ .once = &.{
75671 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
75672 } },
75673 }, .{
75674 .required_features = .{ .avx, null, null, null },
75675 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
75676 .patterns = &.{
75677 .{ .src = .{ .to_mem, .none, .none } },
75678 },
75679 .call_frame = .{ .alignment = .@"16" },
75680 .extra_temps = .{
75681 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75682 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
75683 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75684 else => unreachable,
75685 .down => "floorq",
75686 .up => "ceilq",
75687 .zero => "truncq",
75688 } } } },
75689 .unused,
75690 .unused,
75691 .unused,
75692 .unused,
75693 .unused,
75694 .unused,
75695 .unused,
75696 .unused,
75697 },
75698 .dst_temps = .{ .mem, .unused },
75699 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
75700 .each = .{ .once = &.{
75701 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
75702 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
75703 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
75704 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
75705 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
75706 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75707 } },
75708 }, .{
75709 .required_features = .{ .sse2, null, null, null },
75710 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
75711 .patterns = &.{
75712 .{ .src = .{ .to_mem, .none, .none } },
75713 },
75714 .call_frame = .{ .alignment = .@"16" },
75715 .extra_temps = .{
75716 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75717 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
75718 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75719 else => unreachable,
75720 .down => "floorq",
75721 .up => "ceilq",
75722 .zero => "truncq",
75723 } } } },
75724 .unused,
75725 .unused,
75726 .unused,
75727 .unused,
75728 .unused,
75729 .unused,
75730 .unused,
75731 .unused,
75732 },
75733 .dst_temps = .{ .mem, .unused },
75734 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
75735 .each = .{ .once = &.{
75736 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
75737 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
75738 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
75739 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
75740 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
75741 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75742 } },
75743 }, .{
75744 .required_features = .{ .sse, null, null, null },
75745 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
8237175746 .patterns = &.{
8237275747 .{ .src = .{ .to_mem, .none, .none } },
8237375748 },
75749 .call_frame = .{ .alignment = .@"16" },
8237475750 .extra_temps = .{
8237575751 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
82376 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
82377 .unused,
75752 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
75753 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75754 else => unreachable,
75755 .down => "floorq",
75756 .up => "ceilq",
75757 .zero => "truncq",
75758 } } } },
8237875759 .unused,
8237975760 .unused,
8238075761 .unused,
......@@ -82385,1052 +75766,7256 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8238575766 .unused,
8238675767 },
8238775768 .dst_temps = .{ .mem, .unused },
82388 .clobbers = .{ .eflags = true },
75769 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8238975770 .each = .{ .once = &.{
8239075771 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
82391 .{ .@"0:", ._pd, .round, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), .rm(.{
82392 .direction = direction,
82393 .precision = .inexact,
82394 }), ._ },
82395 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
75772 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
75773 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
75774 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
8239675775 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
8239775776 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8239875777 } },
82399 }, .{
82400 .required_features = .{ .avx, null, null, null },
82401 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
82402 .patterns = &.{
82403 .{ .src = .{ .to_mem, .none, .none } },
75778 } },
75779 }) catch |err| switch (err) {
75780 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
75781 @tagName(air_tag),
75782 cg.typeOf(un_op).fmt(pt),
75783 ops[0].tracking(cg),
75784 }),
75785 else => |e| return e,
75786 };
75787 try res[0].finish(inst, &.{un_op}, &ops, cg);
75788 },
75789 .neg, .neg_optimized => |air_tag| if (use_old) try cg.airFloatSign(inst, .neg) else {
75790 const un_op = air_datas[@intFromEnum(inst)].un_op;
75791 var ops = try cg.tempsFromOperands(inst, .{un_op});
75792 var res: [1]Temp = undefined;
75793 cg.select(&res, &.{cg.typeOf(un_op)}, &ops, comptime &.{ .{
75794 .required_features = .{ .avx, null, null, null },
75795 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
75796 .patterns = &.{
75797 .{ .src = .{ .to_sse, .none, .none } },
75798 },
75799 .extra_temps = .{
75800 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
75801 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
75802 .unused,
75803 .unused,
75804 .unused,
75805 .unused,
75806 .unused,
75807 .unused,
75808 .unused,
75809 .unused,
75810 .unused,
75811 },
75812 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
75813 .each = .{ .once = &.{
75814 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
75815 .{ ._, .v_ps, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },
75816 } },
75817 }, .{
75818 .required_features = .{ .sse, null, null, null },
75819 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
75820 .patterns = &.{
75821 .{ .src = .{ .to_mut_sse, .none, .none } },
75822 },
75823 .extra_temps = .{
75824 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
75825 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
75826 .unused,
75827 .unused,
75828 .unused,
75829 .unused,
75830 .unused,
75831 .unused,
75832 .unused,
75833 .unused,
75834 .unused,
75835 },
75836 .dst_temps = .{ .{ .ref = .src0 }, .unused },
75837 .each = .{ .once = &.{
75838 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
75839 .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
75840 } },
75841 }, .{
75842 .required_features = .{ .avx, null, null, null },
75843 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
75844 .patterns = &.{
75845 .{ .src = .{ .to_sse, .none, .none } },
75846 },
75847 .extra_temps = .{
75848 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
75849 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
75850 .unused,
75851 .unused,
75852 .unused,
75853 .unused,
75854 .unused,
75855 .unused,
75856 .unused,
75857 .unused,
75858 .unused,
75859 },
75860 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
75861 .each = .{ .once = &.{
75862 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
75863 .{ ._, .v_ps, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
75864 } },
75865 }, .{
75866 .required_features = .{ .avx, null, null, null },
75867 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
75868 .patterns = &.{
75869 .{ .src = .{ .to_sse, .none, .none } },
75870 },
75871 .extra_temps = .{
75872 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
75873 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
75874 .unused,
75875 .unused,
75876 .unused,
75877 .unused,
75878 .unused,
75879 .unused,
75880 .unused,
75881 .unused,
75882 .unused,
75883 },
75884 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
75885 .each = .{ .once = &.{
75886 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
75887 .{ ._, .v_pd, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },
75888 } },
75889 }, .{
75890 .required_features = .{ .sse2, null, null, null },
75891 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
75892 .patterns = &.{
75893 .{ .src = .{ .to_mut_sse, .none, .none } },
75894 },
75895 .extra_temps = .{
75896 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
75897 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
75898 .unused,
75899 .unused,
75900 .unused,
75901 .unused,
75902 .unused,
75903 .unused,
75904 .unused,
75905 .unused,
75906 .unused,
75907 },
75908 .dst_temps = .{ .{ .ref = .src0 }, .unused },
75909 .each = .{ .once = &.{
75910 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
75911 .{ ._, ._pd, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
75912 } },
75913 }, .{
75914 .required_features = .{ .avx, null, null, null },
75915 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
75916 .patterns = &.{
75917 .{ .src = .{ .to_sse, .none, .none } },
75918 },
75919 .extra_temps = .{
75920 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
75921 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
75922 .unused,
75923 .unused,
75924 .unused,
75925 .unused,
75926 .unused,
75927 .unused,
75928 .unused,
75929 .unused,
75930 .unused,
75931 },
75932 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
75933 .each = .{ .once = &.{
75934 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
75935 .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
75936 } },
75937 }, .{
75938 .required_features = .{ .x87, null, null, null },
75939 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
75940 .patterns = &.{
75941 .{ .src = .{ .mem, .none, .none } },
75942 .{ .src = .{ .to_x87, .none, .none } },
75943 },
75944 .extra_temps = .{
75945 .{ .type = .f80, .kind = .{ .reg = .st7 } },
75946 .unused,
75947 .unused,
75948 .unused,
75949 .unused,
75950 .unused,
75951 .unused,
75952 .unused,
75953 .unused,
75954 .unused,
75955 .unused,
75956 },
75957 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .x87 } }, .unused },
75958 .each = .{ .once = &.{
75959 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
75960 .{ ._, .f_, .chs, ._, ._, ._, ._ },
75961 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
75962 } },
75963 }, .{
75964 .required_features = .{ .avx, null, null, null },
75965 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
75966 .patterns = &.{
75967 .{ .src = .{ .to_sse, .none, .none } },
75968 },
75969 .extra_temps = .{
75970 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
75971 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
75972 .unused,
75973 .unused,
75974 .unused,
75975 .unused,
75976 .unused,
75977 .unused,
75978 .unused,
75979 .unused,
75980 .unused,
75981 },
75982 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
75983 .each = .{ .once = &.{
75984 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
75985 .{ ._, .vp_, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },
75986 } },
75987 }, .{
75988 .required_features = .{ .sse2, null, null, null },
75989 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
75990 .patterns = &.{
75991 .{ .src = .{ .to_mut_sse, .none, .none } },
75992 },
75993 .extra_temps = .{
75994 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
75995 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
75996 .unused,
75997 .unused,
75998 .unused,
75999 .unused,
76000 .unused,
76001 .unused,
76002 .unused,
76003 .unused,
76004 .unused,
76005 },
76006 .dst_temps = .{ .{ .ref = .src0 }, .unused },
76007 .each = .{ .once = &.{
76008 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
76009 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
76010 } },
76011 }, .{
76012 .required_features = .{ .sse, null, null, null },
76013 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
76014 .patterns = &.{
76015 .{ .src = .{ .to_mut_sse, .none, .none } },
76016 },
76017 .extra_temps = .{
76018 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
76019 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
76020 .unused,
76021 .unused,
76022 .unused,
76023 .unused,
76024 .unused,
76025 .unused,
76026 .unused,
76027 .unused,
76028 .unused,
76029 },
76030 .dst_temps = .{ .{ .ref = .src0 }, .unused },
76031 .each = .{ .once = &.{
76032 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
76033 .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
76034 } },
76035 }, .{
76036 .required_features = .{ .avx2, null, null, null },
76037 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any },
76038 .patterns = &.{
76039 .{ .src = .{ .to_sse, .none, .none } },
76040 },
76041 .extra_temps = .{
76042 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
76043 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
76044 .unused,
76045 .unused,
76046 .unused,
76047 .unused,
76048 .unused,
76049 .unused,
76050 .unused,
76051 .unused,
76052 .unused,
76053 },
76054 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
76055 .each = .{ .once = &.{
76056 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
76057 .{ ._, .vp_, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
76058 } },
76059 }, .{
76060 .required_features = .{ .avx, null, null, null },
76061 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any },
76062 .patterns = &.{
76063 .{ .src = .{ .to_sse, .none, .none } },
76064 },
76065 .extra_temps = .{
76066 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
76067 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
76068 .unused,
76069 .unused,
76070 .unused,
76071 .unused,
76072 .unused,
76073 .unused,
76074 .unused,
76075 .unused,
76076 .unused,
76077 },
76078 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
76079 .each = .{ .once = &.{
76080 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
76081 .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
76082 } },
76083 }, .{
76084 .required_features = .{ .avx, null, null, null },
76085 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
76086 .patterns = &.{
76087 .{ .src = .{ .to_mem, .none, .none } },
76088 },
76089 .extra_temps = .{
76090 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76091 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
76092 .{ .kind = .{ .rc = .sse } },
76093 .{ .kind = .{ .rc = .sse } },
76094 .unused,
76095 .unused,
76096 .unused,
76097 .unused,
76098 .unused,
76099 .unused,
76100 .unused,
76101 },
76102 .dst_temps = .{ .mem, .unused },
76103 .each = .{ .once = &.{
76104 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
76105 .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
76106 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
76107 .{ .@"0:", .v_ps, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
76108 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
76109 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
76110 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
76111 } },
76112 }, .{
76113 .required_features = .{ .sse, null, null, null },
76114 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
76115 .patterns = &.{
76116 .{ .src = .{ .to_mem, .none, .none } },
76117 },
76118 .extra_temps = .{
76119 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76120 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
76121 .{ .kind = .{ .rc = .sse } },
76122 .{ .kind = .{ .rc = .sse } },
76123 .unused,
76124 .unused,
76125 .unused,
76126 .unused,
76127 .unused,
76128 .unused,
76129 .unused,
76130 },
76131 .dst_temps = .{ .mem, .unused },
76132 .each = .{ .once = &.{
76133 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
76134 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
76135 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
76136 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
76137 .{ ._, ._ps, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
76138 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
76139 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
76140 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
76141 } },
76142 }, .{
76143 .required_features = .{ .avx, null, null, null },
76144 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
76145 .patterns = &.{
76146 .{ .src = .{ .to_mem, .none, .none } },
76147 },
76148 .extra_temps = .{
76149 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76150 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
76151 .{ .kind = .{ .rc = .sse } },
76152 .{ .kind = .{ .rc = .sse } },
76153 .unused,
76154 .unused,
76155 .unused,
76156 .unused,
76157 .unused,
76158 .unused,
76159 .unused,
76160 },
76161 .dst_temps = .{ .mem, .unused },
76162 .each = .{ .once = &.{
76163 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
76164 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
76165 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
76166 .{ .@"0:", .v_pd, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
76167 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
76168 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
76169 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
76170 } },
76171 }, .{
76172 .required_features = .{ .sse2, null, null, null },
76173 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
76174 .patterns = &.{
76175 .{ .src = .{ .to_mem, .none, .none } },
76176 },
76177 .extra_temps = .{
76178 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76179 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
76180 .{ .kind = .{ .rc = .sse } },
76181 .{ .kind = .{ .rc = .sse } },
76182 .unused,
76183 .unused,
76184 .unused,
76185 .unused,
76186 .unused,
76187 .unused,
76188 .unused,
76189 },
76190 .dst_temps = .{ .mem, .unused },
76191 .each = .{ .once = &.{
76192 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
76193 .{ ._, ._pd, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
76194 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
76195 .{ .@"0:", ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
76196 .{ ._, ._pd, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
76197 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
76198 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
76199 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
76200 } },
76201 }, .{
76202 .required_features = .{ .avx2, null, null, null },
76203 .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any, .any },
76204 .patterns = &.{
76205 .{ .src = .{ .to_mem, .none, .none } },
76206 },
76207 .extra_temps = .{
76208 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76209 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
76210 .{ .kind = .{ .rc = .sse } },
76211 .{ .kind = .{ .rc = .sse } },
76212 .unused,
76213 .unused,
76214 .unused,
76215 .unused,
76216 .unused,
76217 .unused,
76218 .unused,
76219 },
76220 .dst_temps = .{ .mem, .unused },
76221 .each = .{ .once = &.{
76222 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
76223 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
76224 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
76225 .{ .@"0:", .vp_, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
76226 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
76227 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
76228 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
76229 } },
76230 }, .{
76231 .required_features = .{ .avx, null, null, null },
76232 .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any, .any },
76233 .patterns = &.{
76234 .{ .src = .{ .to_mem, .none, .none } },
76235 },
76236 .extra_temps = .{
76237 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76238 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
76239 .{ .kind = .{ .rc = .sse } },
76240 .{ .kind = .{ .rc = .sse } },
76241 .unused,
76242 .unused,
76243 .unused,
76244 .unused,
76245 .unused,
76246 .unused,
76247 .unused,
76248 },
76249 .dst_temps = .{ .mem, .unused },
76250 .each = .{ .once = &.{
76251 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
76252 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
76253 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
76254 .{ .@"0:", .v_pd, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
76255 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
76256 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
76257 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
76258 } },
76259 }, .{
76260 .required_features = .{ .sse2, null, null, null },
76261 .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any },
76262 .patterns = &.{
76263 .{ .src = .{ .to_mem, .none, .none } },
76264 },
76265 .extra_temps = .{
76266 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76267 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
76268 .{ .kind = .{ .rc = .sse } },
76269 .{ .kind = .{ .rc = .sse } },
76270 .unused,
76271 .unused,
76272 .unused,
76273 .unused,
76274 .unused,
76275 .unused,
76276 .unused,
76277 },
76278 .dst_temps = .{ .mem, .unused },
76279 .each = .{ .once = &.{
76280 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
76281 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
76282 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
76283 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
76284 .{ ._, .p_, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
76285 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
76286 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
76287 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
76288 } },
76289 }, .{
76290 .required_features = .{ .sse, null, null, null },
76291 .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any },
76292 .patterns = &.{
76293 .{ .src = .{ .to_mem, .none, .none } },
76294 },
76295 .extra_temps = .{
76296 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76297 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
76298 .{ .kind = .{ .rc = .sse } },
76299 .{ .kind = .{ .rc = .sse } },
76300 .unused,
76301 .unused,
76302 .unused,
76303 .unused,
76304 .unused,
76305 .unused,
76306 .unused,
76307 },
76308 .dst_temps = .{ .mem, .unused },
76309 .each = .{ .once = &.{
76310 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
76311 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
76312 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
76313 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
76314 .{ ._, ._ps, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
76315 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
76316 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
76317 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
76318 } },
76319 } }) catch |err| switch (err) {
76320 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
76321 @tagName(air_tag),
76322 cg.typeOf(un_op).fmt(pt),
76323 ops[0].tracking(cg),
76324 }),
76325 else => |e| return e,
76326 };
76327 try res[0].finish(inst, &.{un_op}, &ops, cg);
76328 },
76329 .cmp_lt,
76330 .cmp_lt_optimized,
76331 .cmp_lte,
76332 .cmp_lte_optimized,
76333 .cmp_gte,
76334 .cmp_gte_optimized,
76335 .cmp_gt,
76336 .cmp_gt_optimized,
76337 => |air_tag| if (use_old) try cg.airCmp(inst, air_tag.toCmpOp().?) else {
76338 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
76339 const cmp_op = air_tag.toCmpOp().?;
76340 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
76341 var res: [1]Temp = undefined;
76342 (if (cg.floatBits(cg.typeOf(bin_op.lhs))) |_| err: {
76343 switch (cmp_op) {
76344 else => unreachable,
76345 .lt, .lte => {},
76346 .gt, .gte => std.mem.swap(Temp, &ops[0], &ops[1]),
76347 }
76348 break :err cg.select(&res, &.{.bool}, &ops, switch (switch (cmp_op) {
76349 else => unreachable,
76350 .lt, .gt => true,
76351 .lte, .gte => false,
76352 }) {
76353 inline false, true => |strict| comptime &.{ .{
76354 .required_features = .{ .f16c, null, null, null },
76355 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
76356 .patterns = &.{
76357 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
76358 },
76359 .extra_temps = .{
76360 .{ .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
76361 .{ .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
76362 .unused,
76363 .unused,
76364 .unused,
76365 .unused,
76366 .unused,
76367 .unused,
76368 .unused,
76369 .unused,
76370 .unused,
76371 },
76372 .dst_temps = .{ .{ .cc = switch (strict) {
76373 true => .a,
76374 false => .ae,
76375 } }, .unused },
76376 .clobbers = .{ .eflags = true },
76377 .each = .{ .once = &.{
76378 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
76379 .{ ._, .v_ps, .cvtph2, .tmp1x, .src1q, ._, ._ },
76380 .{ ._, .v_ss, .ucomi, .tmp0x, .tmp1d, ._, ._ },
76381 } },
76382 }, .{
76383 .required_features = .{ .sse, null, null, null },
76384 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
76385 .patterns = &.{
76386 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
76387 },
76388 .call_frame = .{ .alignment = .@"16" },
76389 .extra_temps = .{
76390 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
76391 .{ .type = .i32, .kind = .{ .reg = .eax } },
76392 .unused,
76393 .unused,
76394 .unused,
76395 .unused,
76396 .unused,
76397 .unused,
76398 .unused,
76399 .unused,
76400 .unused,
76401 },
76402 .dst_temps = .{ .{ .cc = switch (strict) {
76403 true => .l,
76404 false => .le,
76405 } }, .unused },
76406 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
76407 .each = .{ .once = &.{
76408 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
76409 .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ },
76410 } },
76411 }, .{
76412 .required_features = .{ .avx, null, null, null },
76413 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },
76414 .patterns = &.{
76415 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
76416 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
76417 },
76418 .dst_temps = .{ .{ .cc = switch (strict) {
76419 true => .a,
76420 false => .ae,
76421 } }, .unused },
76422 .clobbers = .{ .eflags = true },
76423 .each = .{ .once = &.{
76424 .{ ._, .v_ss, .ucomi, .src0x, .src1d, ._, ._ },
76425 } },
76426 }, .{
76427 .required_features = .{ .sse, null, null, null },
76428 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },
76429 .patterns = &.{
76430 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
76431 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
76432 },
76433 .dst_temps = .{ .{ .cc = switch (strict) {
76434 true => .a,
76435 false => .ae,
76436 } }, .unused },
76437 .clobbers = .{ .eflags = true },
76438 .each = .{ .once = &.{
76439 .{ ._, ._ss, .ucomi, .src0x, .src1d, ._, ._ },
76440 } },
76441 }, .{
76442 .required_features = .{ .avx, null, null, null },
76443 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
76444 .patterns = &.{
76445 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
76446 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
76447 },
76448 .dst_temps = .{ .{ .cc = switch (strict) {
76449 true => .a,
76450 false => .ae,
76451 } }, .unused },
76452 .clobbers = .{ .eflags = true },
76453 .each = .{ .once = &.{
76454 .{ ._, .v_sd, .ucomi, .src0x, .src1q, ._, ._ },
76455 } },
76456 }, .{
76457 .required_features = .{ .sse2, null, null, null },
76458 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
76459 .patterns = &.{
76460 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
76461 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
76462 },
76463 .dst_temps = .{ .{ .cc = switch (strict) {
76464 true => .a,
76465 false => .ae,
76466 } }, .unused },
76467 .clobbers = .{ .eflags = true },
76468 .each = .{ .once = &.{
76469 .{ ._, ._sd, .ucomi, .src0x, .src1q, ._, ._ },
76470 } },
76471 }, .{
76472 .required_features = .{ .x87, .cmov, null, null },
76473 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
76474 .patterns = &.{
76475 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
76476 },
76477 .extra_temps = .{
76478 .{ .type = .f64, .kind = .{ .reg = .st6 } },
76479 .{ .type = .f64, .kind = .{ .reg = .st7 } },
76480 .unused,
76481 .unused,
76482 .unused,
76483 .unused,
76484 .unused,
76485 .unused,
76486 .unused,
76487 .unused,
76488 .unused,
76489 },
76490 .dst_temps = .{ .{ .cc = switch (strict) {
76491 true => .a,
76492 false => .ae,
76493 } }, .unused },
76494 .clobbers = .{ .eflags = true },
76495 .each = .{ .once = &.{
76496 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
76497 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
76498 .{ ._, .f_p, .ucomi, .tmp0t, .tmp1t, ._, ._ },
76499 .{ ._, .f_p, .st, .tmp1t, ._, ._, ._ },
76500 } },
76501 }, .{
76502 .required_features = .{ .sahf, .x87, null, null },
76503 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
76504 .patterns = &.{
76505 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
76506 },
76507 .extra_temps = .{
76508 .{ .type = .f64, .kind = .{ .reg = .st6 } },
76509 .{ .type = .f64, .kind = .{ .reg = .st7 } },
76510 .{ .type = .u16, .kind = .{ .reg = .ax } },
76511 .unused,
76512 .unused,
76513 .unused,
76514 .unused,
76515 .unused,
76516 .unused,
76517 .unused,
76518 .unused,
76519 },
76520 .dst_temps = .{ .{ .cc = switch (strict) {
76521 true => .a,
76522 false => .ae,
76523 } }, .unused },
76524 .clobbers = .{ .eflags = true },
76525 .each = .{ .once = &.{
76526 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
76527 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
76528 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
76529 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
76530 .{ ._, ._, .sahf, ._, ._, ._, ._ },
76531 } },
76532 }, .{
76533 .required_features = .{ .x87, null, null, null },
76534 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
76535 .patterns = &.{
76536 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
76537 },
76538 .extra_temps = .{
76539 .{ .type = .f64, .kind = .{ .reg = .st6 } },
76540 .{ .type = .f64, .kind = .{ .reg = .st7 } },
76541 .{ .type = .u16, .kind = .{ .reg = .ax } },
76542 .unused,
76543 .unused,
76544 .unused,
76545 .unused,
76546 .unused,
76547 .unused,
76548 .unused,
76549 .unused,
76550 },
76551 .dst_temps = .{ .{ .cc = switch (strict) {
76552 true => .z,
76553 false => .nc,
76554 } }, .unused },
76555 .clobbers = .{ .eflags = true },
76556 .each = .{ .once = &.{
76557 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
76558 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
76559 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
76560 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
76561 switch (strict) {
76562 true => .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_001), ._, ._ },
76563 false => .{ ._, ._r, .sh, .tmp2h, .ui(1), ._, ._ },
76564 },
76565 } },
76566 }, .{
76567 .required_features = .{ .x87, .cmov, null, null },
76568 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
76569 .patterns = &.{
76570 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
76571 .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } },
76572 },
76573 .extra_temps = .{
76574 .{ .type = .f80, .kind = .{ .reg = .st7 } },
76575 .unused,
76576 .unused,
76577 .unused,
76578 .unused,
76579 .unused,
76580 .unused,
76581 .unused,
76582 .unused,
76583 .unused,
76584 .unused,
76585 },
76586 .dst_temps = .{ .{ .cc = switch (strict) {
76587 true => .a,
76588 false => .ae,
76589 } }, .unused },
76590 .clobbers = .{ .eflags = true },
76591 .each = .{ .once = &.{
76592 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
76593 .{ ._, .f_p, .ucomi, .tmp0t, .src1t, ._, ._ },
76594 } },
76595 }, .{
76596 .required_features = .{ .sahf, .x87, null, null },
76597 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
76598 .patterns = &.{
76599 .{ .src = .{ .mem, .mem, .none }, .commute = .{ 0, 1 } },
76600 },
76601 .extra_temps = .{
76602 .{ .type = .f80, .kind = .{ .reg = .st6 } },
76603 .{ .type = .f80, .kind = .{ .reg = .st7 } },
76604 .{ .type = .u16, .kind = .{ .reg = .ax } },
76605 .unused,
76606 .unused,
76607 .unused,
76608 .unused,
76609 .unused,
76610 .unused,
76611 .unused,
76612 .unused,
76613 },
76614 .dst_temps = .{ .{ .cc = switch (strict) {
76615 true => .a,
76616 false => .ae,
76617 } }, .unused },
76618 .clobbers = .{ .eflags = true },
76619 .each = .{ .once = &.{
76620 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
76621 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
76622 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
76623 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
76624 .{ ._, ._, .sahf, ._, ._, ._, ._ },
76625 } },
76626 }, .{
76627 .required_features = .{ .sahf, .x87, null, null },
76628 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
76629 .patterns = &.{
76630 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
76631 .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } },
76632 },
76633 .extra_temps = .{
76634 .{ .type = .f80, .kind = .{ .reg = .st6 } },
76635 .{ .type = .f80, .kind = .{ .reg = .st7 } },
76636 .{ .type = .u16, .kind = .{ .reg = .ax } },
76637 .unused,
76638 .unused,
76639 .unused,
76640 .unused,
76641 .unused,
76642 .unused,
76643 .unused,
76644 .unused,
76645 },
76646 .dst_temps = .{ .{ .cc = switch (strict) {
76647 true => .a,
76648 false => .ae,
76649 } }, .unused },
76650 .clobbers = .{ .eflags = true },
76651 .each = .{ .once = &.{
76652 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
76653 .{ ._, .f_p, .ucom, .src1t, ._, ._, ._ },
76654 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
76655 .{ ._, ._, .sahf, ._, ._, ._, ._ },
76656 } },
76657 }, .{
76658 .required_features = .{ .x87, null, null, null },
76659 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
76660 .patterns = &.{
76661 .{ .src = .{ .mem, .mem, .none }, .commute = .{ 0, 1 } },
76662 },
76663 .extra_temps = .{
76664 .{ .type = .f80, .kind = .{ .reg = .st6 } },
76665 .{ .type = .f80, .kind = .{ .reg = .st7 } },
76666 .{ .type = .u16, .kind = .{ .reg = .ax } },
76667 .unused,
76668 .unused,
76669 .unused,
76670 .unused,
76671 .unused,
76672 .unused,
76673 .unused,
76674 .unused,
76675 },
76676 .dst_temps = .{ .{ .cc = switch (strict) {
76677 true => .z,
76678 false => .nc,
76679 } }, .unused },
76680 .clobbers = .{ .eflags = true },
76681 .each = .{ .once = &.{
76682 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
76683 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
76684 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
76685 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
76686 switch (strict) {
76687 true => .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_001), ._, ._ },
76688 false => .{ ._, ._r, .sh, .tmp2h, .ui(1), ._, ._ },
76689 },
76690 } },
76691 }, .{
76692 .required_features = .{ .x87, null, null, null },
76693 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
76694 .patterns = &.{
76695 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
76696 .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } },
76697 },
76698 .extra_temps = .{
76699 .{ .type = .f80, .kind = .{ .reg = .st6 } },
76700 .{ .type = .f80, .kind = .{ .reg = .st7 } },
76701 .{ .type = .u16, .kind = .{ .reg = .ax } },
76702 .unused,
76703 .unused,
76704 .unused,
76705 .unused,
76706 .unused,
76707 .unused,
76708 .unused,
76709 .unused,
76710 },
76711 .dst_temps = .{ .{ .cc = switch (strict) {
76712 true => .z,
76713 false => .nc,
76714 } }, .unused },
76715 .clobbers = .{ .eflags = true },
76716 .each = .{ .once = &.{
76717 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
76718 .{ ._, .f_p, .ucom, .src1t, ._, ._, ._ },
76719 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
76720 switch (strict) {
76721 true => .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_001), ._, ._ },
76722 false => .{ ._, ._r, .sh, .tmp2h, .ui(1), ._, ._ },
76723 },
76724 } },
76725 }, .{
76726 .required_features = .{ .sse, null, null, null },
76727 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword }, .any },
76728 .patterns = &.{
76729 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
76730 },
76731 .call_frame = .{ .alignment = .@"16" },
76732 .extra_temps = .{
76733 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
76734 .{ .type = .i32, .kind = .{ .reg = .eax } },
76735 .unused,
76736 .unused,
76737 .unused,
76738 .unused,
76739 .unused,
76740 .unused,
76741 .unused,
76742 .unused,
76743 .unused,
76744 },
76745 .dst_temps = .{ .{ .cc = switch (strict) {
76746 true => .l,
76747 false => .le,
76748 } }, .unused },
76749 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
76750 .each = .{ .once = &.{
76751 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
76752 .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ },
76753 } },
76754 } },
76755 });
76756 } else err: {
76757 res[0] = ops[0].cmpInts(cmp_op, &ops[1], cg) catch |err| break :err err;
76758 }) catch |err| switch (err) {
76759 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
76760 @tagName(air_tag),
76761 cg.typeOf(bin_op.lhs).fmt(pt),
76762 ops[0].tracking(cg),
76763 ops[1].tracking(cg),
76764 }),
76765 else => |e| return e,
76766 };
76767 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
76768 },
76769 .cmp_eq,
76770 .cmp_eq_optimized,
76771 .cmp_neq,
76772 .cmp_neq_optimized,
76773 => |air_tag| if (use_old) try cg.airCmp(inst, air_tag.toCmpOp().?) else {
76774 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
76775 const cmp_op = air_tag.toCmpOp().?;
76776 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
76777 const ty = cg.typeOf(bin_op.lhs);
76778 var res: [1]Temp = undefined;
76779 const OptInfo = struct {
76780 deaths: [2]Air.Inst.Index,
76781 res: [1]Temp,
76782 state: State,
76783 reloc: Mir.Inst.Index,
76784 };
76785 var opt_info: ?OptInfo = null;
76786 (err: switch (@as(enum { float, int }, if (cg.floatBits(ty)) |_|
76787 .float
76788 else if (cg.intInfo(ty)) |_|
76789 .int
76790 else category: {
76791 const child_ty = ty.optionalChild(zcu);
76792 const has_value_off: u31 = @intCast(child_ty.abiSize(zcu));
76793 var has_values: [2]Temp = undefined;
76794 opt_info = @as(OptInfo, undefined);
76795 for (&has_values, &ops, &opt_info.?.deaths) |*has_value, *op, *death| {
76796 has_value.* = try op.read(.bool, .{ .disp = has_value_off }, cg);
76797 const child = try op.read(child_ty, .{}, cg);
76798 try op.die(cg);
76799 op.* = child;
76800 death.* = child.index;
76801 }
76802 cg.select(
76803 &opt_info.?.res,
76804 &.{.bool},
76805 &has_values,
76806 switch (Condition.fromCompareOperatorUnsigned(cmp_op)) {
76807 else => unreachable,
76808 inline .e, .ne => |cc| comptime &.{.{
76809 .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte }, .any },
76810 .patterns = &.{
76811 .{ .src = .{ .mem, .imm8, .none } },
76812 .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } },
76813 .{ .src = .{ .to_gpr, .imm8, .none } },
76814 .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } },
76815 .{ .src = .{ .mem, .to_gpr, .none } },
76816 .{ .src = .{ .to_gpr, .mem, .none }, .commute = .{ 0, 1 } },
76817 .{ .src = .{ .to_gpr, .to_gpr, .none } },
76818 },
76819 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
76820 .clobbers = .{ .eflags = true },
76821 .each = .{ .once = &.{
76822 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
76823 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
76824 .{ ._, .fromCond(cc), .set, .dst0b, ._, ._, ._ },
76825 .{ ._, ._, .@"test", .src0b, .src1b, ._, ._ },
76826 } },
76827 }},
8240476828 },
82405 .call_frame = .{ .alignment = .@"16" },
82406 .extra_temps = .{
82407 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
82408 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
82409 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
76829 ) catch |err| switch (err) {
76830 error.SelectFailed => unreachable,
76831 else => |e| return e,
76832 };
76833 for (has_values) |has_value| for (opt_info.?.res) |opt_res| {
76834 if (has_value.index == opt_res.index) break;
76835 } else try has_value.die(cg);
76836 opt_info.?.state = cg.initRetroactiveState();
76837 opt_info.?.state.next_temp_index = cg.next_temp_index;
76838 var state = try cg.saveState();
76839 state.next_temp_index = cg.next_temp_index;
76840 for (ops) |op| try op.die(cg);
76841 try cg.saveRetroactiveState(&opt_info.?.state);
76842 opt_info.?.reloc = try cg.asmJccReloc(.z, undefined);
76843 try cg.restoreState(state, &.{}, .{
76844 .emit_instructions = false,
76845 .update_tracking = true,
76846 .resurrect = true,
76847 .close_scope = true,
76848 });
76849 break :category if (cg.floatBits(child_ty)) |_| .float else .int;
76850 })) {
76851 .float => {
76852 cg.select(&res, &.{.bool}, &ops, switch (switch (air_tag) {
76853 else => unreachable,
76854 .cmp_eq, .cmp_neq => false,
76855 .cmp_eq_optimized, .cmp_neq_optimized => true,
76856 }) {
76857 inline false, true => |optimized| comptime &.{ .{
76858 .required_features = .{ .f16c, null, null, null },
76859 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
76860 .patterns = &.{
76861 .{ .src = .{ .to_sse, .to_sse, .none } },
76862 },
76863 .extra_temps = .{
76864 .{ .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
76865 .{ .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
76866 .unused,
76867 .unused,
76868 .unused,
76869 .unused,
76870 .unused,
76871 .unused,
76872 .unused,
76873 .unused,
76874 .unused,
76875 },
76876 .dst_temps = .{ .{ .cc = switch (optimized) {
76877 false => .z_and_np,
76878 true => .z,
76879 } }, .unused },
76880 .clobbers = .{ .eflags = true },
76881 .each = .{ .once = &.{
76882 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
76883 .{ ._, .v_ps, .cvtph2, .tmp1x, .src1q, ._, ._ },
76884 .{ ._, .v_ss, .ucomi, .tmp0x, .tmp1d, ._, ._ },
76885 } },
76886 }, .{
76887 .required_features = .{ .sse, null, null, null },
76888 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
76889 .patterns = &.{
76890 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
76891 },
76892 .call_frame = .{ .alignment = .@"16" },
76893 .extra_temps = .{
76894 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
76895 .{ .type = .i32, .kind = .{ .reg = .eax } },
76896 .unused,
76897 .unused,
76898 .unused,
76899 .unused,
76900 .unused,
76901 .unused,
76902 .unused,
76903 .unused,
76904 .unused,
76905 },
76906 .dst_temps = .{ .{ .cc = .z }, .unused },
76907 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
76908 .each = .{ .once = &.{
76909 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
76910 .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ },
76911 } },
76912 }, .{
76913 .required_features = .{ .avx, null, null, null },
76914 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },
76915 .patterns = &.{
76916 .{ .src = .{ .to_sse, .mem, .none } },
76917 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
76918 .{ .src = .{ .to_sse, .to_sse, .none } },
76919 },
76920 .dst_temps = .{ .{ .cc = switch (optimized) {
76921 false => .z_and_np,
76922 true => .z,
76923 } }, .unused },
76924 .clobbers = .{ .eflags = true },
76925 .each = .{ .once = &.{
76926 .{ ._, .v_ss, .ucomi, .src0x, .src1d, ._, ._ },
76927 } },
76928 }, .{
76929 .required_features = .{ .sse, null, null, null },
76930 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },
76931 .patterns = &.{
76932 .{ .src = .{ .to_sse, .mem, .none } },
76933 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
76934 .{ .src = .{ .to_sse, .to_sse, .none } },
76935 },
76936 .dst_temps = .{ .{ .cc = switch (optimized) {
76937 false => .z_and_np,
76938 true => .z,
76939 } }, .unused },
76940 .clobbers = .{ .eflags = true },
76941 .each = .{ .once = &.{
76942 .{ ._, ._ss, .ucomi, .src0x, .src1d, ._, ._ },
76943 } },
76944 }, .{
76945 .required_features = .{ .avx, null, null, null },
76946 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
76947 .patterns = &.{
76948 .{ .src = .{ .to_sse, .mem, .none } },
76949 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
76950 .{ .src = .{ .to_sse, .to_sse, .none } },
76951 },
76952 .dst_temps = .{ .{ .cc = switch (optimized) {
76953 false => .z_and_np,
76954 true => .z,
76955 } }, .unused },
76956 .clobbers = .{ .eflags = true },
76957 .each = .{ .once = &.{
76958 .{ ._, .v_sd, .ucomi, .src0x, .src1q, ._, ._ },
76959 } },
76960 }, .{
76961 .required_features = .{ .sse2, null, null, null },
76962 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
76963 .patterns = &.{
76964 .{ .src = .{ .to_sse, .mem, .none } },
76965 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
76966 .{ .src = .{ .to_sse, .to_sse, .none } },
76967 },
76968 .dst_temps = .{ .{ .cc = switch (optimized) {
76969 false => .z_and_np,
76970 true => .z,
76971 } }, .unused },
76972 .clobbers = .{ .eflags = true },
76973 .each = .{ .once = &.{
76974 .{ ._, ._sd, .ucomi, .src0x, .src1q, ._, ._ },
76975 } },
76976 }, .{
76977 .required_features = .{ .x87, .cmov, null, null },
76978 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
76979 .patterns = &.{
76980 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
76981 },
76982 .extra_temps = .{
76983 .{ .type = .f64, .kind = .{ .reg = .st6 } },
76984 .{ .type = .f64, .kind = .{ .reg = .st7 } },
76985 .unused,
76986 .unused,
76987 .unused,
76988 .unused,
76989 .unused,
76990 .unused,
76991 .unused,
76992 .unused,
76993 .unused,
76994 },
76995 .dst_temps = .{ .{ .cc = switch (optimized) {
76996 false => .z_and_np,
76997 true => .z,
76998 } }, .unused },
76999 .clobbers = .{ .eflags = true },
77000 .each = .{ .once = &.{
77001 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
77002 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
77003 .{ ._, .f_p, .ucomi, .tmp0t, .tmp1t, ._, ._ },
77004 .{ ._, .f_p, .st, .tmp1t, ._, ._, ._ },
77005 } },
77006 }, .{
77007 .required_features = .{ .sahf, .x87, null, null },
77008 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
77009 .patterns = &.{
77010 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
77011 },
77012 .extra_temps = .{
77013 .{ .type = .f64, .kind = .{ .reg = .st6 } },
77014 .{ .type = .f64, .kind = .{ .reg = .st7 } },
77015 .{ .type = .u16, .kind = .{ .reg = .ax } },
77016 .unused,
77017 .unused,
77018 .unused,
77019 .unused,
77020 .unused,
77021 .unused,
77022 .unused,
77023 .unused,
77024 },
77025 .dst_temps = .{ .{ .cc = switch (optimized) {
77026 false => .z_and_np,
77027 true => .z,
77028 } }, .unused },
77029 .clobbers = .{ .eflags = true },
77030 .each = .{ .once = &.{
77031 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
77032 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
77033 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
77034 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
77035 .{ ._, ._, .sahf, ._, ._, ._, ._ },
77036 } },
77037 }, .{
77038 .required_features = .{ .x87, null, null, null },
77039 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
77040 .patterns = &.{
77041 .{ .src = .{ .to_mem, .to_mem, .none } },
77042 },
77043 .extra_temps = .{
77044 .{ .type = .f64, .kind = .{ .reg = .st6 } },
77045 .{ .type = .f64, .kind = .{ .reg = .st7 } },
77046 .{ .type = .u16, .kind = .{ .reg = .ax } },
77047 .unused,
77048 .unused,
77049 .unused,
77050 .unused,
77051 .unused,
77052 .unused,
77053 .unused,
77054 .unused,
77055 },
77056 .dst_temps = .{ .{ .cc = switch (optimized) {
77057 false => .z,
77058 true => .nz,
77059 } }, .unused },
77060 .clobbers = .{ .eflags = true },
77061 .each = .{ .once = switch (optimized) {
77062 false => &.{
77063 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
77064 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
77065 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
77066 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
77067 .{ ._, ._, .xor, .tmp2h, .si(0b1_000_000), ._, ._ },
77068 .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_100), ._, ._ },
77069 },
77070 true => &.{
77071 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
77072 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
77073 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
77074 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
77075 .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_000), ._, ._ },
77076 },
77077 } },
77078 }, .{
77079 .required_features = .{ .x87, .cmov, null, null },
77080 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
77081 .patterns = &.{
77082 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
77083 .{ .src = .{ .mem, .to_x87, .none } },
77084 .{ .src = .{ .to_x87, .to_x87, .none } },
77085 },
77086 .extra_temps = .{
77087 .{ .type = .f80, .kind = .{ .reg = .st7 } },
77088 .unused,
77089 .unused,
77090 .unused,
77091 .unused,
77092 .unused,
77093 .unused,
77094 .unused,
77095 .unused,
77096 .unused,
77097 .unused,
77098 },
77099 .dst_temps = .{ .{ .cc = switch (optimized) {
77100 false => .z_and_np,
77101 true => .z,
77102 } }, .unused },
77103 .clobbers = .{ .eflags = true },
77104 .each = .{ .once = &.{
77105 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
77106 .{ ._, .f_p, .ucomi, .tmp0t, .src1t, ._, ._ },
77107 } },
77108 }, .{
77109 .required_features = .{ .sahf, .x87, null, null },
77110 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
77111 .patterns = &.{
77112 .{ .src = .{ .mem, .mem, .none } },
77113 },
77114 .extra_temps = .{
77115 .{ .type = .f80, .kind = .{ .reg = .st6 } },
77116 .{ .type = .f80, .kind = .{ .reg = .st7 } },
77117 .{ .type = .u16, .kind = .{ .reg = .ax } },
77118 .unused,
77119 .unused,
77120 .unused,
77121 .unused,
77122 .unused,
77123 .unused,
77124 .unused,
77125 .unused,
77126 },
77127 .dst_temps = .{ .{ .cc = switch (optimized) {
77128 false => .z_and_np,
77129 true => .z,
77130 } }, .unused },
77131 .clobbers = .{ .eflags = true },
77132 .each = .{ .once = &.{
77133 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
77134 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
77135 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
77136 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
77137 .{ ._, ._, .sahf, ._, ._, ._, ._ },
77138 } },
77139 }, .{
77140 .required_features = .{ .sahf, .x87, null, null },
77141 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
77142 .patterns = &.{
77143 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
77144 .{ .src = .{ .mem, .to_x87, .none } },
77145 .{ .src = .{ .to_x87, .to_x87, .none } },
77146 },
77147 .extra_temps = .{
77148 .{ .type = .f80, .kind = .{ .reg = .st6 } },
77149 .{ .type = .f80, .kind = .{ .reg = .st7 } },
77150 .{ .type = .u16, .kind = .{ .reg = .ax } },
77151 .unused,
77152 .unused,
77153 .unused,
77154 .unused,
77155 .unused,
77156 .unused,
77157 .unused,
77158 .unused,
77159 },
77160 .dst_temps = .{ .{ .cc = switch (optimized) {
77161 false => .z_and_np,
77162 true => .z,
77163 } }, .unused },
77164 .clobbers = .{ .eflags = true },
77165 .each = .{ .once = &.{
77166 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
77167 .{ ._, .f_p, .ucom, .src1t, ._, ._, ._ },
77168 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
77169 .{ ._, ._, .sahf, ._, ._, ._, ._ },
77170 } },
77171 }, .{
77172 .required_features = .{ .x87, null, null, null },
77173 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
77174 .patterns = &.{
77175 .{ .src = .{ .mem, .mem, .none } },
77176 },
77177 .extra_temps = .{
77178 .{ .type = .f80, .kind = .{ .reg = .st6 } },
77179 .{ .type = .f80, .kind = .{ .reg = .st7 } },
77180 .{ .type = .u16, .kind = .{ .reg = .ax } },
77181 .unused,
77182 .unused,
77183 .unused,
77184 .unused,
77185 .unused,
77186 .unused,
77187 .unused,
77188 .unused,
77189 },
77190 .dst_temps = .{ .{ .cc = switch (optimized) {
77191 false => .z,
77192 true => .nz,
77193 } }, .unused },
77194 .clobbers = .{ .eflags = true },
77195 .each = .{ .once = switch (optimized) {
77196 false => &.{
77197 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
77198 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
77199 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
77200 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
77201 .{ ._, ._, .xor, .tmp2h, .si(0b1_000_000), ._, ._ },
77202 .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_100), ._, ._ },
77203 },
77204 true => &.{
77205 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
77206 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
77207 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
77208 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
77209 .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_000), ._, ._ },
77210 },
77211 } },
77212 }, .{
77213 .required_features = .{ .x87, null, null, null },
77214 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
77215 .patterns = &.{
77216 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
77217 .{ .src = .{ .mem, .to_x87, .none } },
77218 .{ .src = .{ .to_x87, .to_x87, .none } },
77219 },
77220 .extra_temps = .{
77221 .{ .type = .f80, .kind = .{ .reg = .st6 } },
77222 .{ .type = .f80, .kind = .{ .reg = .st7 } },
77223 .{ .type = .u16, .kind = .{ .reg = .ax } },
77224 .unused,
77225 .unused,
77226 .unused,
77227 .unused,
77228 .unused,
77229 .unused,
77230 .unused,
77231 .unused,
77232 },
77233 .dst_temps = .{ .{ .cc = switch (optimized) {
77234 false => .z,
77235 true => .nz,
77236 } }, .unused },
77237 .clobbers = .{ .eflags = true },
77238 .each = .{ .once = switch (optimized) {
77239 false => &.{
77240 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
77241 .{ ._, .f_p, .ucom, .src1t, ._, ._, ._ },
77242 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
77243 .{ ._, ._, .xor, .tmp2h, .si(0b1_000_000), ._, ._ },
77244 .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_100), ._, ._ },
77245 },
77246 true => &.{
77247 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
77248 .{ ._, .f_p, .ucom, .src1t, ._, ._, ._ },
77249 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
77250 .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_000), ._, ._ },
77251 },
77252 } },
77253 }, .{
77254 .required_features = .{ .sse, null, null, null },
77255 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword }, .any },
77256 .patterns = &.{
77257 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
77258 },
77259 .call_frame = .{ .alignment = .@"16" },
77260 .extra_temps = .{
77261 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
77262 .{ .type = .i32, .kind = .{ .reg = .eax } },
77263 .unused,
77264 .unused,
77265 .unused,
77266 .unused,
77267 .unused,
77268 .unused,
77269 .unused,
77270 .unused,
77271 .unused,
77272 },
77273 .dst_temps = .{ .{ .cc = .z }, .unused },
77274 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
77275 .each = .{ .once = &.{
77276 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
77277 .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ },
77278 } },
77279 } },
77280 }) catch |err| break :err err;
77281 switch (cmp_op) {
77282 else => unreachable,
77283 .eq => {},
77284 .neq => {
77285 const cc = &res[0].unwrap(cg).temp.tracking(cg).short.eflags;
77286 cc.* = cc.negate();
77287 },
77288 }
77289 },
77290 .int => res[0] = ops[0].cmpInts(cmp_op, &ops[1], cg) catch |err| break :err err,
77291 }) catch |err| switch (err) {
77292 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
77293 @tagName(air_tag),
77294 cg.typeOf(bin_op.lhs).fmt(pt),
77295 ops[0].tracking(cg),
77296 ops[1].tracking(cg),
77297 }),
77298 else => |e| return e,
77299 };
77300 if (opt_info) |*oi| {
77301 for (ops) |op| for (res) |r| {
77302 if (op.index == r.index) break;
77303 } else try op.die(cg);
77304 try cg.genCopy(.bool, oi.res[0].tracking(cg).short, res[0].tracking(cg).short, .{});
77305 try res[0].die(cg);
77306 res[0] = oi.res[0];
77307 try cg.restoreState(oi.state, &oi.deaths, .{
77308 .emit_instructions = true,
77309 .update_tracking = true,
77310 .resurrect = true,
77311 .close_scope = true,
77312 });
77313 cg.performReloc(oi.reloc);
77314 @memset(&ops, res[0]);
77315 }
77316 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
77317 },
77318 .cmp_vector, .cmp_vector_optimized => |air_tag| if (use_old) try cg.airCmpVector(inst) else fallback: {
77319 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
77320 const extra = cg.air.extraData(Air.VectorCmp, ty_pl.payload).data;
77321 switch (extra.compareOperator()) {
77322 .eq, .neq => {},
77323 .lt, .lte, .gte, .gt => if (cg.floatBits(cg.typeOf(extra.lhs).childType(zcu)) == null)
77324 break :fallback try cg.airCmpVector(inst),
77325 }
77326 var ops = try cg.tempsFromOperands(inst, .{ extra.lhs, extra.rhs });
77327 var res: [1]Temp = undefined;
77328 (err: switch (extra.compareOperator()) {
77329 .lt, .lte, .gte, .gt => |cmp_op| {
77330 switch (cmp_op) {
77331 else => unreachable,
77332 .lt, .lte => {},
77333 .gt, .gte => std.mem.swap(Temp, &ops[0], &ops[1]),
77334 }
77335 break :err cg.select(&res, &.{ty_pl.ty.toType()}, &ops, switch (@as(Condition, switch (cmp_op) {
77336 else => unreachable,
77337 .lt, .gt => .l,
77338 .lte, .gte => .le,
77339 })) {
77340 else => unreachable,
77341 inline .l, .le => |cc| comptime &.{ .{
77342 .required_features = .{ .f16c, null, null, null },
77343 .src_constraints = .{
77344 .{ .scalar_float = .{ .of = .word, .is = .word } },
77345 .{ .scalar_float = .{ .of = .word, .is = .word } },
77346 .any,
77347 },
77348 .patterns = &.{
77349 .{ .src = .{ .to_sse, .to_sse, .none } },
77350 },
77351 .extra_temps = .{
77352 .{ .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
77353 .unused,
77354 .unused,
77355 .unused,
77356 .unused,
77357 .unused,
77358 .unused,
77359 .unused,
77360 .unused,
77361 .unused,
77362 .unused,
77363 },
77364 .dst_temps = .{ .{ .mut_rc_mask = .{
77365 .ref = .src0,
77366 .rc = .sse,
77367 .info = .{ .kind = .all, .scalar = .dword },
77368 } }, .unused },
77369 .each = .{ .once = &.{
77370 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
77371 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
77372 .{ ._, .v_ss, .cmp, .dst0x, .dst0x, .tmp0d, .vp(switch (cc) {
77373 else => unreachable,
77374 .l => .lt,
77375 .le => .le,
77376 }) },
77377 } },
77378 }, .{
77379 .required_features = .{ .f16c, null, null, null },
77380 .src_constraints = .{
77381 .{ .scalar_float = .{ .of = .qword, .is = .word } },
77382 .{ .scalar_float = .{ .of = .qword, .is = .word } },
77383 .any,
77384 },
77385 .patterns = &.{
77386 .{ .src = .{ .mem, .mem, .none } },
77387 .{ .src = .{ .sse, .mem, .none } },
77388 .{ .src = .{ .mem, .sse, .none } },
77389 .{ .src = .{ .to_sse, .to_sse, .none } },
77390 },
77391 .extra_temps = .{
77392 .{ .kind = .{ .rc = .sse } },
77393 .unused,
77394 .unused,
77395 .unused,
77396 .unused,
77397 .unused,
77398 .unused,
77399 .unused,
77400 .unused,
77401 .unused,
77402 .unused,
77403 },
77404 .dst_temps = .{ .{ .mut_rc_mask = .{
77405 .ref = .src0,
77406 .rc = .sse,
77407 .info = .{ .kind = .all, .scalar = .dword },
77408 } }, .unused },
77409 .each = .{ .once = &.{
77410 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
77411 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
77412 .{ ._, .v_ps, .cmp, .dst0x, .dst0x, .tmp0x, .vp(switch (cc) {
77413 else => unreachable,
77414 .l => .lt,
77415 .le => .le,
77416 }) },
77417 } },
77418 }, .{
77419 .required_features = .{ .f16c, null, null, null },
77420 .src_constraints = .{
77421 .{ .scalar_float = .{ .of = .xword, .is = .word } },
77422 .{ .scalar_float = .{ .of = .xword, .is = .word } },
77423 .any,
77424 },
77425 .patterns = &.{
77426 .{ .src = .{ .mem, .mem, .none } },
77427 .{ .src = .{ .to_sse, .mem, .none } },
77428 .{ .src = .{ .mem, .to_sse, .none } },
77429 .{ .src = .{ .to_sse, .to_sse, .none } },
77430 },
77431 .extra_temps = .{
77432 .{ .kind = .{ .rc = .sse } },
77433 .unused,
77434 .unused,
77435 .unused,
77436 .unused,
77437 .unused,
77438 .unused,
77439 .unused,
77440 .unused,
77441 .unused,
77442 .unused,
77443 },
77444 .dst_temps = .{ .{ .mut_rc_mask = .{
77445 .ref = .src0,
77446 .rc = .sse,
77447 .info = .{ .kind = .all, .scalar = .dword },
77448 } }, .unused },
77449 .each = .{ .once = &.{
77450 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
77451 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
77452 .{ ._, .v_ps, .cmp, .dst0y, .dst0y, .tmp0y, .vp(switch (cc) {
77453 else => unreachable,
77454 .l => .lt,
77455 .le => .le,
77456 }) },
77457 } },
77458 }, .{
77459 .required_features = .{ .avx, null, null, null },
77460 .src_constraints = .{
77461 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
77462 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
77463 .any,
77464 },
77465 .patterns = &.{
77466 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
77467 },
77468 .dst_temps = .{ .{ .mut_rc_mask = .{
77469 .ref = .src0,
77470 .rc = .sse,
77471 .info = .{ .kind = .all, .scalar = .dword },
77472 } }, .unused },
77473 .each = .{ .once = &.{
77474 .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1d, .vp(switch (cc) {
77475 else => unreachable,
77476 .l => .gt,
77477 .le => .ge,
77478 }) },
77479 } },
77480 }, .{
77481 .required_features = .{ .avx, null, null, null },
77482 .src_constraints = .{
77483 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
77484 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
77485 .any,
77486 },
77487 .patterns = &.{
77488 .{ .src = .{ .to_sse, .mem, .none } },
77489 .{ .src = .{ .to_sse, .to_sse, .none } },
77490 },
77491 .dst_temps = .{ .{ .mut_rc_mask = .{
77492 .ref = .src0,
77493 .rc = .sse,
77494 .info = .{ .kind = .all, .scalar = .dword },
77495 } }, .unused },
77496 .each = .{ .once = &.{
77497 .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1d, .vp(switch (cc) {
77498 else => unreachable,
77499 .l => .lt,
77500 .le => .le,
77501 }) },
77502 } },
77503 }, .{
77504 .required_features = .{ .sse, null, null, null },
77505 .src_constraints = .{
77506 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
77507 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
77508 .any,
77509 },
77510 .patterns = &.{
77511 .{ .src = .{ .to_mut_sse, .mem, .none } },
77512 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
77513 },
77514 .dst_temps = .{ .{ .ref_mask = .{
77515 .ref = .src0,
77516 .info = .{ .kind = .all, .scalar = .dword },
77517 } }, .unused },
77518 .each = .{ .once = &.{
77519 .{ ._, ._ss, .cmp, .dst0x, .src1d, .sp(switch (cc) {
77520 else => unreachable,
77521 .l => .lt,
77522 .le => .le,
77523 }), ._ },
77524 } },
77525 }, .{
77526 .required_features = .{ .avx, null, null, null },
77527 .src_constraints = .{
77528 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
77529 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
77530 .any,
77531 },
77532 .patterns = &.{
77533 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
77534 },
77535 .dst_temps = .{ .{ .mut_rc_mask = .{
77536 .ref = .src0,
77537 .rc = .sse,
77538 .info = .{ .kind = .all, .scalar = .dword },
77539 } }, .unused },
77540 .each = .{ .once = &.{
77541 .{ ._, .v_ps, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) {
77542 else => unreachable,
77543 .l => .gt,
77544 .le => .ge,
77545 }) },
77546 } },
77547 }, .{
77548 .required_features = .{ .avx, null, null, null },
77549 .src_constraints = .{
77550 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
77551 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
77552 .any,
77553 },
77554 .patterns = &.{
77555 .{ .src = .{ .to_sse, .mem, .none } },
77556 .{ .src = .{ .to_sse, .to_sse, .none } },
77557 },
77558 .dst_temps = .{ .{ .mut_rc_mask = .{
77559 .ref = .src0,
77560 .rc = .sse,
77561 .info = .{ .kind = .all, .scalar = .dword },
77562 } }, .unused },
77563 .each = .{ .once = &.{
77564 .{ ._, .v_ps, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) {
77565 else => unreachable,
77566 .l => .lt,
77567 .le => .le,
77568 }) },
77569 } },
77570 }, .{
77571 .required_features = .{ .sse, null, null, null },
77572 .src_constraints = .{
77573 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
77574 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
77575 .any,
77576 },
77577 .patterns = &.{
77578 .{ .src = .{ .to_mut_sse, .mem, .none } },
77579 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
77580 },
77581 .dst_temps = .{ .{ .ref_mask = .{
77582 .ref = .src0,
77583 .info = .{ .kind = .all, .scalar = .dword },
77584 } }, .unused },
77585 .each = .{ .once = &.{
77586 .{ ._, ._ps, .cmp, .dst0x, .src1x, .sp(switch (cc) {
77587 else => unreachable,
77588 .l => .lt,
77589 .le => .le,
77590 }), ._ },
77591 } },
77592 }, .{
77593 .required_features = .{ .avx, null, null, null },
77594 .src_constraints = .{
77595 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
77596 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
77597 .any,
77598 },
77599 .patterns = &.{
77600 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
77601 },
77602 .dst_temps = .{ .{ .mut_rc_mask = .{
77603 .ref = .src0,
77604 .rc = .sse,
77605 .info = .{ .kind = .all, .scalar = .dword },
77606 } }, .unused },
77607 .each = .{ .once = &.{
77608 .{ ._, .v_ps, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) {
77609 else => unreachable,
77610 .l => .gt,
77611 .le => .ge,
77612 }) },
77613 } },
77614 }, .{
77615 .required_features = .{ .avx, null, null, null },
77616 .src_constraints = .{
77617 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
77618 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
77619 .any,
77620 },
77621 .patterns = &.{
77622 .{ .src = .{ .to_sse, .mem, .none } },
77623 .{ .src = .{ .to_sse, .to_sse, .none } },
77624 },
77625 .dst_temps = .{ .{ .mut_rc_mask = .{
77626 .ref = .src0,
77627 .rc = .sse,
77628 .info = .{ .kind = .all, .scalar = .dword },
77629 } }, .unused },
77630 .each = .{ .once = &.{
77631 .{ ._, .v_ps, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) {
77632 else => unreachable,
77633 .l => .lt,
77634 .le => .le,
77635 }) },
77636 } },
77637 }, .{
77638 .required_features = .{ .avx, null, null, null },
77639 .src_constraints = .{
77640 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
77641 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
77642 .any,
77643 },
77644 .patterns = &.{
77645 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
77646 },
77647 .dst_temps = .{ .{ .mut_rc_mask = .{
77648 .ref = .src0,
77649 .rc = .sse,
77650 .info = .{ .kind = .all, .scalar = .qword },
77651 } }, .unused },
77652 .each = .{ .once = &.{
77653 .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1q, .vp(switch (cc) {
77654 else => unreachable,
77655 .l => .gt,
77656 .le => .ge,
77657 }) },
77658 } },
77659 }, .{
77660 .required_features = .{ .avx, null, null, null },
77661 .src_constraints = .{
77662 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
77663 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
77664 .any,
77665 },
77666 .patterns = &.{
77667 .{ .src = .{ .to_sse, .mem, .none } },
77668 .{ .src = .{ .to_sse, .to_sse, .none } },
77669 },
77670 .dst_temps = .{ .{ .mut_rc_mask = .{
77671 .ref = .src0,
77672 .rc = .sse,
77673 .info = .{ .kind = .all, .scalar = .qword },
77674 } }, .unused },
77675 .each = .{ .once = &.{
77676 .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1q, .vp(switch (cc) {
77677 else => unreachable,
77678 .l => .lt,
77679 .le => .le,
77680 }) },
77681 } },
77682 }, .{
77683 .required_features = .{ .sse2, null, null, null },
77684 .src_constraints = .{
77685 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
77686 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
77687 .any,
77688 },
77689 .patterns = &.{
77690 .{ .src = .{ .to_mut_sse, .mem, .none } },
77691 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
77692 },
77693 .dst_temps = .{ .{ .ref_mask = .{
77694 .ref = .src0,
77695 .info = .{ .kind = .all, .scalar = .qword },
77696 } }, .unused },
77697 .each = .{ .once = &.{
77698 .{ ._, ._sd, .cmp, .dst0x, .src1q, .sp(switch (cc) {
77699 else => unreachable,
77700 .l => .lt,
77701 .le => .le,
77702 }), ._ },
77703 } },
77704 }, .{
77705 .required_features = .{ .avx, null, null, null },
77706 .src_constraints = .{
77707 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
77708 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
77709 .any,
77710 },
77711 .patterns = &.{
77712 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
77713 },
77714 .dst_temps = .{ .{ .mut_rc_mask = .{
77715 .ref = .src0,
77716 .rc = .sse,
77717 .info = .{ .kind = .all, .scalar = .qword },
77718 } }, .unused },
77719 .each = .{ .once = &.{
77720 .{ ._, .v_pd, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) {
77721 else => unreachable,
77722 .l => .gt,
77723 .le => .ge,
77724 }) },
77725 } },
77726 }, .{
77727 .required_features = .{ .avx, null, null, null },
77728 .src_constraints = .{
77729 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
77730 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
77731 .any,
77732 },
77733 .patterns = &.{
77734 .{ .src = .{ .to_sse, .mem, .none } },
77735 .{ .src = .{ .to_sse, .to_sse, .none } },
77736 },
77737 .dst_temps = .{ .{ .mut_rc_mask = .{
77738 .ref = .src0,
77739 .rc = .sse,
77740 .info = .{ .kind = .all, .scalar = .qword },
77741 } }, .unused },
77742 .each = .{ .once = &.{
77743 .{ ._, .v_pd, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) {
77744 else => unreachable,
77745 .l => .lt,
77746 .le => .le,
77747 }) },
77748 } },
77749 }, .{
77750 .required_features = .{ .sse2, null, null, null },
77751 .src_constraints = .{
77752 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
77753 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
77754 .any,
77755 },
77756 .patterns = &.{
77757 .{ .src = .{ .to_mut_sse, .mem, .none } },
77758 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
77759 },
77760 .dst_temps = .{ .{ .ref_mask = .{
77761 .ref = .src0,
77762 .info = .{ .kind = .all, .scalar = .qword },
77763 } }, .unused },
77764 .each = .{ .once = &.{
77765 .{ ._, ._pd, .cmp, .dst0x, .src1x, .sp(switch (cc) {
77766 else => unreachable,
77767 .l => .lt,
77768 .le => .le,
77769 }), ._ },
77770 } },
77771 }, .{
77772 .required_features = .{ .avx, null, null, null },
77773 .src_constraints = .{
77774 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
77775 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
77776 .any,
77777 },
77778 .patterns = &.{
77779 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
77780 },
77781 .dst_temps = .{ .{ .mut_rc_mask = .{
77782 .ref = .src0,
77783 .rc = .sse,
77784 .info = .{ .kind = .all, .scalar = .qword },
77785 } }, .unused },
77786 .each = .{ .once = &.{
77787 .{ ._, .v_pd, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) {
77788 else => unreachable,
77789 .l => .gt,
77790 .le => .ge,
77791 }) },
77792 } },
77793 }, .{
77794 .required_features = .{ .avx, null, null, null },
77795 .src_constraints = .{
77796 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
77797 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
77798 .any,
77799 },
77800 .patterns = &.{
77801 .{ .src = .{ .to_sse, .mem, .none } },
77802 .{ .src = .{ .to_sse, .to_sse, .none } },
77803 },
77804 .dst_temps = .{ .{ .mut_rc_mask = .{
77805 .ref = .src0,
77806 .rc = .sse,
77807 .info = .{ .kind = .all, .scalar = .qword },
77808 } }, .unused },
77809 .each = .{ .once = &.{
77810 .{ ._, .v_pd, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) {
77811 else => unreachable,
77812 .l => .lt,
77813 .le => .le,
77814 }) },
77815 } },
77816 }, .{
77817 .required_features = .{ .f16c, .slow_incdec, null, null },
77818 .src_constraints = .{
77819 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
77820 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
77821 .any,
77822 },
77823 .patterns = &.{
77824 .{ .src = .{ .to_mem, .to_mem, .none } },
77825 },
77826 .extra_temps = .{
77827 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
77828 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
77829 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
77830 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
77831 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
77832 .unused,
77833 .unused,
77834 .unused,
77835 .unused,
77836 .unused,
77837 .unused,
77838 },
77839 .dst_temps = .{ .mem, .unused },
77840 .clobbers = .{ .eflags = true },
77841 .each = .{ .once = &.{
77842 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
77843 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
77844 .{ .@"0:", .v_ps, .cvtph2, .tmp2y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
77845 .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src1x, .tmp0, .add_size), ._, ._ },
77846 .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .tmp3y, .vp(switch (cc) {
77847 else => unreachable,
77848 .l => .lt,
77849 .le => .le,
77850 }) },
77851 .{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ },
77852 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
77853 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
77854 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
77855 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
77856 } },
77857 }, .{
77858 .required_features = .{ .f16c, null, null, null },
77859 .src_constraints = .{
77860 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
77861 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
77862 .any,
77863 },
77864 .patterns = &.{
77865 .{ .src = .{ .to_mem, .to_mem, .none } },
77866 },
77867 .extra_temps = .{
77868 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
77869 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
77870 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
77871 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
77872 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
77873 .unused,
77874 .unused,
77875 .unused,
77876 .unused,
77877 .unused,
77878 .unused,
77879 },
77880 .dst_temps = .{ .mem, .unused },
77881 .clobbers = .{ .eflags = true },
77882 .each = .{ .once = &.{
77883 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
77884 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
77885 .{ .@"0:", .v_ps, .cvtph2, .tmp2y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
77886 .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src1x, .tmp0, .add_size), ._, ._ },
77887 .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .tmp3y, .vp(switch (cc) {
77888 else => unreachable,
77889 .l => .lt,
77890 .le => .le,
77891 }) },
77892 .{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ },
77893 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
77894 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
77895 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
77896 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
77897 } },
77898 }, .{
77899 .required_features = .{ .avx, .slow_incdec, null, null },
77900 .src_constraints = .{
77901 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
77902 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
77903 .any,
77904 },
77905 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
77906 .patterns = &.{
77907 .{ .src = .{ .to_mem, .to_mem, .none } },
77908 },
77909 .call_frame = .{ .alignment = .@"16" },
77910 .extra_temps = .{
77911 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
77912 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
77913 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
77914 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
77915 .{ .type = .i32, .kind = .{ .reg = .eax } },
77916 .{ .type = .u8, .kind = .{ .reg = .cl } },
77917 .{ .type = .u32, .kind = .{ .reg = .edx } },
77918 .unused,
77919 .unused,
77920 .unused,
77921 .unused,
77922 },
77923 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
77924 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
77925 .each = .{ .once = &.{
77926 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
77927 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
77928 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
77929 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
77930 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0) },
77931 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
77932 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
77933 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
77934 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
77935 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
77936 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
77937 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
77938 .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ },
77939 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
77940 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
77941 } },
77942 }, .{
77943 .required_features = .{ .avx, null, null, null },
77944 .src_constraints = .{
77945 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
77946 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
77947 .any,
77948 },
77949 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
77950 .patterns = &.{
77951 .{ .src = .{ .to_mem, .to_mem, .none } },
77952 },
77953 .call_frame = .{ .alignment = .@"16" },
77954 .extra_temps = .{
77955 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
77956 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
77957 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
77958 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
77959 .{ .type = .i32, .kind = .{ .reg = .eax } },
77960 .{ .type = .u8, .kind = .{ .reg = .cl } },
77961 .{ .type = .u32, .kind = .{ .reg = .edx } },
77962 .unused,
77963 .unused,
77964 .unused,
77965 .unused,
77966 },
77967 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
77968 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
77969 .each = .{ .once = &.{
77970 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
77971 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
77972 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
77973 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
77974 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0) },
77975 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
77976 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
77977 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
77978 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
77979 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
77980 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
77981 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
77982 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
77983 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
77984 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
77985 } },
77986 }, .{
77987 .required_features = .{ .sse2, .slow_incdec, null, null },
77988 .src_constraints = .{
77989 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
77990 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
77991 .any,
77992 },
77993 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
77994 .patterns = &.{
77995 .{ .src = .{ .to_mem, .to_mem, .none } },
77996 },
77997 .call_frame = .{ .alignment = .@"16" },
77998 .extra_temps = .{
77999 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78000 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78001 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78002 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
78003 .{ .type = .i32, .kind = .{ .reg = .eax } },
78004 .{ .type = .u8, .kind = .{ .reg = .cl } },
78005 .{ .type = .u32, .kind = .{ .reg = .edx } },
78006 .unused,
78007 .unused,
78008 .unused,
78009 .unused,
78010 },
78011 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
78012 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
78013 .each = .{ .once = &.{
78014 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
78015 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
78016 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
78017 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
78018 .{ ._, .p_w, .insr, .tmp1x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
78019 .{ ._, .p_w, .insr, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ },
78020 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
78021 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
78022 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
78023 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
78024 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
78025 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
78026 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
78027 .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ },
78028 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
78029 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
78030 } },
78031 }, .{
78032 .required_features = .{ .sse2, null, null, null },
78033 .src_constraints = .{
78034 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
78035 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
78036 .any,
78037 },
78038 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
78039 .patterns = &.{
78040 .{ .src = .{ .to_mem, .to_mem, .none } },
78041 },
78042 .call_frame = .{ .alignment = .@"16" },
78043 .extra_temps = .{
78044 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78045 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78046 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78047 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
78048 .{ .type = .i32, .kind = .{ .reg = .eax } },
78049 .{ .type = .u8, .kind = .{ .reg = .cl } },
78050 .{ .type = .u32, .kind = .{ .reg = .edx } },
78051 .unused,
78052 .unused,
78053 .unused,
78054 .unused,
78055 },
78056 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
78057 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
78058 .each = .{ .once = &.{
78059 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
78060 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
78061 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
78062 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
78063 .{ ._, .p_w, .insr, .tmp1x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
78064 .{ ._, .p_w, .insr, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ },
78065 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
78066 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
78067 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
78068 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
78069 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
78070 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
78071 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
78072 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
78073 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
78074 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
78075 } },
78076 }, .{
78077 .required_features = .{ .sse, .slow_incdec, null, null },
78078 .src_constraints = .{
78079 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
78080 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
78081 .any,
78082 },
78083 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
78084 .patterns = &.{
78085 .{ .src = .{ .to_mem, .to_mem, .none } },
78086 },
78087 .call_frame = .{ .alignment = .@"16" },
78088 .extra_temps = .{
78089 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78090 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78091 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78092 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
78093 .{ .type = .i32, .kind = .{ .reg = .eax } },
78094 .{ .type = .u8, .kind = .{ .reg = .cl } },
78095 .{ .type = .u32, .kind = .{ .reg = .edx } },
78096 .{ .type = .f32, .kind = .mem },
78097 .unused,
78098 .unused,
78099 .unused,
78100 },
78101 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
78102 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
78103 .each = .{ .once = &.{
78104 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
78105 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
78106 .{ .@"0:", ._, .movzx, .tmp4d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
78107 .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ },
78108 .{ ._, ._ss, .mov, .tmp1x, .mem(.tmp7d), ._, ._ },
78109 .{ ._, ._, .movzx, .tmp4d, .memsi(.src1w, .@"2", .tmp0), ._, ._ },
78110 .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ },
78111 .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp7d), ._, ._ },
78112 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
78113 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
78114 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
78115 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
78116 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
78117 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
78118 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
78119 .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ },
78120 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
78121 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
78122 } },
78123 }, .{
78124 .required_features = .{ .sse, null, null, null },
78125 .src_constraints = .{
78126 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
78127 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
78128 .any,
78129 },
78130 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
78131 .patterns = &.{
78132 .{ .src = .{ .to_mem, .to_mem, .none } },
78133 },
78134 .call_frame = .{ .alignment = .@"16" },
78135 .extra_temps = .{
78136 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78137 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78138 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78139 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
78140 .{ .type = .i32, .kind = .{ .reg = .eax } },
78141 .{ .type = .u8, .kind = .{ .reg = .cl } },
78142 .{ .type = .u32, .kind = .{ .reg = .edx } },
78143 .{ .type = .f32, .kind = .mem },
78144 .unused,
78145 .unused,
78146 .unused,
78147 },
78148 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
78149 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
78150 .each = .{ .once = &.{
78151 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
78152 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
78153 .{ .@"0:", ._, .movzx, .tmp4d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
78154 .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ },
78155 .{ ._, ._ss, .mov, .tmp1x, .mem(.tmp7d), ._, ._ },
78156 .{ ._, ._, .movzx, .tmp4d, .memsi(.src1w, .@"2", .tmp0), ._, ._ },
78157 .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ },
78158 .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp7d), ._, ._ },
78159 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
78160 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
78161 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
78162 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
78163 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
78164 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
78165 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
78166 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
78167 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
78168 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
78169 } },
78170 }, .{
78171 .required_features = .{ .@"64bit", .avx, .slow_incdec, null },
78172 .src_constraints = .{
78173 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
78174 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
78175 .any,
78176 },
78177 .patterns = &.{
78178 .{ .src = .{ .to_mem, .to_mem, .none } },
78179 },
78180 .call_frame = .{ .alignment = .@"16" },
78181 .extra_temps = .{
78182 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78183 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
78184 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78185 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78186 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
78187 .{ .type = .i32, .kind = .{ .reg = .eax } },
78188 .{ .type = .u8, .kind = .{ .reg = .cl } },
78189 .{ .type = .u64, .kind = .{ .reg = .rdx } },
78190 .unused,
78191 .unused,
78192 .unused,
78193 },
78194 .dst_temps = .{ .mem, .unused },
78195 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
78196 .each = .{ .once = &.{
78197 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
78198 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78199 .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ },
78200 .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
78201 .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0) },
78202 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
78203 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
78204 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
78205 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
78206 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
78207 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
78208 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
78209 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
78210 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
78211 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
78212 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
78213 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
78214 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
78215 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78216 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
78217 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
78218 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
78219 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
78220 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
78221 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
78222 } },
78223 }, .{
78224 .required_features = .{ .@"64bit", .avx, null, null },
78225 .src_constraints = .{
78226 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
78227 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
78228 .any,
78229 },
78230 .patterns = &.{
78231 .{ .src = .{ .to_mem, .to_mem, .none } },
78232 },
78233 .call_frame = .{ .alignment = .@"16" },
78234 .extra_temps = .{
78235 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78236 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
78237 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78238 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78239 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
78240 .{ .type = .i32, .kind = .{ .reg = .eax } },
78241 .{ .type = .u8, .kind = .{ .reg = .cl } },
78242 .{ .type = .u64, .kind = .{ .reg = .rdx } },
78243 .unused,
78244 .unused,
78245 .unused,
78246 },
78247 .dst_temps = .{ .mem, .unused },
78248 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
78249 .each = .{ .once = &.{
78250 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
78251 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78252 .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ },
78253 .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
78254 .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0) },
78255 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
78256 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
78257 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
78258 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
78259 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
78260 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
78261 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
78262 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
78263 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
78264 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
78265 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
78266 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
78267 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
78268 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78269 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
78270 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
78271 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
78272 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
78273 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
78274 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
78275 } },
78276 }, .{
78277 .required_features = .{ .@"64bit", .sse2, .slow_incdec, null },
78278 .src_constraints = .{
78279 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
78280 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
78281 .any,
78282 },
78283 .patterns = &.{
78284 .{ .src = .{ .to_mem, .to_mem, .none } },
78285 },
78286 .call_frame = .{ .alignment = .@"16" },
78287 .extra_temps = .{
78288 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78289 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
78290 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78291 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78292 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
78293 .{ .type = .i32, .kind = .{ .reg = .eax } },
78294 .{ .type = .u8, .kind = .{ .reg = .cl } },
78295 .{ .type = .u64, .kind = .{ .reg = .rdx } },
78296 .unused,
78297 .unused,
78298 .unused,
78299 },
78300 .dst_temps = .{ .mem, .unused },
78301 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
78302 .each = .{ .once = &.{
78303 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
78304 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78305 .{ .@"0:", .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
78306 .{ ._, .p_w, .insr, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
78307 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },
78308 .{ ._, .p_w, .insr, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ },
78309 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
78310 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
78311 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
78312 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
78313 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
78314 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
78315 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
78316 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
78317 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
78318 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
78319 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
78320 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
78321 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
78322 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78323 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
78324 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
78325 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
78326 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
78327 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
78328 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
78329 } },
78330 }, .{
78331 .required_features = .{ .@"64bit", .sse2, null, null },
78332 .src_constraints = .{
78333 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
78334 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
78335 .any,
78336 },
78337 .patterns = &.{
78338 .{ .src = .{ .to_mem, .to_mem, .none } },
78339 },
78340 .call_frame = .{ .alignment = .@"16" },
78341 .extra_temps = .{
78342 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78343 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
78344 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78345 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78346 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
78347 .{ .type = .i32, .kind = .{ .reg = .eax } },
78348 .{ .type = .u8, .kind = .{ .reg = .cl } },
78349 .{ .type = .u64, .kind = .{ .reg = .rdx } },
78350 .unused,
78351 .unused,
78352 .unused,
78353 },
78354 .dst_temps = .{ .mem, .unused },
78355 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
78356 .each = .{ .once = &.{
78357 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
78358 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78359 .{ .@"0:", .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
78360 .{ ._, .p_w, .insr, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
78361 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },
78362 .{ ._, .p_w, .insr, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ },
78363 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
78364 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
78365 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
78366 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
78367 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
78368 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
78369 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
78370 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
78371 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
78372 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
78373 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
78374 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
78375 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
78376 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78377 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
78378 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
78379 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
78380 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
78381 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
78382 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
78383 } },
78384 }, .{
78385 .required_features = .{ .@"64bit", .sse, .slow_incdec, null },
78386 .src_constraints = .{
78387 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
78388 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
78389 .any,
78390 },
78391 .patterns = &.{
78392 .{ .src = .{ .to_mem, .to_mem, .none } },
78393 },
78394 .call_frame = .{ .alignment = .@"16" },
78395 .extra_temps = .{
78396 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78397 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
78398 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78399 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78400 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
78401 .{ .type = .i32, .kind = .{ .reg = .eax } },
78402 .{ .type = .u8, .kind = .{ .reg = .cl } },
78403 .{ .type = .u64, .kind = .{ .reg = .rdx } },
78404 .{ .type = .f32, .kind = .mem },
78405 .unused,
78406 .unused,
78407 },
78408 .dst_temps = .{ .mem, .unused },
78409 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
78410 .each = .{ .once = &.{
78411 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
78412 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78413 .{ .@"0:", ._, .movzx, .tmp5d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
78414 .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ },
78415 .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp8d), ._, ._ },
78416 .{ ._, ._, .movzx, .tmp5d, .memsi(.src1w, .@"2", .tmp0), ._, ._ },
78417 .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ },
78418 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp8d), ._, ._ },
78419 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
78420 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
78421 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
78422 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
78423 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
78424 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
78425 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
78426 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
78427 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
78428 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
78429 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
78430 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
78431 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
78432 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78433 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
78434 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
78435 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
78436 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
78437 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
78438 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
78439 } },
78440 }, .{
78441 .required_features = .{ .@"64bit", .sse, null, null },
78442 .src_constraints = .{
78443 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
78444 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
78445 .any,
78446 },
78447 .patterns = &.{
78448 .{ .src = .{ .to_mem, .to_mem, .none } },
78449 },
78450 .call_frame = .{ .alignment = .@"16" },
78451 .extra_temps = .{
78452 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78453 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
78454 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78455 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78456 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
78457 .{ .type = .i32, .kind = .{ .reg = .eax } },
78458 .{ .type = .u8, .kind = .{ .reg = .cl } },
78459 .{ .type = .u64, .kind = .{ .reg = .rdx } },
78460 .{ .type = .f32, .kind = .mem },
78461 .unused,
78462 .unused,
78463 },
78464 .dst_temps = .{ .mem, .unused },
78465 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
78466 .each = .{ .once = &.{
78467 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
78468 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78469 .{ .@"0:", ._, .movzx, .tmp5d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
78470 .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ },
78471 .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp8d), ._, ._ },
78472 .{ ._, ._, .movzx, .tmp5d, .memsi(.src1w, .@"2", .tmp0), ._, ._ },
78473 .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ },
78474 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp8d), ._, ._ },
78475 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
78476 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
78477 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
78478 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
78479 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
78480 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
78481 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
78482 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
78483 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
78484 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
78485 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
78486 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
78487 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
78488 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78489 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
78490 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
78491 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
78492 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
78493 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
78494 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
78495 } },
78496 }, .{
78497 .required_features = .{ .avx, .slow_incdec, null, null },
78498 .src_constraints = .{
78499 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
78500 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
78501 .any,
78502 },
78503 .patterns = &.{
78504 .{ .src = .{ .to_mem, .to_mem, .none } },
78505 },
78506 .extra_temps = .{
78507 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
78508 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
78509 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
78510 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
78511 .unused,
78512 .unused,
78513 .unused,
78514 .unused,
78515 .unused,
78516 .unused,
78517 .unused,
78518 },
78519 .dst_temps = .{ .mem, .unused },
78520 .clobbers = .{ .eflags = true },
78521 .each = .{ .once = &.{
78522 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
78523 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
78524 .{ .@"0:", .v_ps, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
78525 .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
78526 else => unreachable,
78527 .l => .lt,
78528 .le => .le,
78529 }) },
78530 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ },
78531 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
78532 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
78533 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
78534 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
78535 } },
78536 }, .{
78537 .required_features = .{ .avx, null, null, null },
78538 .src_constraints = .{
78539 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
78540 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
78541 .any,
78542 },
78543 .patterns = &.{
78544 .{ .src = .{ .to_mem, .to_mem, .none } },
78545 },
78546 .extra_temps = .{
78547 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
78548 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
78549 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
78550 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
78551 .unused,
78552 .unused,
78553 .unused,
78554 .unused,
78555 .unused,
78556 .unused,
78557 .unused,
78558 },
78559 .dst_temps = .{ .mem, .unused },
78560 .clobbers = .{ .eflags = true },
78561 .each = .{ .once = &.{
78562 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
78563 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
78564 .{ .@"0:", .v_ps, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
78565 .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
78566 else => unreachable,
78567 .l => .lt,
78568 .le => .le,
78569 }) },
78570 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ },
78571 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
78572 .{ ._, ._c, .in, .tmp1q, ._, ._, ._ },
78573 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
78574 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
78575 } },
78576 }, .{
78577 .required_features = .{ .sse2, null, null, null },
78578 .src_constraints = .{
78579 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
78580 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
78581 .any,
78582 },
78583 .patterns = &.{
78584 .{ .src = .{ .to_mem, .to_mem, .none } },
78585 },
78586 .extra_temps = .{
78587 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
78588 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
78589 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
78590 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
78591 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
78592 .unused,
78593 .unused,
78594 .unused,
78595 .unused,
78596 .unused,
78597 .unused,
78598 },
78599 .dst_temps = .{ .mem, .unused },
78600 .clobbers = .{ .eflags = true },
78601 .each = .{ .once = &.{
78602 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
78603 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
78604 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
78605 .{ ._, ._ps, .mova, .tmp3x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ },
78606 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
78607 else => unreachable,
78608 .l => .lt,
78609 .le => .le,
78610 }), ._ },
78611 .{ ._, ._ps, .cmp, .tmp3x, .memiad(.src1x, .tmp0, .add_size, 16), .sp(switch (cc) {
78612 else => unreachable,
78613 .l => .lt,
78614 .le => .le,
78615 }), ._ },
78616 .{ ._, .p_w, .ackssd, .tmp2x, .tmp3x, ._, ._ },
78617 .{ ._, .p_b, .ackssw, .tmp2x, .tmp2x, ._, ._ },
78618 .{ ._, .p_b, .movmsk, .tmp4d, .tmp2x, ._, ._ },
78619 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
78620 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
78621 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
78622 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
78623 } },
78624 }, .{
78625 .required_features = .{ .sse, null, null, null },
78626 .src_constraints = .{
78627 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
78628 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
78629 .any,
78630 },
78631 .patterns = &.{
78632 .{ .src = .{ .to_mem, .to_mem, .none } },
78633 },
78634 .extra_temps = .{
78635 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
78636 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
78637 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
78638 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
78639 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
78640 .unused,
78641 .unused,
78642 .unused,
78643 .unused,
78644 .unused,
78645 .unused,
78646 },
78647 .dst_temps = .{ .mem, .unused },
78648 .clobbers = .{ .eflags = true },
78649 .each = .{ .once = &.{
78650 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
78651 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
78652 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
78653 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
78654 else => unreachable,
78655 .l => .lt,
78656 .le => .le,
78657 }), ._ },
78658 .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ },
78659 .{ ._, ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ },
78660 .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, 16), .sp(switch (cc) {
78661 else => unreachable,
78662 .l => .lt,
78663 .le => .le,
78664 }), ._ },
78665 .{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ },
78666 .{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ },
78667 .{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ },
78668 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
78669 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
78670 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
78671 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
78672 } },
78673 }, .{
78674 .required_features = .{ .sse, null, null, null },
78675 .src_constraints = .{
78676 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
78677 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
78678 .any,
78679 },
78680 .patterns = &.{
78681 .{ .src = .{ .to_mem, .to_mem, .none } },
78682 },
78683 .extra_temps = .{
78684 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
78685 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
78686 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
78687 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
78688 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
78689 .unused,
78690 .unused,
78691 .unused,
78692 .unused,
78693 .unused,
78694 .unused,
78695 },
78696 .dst_temps = .{ .mem, .unused },
78697 .clobbers = .{ .eflags = true },
78698 .each = .{ .once = &.{
78699 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
78700 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
78701 .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
78702 .{ .@"0:", ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, -16), ._, ._ },
78703 .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, -16), .sp(switch (cc) {
78704 else => unreachable,
78705 .l => .lt,
78706 .le => .le,
78707 }), ._ },
78708 .{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ },
78709 .{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ },
78710 .{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ },
78711 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
78712 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
78713 .{ .@"1:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
78714 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
78715 else => unreachable,
78716 .l => .lt,
78717 .le => .le,
78718 }), ._ },
78719 .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ },
78720 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
78721 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
78722 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
78723 } },
78724 }, .{
78725 .required_features = .{ .avx, .slow_incdec, null, null },
78726 .src_constraints = .{
78727 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
78728 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
78729 .any,
78730 },
78731 .patterns = &.{
78732 .{ .src = .{ .to_mem, .to_mem, .none } },
78733 },
78734 .extra_temps = .{
78735 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
78736 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
78737 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
78738 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
78739 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
78740 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
78741 .unused,
78742 .unused,
78743 .unused,
78744 .unused,
78745 .unused,
78746 },
78747 .dst_temps = .{ .mem, .unused },
78748 .clobbers = .{ .eflags = true },
78749 .each = .{ .once = &.{
78750 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
78751 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
78752 .{ .@"0:", .v_pd, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
78753 .{ ._, .v_pd, .mova, .tmp3y, .memiad(.src0y, .tmp0, .add_size, 32), ._, ._ },
78754 .{ ._, .v_pd, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
78755 else => unreachable,
78756 .l => .lt,
78757 .le => .le,
78758 }) },
78759 .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memiad(.src1y, .tmp0, .add_size, 32), .vp(switch (cc) {
78760 else => unreachable,
78761 .l => .lt,
78762 .le => .le,
78763 }) },
78764 .{ ._, .v_pd, .movmsk, .tmp4d, .tmp2y, ._, ._ },
78765 .{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ },
78766 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
78767 .{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ },
78768 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
78769 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
78770 .{ ._, ._, .add, .tmp0p, .si(64), ._, ._ },
78771 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
78772 } },
78773 }, .{
78774 .required_features = .{ .avx, null, null, null },
78775 .src_constraints = .{
78776 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
78777 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
78778 .any,
78779 },
78780 .patterns = &.{
78781 .{ .src = .{ .to_mem, .to_mem, .none } },
78782 },
78783 .extra_temps = .{
78784 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
78785 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
78786 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
78787 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
78788 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
78789 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
78790 .unused,
78791 .unused,
78792 .unused,
78793 .unused,
78794 .unused,
78795 },
78796 .dst_temps = .{ .mem, .unused },
78797 .clobbers = .{ .eflags = true },
78798 .each = .{ .once = &.{
78799 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
78800 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
78801 .{ .@"0:", .v_pd, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
78802 .{ ._, .v_pd, .mova, .tmp3y, .memiad(.src0y, .tmp0, .add_size, 32), ._, ._ },
78803 .{ ._, .v_pd, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
78804 else => unreachable,
78805 .l => .lt,
78806 .le => .le,
78807 }) },
78808 .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memiad(.src1y, .tmp0, .add_size, 32), .vp(switch (cc) {
78809 else => unreachable,
78810 .l => .lt,
78811 .le => .le,
78812 }) },
78813 .{ ._, .v_pd, .movmsk, .tmp4d, .tmp2y, ._, ._ },
78814 .{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ },
78815 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
78816 .{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ },
78817 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
78818 .{ ._, ._c, .in, .tmp1q, ._, ._, ._ },
78819 .{ ._, ._, .add, .tmp0p, .si(64), ._, ._ },
78820 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
78821 } },
78822 }, .{
78823 .required_features = .{ .avx, null, null, null },
78824 .src_constraints = .{
78825 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
78826 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
78827 .any,
78828 },
78829 .patterns = &.{
78830 .{ .src = .{ .to_mem, .to_mem, .none } },
78831 },
78832 .extra_temps = .{
78833 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
78834 .{ .type = .u32, .kind = .{ .reg = .rcx } },
78835 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78836 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
78837 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
78838 .unused,
78839 .unused,
78840 .unused,
78841 .unused,
78842 .unused,
78843 .unused,
78844 },
78845 .dst_temps = .{ .mem, .unused },
78846 .clobbers = .{ .eflags = true },
78847 .each = .{ .once = &.{
78848 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
78849 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78850 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
78851 .{ .@"0:", .v_pd, .mova, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
78852 .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
78853 else => unreachable,
78854 .l => .lt,
78855 .le => .le,
78856 }) },
78857 .{ ._, .v_pd, .movmsk, .tmp4d, .tmp3y, ._, ._ },
78858 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
78859 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
78860 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
78861 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
78862 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
78863 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
78864 .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ },
78865 .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ },
78866 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
78867 .{ .@"1:", ._, .add, .tmp0p, .si(32), ._, ._ },
78868 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
78869 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
78870 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
78871 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
78872 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
78873 } },
78874 }, .{
78875 .required_features = .{ .sse2, null, null, null },
78876 .src_constraints = .{
78877 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
78878 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
78879 .any,
78880 },
78881 .patterns = &.{
78882 .{ .src = .{ .to_mem, .to_mem, .none } },
78883 },
78884 .extra_temps = .{
78885 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
78886 .{ .type = .u32, .kind = .{ .reg = .rcx } },
78887 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78888 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
78889 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
78890 .unused,
78891 .unused,
78892 .unused,
78893 .unused,
78894 .unused,
78895 .unused,
78896 },
78897 .dst_temps = .{ .mem, .unused },
78898 .clobbers = .{ .eflags = true },
78899 .each = .{ .once = &.{
78900 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
78901 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78902 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
78903 .{ .@"0:", ._pd, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
78904 .{ ._, ._pd, .cmp, .tmp3x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
78905 else => unreachable,
78906 .l => .lt,
78907 .le => .le,
78908 }), ._ },
78909 .{ ._, ._pd, .movmsk, .tmp4d, .tmp3x, ._, ._ },
78910 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
78911 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
78912 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
78913 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
78914 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
78915 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
78916 .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ },
78917 .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ },
78918 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
78919 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
78920 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
78921 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
78922 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
78923 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
78924 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
78925 } },
78926 }, .{
78927 .required_features = .{ .x87, .cmov, .slow_incdec, null },
78928 .src_constraints = .{
78929 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
78930 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
78931 .any,
78932 },
78933 .patterns = &.{
78934 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
78935 },
78936 .extra_temps = .{
78937 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
78938 .{ .type = .u32, .kind = .{ .reg = .rcx } },
78939 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78940 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
78941 .{ .type = .f64, .kind = .{ .reg = .st6 } },
78942 .{ .type = .f64, .kind = .{ .reg = .st7 } },
78943 .unused,
78944 .unused,
78945 .unused,
78946 .unused,
78947 .unused,
78948 },
78949 .dst_temps = .{ .mem, .unused },
78950 .clobbers = .{ .eflags = true },
78951 .each = .{ .once = &.{
78952 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
78953 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
78954 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
78955 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
78956 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ },
78957 .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ },
78958 .{ ._, .f_p, .ucomi, .tmp4t, .tmp5t, ._, ._ },
78959 .{ ._, .f_p, .st, .tmp5t, ._, ._, ._ },
78960 .{ ._, .fromCond(switch (cc) {
78961 else => unreachable,
78962 .l => .a,
78963 .le => .ae,
78964 }), .set, .tmp3b, ._, ._, ._ },
78965 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
78966 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
78967 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
78968 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
78969 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
78970 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
78971 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
78972 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
78973 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
78974 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
78975 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
78976 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
78977 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
78978 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
78979 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
78980 } },
78981 }, .{
78982 .required_features = .{ .x87, .cmov, null, null },
78983 .src_constraints = .{
78984 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
78985 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
78986 .any,
78987 },
78988 .patterns = &.{
78989 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
78990 },
78991 .extra_temps = .{
78992 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
78993 .{ .type = .u32, .kind = .{ .reg = .rcx } },
78994 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78995 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
78996 .{ .type = .f64, .kind = .{ .reg = .st6 } },
78997 .{ .type = .f64, .kind = .{ .reg = .st7 } },
78998 .unused,
78999 .unused,
79000 .unused,
79001 .unused,
79002 .unused,
79003 },
79004 .dst_temps = .{ .mem, .unused },
79005 .clobbers = .{ .eflags = true },
79006 .each = .{ .once = &.{
79007 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
79008 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
79009 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
79010 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
79011 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ },
79012 .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ },
79013 .{ ._, .f_p, .ucomi, .tmp4t, .tmp5t, ._, ._ },
79014 .{ ._, .f_p, .st, .tmp5t, ._, ._, ._ },
79015 .{ ._, .fromCond(switch (cc) {
79016 else => unreachable,
79017 .l => .a,
79018 .le => .ae,
79019 }), .set, .tmp3b, ._, ._, ._ },
79020 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
79021 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
79022 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
79023 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
79024 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
79025 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
79026 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
79027 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
79028 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
79029 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
79030 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
79031 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
79032 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
79033 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
79034 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
79035 } },
79036 }, .{
79037 .required_features = .{ .x87, null, null, null },
79038 .src_constraints = .{
79039 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
79040 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
79041 .any,
79042 },
79043 .patterns = &.{
79044 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
79045 },
79046 .extra_temps = .{
79047 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
79048 .{ .type = .u32, .kind = .{ .reg = .rcx } },
79049 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79050 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
79051 .{ .type = .f64, .kind = .{ .reg = .st6 } },
79052 .{ .type = .f64, .kind = .{ .reg = .st7 } },
79053 .{ .type = .u16, .kind = .{ .reg = .ax } },
79054 .unused,
79055 .unused,
79056 .unused,
79057 .unused,
79058 },
79059 .dst_temps = .{ .mem, .unused },
79060 .clobbers = .{ .eflags = true },
79061 .each = .{ .once = &.{
79062 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
79063 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
79064 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
79065 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
79066 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ },
79067 .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ },
79068 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
79069 .{ ._, .fn_sw, .st, .tmp6w, ._, ._, ._ },
79070 switch (cc) {
79071 else => unreachable,
79072 .l => .{ ._, ._, .@"test", .tmp6h, .si(0b1_000_001), ._, ._ },
79073 .le => .{ ._, ._r, .sh, .tmp6h, .ui(1), ._, ._ },
79074 },
79075 .{ ._, .fromCond(switch (cc) {
79076 else => unreachable,
79077 .l => .z,
79078 .le => .nc,
79079 }), .set, .tmp3b, ._, ._, ._ },
79080 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
79081 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
79082 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
79083 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
79084 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
79085 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
79086 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
79087 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
79088 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
79089 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
79090 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
79091 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
79092 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
79093 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
79094 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
79095 } },
79096 }, .{
79097 .required_features = .{ .x87, .cmov, .slow_incdec, null },
79098 .src_constraints = .{
79099 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
79100 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
79101 .any,
79102 },
79103 .patterns = &.{
79104 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
79105 },
79106 .extra_temps = .{
79107 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
79108 .{ .type = .u32, .kind = .{ .reg = .rcx } },
79109 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79110 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
79111 .{ .type = .f80, .kind = .{ .reg = .st6 } },
79112 .{ .type = .f80, .kind = .{ .reg = .st7 } },
79113 .unused,
79114 .unused,
79115 .unused,
79116 .unused,
79117 .unused,
79118 },
79119 .dst_temps = .{ .mem, .unused },
79120 .clobbers = .{ .eflags = true },
79121 .each = .{ .once = &.{
79122 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
79123 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
79124 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
79125 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
79126 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
79127 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
79128 .{ ._, .f_p, .ucomi, .tmp4t, .tmp5t, ._, ._ },
79129 .{ ._, .f_p, .st, .tmp5t, ._, ._, ._ },
79130 .{ ._, .fromCond(switch (cc) {
79131 else => unreachable,
79132 .l => .a,
79133 .le => .ae,
79134 }), .set, .tmp3b, ._, ._, ._ },
79135 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
79136 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
79137 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
79138 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
79139 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
79140 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
79141 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
79142 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
79143 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
79144 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
79145 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
79146 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
79147 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
79148 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
79149 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
79150 } },
79151 }, .{
79152 .required_features = .{ .x87, .cmov, null, null },
79153 .src_constraints = .{
79154 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
79155 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
79156 .any,
79157 },
79158 .patterns = &.{
79159 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
79160 },
79161 .extra_temps = .{
79162 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
79163 .{ .type = .u32, .kind = .{ .reg = .rcx } },
79164 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79165 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
79166 .{ .type = .f80, .kind = .{ .reg = .st6 } },
79167 .{ .type = .f80, .kind = .{ .reg = .st7 } },
79168 .unused,
79169 .unused,
79170 .unused,
79171 .unused,
79172 .unused,
79173 },
79174 .dst_temps = .{ .mem, .unused },
79175 .clobbers = .{ .eflags = true },
79176 .each = .{ .once = &.{
79177 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
79178 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
79179 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
79180 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
79181 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
79182 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
79183 .{ ._, .f_p, .ucomi, .tmp4t, .tmp5t, ._, ._ },
79184 .{ ._, .f_p, .st, .tmp5t, ._, ._, ._ },
79185 .{ ._, .fromCond(switch (cc) {
79186 else => unreachable,
79187 .l => .a,
79188 .le => .ae,
79189 }), .set, .tmp3b, ._, ._, ._ },
79190 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
79191 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
79192 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
79193 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
79194 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
79195 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
79196 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
79197 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
79198 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
79199 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
79200 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
79201 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
79202 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
79203 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
79204 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
79205 } },
79206 }, .{
79207 .required_features = .{ .x87, null, null, null },
79208 .src_constraints = .{
79209 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
79210 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
79211 .any,
79212 },
79213 .patterns = &.{
79214 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
79215 },
79216 .extra_temps = .{
79217 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
79218 .{ .type = .u32, .kind = .{ .reg = .rcx } },
79219 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79220 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
79221 .{ .type = .f80, .kind = .{ .reg = .st6 } },
79222 .{ .type = .f80, .kind = .{ .reg = .st7 } },
79223 .{ .type = .u16, .kind = .{ .reg = .ax } },
79224 .unused,
79225 .unused,
79226 .unused,
79227 .unused,
79228 },
79229 .dst_temps = .{ .mem, .unused },
79230 .clobbers = .{ .eflags = true },
79231 .each = .{ .once = &.{
79232 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
79233 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
79234 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
79235 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
79236 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
79237 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
79238 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
79239 .{ ._, .fn_sw, .st, .tmp6w, ._, ._, ._ },
79240 switch (cc) {
79241 else => unreachable,
79242 .l => .{ ._, ._, .@"test", .tmp6h, .si(0b1_000_001), ._, ._ },
79243 .le => .{ ._, ._r, .sh, .tmp6h, .ui(1), ._, ._ },
79244 },
79245 .{ ._, .fromCond(switch (cc) {
79246 else => unreachable,
79247 .l => .z,
79248 .le => .nc,
79249 }), .set, .tmp3b, ._, ._, ._ },
79250 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
79251 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
79252 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
79253 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
79254 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
79255 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
79256 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
79257 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
79258 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
79259 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
79260 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
79261 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
79262 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
79263 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
79264 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
79265 } },
79266 }, .{
79267 .required_features = .{ .avx, .slow_incdec, null, null },
79268 .src_constraints = .{
79269 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
79270 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
79271 .any,
79272 },
79273 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
79274 .patterns = &.{
79275 .{ .src = .{ .to_mem, .to_mem, .none } },
79276 },
79277 .call_frame = .{ .alignment = .@"16" },
79278 .extra_temps = .{
79279 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
79280 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79281 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
79282 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
79283 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
79284 .{ .type = .i32, .kind = .{ .reg = .eax } },
79285 .{ .type = .u8, .kind = .{ .reg = .cl } },
79286 .{ .type = .u32, .kind = .{ .reg = .edx } },
79287 .unused,
79288 .unused,
79289 .unused,
79290 },
79291 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
79292 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
79293 .each = .{ .once = &.{
79294 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
79295 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
79296 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
79297 .{ .@"0:", .v_dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
79298 .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
79299 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
79300 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
79301 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
79302 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
79303 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
79304 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
79305 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
79306 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
79307 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
79308 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
79309 } },
79310 }, .{
79311 .required_features = .{ .avx, .slow_incdec, null, null },
79312 .src_constraints = .{
79313 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
79314 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
79315 .any,
79316 },
79317 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
79318 .patterns = &.{
79319 .{ .src = .{ .to_mem, .to_mem, .none } },
79320 },
79321 .call_frame = .{ .alignment = .@"16" },
79322 .extra_temps = .{
79323 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
79324 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79325 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
79326 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
79327 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
79328 .{ .type = .i32, .kind = .{ .reg = .eax } },
79329 .{ .type = .u8, .kind = .{ .reg = .cl } },
79330 .{ .type = .u32, .kind = .{ .reg = .edx } },
79331 .unused,
79332 .unused,
79333 .unused,
79334 },
79335 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
79336 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
79337 .each = .{ .once = &.{
79338 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
79339 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
79340 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
79341 .{ .@"0:", .v_dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
79342 .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
79343 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
79344 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
79345 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
79346 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
79347 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
79348 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
79349 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
79350 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
79351 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
79352 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
79353 } },
79354 }, .{
79355 .required_features = .{ .sse2, .slow_incdec, null, null },
79356 .src_constraints = .{
79357 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
79358 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
79359 .any,
79360 },
79361 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
79362 .patterns = &.{
79363 .{ .src = .{ .to_mem, .to_mem, .none } },
79364 },
79365 .call_frame = .{ .alignment = .@"16" },
79366 .extra_temps = .{
79367 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
79368 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79369 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
79370 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
79371 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
79372 .{ .type = .i32, .kind = .{ .reg = .eax } },
79373 .{ .type = .u8, .kind = .{ .reg = .cl } },
79374 .{ .type = .u32, .kind = .{ .reg = .edx } },
79375 .unused,
79376 .unused,
79377 .unused,
79378 },
79379 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
79380 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
79381 .each = .{ .once = &.{
79382 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
79383 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
79384 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
79385 .{ .@"0:", ._dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
79386 .{ ._, ._dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
79387 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
79388 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
79389 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
79390 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
79391 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
79392 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
79393 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
79394 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
79395 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
79396 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
79397 } },
79398 }, .{
79399 .required_features = .{ .sse2, .slow_incdec, null, null },
79400 .src_constraints = .{
79401 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
79402 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
79403 .any,
79404 },
79405 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
79406 .patterns = &.{
79407 .{ .src = .{ .to_mem, .to_mem, .none } },
79408 },
79409 .call_frame = .{ .alignment = .@"16" },
79410 .extra_temps = .{
79411 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
79412 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79413 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
79414 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
79415 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
79416 .{ .type = .i32, .kind = .{ .reg = .eax } },
79417 .{ .type = .u8, .kind = .{ .reg = .cl } },
79418 .{ .type = .u32, .kind = .{ .reg = .edx } },
79419 .unused,
79420 .unused,
79421 .unused,
79422 },
79423 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
79424 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
79425 .each = .{ .once = &.{
79426 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
79427 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
79428 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
79429 .{ .@"0:", ._dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
79430 .{ ._, ._dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
79431 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
79432 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
79433 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
79434 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
79435 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
79436 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
79437 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
79438 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
79439 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
79440 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
79441 } },
79442 }, .{
79443 .required_features = .{ .sse, .slow_incdec, null, null },
79444 .src_constraints = .{
79445 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
79446 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
79447 .any,
79448 },
79449 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
79450 .patterns = &.{
79451 .{ .src = .{ .to_mem, .to_mem, .none } },
79452 },
79453 .call_frame = .{ .alignment = .@"16" },
79454 .extra_temps = .{
79455 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
79456 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79457 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
79458 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
79459 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
79460 .{ .type = .i32, .kind = .{ .reg = .eax } },
79461 .{ .type = .u8, .kind = .{ .reg = .cl } },
79462 .{ .type = .u32, .kind = .{ .reg = .edx } },
79463 .unused,
79464 .unused,
79465 .unused,
79466 },
79467 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
79468 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
79469 .each = .{ .once = &.{
79470 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
79471 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
79472 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
79473 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
79474 .{ ._, ._ps, .mova, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
79475 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
79476 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
79477 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
79478 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
79479 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
79480 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
79481 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
79482 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
79483 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
79484 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
79485 } },
79486 }, .{
79487 .required_features = .{ .sse2, .slow_incdec, null, null },
79488 .src_constraints = .{
79489 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
79490 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
79491 .any,
79492 },
79493 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
79494 .patterns = &.{
79495 .{ .src = .{ .to_mem, .to_mem, .none } },
79496 },
79497 .call_frame = .{ .alignment = .@"16" },
79498 .extra_temps = .{
79499 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
79500 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79501 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
79502 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
79503 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
79504 .{ .type = .i32, .kind = .{ .reg = .eax } },
79505 .{ .type = .u8, .kind = .{ .reg = .cl } },
79506 .{ .type = .u32, .kind = .{ .reg = .edx } },
79507 .unused,
79508 .unused,
79509 .unused,
79510 },
79511 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
79512 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
79513 .each = .{ .once = &.{
79514 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
79515 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
79516 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
79517 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
79518 .{ ._, ._ps, .mova, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
79519 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
79520 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
79521 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
79522 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
79523 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
79524 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
79525 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
79526 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
79527 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
79528 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
79529 } },
79530 }, .{
79531 .required_features = .{ .@"64bit", .avx, .slow_incdec, null },
79532 .src_constraints = .{
79533 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
79534 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
79535 .any,
79536 },
79537 .patterns = &.{
79538 .{ .src = .{ .to_mem, .to_mem, .none } },
79539 },
79540 .call_frame = .{ .alignment = .@"16" },
79541 .extra_temps = .{
79542 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
79543 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79544 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
79545 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
79546 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
79547 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
79548 .{ .type = .i32, .kind = .{ .reg = .eax } },
79549 .{ .type = .u8, .kind = .{ .reg = .cl } },
79550 .{ .type = .u64, .kind = .{ .reg = .rdx } },
79551 .unused,
79552 .unused,
79553 },
79554 .dst_temps = .{ .mem, .unused },
79555 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
79556 .each = .{ .once = &.{
79557 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
79558 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
79559 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
79560 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
79561 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
79562 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
79563 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
79564 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
79565 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
79566 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
79567 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
79568 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
79569 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
79570 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
79571 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
79572 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
79573 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
79574 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
79575 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
79576 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
79577 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
79578 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
79579 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
79580 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
79581 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
79582 } },
79583 }, .{
79584 .required_features = .{ .@"64bit", .avx, null, null },
79585 .src_constraints = .{
79586 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
79587 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
79588 .any,
79589 },
79590 .patterns = &.{
79591 .{ .src = .{ .to_mem, .to_mem, .none } },
79592 },
79593 .call_frame = .{ .alignment = .@"16" },
79594 .extra_temps = .{
79595 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
79596 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79597 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
79598 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
79599 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
79600 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
79601 .{ .type = .i32, .kind = .{ .reg = .eax } },
79602 .{ .type = .u8, .kind = .{ .reg = .cl } },
79603 .{ .type = .u64, .kind = .{ .reg = .rdx } },
79604 .unused,
79605 .unused,
79606 },
79607 .dst_temps = .{ .mem, .unused },
79608 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
79609 .each = .{ .once = &.{
79610 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
79611 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
79612 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
79613 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
79614 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
79615 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
79616 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
79617 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
79618 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
79619 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
79620 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
79621 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
79622 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
79623 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
79624 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
79625 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
79626 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
79627 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
79628 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
79629 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
79630 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
79631 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
79632 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
79633 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
79634 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
79635 } },
79636 }, .{
79637 .required_features = .{ .@"64bit", .sse2, .slow_incdec, null },
79638 .src_constraints = .{
79639 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
79640 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
79641 .any,
79642 },
79643 .patterns = &.{
79644 .{ .src = .{ .to_mem, .to_mem, .none } },
79645 },
79646 .call_frame = .{ .alignment = .@"16" },
79647 .extra_temps = .{
79648 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
79649 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79650 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
79651 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
79652 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
79653 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
79654 .{ .type = .i32, .kind = .{ .reg = .eax } },
79655 .{ .type = .u8, .kind = .{ .reg = .cl } },
79656 .{ .type = .u64, .kind = .{ .reg = .rdx } },
79657 .unused,
79658 .unused,
79659 },
79660 .dst_temps = .{ .mem, .unused },
79661 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
79662 .each = .{ .once = &.{
79663 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
79664 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
79665 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
79666 .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
79667 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
79668 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
79669 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
79670 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
79671 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
79672 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
79673 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
79674 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
79675 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
79676 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
79677 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
79678 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
79679 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
79680 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
79681 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
79682 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
79683 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
79684 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
79685 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
79686 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
79687 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
79688 } },
79689 }, .{
79690 .required_features = .{ .@"64bit", .sse2, null, null },
79691 .src_constraints = .{
79692 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
79693 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
79694 .any,
79695 },
79696 .patterns = &.{
79697 .{ .src = .{ .to_mem, .to_mem, .none } },
79698 },
79699 .call_frame = .{ .alignment = .@"16" },
79700 .extra_temps = .{
79701 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
79702 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79703 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
79704 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
79705 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
79706 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
79707 .{ .type = .i32, .kind = .{ .reg = .eax } },
79708 .{ .type = .u8, .kind = .{ .reg = .cl } },
79709 .{ .type = .u64, .kind = .{ .reg = .rdx } },
79710 .unused,
79711 .unused,
79712 },
79713 .dst_temps = .{ .mem, .unused },
79714 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
79715 .each = .{ .once = &.{
79716 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
79717 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
79718 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
79719 .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
79720 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
79721 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
79722 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
79723 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
79724 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
79725 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
79726 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
79727 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
79728 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
79729 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
79730 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
79731 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
79732 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
79733 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
79734 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
79735 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
79736 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
79737 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
79738 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
79739 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
79740 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
79741 } },
79742 }, .{
79743 .required_features = .{ .@"64bit", .sse, .slow_incdec, null },
79744 .src_constraints = .{
79745 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
79746 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
79747 .any,
79748 },
79749 .patterns = &.{
79750 .{ .src = .{ .to_mem, .to_mem, .none } },
79751 },
79752 .call_frame = .{ .alignment = .@"16" },
79753 .extra_temps = .{
79754 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
79755 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79756 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
79757 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
79758 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
79759 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
79760 .{ .type = .i32, .kind = .{ .reg = .eax } },
79761 .{ .type = .u8, .kind = .{ .reg = .cl } },
79762 .{ .type = .u64, .kind = .{ .reg = .rdx } },
79763 .unused,
79764 .unused,
79765 },
79766 .dst_temps = .{ .mem, .unused },
79767 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
79768 .each = .{ .once = &.{
79769 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
79770 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
79771 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
79772 .{ .@"0:", ._ps, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
79773 .{ ._, ._ps, .mova, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
79774 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
79775 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
79776 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
79777 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
79778 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
79779 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
79780 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
79781 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
79782 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
79783 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
79784 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
79785 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
79786 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
79787 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
79788 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
79789 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
79790 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
79791 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
79792 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
79793 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
79794 } },
79795 }, .{
79796 .required_features = .{ .@"64bit", .sse, null, null },
79797 .src_constraints = .{
79798 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
79799 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
79800 .any,
79801 },
79802 .patterns = &.{
79803 .{ .src = .{ .to_mem, .to_mem, .none } },
79804 },
79805 .call_frame = .{ .alignment = .@"16" },
79806 .extra_temps = .{
79807 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
79808 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79809 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
79810 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
79811 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
79812 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
79813 .{ .type = .i32, .kind = .{ .reg = .eax } },
79814 .{ .type = .u8, .kind = .{ .reg = .cl } },
79815 .{ .type = .u64, .kind = .{ .reg = .rdx } },
79816 .unused,
79817 .unused,
79818 },
79819 .dst_temps = .{ .mem, .unused },
79820 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
79821 .each = .{ .once = &.{
79822 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
79823 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
79824 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
79825 .{ .@"0:", ._ps, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
79826 .{ ._, ._ps, .mova, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
79827 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
79828 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
79829 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
79830 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
79831 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
79832 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
79833 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
79834 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
79835 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
79836 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
79837 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
79838 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
79839 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
79840 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
79841 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
79842 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
79843 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
79844 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
79845 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
79846 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
79847 } },
79848 } },
79849 });
79850 },
79851 .eq, .neq => |cmp_op| cg.select(&res, &.{ty_pl.ty.toType()}, &ops, switch (@as(Condition, switch (cmp_op) {
79852 else => unreachable,
79853 .eq => .e,
79854 .neq => .ne,
79855 })) {
79856 else => unreachable,
79857 inline .e, .ne => |cc| comptime &.{ .{
79858 .src_constraints = .{ .{ .bool_vec = .byte }, .{ .bool_vec = .byte }, .any },
79859 .patterns = &.{
79860 .{ .src = .{ .mut_mem, .imm8, .none } },
79861 .{ .src = .{ .imm8, .mut_mem, .none }, .commute = .{ 0, 1 } },
79862 .{ .src = .{ .to_mut_gpr, .imm8, .none } },
79863 .{ .src = .{ .imm8, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
79864 .{ .src = .{ .mut_mem, .to_gpr, .none } },
79865 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
79866 .{ .src = .{ .to_mut_gpr, .mem, .none } },
79867 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
79868 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
79869 },
79870 .dst_temps = .{ .{ .ref = .src0 }, .unused },
79871 .clobbers = .{ .eflags = true },
79872 .each = .{ .once = switch (cc) {
8241079873 else => unreachable,
82411 .down => "floor",
82412 .up => "ceil",
82413 .zero => "trunc",
82414 } } } },
82415 .unused,
82416 .unused,
82417 .unused,
82418 .unused,
82419 .unused,
82420 .unused,
82421 .unused,
82422 .unused,
82423 },
82424 .dst_temps = .{ .mem, .unused },
82425 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82426 .each = .{ .once = &.{
82427 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
82428 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
82429 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
82430 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
82431 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
82432 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82433 } },
82434 }, .{
82435 .required_features = .{ .sse2, null, null, null },
82436 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
82437 .patterns = &.{
82438 .{ .src = .{ .to_mem, .none, .none } },
82439 },
82440 .call_frame = .{ .alignment = .@"16" },
82441 .extra_temps = .{
82442 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
82443 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
82444 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
79874 .e => &.{
79875 .{ ._, ._, .xor, .dst0b, .src1b, ._, ._ },
79876 .{ ._, ._, .not, .dst0b, ._, ._, ._ },
79877 },
79878 .ne => &.{
79879 .{ ._, ._, .xor, .dst0b, .src1b, ._, ._ },
79880 },
79881 } },
79882 }, .{
79883 .src_constraints = .{ .{ .bool_vec = .word }, .{ .bool_vec = .word }, .any },
79884 .patterns = &.{
79885 .{ .src = .{ .mut_mem, .imm16, .none } },
79886 .{ .src = .{ .imm16, .mut_mem, .none }, .commute = .{ 0, 1 } },
79887 .{ .src = .{ .to_mut_gpr, .imm16, .none } },
79888 .{ .src = .{ .imm16, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
79889 .{ .src = .{ .mut_mem, .to_gpr, .none } },
79890 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
79891 .{ .src = .{ .to_mut_gpr, .mem, .none } },
79892 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
79893 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
79894 },
79895 .dst_temps = .{ .{ .ref = .src0 }, .unused },
79896 .clobbers = .{ .eflags = true },
79897 .each = .{ .once = switch (cc) {
8244579898 else => unreachable,
82446 .down => "floor",
82447 .up => "ceil",
82448 .zero => "trunc",
82449 } } } },
82450 .unused,
82451 .unused,
82452 .unused,
82453 .unused,
82454 .unused,
82455 .unused,
82456 .unused,
82457 .unused,
82458 },
82459 .dst_temps = .{ .mem, .unused },
82460 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82461 .each = .{ .once = &.{
82462 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
82463 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
82464 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
82465 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
82466 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
82467 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82468 } },
82469 }, .{
82470 .required_features = .{ .sse, null, null, null },
82471 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
82472 .patterns = &.{
82473 .{ .src = .{ .to_mem, .none, .none } },
82474 },
82475 .call_frame = .{ .alignment = .@"16" },
82476 .extra_temps = .{
82477 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
82478 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
82479 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
79899 .e => &.{
79900 .{ ._, ._, .xor, .dst0w, .src1w, ._, ._ },
79901 .{ ._, ._, .not, .dst0w, ._, ._, ._ },
79902 },
79903 .ne => &.{
79904 .{ ._, ._, .xor, .dst0w, .src1w, ._, ._ },
79905 },
79906 } },
79907 }, .{
79908 .src_constraints = .{ .{ .bool_vec = .dword }, .{ .bool_vec = .dword }, .any },
79909 .patterns = &.{
79910 .{ .src = .{ .mut_mem, .imm32, .none } },
79911 .{ .src = .{ .imm32, .mut_mem, .none }, .commute = .{ 0, 1 } },
79912 .{ .src = .{ .to_mut_gpr, .imm32, .none } },
79913 .{ .src = .{ .imm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
79914 .{ .src = .{ .mut_mem, .to_gpr, .none } },
79915 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
79916 .{ .src = .{ .to_mut_gpr, .mem, .none } },
79917 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
79918 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
79919 },
79920 .dst_temps = .{ .{ .ref = .src0 }, .unused },
79921 .clobbers = .{ .eflags = true },
79922 .each = .{ .once = switch (cc) {
8248079923 else => unreachable,
82481 .down => "floor",
82482 .up => "ceil",
82483 .zero => "trunc",
82484 } } } },
82485 .unused,
82486 .unused,
82487 .unused,
82488 .unused,
82489 .unused,
82490 .unused,
82491 .unused,
82492 .unused,
82493 },
82494 .dst_temps = .{ .mem, .unused },
82495 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82496 .each = .{ .once = &.{
82497 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
82498 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
82499 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
82500 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
82501 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
82502 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
82503 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82504 } },
82505 }, .{
82506 .required_features = .{ .avx, .x87, null, null },
82507 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
82508 .patterns = &.{
82509 .{ .src = .{ .to_mem, .none, .none } },
82510 },
82511 .call_frame = .{ .size = 16, .alignment = .@"16" },
82512 .extra_temps = .{
82513 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
82514 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
82515 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
79924 .e => &.{
79925 .{ ._, ._, .xor, .dst0d, .src1d, ._, ._ },
79926 .{ ._, ._, .not, .dst0d, ._, ._, ._ },
79927 },
79928 .ne => &.{
79929 .{ ._, ._, .xor, .dst0d, .src1d, ._, ._ },
79930 },
79931 } },
79932 }, .{
79933 .required_features = .{ .@"64bit", null, null, null },
79934 .src_constraints = .{ .{ .bool_vec = .qword }, .{ .bool_vec = .qword }, .any },
79935 .patterns = &.{
79936 .{ .src = .{ .mut_mem, .simm32, .none } },
79937 .{ .src = .{ .simm32, .mut_mem, .none }, .commute = .{ 0, 1 } },
79938 .{ .src = .{ .to_mut_gpr, .simm32, .none } },
79939 .{ .src = .{ .simm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
79940 .{ .src = .{ .mut_mem, .to_gpr, .none } },
79941 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
79942 .{ .src = .{ .to_mut_gpr, .mem, .none } },
79943 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
79944 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
79945 },
79946 .dst_temps = .{ .{ .ref = .src0 }, .unused },
79947 .clobbers = .{ .eflags = true },
79948 .each = .{ .once = switch (cc) {
8251679949 else => unreachable,
82517 .down => "__floorx",
82518 .up => "__ceilx",
82519 .zero => "__truncx",
82520 } } } },
82521 .unused,
82522 .unused,
82523 .unused,
82524 .unused,
82525 .unused,
82526 .unused,
82527 .unused,
82528 .unused,
82529 },
82530 .dst_temps = .{ .{ .reg = .st0 }, .unused },
82531 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82532 .each = .{ .once = &.{
82533 .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ },
82534 .{ ._, .v_dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ },
82535 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
82536 } },
82537 }, .{
82538 .required_features = .{ .sse2, .x87, null, null },
82539 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
82540 .patterns = &.{
82541 .{ .src = .{ .to_mem, .none, .none } },
82542 },
82543 .call_frame = .{ .size = 16, .alignment = .@"16" },
82544 .extra_temps = .{
82545 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
82546 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
82547 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
79950 .e => &.{
79951 .{ ._, ._, .xor, .dst0q, .src1q, ._, ._ },
79952 .{ ._, ._, .not, .dst0q, ._, ._, ._ },
79953 },
79954 .ne => &.{
79955 .{ ._, ._, .xor, .dst0q, .src1q, ._, ._ },
79956 },
79957 } },
79958 }, .{
79959 .src_constraints = .{ .any_bool_vec, .any_bool_vec, .any },
79960 .patterns = &.{
79961 .{ .src = .{ .to_mem, .to_mem, .none } },
79962 },
79963 .extra_temps = .{
79964 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
79965 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
79966 .unused,
79967 .unused,
79968 .unused,
79969 .unused,
79970 .unused,
79971 .unused,
79972 .unused,
79973 .unused,
79974 .unused,
79975 },
79976 .dst_temps = .{ .mem, .unused },
79977 .clobbers = .{ .eflags = true },
79978 .each = .{ .once = switch (cc) {
8254879979 else => unreachable,
82549 .down => "__floorx",
82550 .up => "__ceilx",
82551 .zero => "__truncx",
82552 } } } },
82553 .unused,
82554 .unused,
82555 .unused,
82556 .unused,
82557 .unused,
82558 .unused,
82559 .unused,
82560 .unused,
82561 },
82562 .dst_temps = .{ .{ .reg = .st0 }, .unused },
82563 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82564 .each = .{ .once = &.{
82565 .{ ._, ._dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ },
82566 .{ ._, ._dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ },
82567 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
82568 } },
82569 }, .{
82570 .required_features = .{ .sse, .x87, null, null },
82571 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
82572 .patterns = &.{
82573 .{ .src = .{ .to_mem, .none, .none } },
82574 },
82575 .call_frame = .{ .size = 16, .alignment = .@"16" },
82576 .extra_temps = .{
82577 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
82578 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
82579 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
79980 .e => &.{
79981 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
79982 .{ .@"0:", ._, .mov, .tmp1p, .memia(.src0p, .tmp0, .add_size), ._, ._ },
79983 .{ ._, ._, .xor, .tmp1p, .memia(.src1p, .tmp0, .add_size), ._, ._ },
79984 .{ ._, ._, .not, .tmp1p, ._, ._, ._ },
79985 .{ ._, ._, .mov, .memia(.dst0p, .tmp0, .add_size), .tmp1p, ._, ._ },
79986 .{ ._, ._, .add, .tmp0p, .sa(.tmp1, .add_size), ._, ._ },
79987 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
79988 },
79989 .ne => &.{
79990 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
79991 .{ .@"0:", ._, .mov, .tmp1p, .memia(.src0p, .tmp0, .add_size), ._, ._ },
79992 .{ ._, ._, .xor, .tmp1p, .memia(.src1p, .tmp0, .add_size), ._, ._ },
79993 .{ ._, ._, .mov, .memia(.dst0p, .tmp0, .add_size), .tmp1p, ._, ._ },
79994 .{ ._, ._, .add, .tmp0p, .sa(.tmp1, .add_size), ._, ._ },
79995 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
79996 },
79997 } },
79998 }, .{
79999 .required_features = .{ .avx, null, null, null },
80000 .src_constraints = .{
80001 .{ .scalar_int = .{ .of = .xword, .is = .byte } },
80002 .{ .scalar_int = .{ .of = .xword, .is = .byte } },
80003 .any,
80004 },
80005 .patterns = &.{
80006 .{ .src = .{ .to_sse, .mem, .none } },
80007 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
80008 .{ .src = .{ .to_sse, .to_sse, .none } },
80009 },
80010 .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
80011 .kind = .all,
80012 .inverted = switch (cc) {
80013 else => unreachable,
80014 .e => false,
80015 .ne => true,
80016 },
80017 .scalar = .byte,
80018 } } }, .unused },
80019 .each = .{ .once = &.{
80020 .{ ._, .vp_b, .cmpeq, .dst0x, .src0x, .src1x, ._ },
80021 } },
80022 }, .{
80023 .required_features = .{ .avx, null, null, null },
80024 .src_constraints = .{
80025 .{ .scalar_int = .{ .of = .xword, .is = .word } },
80026 .{ .scalar_int = .{ .of = .xword, .is = .word } },
80027 .any,
80028 },
80029 .patterns = &.{
80030 .{ .src = .{ .to_sse, .mem, .none } },
80031 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
80032 .{ .src = .{ .to_sse, .to_sse, .none } },
80033 },
80034 .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
80035 .kind = .all,
80036 .inverted = switch (cc) {
80037 else => unreachable,
80038 .e => false,
80039 .ne => true,
80040 },
80041 .scalar = .word,
80042 } } }, .unused },
80043 .each = .{ .once = &.{
80044 .{ ._, .vp_w, .cmpeq, .dst0x, .src0x, .src1x, ._ },
80045 } },
80046 }, .{
80047 .required_features = .{ .avx, null, null, null },
80048 .src_constraints = .{
80049 .{ .scalar_int = .{ .of = .xword, .is = .dword } },
80050 .{ .scalar_int = .{ .of = .xword, .is = .dword } },
80051 .any,
80052 },
80053 .patterns = &.{
80054 .{ .src = .{ .to_sse, .mem, .none } },
80055 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
80056 .{ .src = .{ .to_sse, .to_sse, .none } },
80057 },
80058 .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
80059 .kind = .all,
80060 .inverted = switch (cc) {
80061 else => unreachable,
80062 .e => false,
80063 .ne => true,
80064 },
80065 .scalar = .dword,
80066 } } }, .unused },
80067 .each = .{ .once = &.{
80068 .{ ._, .vp_d, .cmpeq, .dst0x, .src0x, .src1x, ._ },
80069 } },
80070 }, .{
80071 .required_features = .{ .avx, null, null, null },
80072 .src_constraints = .{
80073 .{ .scalar_int = .{ .of = .xword, .is = .qword } },
80074 .{ .scalar_int = .{ .of = .xword, .is = .qword } },
80075 .any,
80076 },
80077 .patterns = &.{
80078 .{ .src = .{ .to_sse, .mem, .none } },
80079 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
80080 .{ .src = .{ .to_sse, .to_sse, .none } },
80081 },
80082 .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
80083 .kind = .all,
80084 .inverted = switch (cc) {
80085 else => unreachable,
80086 .e => false,
80087 .ne => true,
80088 },
80089 .scalar = .qword,
80090 } } }, .unused },
80091 .each = .{ .once = &.{
80092 .{ ._, .vp_q, .cmpeq, .dst0x, .src0x, .src1x, ._ },
80093 } },
80094 }, .{
80095 .required_features = .{ .sse2, null, null, null },
80096 .src_constraints = .{
80097 .{ .scalar_int = .{ .of = .xword, .is = .byte } },
80098 .{ .scalar_int = .{ .of = .xword, .is = .byte } },
80099 .any,
80100 },
80101 .patterns = &.{
80102 .{ .src = .{ .to_mut_sse, .mem, .none } },
80103 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
80104 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
80105 },
80106 .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{
80107 .kind = .all,
80108 .inverted = switch (cc) {
80109 else => unreachable,
80110 .e => false,
80111 .ne => true,
80112 },
80113 .scalar = .byte,
80114 } } }, .unused },
80115 .each = .{ .once = &.{
80116 .{ ._, .p_b, .cmpeq, .dst0x, .src1x, ._, ._ },
80117 } },
80118 }, .{
80119 .required_features = .{ .sse2, null, null, null },
80120 .src_constraints = .{
80121 .{ .scalar_int = .{ .of = .xword, .is = .word } },
80122 .{ .scalar_int = .{ .of = .xword, .is = .word } },
80123 .any,
80124 },
80125 .patterns = &.{
80126 .{ .src = .{ .to_mut_sse, .mem, .none } },
80127 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
80128 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
80129 },
80130 .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{
80131 .kind = .all,
80132 .inverted = switch (cc) {
80133 else => unreachable,
80134 .e => false,
80135 .ne => true,
80136 },
80137 .scalar = .word,
80138 } } }, .unused },
80139 .each = .{ .once = &.{
80140 .{ ._, .p_w, .cmpeq, .dst0x, .src1x, ._, ._ },
80141 } },
80142 }, .{
80143 .required_features = .{ .sse2, null, null, null },
80144 .src_constraints = .{
80145 .{ .scalar_int = .{ .of = .xword, .is = .dword } },
80146 .{ .scalar_int = .{ .of = .xword, .is = .dword } },
80147 .any,
80148 },
80149 .patterns = &.{
80150 .{ .src = .{ .to_mut_sse, .mem, .none } },
80151 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
80152 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
80153 },
80154 .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{
80155 .kind = .all,
80156 .inverted = switch (cc) {
80157 else => unreachable,
80158 .e => false,
80159 .ne => true,
80160 },
80161 .scalar = .dword,
80162 } } }, .unused },
80163 .each = .{ .once = &.{
80164 .{ ._, .p_d, .cmpeq, .dst0x, .src1x, ._, ._ },
80165 } },
80166 }, .{
80167 .required_features = .{ .sse4_1, null, null, null },
80168 .src_constraints = .{
80169 .{ .scalar_int = .{ .of = .xword, .is = .qword } },
80170 .{ .scalar_int = .{ .of = .xword, .is = .qword } },
80171 .any,
80172 },
80173 .patterns = &.{
80174 .{ .src = .{ .to_mut_sse, .mem, .none } },
80175 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
80176 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
80177 },
80178 .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{
80179 .kind = .all,
80180 .inverted = switch (cc) {
80181 else => unreachable,
80182 .e => false,
80183 .ne => true,
80184 },
80185 .scalar = .qword,
80186 } } }, .unused },
80187 .each = .{ .once = &.{
80188 .{ ._, .p_q, .cmpeq, .dst0x, .src1x, ._, ._ },
80189 } },
80190 }, .{
80191 .required_features = .{ .mmx, null, null, null },
80192 .src_constraints = .{
80193 .{ .scalar_int = .{ .of = .qword, .is = .byte } },
80194 .{ .scalar_int = .{ .of = .qword, .is = .byte } },
80195 .any,
80196 },
80197 .patterns = &.{
80198 .{ .src = .{ .to_mut_mmx, .mem, .none } },
80199 .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } },
80200 .{ .src = .{ .to_mut_mmx, .to_mmx, .none } },
80201 },
80202 .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{
80203 .kind = .all,
80204 .inverted = switch (cc) {
80205 else => unreachable,
80206 .e => false,
80207 .ne => true,
80208 },
80209 .scalar = .byte,
80210 } } }, .unused },
80211 .each = .{ .once = &.{
80212 .{ ._, .p_b, .cmpeq, .dst0q, .src1q, ._, ._ },
80213 } },
80214 }, .{
80215 .required_features = .{ .mmx, null, null, null },
80216 .src_constraints = .{
80217 .{ .scalar_int = .{ .of = .qword, .is = .word } },
80218 .{ .scalar_int = .{ .of = .qword, .is = .word } },
80219 .any,
80220 },
80221 .patterns = &.{
80222 .{ .src = .{ .to_mut_mmx, .mem, .none } },
80223 .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } },
80224 .{ .src = .{ .to_mut_mmx, .to_mmx, .none } },
80225 },
80226 .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{
80227 .kind = .all,
80228 .inverted = switch (cc) {
80229 else => unreachable,
80230 .e => false,
80231 .ne => true,
80232 },
80233 .scalar = .word,
80234 } } }, .unused },
80235 .each = .{ .once = &.{
80236 .{ ._, .p_w, .cmpeq, .dst0q, .src1q, ._, ._ },
80237 } },
80238 }, .{
80239 .required_features = .{ .mmx, null, null, null },
80240 .src_constraints = .{
80241 .{ .scalar_int = .{ .of = .qword, .is = .dword } },
80242 .{ .scalar_int = .{ .of = .qword, .is = .dword } },
80243 .any,
80244 },
80245 .patterns = &.{
80246 .{ .src = .{ .to_mut_mmx, .mem, .none } },
80247 .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } },
80248 .{ .src = .{ .to_mut_mmx, .to_mmx, .none } },
80249 },
80250 .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{
80251 .kind = .all,
80252 .inverted = switch (cc) {
80253 else => unreachable,
80254 .e => false,
80255 .ne => true,
80256 },
80257 .scalar = .dword,
80258 } } }, .unused },
80259 .each = .{ .once = &.{
80260 .{ ._, .p_d, .cmpeq, .dst0q, .src1q, ._, ._ },
80261 } },
80262 }, .{
80263 .required_features = .{ .avx2, null, null, null },
80264 .src_constraints = .{
80265 .{ .scalar_int = .{ .of = .yword, .is = .byte } },
80266 .{ .scalar_int = .{ .of = .yword, .is = .byte } },
80267 .any,
80268 },
80269 .patterns = &.{
80270 .{ .src = .{ .to_sse, .mem, .none } },
80271 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
80272 .{ .src = .{ .to_sse, .to_sse, .none } },
80273 },
80274 .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
80275 .kind = .all,
80276 .inverted = switch (cc) {
80277 else => unreachable,
80278 .e => false,
80279 .ne => true,
80280 },
80281 .scalar = .byte,
80282 } } }, .unused },
80283 .each = .{ .once = &.{
80284 .{ ._, .vp_b, .cmpeq, .dst0y, .src0y, .src1y, ._ },
80285 } },
80286 }, .{
80287 .required_features = .{ .avx2, null, null, null },
80288 .src_constraints = .{
80289 .{ .scalar_int = .{ .of = .yword, .is = .word } },
80290 .{ .scalar_int = .{ .of = .yword, .is = .word } },
80291 .any,
80292 },
80293 .patterns = &.{
80294 .{ .src = .{ .to_sse, .mem, .none } },
80295 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
80296 .{ .src = .{ .to_sse, .to_sse, .none } },
80297 },
80298 .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
80299 .kind = .all,
80300 .inverted = switch (cc) {
80301 else => unreachable,
80302 .e => false,
80303 .ne => true,
80304 },
80305 .scalar = .word,
80306 } } }, .unused },
80307 .each = .{ .once = &.{
80308 .{ ._, .vp_w, .cmpeq, .dst0y, .src0y, .src1y, ._ },
80309 } },
80310 }, .{
80311 .required_features = .{ .avx2, null, null, null },
80312 .src_constraints = .{
80313 .{ .scalar_int = .{ .of = .yword, .is = .dword } },
80314 .{ .scalar_int = .{ .of = .yword, .is = .dword } },
80315 .any,
80316 },
80317 .patterns = &.{
80318 .{ .src = .{ .to_sse, .mem, .none } },
80319 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
80320 .{ .src = .{ .to_sse, .to_sse, .none } },
80321 },
80322 .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
80323 .kind = .all,
80324 .inverted = switch (cc) {
80325 else => unreachable,
80326 .e => false,
80327 .ne => true,
80328 },
80329 .scalar = .dword,
80330 } } }, .unused },
80331 .each = .{ .once = &.{
80332 .{ ._, .vp_d, .cmpeq, .dst0y, .src0y, .src1y, ._ },
80333 } },
80334 }, .{
80335 .required_features = .{ .avx2, null, null, null },
80336 .src_constraints = .{
80337 .{ .scalar_int = .{ .of = .yword, .is = .qword } },
80338 .{ .scalar_int = .{ .of = .yword, .is = .qword } },
80339 .any,
80340 },
80341 .patterns = &.{
80342 .{ .src = .{ .to_sse, .mem, .none } },
80343 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
80344 .{ .src = .{ .to_sse, .to_sse, .none } },
80345 },
80346 .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
80347 .kind = .all,
80348 .inverted = switch (cc) {
80349 else => unreachable,
80350 .e => false,
80351 .ne => true,
80352 },
80353 .scalar = .qword,
80354 } } }, .unused },
80355 .each = .{ .once = &.{
80356 .{ ._, .vp_q, .cmpeq, .dst0y, .src0y, .src1y, ._ },
80357 } },
80358 }, .{
80359 .required_features = .{ .avx2, null, null, null },
80360 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
80361 .patterns = &.{
80362 .{ .src = .{ .to_mem, .to_mem, .none } },
80363 },
80364 .extra_temps = .{
80365 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
80366 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80367 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80368 .{ .kind = .{ .rc = .sse } },
80369 .unused,
80370 .unused,
80371 .unused,
80372 .unused,
80373 .unused,
80374 .unused,
80375 .unused,
80376 },
80377 .dst_temps = .{ .mem, .unused },
80378 .clobbers = .{ .eflags = true },
80379 .each = .{ .once = switch (cc) {
8258080380 else => unreachable,
82581 .down => "__floorx",
82582 .up => "__ceilx",
82583 .zero => "__truncx",
82584 } } } },
82585 .unused,
82586 .unused,
82587 .unused,
82588 .unused,
82589 .unused,
82590 .unused,
82591 .unused,
82592 .unused,
82593 },
82594 .dst_temps = .{ .{ .reg = .st0 }, .unused },
82595 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82596 .each = .{ .once = &.{
82597 .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ },
82598 .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ },
82599 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
82600 } },
82601 }, .{
82602 .required_features = .{ .avx, .x87, null, null },
82603 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
82604 .patterns = &.{
82605 .{ .src = .{ .to_mem, .none, .none } },
82606 },
82607 .call_frame = .{ .size = 16, .alignment = .@"16" },
82608 .extra_temps = .{
82609 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
82610 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
82611 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
82612 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
80381 .e => &.{
80382 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
80383 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
80384 .{ .@"0:", .v_dqu, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
80385 .{ ._, .vp_b, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },
80386 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },
80387 .{ ._, ._, .mov, .memi(.dst0d, .tmp1), .tmp2d, ._, ._ },
80388 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
80389 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
80390 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
80391 },
80392 .ne => &.{
80393 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
80394 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
80395 .{ .@"0:", .v_dqu, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
80396 .{ ._, .vp_b, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },
80397 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },
80398 .{ ._, ._, .not, .tmp2d, ._, ._, ._ },
80399 .{ ._, ._, .mov, .memi(.dst0d, .tmp1), .tmp2d, ._, ._ },
80400 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
80401 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
80402 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
80403 },
80404 } },
80405 }, .{
80406 .required_features = .{ .avx2, null, null, null },
80407 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
80408 .patterns = &.{
80409 .{ .src = .{ .to_mem, .to_mem, .none } },
80410 },
80411 .extra_temps = .{
80412 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
80413 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80414 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
80415 .{ .kind = .{ .rc = .sse } },
80416 .unused,
80417 .unused,
80418 .unused,
80419 .unused,
80420 .unused,
80421 .unused,
80422 .unused,
80423 },
80424 .dst_temps = .{ .mem, .unused },
80425 .clobbers = .{ .eflags = true },
80426 .each = .{ .once = switch (cc) {
8261380427 else => unreachable,
82614 .down => "__floorx",
82615 .up => "__ceilx",
82616 .zero => "__truncx",
82617 } } } },
82618 .unused,
82619 .unused,
82620 .unused,
82621 .unused,
82622 .unused,
82623 .unused,
82624 .unused,
82625 },
82626 .dst_temps = .{ .mem, .unused },
82627 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82628 .each = .{ .once = &.{
82629 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
82630 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
82631 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
82632 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
82633 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
82634 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
82635 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
82636 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82637 } },
82638 }, .{
82639 .required_features = .{ .sse2, .x87, null, null },
82640 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
82641 .patterns = &.{
82642 .{ .src = .{ .to_mem, .none, .none } },
82643 },
82644 .call_frame = .{ .size = 16, .alignment = .@"16" },
82645 .extra_temps = .{
82646 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
82647 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
82648 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
82649 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
80428 .e => &.{
80429 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
80430 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
80431 .{ .@"0:", .v_dqu, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
80432 .{ ._, .vp_w, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },
80433 .{ ._, .vp_b, .ackssw, .tmp3y, .tmp3y, .tmp3y, ._ },
80434 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },
80435 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
80436 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
80437 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
80438 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
80439 },
80440 .ne => &.{
80441 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
80442 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
80443 .{ .@"0:", .v_dqu, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
80444 .{ ._, .vp_w, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },
80445 .{ ._, .vp_b, .ackssw, .tmp3y, .tmp3y, .tmp3y, ._ },
80446 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },
80447 .{ ._, ._, .not, .tmp2d, ._, ._, ._ },
80448 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
80449 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
80450 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
80451 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
80452 },
80453 } },
80454 }, .{
80455 .required_features = .{ .avx2, null, null, null },
80456 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
80457 .patterns = &.{
80458 .{ .src = .{ .to_mem, .to_mem, .none } },
80459 },
80460 .extra_temps = .{
80461 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
80462 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80463 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
80464 .{ .kind = .{ .rc = .sse } },
80465 .unused,
80466 .unused,
80467 .unused,
80468 .unused,
80469 .unused,
80470 .unused,
80471 .unused,
80472 },
80473 .dst_temps = .{ .mem, .unused },
80474 .clobbers = .{ .eflags = true },
80475 .each = .{ .once = switch (cc) {
8265080476 else => unreachable,
82651 .down => "__floorx",
82652 .up => "__ceilx",
82653 .zero => "__truncx",
82654 } } } },
82655 .unused,
82656 .unused,
82657 .unused,
82658 .unused,
82659 .unused,
82660 .unused,
82661 .unused,
82662 },
82663 .dst_temps = .{ .mem, .unused },
82664 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82665 .each = .{ .once = &.{
82666 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
82667 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
82668 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
82669 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
82670 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
82671 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
82672 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
82673 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82674 } },
82675 }, .{
82676 .required_features = .{ .sse, .x87, null, null },
82677 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
82678 .patterns = &.{
82679 .{ .src = .{ .to_mem, .none, .none } },
82680 },
82681 .call_frame = .{ .size = 16, .alignment = .@"16" },
82682 .extra_temps = .{
82683 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
82684 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
82685 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
82686 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
80477 .e => &.{
80478 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
80479 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
80480 .{ .@"0:", .v_dqu, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
80481 .{ ._, .vp_d, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },
80482 .{ ._, .v_ps, .movmsk, .tmp2d, .tmp3y, ._, ._ },
80483 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
80484 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
80485 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
80486 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
80487 },
80488 .ne => &.{
80489 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
80490 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
80491 .{ .@"0:", .v_dqu, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
80492 .{ ._, .vp_d, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },
80493 .{ ._, .v_ps, .movmsk, .tmp2d, .tmp3y, ._, ._ },
80494 .{ ._, ._, .not, .tmp2b, ._, ._, ._ },
80495 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
80496 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
80497 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
80498 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
80499 },
80500 } },
80501 }, .{
80502 .required_features = .{ .avx2, null, null, null },
80503 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
80504 .patterns = &.{
80505 .{ .src = .{ .to_mem, .to_mem, .none } },
80506 },
80507 .extra_temps = .{
80508 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
80509 .{ .type = .u32, .kind = .{ .reg = .rcx } },
80510 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
80511 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
80512 .{ .kind = .{ .rc = .sse } },
80513 .unused,
80514 .unused,
80515 .unused,
80516 .unused,
80517 .unused,
80518 .unused,
80519 },
80520 .dst_temps = .{ .mem, .unused },
80521 .clobbers = .{ .eflags = true },
80522 .each = .{ .once = switch (cc) {
80523 else => unreachable,
80524 .e => &.{
80525 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
80526 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
80527 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
80528 .{ .@"0:", .v_dqu, .mov, .tmp4y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
80529 .{ ._, .vp_q, .cmpeq, .tmp4y, .tmp4y, .memia(.src1y, .tmp0, .add_size), ._ },
80530 .{ ._, .v_pd, .movmsk, .tmp3d, .tmp4y, ._, ._ },
80531 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
80532 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
80533 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
80534 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
80535 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
80536 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
80537 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
80538 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
80539 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
80540 .{ .@"1:", ._, .add, .tmp0p, .si(32), ._, ._ },
80541 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
80542 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
80543 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
80544 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
80545 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
80546 },
80547 .ne => &.{
80548 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
80549 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
80550 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
80551 .{ .@"0:", .v_dqu, .mov, .tmp4y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
80552 .{ ._, .vp_q, .cmpeq, .tmp4y, .tmp4y, .memia(.src1y, .tmp0, .add_size), ._ },
80553 .{ ._, .v_pd, .movmsk, .tmp3d, .tmp4y, ._, ._ },
80554 .{ ._, ._, .xor, .tmp3b, .si(0b1111), ._, ._ },
80555 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
80556 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
80557 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
80558 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
80559 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
80560 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
80561 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
80562 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
80563 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
80564 .{ .@"1:", ._, .add, .tmp0p, .si(32), ._, ._ },
80565 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
80566 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
80567 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
80568 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
80569 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
80570 },
80571 } },
80572 }, .{
80573 .required_features = .{ .avx, null, null, null },
80574 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
80575 .patterns = &.{
80576 .{ .src = .{ .to_mem, .to_mem, .none } },
80577 },
80578 .extra_temps = .{
80579 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
80580 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80581 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
80582 .{ .kind = .{ .rc = .sse } },
80583 .unused,
80584 .unused,
80585 .unused,
80586 .unused,
80587 .unused,
80588 .unused,
80589 .unused,
80590 },
80591 .dst_temps = .{ .mem, .unused },
80592 .clobbers = .{ .eflags = true },
80593 .each = .{ .once = switch (cc) {
80594 else => unreachable,
80595 .e => &.{
80596 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
80597 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
80598 .{ .@"0:", .v_dqu, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
80599 .{ ._, .vp_b, .cmpeq, .tmp3x, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._ },
80600 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
80601 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
80602 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
80603 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
80604 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
80605 },
80606 .ne => &.{
80607 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
80608 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
80609 .{ .@"0:", .v_dqu, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
80610 .{ ._, .vp_b, .cmpeq, .tmp3x, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._ },
80611 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
80612 .{ ._, ._, .not, .tmp2d, ._, ._, ._ },
80613 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
80614 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
80615 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
80616 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
80617 },
80618 } },
80619 }, .{
80620 .required_features = .{ .avx, null, null, null },
80621 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
80622 .patterns = &.{
80623 .{ .src = .{ .to_mem, .to_mem, .none } },
80624 },
80625 .extra_temps = .{
80626 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
80627 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80628 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
80629 .{ .kind = .{ .rc = .sse } },
80630 .unused,
80631 .unused,
80632 .unused,
80633 .unused,
80634 .unused,
80635 .unused,
80636 .unused,
80637 },
80638 .dst_temps = .{ .mem, .unused },
80639 .clobbers = .{ .eflags = true },
80640 .each = .{ .once = switch (cc) {
8268780641 else => unreachable,
82688 .down => "__floorx",
82689 .up => "__ceilx",
82690 .zero => "__truncx",
82691 } } } },
82692 .unused,
82693 .unused,
82694 .unused,
82695 .unused,
82696 .unused,
82697 .unused,
82698 .unused,
82699 },
82700 .dst_temps = .{ .mem, .unused },
82701 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82702 .each = .{ .once = &.{
82703 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
82704 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
82705 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
82706 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
82707 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
82708 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
82709 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
82710 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82711 } },
82712 }, .{
82713 .required_features = .{ .sse, null, null, null },
82714 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
82715 .patterns = &.{
82716 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
82717 },
82718 .call_frame = .{ .alignment = .@"16" },
82719 .extra_temps = .{
82720 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
80642 .e => &.{
80643 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
80644 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
80645 .{ .@"0:", .v_dqu, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
80646 .{ ._, .vp_w, .cmpeq, .tmp3x, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._ },
80647 .{ ._, .vp_b, .ackssw, .tmp3x, .tmp3x, .tmp3x, ._ },
80648 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
80649 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
80650 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
80651 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
80652 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
80653 },
80654 .ne => &.{
80655 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
80656 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
80657 .{ .@"0:", .v_dqu, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
80658 .{ ._, .vp_w, .cmpeq, .tmp3x, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._ },
80659 .{ ._, .vp_b, .ackssw, .tmp3x, .tmp3x, .tmp3x, ._ },
80660 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
80661 .{ ._, ._, .not, .tmp2b, ._, ._, ._ },
80662 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
80663 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
80664 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
80665 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
80666 },
80667 } },
80668 }, .{
80669 .required_features = .{ .avx, null, null, null },
80670 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
80671 .patterns = &.{
80672 .{ .src = .{ .to_mem, .to_mem, .none } },
80673 },
80674 .extra_temps = .{
80675 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
80676 .{ .type = .u32, .kind = .{ .reg = .rcx } },
80677 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
80678 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
80679 .{ .kind = .{ .rc = .sse } },
80680 .unused,
80681 .unused,
80682 .unused,
80683 .unused,
80684 .unused,
80685 .unused,
80686 },
80687 .dst_temps = .{ .mem, .unused },
80688 .clobbers = .{ .eflags = true },
80689 .each = .{ .once = switch (cc) {
8272180690 else => unreachable,
82722 .down => "floorq",
82723 .up => "ceilq",
82724 .zero => "truncq",
82725 } } } },
82726 .unused,
82727 .unused,
82728 .unused,
82729 .unused,
82730 .unused,
82731 .unused,
82732 .unused,
82733 .unused,
82734 .unused,
82735 .unused,
82736 },
82737 .dst_temps = .{ .{ .ref = .src0 }, .unused },
82738 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82739 .each = .{ .once = &.{
82740 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
82741 } },
82742 }, .{
82743 .required_features = .{ .avx, null, null, null },
82744 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
82745 .patterns = &.{
82746 .{ .src = .{ .to_mem, .none, .none } },
82747 },
82748 .call_frame = .{ .alignment = .@"16" },
82749 .extra_temps = .{
82750 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
82751 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
82752 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
80691 .e => &.{
80692 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
80693 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
80694 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
80695 .{ .@"0:", .v_dqu, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
80696 .{ ._, .vp_d, .cmpeq, .tmp4x, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._ },
80697 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp4x, ._, ._ },
80698 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
80699 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
80700 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
80701 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
80702 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
80703 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
80704 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
80705 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
80706 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
80707 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
80708 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
80709 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
80710 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
80711 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
80712 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
80713 },
80714 .ne => &.{
80715 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
80716 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
80717 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
80718 .{ .@"0:", .v_dqu, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
80719 .{ ._, .vp_d, .cmpeq, .tmp4x, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._ },
80720 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp4x, ._, ._ },
80721 .{ ._, ._, .xor, .tmp3b, .si(0b1111), ._, ._ },
80722 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
80723 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
80724 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
80725 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
80726 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
80727 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
80728 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
80729 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
80730 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
80731 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
80732 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
80733 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
80734 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
80735 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
80736 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
80737 },
80738 } },
80739 }, .{
80740 .required_features = .{ .avx, null, null, null },
80741 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
80742 .patterns = &.{
80743 .{ .src = .{ .to_mem, .to_mem, .none } },
80744 },
80745 .extra_temps = .{
80746 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
80747 .{ .type = .u32, .kind = .{ .reg = .rcx } },
80748 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
80749 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
80750 .{ .kind = .{ .rc = .sse } },
80751 .unused,
80752 .unused,
80753 .unused,
80754 .unused,
80755 .unused,
80756 .unused,
80757 },
80758 .dst_temps = .{ .mem, .unused },
80759 .clobbers = .{ .eflags = true },
80760 .each = .{ .once = switch (cc) {
8275380761 else => unreachable,
82754 .down => "floorq",
82755 .up => "ceilq",
82756 .zero => "truncq",
82757 } } } },
82758 .unused,
82759 .unused,
82760 .unused,
82761 .unused,
82762 .unused,
82763 .unused,
82764 .unused,
82765 .unused,
82766 },
82767 .dst_temps = .{ .mem, .unused },
82768 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82769 .each = .{ .once = &.{
82770 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
82771 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
82772 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
82773 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
82774 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
82775 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82776 } },
82777 }, .{
82778 .required_features = .{ .sse2, null, null, null },
82779 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
82780 .patterns = &.{
82781 .{ .src = .{ .to_mem, .none, .none } },
82782 },
82783 .call_frame = .{ .alignment = .@"16" },
82784 .extra_temps = .{
82785 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
82786 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
82787 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
80762 .e => &.{
80763 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
80764 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
80765 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
80766 .{ .@"0:", .v_dqu, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
80767 .{ ._, .vp_q, .cmpeq, .tmp4x, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._ },
80768 .{ ._, .v_pd, .movmsk, .tmp3d, .tmp4x, ._, ._ },
80769 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
80770 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
80771 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
80772 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
80773 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
80774 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
80775 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
80776 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
80777 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
80778 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
80779 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
80780 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
80781 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
80782 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
80783 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
80784 },
80785 .ne => &.{
80786 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
80787 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
80788 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
80789 .{ .@"0:", .v_dqu, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
80790 .{ ._, .vp_q, .cmpeq, .tmp4x, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._ },
80791 .{ ._, .v_pd, .movmsk, .tmp3d, .tmp4x, ._, ._ },
80792 .{ ._, ._, .xor, .tmp3b, .si(0b11), ._, ._ },
80793 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
80794 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
80795 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
80796 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
80797 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
80798 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
80799 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
80800 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
80801 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
80802 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
80803 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
80804 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
80805 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
80806 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
80807 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
80808 },
80809 } },
80810 }, .{
80811 .required_features = .{ .sse2, null, null, null },
80812 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
80813 .patterns = &.{
80814 .{ .src = .{ .to_mem, .to_mem, .none } },
80815 },
80816 .extra_temps = .{
80817 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
80818 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80819 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
80820 .{ .kind = .{ .rc = .sse } },
80821 .unused,
80822 .unused,
80823 .unused,
80824 .unused,
80825 .unused,
80826 .unused,
80827 .unused,
80828 },
80829 .dst_temps = .{ .mem, .unused },
80830 .clobbers = .{ .eflags = true },
80831 .each = .{ .once = switch (cc) {
8278880832 else => unreachable,
82789 .down => "floorq",
82790 .up => "ceilq",
82791 .zero => "truncq",
82792 } } } },
82793 .unused,
82794 .unused,
82795 .unused,
82796 .unused,
82797 .unused,
82798 .unused,
82799 .unused,
82800 .unused,
82801 },
82802 .dst_temps = .{ .mem, .unused },
82803 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82804 .each = .{ .once = &.{
82805 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
82806 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
82807 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
82808 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
82809 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
82810 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82811 } },
82812 }, .{
82813 .required_features = .{ .sse, null, null, null },
82814 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
82815 .patterns = &.{
82816 .{ .src = .{ .to_mem, .none, .none } },
82817 },
82818 .call_frame = .{ .alignment = .@"16" },
82819 .extra_temps = .{
82820 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
82821 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
82822 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
80833 .e => &.{
80834 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
80835 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
80836 .{ .@"0:", ._dqu, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
80837 .{ ._, .p_b, .cmpeq, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
80838 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
80839 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
80840 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
80841 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
80842 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
80843 },
80844 .ne => &.{
80845 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
80846 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
80847 .{ .@"0:", ._dqu, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
80848 .{ ._, .p_b, .cmpeq, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
80849 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
80850 .{ ._, ._, .not, .tmp2d, ._, ._, ._ },
80851 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
80852 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
80853 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
80854 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
80855 },
80856 } },
80857 }, .{
80858 .required_features = .{ .sse2, null, null, null },
80859 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
80860 .patterns = &.{
80861 .{ .src = .{ .to_mem, .to_mem, .none } },
80862 },
80863 .extra_temps = .{
80864 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
80865 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80866 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
80867 .{ .kind = .{ .rc = .sse } },
80868 .unused,
80869 .unused,
80870 .unused,
80871 .unused,
80872 .unused,
80873 .unused,
80874 .unused,
80875 },
80876 .dst_temps = .{ .mem, .unused },
80877 .clobbers = .{ .eflags = true },
80878 .each = .{ .once = switch (cc) {
8282380879 else => unreachable,
82824 .down => "floorq",
82825 .up => "ceilq",
82826 .zero => "truncq",
82827 } } } },
82828 .unused,
82829 .unused,
82830 .unused,
82831 .unused,
82832 .unused,
82833 .unused,
82834 .unused,
82835 .unused,
82836 },
82837 .dst_temps = .{ .mem, .unused },
82838 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82839 .each = .{ .once = &.{
82840 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
82841 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
82842 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
82843 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
82844 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
82845 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82846 } },
82847 } },
82848 }) catch |err| switch (err) {
82849 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
82850 @tagName(air_tag),
82851 cg.typeOf(un_op).fmt(pt),
82852 ops[0].tracking(cg),
82853 }),
82854 else => |e| return e,
82855 };
82856 try res[0].finish(inst, &.{un_op}, &ops, cg);
82857 },
82858 .neg, .neg_optimized => |air_tag| if (use_old) try cg.airFloatSign(inst, .neg) else {
82859 const un_op = air_datas[@intFromEnum(inst)].un_op;
82860 var ops = try cg.tempsFromOperands(inst, .{un_op});
82861 var res: [1]Temp = undefined;
82862 cg.select(&res, &.{cg.typeOf(un_op)}, &ops, comptime &.{ .{
82863 .required_features = .{ .avx, null, null, null },
82864 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
82865 .patterns = &.{
82866 .{ .src = .{ .to_sse, .none, .none } },
82867 },
82868 .extra_temps = .{
82869 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
82870 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
82871 .unused,
82872 .unused,
82873 .unused,
82874 .unused,
82875 .unused,
82876 .unused,
82877 .unused,
82878 .unused,
82879 .unused,
82880 },
82881 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
82882 .each = .{ .once = &.{
82883 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
82884 .{ ._, .v_ps, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },
82885 } },
82886 }, .{
82887 .required_features = .{ .sse, null, null, null },
82888 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
82889 .patterns = &.{
82890 .{ .src = .{ .to_mut_sse, .none, .none } },
82891 },
82892 .extra_temps = .{
82893 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
82894 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
82895 .unused,
82896 .unused,
82897 .unused,
82898 .unused,
82899 .unused,
82900 .unused,
82901 .unused,
82902 .unused,
82903 .unused,
82904 },
82905 .dst_temps = .{ .{ .ref = .src0 }, .unused },
82906 .each = .{ .once = &.{
82907 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
82908 .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
82909 } },
82910 }, .{
82911 .required_features = .{ .avx, null, null, null },
82912 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
82913 .patterns = &.{
82914 .{ .src = .{ .to_sse, .none, .none } },
82915 },
82916 .extra_temps = .{
82917 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
82918 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
82919 .unused,
82920 .unused,
82921 .unused,
82922 .unused,
82923 .unused,
82924 .unused,
82925 .unused,
82926 .unused,
82927 .unused,
82928 },
82929 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
82930 .each = .{ .once = &.{
82931 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
82932 .{ ._, .v_ps, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
82933 } },
82934 }, .{
82935 .required_features = .{ .avx, null, null, null },
82936 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
82937 .patterns = &.{
82938 .{ .src = .{ .to_sse, .none, .none } },
82939 },
82940 .extra_temps = .{
82941 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
82942 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
82943 .unused,
82944 .unused,
82945 .unused,
82946 .unused,
82947 .unused,
82948 .unused,
82949 .unused,
82950 .unused,
82951 .unused,
82952 },
82953 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
82954 .each = .{ .once = &.{
82955 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
82956 .{ ._, .v_pd, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },
82957 } },
82958 }, .{
82959 .required_features = .{ .sse2, null, null, null },
82960 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
82961 .patterns = &.{
82962 .{ .src = .{ .to_mut_sse, .none, .none } },
82963 },
82964 .extra_temps = .{
82965 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
82966 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
82967 .unused,
82968 .unused,
82969 .unused,
82970 .unused,
82971 .unused,
82972 .unused,
82973 .unused,
82974 .unused,
82975 .unused,
82976 },
82977 .dst_temps = .{ .{ .ref = .src0 }, .unused },
82978 .each = .{ .once = &.{
82979 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
82980 .{ ._, ._pd, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
82981 } },
82982 }, .{
82983 .required_features = .{ .avx, null, null, null },
82984 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
82985 .patterns = &.{
82986 .{ .src = .{ .to_sse, .none, .none } },
82987 },
82988 .extra_temps = .{
82989 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
82990 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
82991 .unused,
82992 .unused,
82993 .unused,
82994 .unused,
82995 .unused,
82996 .unused,
82997 .unused,
82998 .unused,
82999 .unused,
83000 },
83001 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
83002 .each = .{ .once = &.{
83003 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
83004 .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
83005 } },
83006 }, .{
83007 .required_features = .{ .x87, null, null, null },
83008 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
83009 .patterns = &.{
83010 .{ .src = .{ .mem, .none, .none } },
83011 .{ .src = .{ .to_x87, .none, .none } },
83012 },
83013 .extra_temps = .{
83014 .{ .type = .f80, .kind = .{ .reg = .st7 } },
83015 .unused,
83016 .unused,
83017 .unused,
83018 .unused,
83019 .unused,
83020 .unused,
83021 .unused,
83022 .unused,
83023 .unused,
83024 .unused,
83025 },
83026 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .x87 } }, .unused },
83027 .each = .{ .once = &.{
83028 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
83029 .{ ._, .f_, .chs, ._, ._, ._, ._ },
83030 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
83031 } },
83032 }, .{
83033 .required_features = .{ .avx, null, null, null },
83034 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
83035 .patterns = &.{
83036 .{ .src = .{ .to_sse, .none, .none } },
83037 },
83038 .extra_temps = .{
83039 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
83040 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
83041 .unused,
83042 .unused,
83043 .unused,
83044 .unused,
83045 .unused,
83046 .unused,
83047 .unused,
83048 .unused,
83049 .unused,
83050 },
83051 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
83052 .each = .{ .once = &.{
83053 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
83054 .{ ._, .vp_, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },
83055 } },
83056 }, .{
83057 .required_features = .{ .sse2, null, null, null },
83058 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
83059 .patterns = &.{
83060 .{ .src = .{ .to_mut_sse, .none, .none } },
83061 },
83062 .extra_temps = .{
83063 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
83064 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
83065 .unused,
83066 .unused,
83067 .unused,
83068 .unused,
83069 .unused,
83070 .unused,
83071 .unused,
83072 .unused,
83073 .unused,
83074 },
83075 .dst_temps = .{ .{ .ref = .src0 }, .unused },
83076 .each = .{ .once = &.{
83077 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
83078 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
83079 } },
83080 }, .{
83081 .required_features = .{ .sse, null, null, null },
83082 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
83083 .patterns = &.{
83084 .{ .src = .{ .to_mut_sse, .none, .none } },
83085 },
83086 .extra_temps = .{
83087 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
83088 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
83089 .unused,
83090 .unused,
83091 .unused,
83092 .unused,
83093 .unused,
83094 .unused,
83095 .unused,
83096 .unused,
83097 .unused,
83098 },
83099 .dst_temps = .{ .{ .ref = .src0 }, .unused },
83100 .each = .{ .once = &.{
83101 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
83102 .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
83103 } },
83104 }, .{
83105 .required_features = .{ .avx2, null, null, null },
83106 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any },
83107 .patterns = &.{
83108 .{ .src = .{ .to_sse, .none, .none } },
83109 },
83110 .extra_temps = .{
83111 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
83112 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
83113 .unused,
83114 .unused,
83115 .unused,
83116 .unused,
83117 .unused,
83118 .unused,
83119 .unused,
83120 .unused,
83121 .unused,
83122 },
83123 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
83124 .each = .{ .once = &.{
83125 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
83126 .{ ._, .vp_, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
83127 } },
83128 }, .{
83129 .required_features = .{ .avx, null, null, null },
83130 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any },
83131 .patterns = &.{
83132 .{ .src = .{ .to_sse, .none, .none } },
83133 },
83134 .extra_temps = .{
83135 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
83136 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
83137 .unused,
83138 .unused,
83139 .unused,
83140 .unused,
83141 .unused,
83142 .unused,
83143 .unused,
83144 .unused,
83145 .unused,
83146 },
83147 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
83148 .each = .{ .once = &.{
83149 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
83150 .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
83151 } },
83152 }, .{
83153 .required_features = .{ .avx, null, null, null },
83154 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
83155 .patterns = &.{
83156 .{ .src = .{ .to_mem, .none, .none } },
83157 },
83158 .extra_temps = .{
83159 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83160 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
83161 .{ .kind = .{ .rc = .sse } },
83162 .{ .kind = .{ .rc = .sse } },
83163 .unused,
83164 .unused,
83165 .unused,
83166 .unused,
83167 .unused,
83168 .unused,
83169 .unused,
83170 },
83171 .dst_temps = .{ .mem, .unused },
83172 .each = .{ .once = &.{
83173 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
83174 .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
83175 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83176 .{ .@"0:", .v_ps, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
83177 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
83178 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
83179 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83180 } },
83181 }, .{
83182 .required_features = .{ .sse, null, null, null },
83183 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
83184 .patterns = &.{
83185 .{ .src = .{ .to_mem, .none, .none } },
83186 },
83187 .extra_temps = .{
83188 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83189 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
83190 .{ .kind = .{ .rc = .sse } },
83191 .{ .kind = .{ .rc = .sse } },
83192 .unused,
83193 .unused,
83194 .unused,
83195 .unused,
83196 .unused,
83197 .unused,
83198 .unused,
83199 },
83200 .dst_temps = .{ .mem, .unused },
83201 .each = .{ .once = &.{
83202 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
83203 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
83204 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83205 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
83206 .{ ._, ._ps, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
83207 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
83208 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
83209 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83210 } },
83211 }, .{
83212 .required_features = .{ .avx, null, null, null },
83213 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
83214 .patterns = &.{
83215 .{ .src = .{ .to_mem, .none, .none } },
83216 },
83217 .extra_temps = .{
83218 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83219 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
83220 .{ .kind = .{ .rc = .sse } },
83221 .{ .kind = .{ .rc = .sse } },
83222 .unused,
83223 .unused,
83224 .unused,
83225 .unused,
83226 .unused,
83227 .unused,
83228 .unused,
83229 },
83230 .dst_temps = .{ .mem, .unused },
83231 .each = .{ .once = &.{
83232 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
83233 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
83234 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83235 .{ .@"0:", .v_pd, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
83236 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
83237 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
83238 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83239 } },
83240 }, .{
83241 .required_features = .{ .sse2, null, null, null },
83242 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
83243 .patterns = &.{
83244 .{ .src = .{ .to_mem, .none, .none } },
83245 },
83246 .extra_temps = .{
83247 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83248 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
83249 .{ .kind = .{ .rc = .sse } },
83250 .{ .kind = .{ .rc = .sse } },
83251 .unused,
83252 .unused,
83253 .unused,
83254 .unused,
83255 .unused,
83256 .unused,
83257 .unused,
83258 },
83259 .dst_temps = .{ .mem, .unused },
83260 .each = .{ .once = &.{
83261 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
83262 .{ ._, ._pd, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
83263 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83264 .{ .@"0:", ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
83265 .{ ._, ._pd, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
83266 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
83267 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
83268 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83269 } },
83270 }, .{
83271 .required_features = .{ .avx2, null, null, null },
83272 .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any, .any },
83273 .patterns = &.{
83274 .{ .src = .{ .to_mem, .none, .none } },
83275 },
83276 .extra_temps = .{
83277 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83278 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
83279 .{ .kind = .{ .rc = .sse } },
83280 .{ .kind = .{ .rc = .sse } },
83281 .unused,
83282 .unused,
83283 .unused,
83284 .unused,
83285 .unused,
83286 .unused,
83287 .unused,
83288 },
83289 .dst_temps = .{ .mem, .unused },
83290 .each = .{ .once = &.{
83291 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
83292 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
83293 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83294 .{ .@"0:", .vp_, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
83295 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
83296 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
83297 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83298 } },
83299 }, .{
83300 .required_features = .{ .avx, null, null, null },
83301 .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any, .any },
83302 .patterns = &.{
83303 .{ .src = .{ .to_mem, .none, .none } },
83304 },
83305 .extra_temps = .{
83306 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83307 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
83308 .{ .kind = .{ .rc = .sse } },
83309 .{ .kind = .{ .rc = .sse } },
83310 .unused,
83311 .unused,
83312 .unused,
83313 .unused,
83314 .unused,
83315 .unused,
83316 .unused,
83317 },
83318 .dst_temps = .{ .mem, .unused },
83319 .each = .{ .once = &.{
83320 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
83321 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
83322 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83323 .{ .@"0:", .v_pd, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
83324 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
83325 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
83326 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83327 } },
83328 }, .{
83329 .required_features = .{ .sse2, null, null, null },
83330 .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any },
83331 .patterns = &.{
83332 .{ .src = .{ .to_mem, .none, .none } },
83333 },
83334 .extra_temps = .{
83335 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83336 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
83337 .{ .kind = .{ .rc = .sse } },
83338 .{ .kind = .{ .rc = .sse } },
83339 .unused,
83340 .unused,
83341 .unused,
83342 .unused,
83343 .unused,
83344 .unused,
83345 .unused,
83346 },
83347 .dst_temps = .{ .mem, .unused },
83348 .each = .{ .once = &.{
83349 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
83350 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
83351 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83352 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
83353 .{ ._, .p_, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
83354 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
83355 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
83356 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83357 } },
83358 }, .{
83359 .required_features = .{ .sse, null, null, null },
83360 .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any },
83361 .patterns = &.{
83362 .{ .src = .{ .to_mem, .none, .none } },
83363 },
83364 .extra_temps = .{
83365 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83366 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
83367 .{ .kind = .{ .rc = .sse } },
83368 .{ .kind = .{ .rc = .sse } },
83369 .unused,
83370 .unused,
83371 .unused,
83372 .unused,
83373 .unused,
83374 .unused,
83375 .unused,
83376 },
83377 .dst_temps = .{ .mem, .unused },
83378 .each = .{ .once = &.{
83379 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
83380 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
83381 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83382 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
83383 .{ ._, ._ps, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
83384 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
83385 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
83386 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83387 } },
83388 } }) catch |err| switch (err) {
83389 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
83390 @tagName(air_tag),
83391 cg.typeOf(un_op).fmt(pt),
83392 ops[0].tracking(cg),
83393 }),
83394 else => |e| return e,
83395 };
83396 try res[0].finish(inst, &.{un_op}, &ops, cg);
83397 },
83398
83399 .cmp_lt,
83400 .cmp_lt_optimized,
83401 .cmp_lte,
83402 .cmp_lte_optimized,
83403 .cmp_gte,
83404 .cmp_gte_optimized,
83405 .cmp_gt,
83406 .cmp_gt_optimized,
83407 => |air_tag| if (use_old) try cg.airCmp(inst, air_tag.toCmpOp().?) else {
83408 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
83409 const cmp_op = air_tag.toCmpOp().?;
83410 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
83411 var res: [1]Temp = undefined;
83412 (if (cg.floatBits(cg.typeOf(bin_op.lhs))) |_| err: {
83413 switch (cmp_op) {
83414 else => unreachable,
83415 .lt, .lte => {},
83416 .gt, .gte => std.mem.swap(Temp, &ops[0], &ops[1]),
83417 }
83418 break :err cg.select(&res, &.{.bool}, &ops, switch (switch (cmp_op) {
83419 else => unreachable,
83420 .lt, .gt => true,
83421 .lte, .gte => false,
83422 }) {
83423 inline false, true => |strict| comptime &.{ .{
80880 .e => &.{
80881 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
80882 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
80883 .{ .@"0:", ._dqu, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
80884 .{ ._, .p_w, .cmpeq, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
80885 .{ ._, .p_b, .ackssw, .tmp3x, .tmp3x, ._, ._ },
80886 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
80887 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
80888 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
80889 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
80890 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
80891 },
80892 .ne => &.{
80893 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
80894 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
80895 .{ .@"0:", ._dqu, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
80896 .{ ._, .p_w, .cmpeq, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
80897 .{ ._, .p_b, .ackssw, .tmp3x, .tmp3x, ._, ._ },
80898 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
80899 .{ ._, ._, .not, .tmp2b, ._, ._, ._ },
80900 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
80901 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
80902 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
80903 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
80904 },
80905 } },
80906 }, .{
80907 .required_features = .{ .sse2, null, null, null },
80908 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
80909 .patterns = &.{
80910 .{ .src = .{ .to_mem, .to_mem, .none } },
80911 },
80912 .extra_temps = .{
80913 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
80914 .{ .type = .u32, .kind = .{ .reg = .rcx } },
80915 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
80916 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
80917 .{ .kind = .{ .rc = .sse } },
80918 .unused,
80919 .unused,
80920 .unused,
80921 .unused,
80922 .unused,
80923 .unused,
80924 },
80925 .dst_temps = .{ .mem, .unused },
80926 .clobbers = .{ .eflags = true },
80927 .each = .{ .once = switch (cc) {
80928 else => unreachable,
80929 .e => &.{
80930 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
80931 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
80932 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
80933 .{ .@"0:", ._dqu, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
80934 .{ ._, .p_d, .cmpeq, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
80935 .{ ._, ._ps, .movmsk, .tmp3d, .tmp4x, ._, ._ },
80936 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
80937 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
80938 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
80939 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
80940 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
80941 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
80942 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
80943 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
80944 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
80945 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
80946 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
80947 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
80948 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
80949 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
80950 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
80951 },
80952 .ne => &.{
80953 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
80954 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
80955 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
80956 .{ .@"0:", ._dqu, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
80957 .{ ._, .p_d, .cmpeq, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
80958 .{ ._, ._ps, .movmsk, .tmp3d, .tmp4x, ._, ._ },
80959 .{ ._, ._, .xor, .tmp3b, .si(0b1111), ._, ._ },
80960 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
80961 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
80962 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
80963 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
80964 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
80965 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
80966 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
80967 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
80968 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
80969 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
80970 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
80971 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
80972 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
80973 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
80974 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
80975 },
80976 } },
80977 }, .{
80978 .required_features = .{ .sse4_1, null, null, null },
80979 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
80980 .patterns = &.{
80981 .{ .src = .{ .to_mem, .to_mem, .none } },
80982 },
80983 .extra_temps = .{
80984 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
80985 .{ .type = .u32, .kind = .{ .reg = .rcx } },
80986 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
80987 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
80988 .{ .kind = .{ .rc = .sse } },
80989 .unused,
80990 .unused,
80991 .unused,
80992 .unused,
80993 .unused,
80994 .unused,
80995 },
80996 .dst_temps = .{ .mem, .unused },
80997 .clobbers = .{ .eflags = true },
80998 .each = .{ .once = switch (cc) {
80999 else => unreachable,
81000 .e => &.{
81001 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
81002 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
81003 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
81004 .{ .@"0:", ._dqu, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
81005 .{ ._, .p_q, .cmpeq, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
81006 .{ ._, ._pd, .movmsk, .tmp3d, .tmp4x, ._, ._ },
81007 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
81008 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
81009 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
81010 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
81011 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
81012 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
81013 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
81014 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
81015 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
81016 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
81017 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
81018 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
81019 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
81020 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
81021 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
81022 },
81023 .ne => &.{
81024 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
81025 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
81026 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
81027 .{ .@"0:", ._dqu, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
81028 .{ ._, .p_q, .cmpeq, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
81029 .{ ._, ._pd, .movmsk, .tmp3d, .tmp4x, ._, ._ },
81030 .{ ._, ._, .xor, .tmp3b, .si(0b11), ._, ._ },
81031 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
81032 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
81033 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
81034 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
81035 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
81036 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
81037 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
81038 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
81039 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
81040 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
81041 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
81042 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
81043 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
81044 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
81045 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
81046 },
81047 } },
81048 }, .{
81049 .required_features = .{ .sse, .mmx, null, null },
81050 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
81051 .patterns = &.{
81052 .{ .src = .{ .to_mem, .to_mem, .none } },
81053 },
81054 .extra_temps = .{
81055 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
81056 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
81057 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
81058 .{ .kind = .{ .rc = .mmx } },
81059 .unused,
81060 .unused,
81061 .unused,
81062 .unused,
81063 .unused,
81064 .unused,
81065 .unused,
81066 },
81067 .dst_temps = .{ .mem, .unused },
81068 .clobbers = .{ .eflags = true },
81069 .each = .{ .once = switch (cc) {
81070 else => unreachable,
81071 .e => &.{
81072 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
81073 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
81074 .{ .@"0:", ._q, .mov, .tmp3q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
81075 .{ ._, .p_b, .cmpeq, .tmp3q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
81076 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3q, ._, ._ },
81077 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
81078 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
81079 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
81080 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
81081 },
81082 .ne => &.{
81083 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
81084 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
81085 .{ .@"0:", ._q, .mov, .tmp3q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
81086 .{ ._, .p_b, .cmpeq, .tmp3q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
81087 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3q, ._, ._ },
81088 .{ ._, ._, .not, .tmp2b, ._, ._, ._ },
81089 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
81090 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
81091 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
81092 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
81093 },
81094 } },
81095 }, .{
81096 .required_features = .{ .sse, .mmx, null, null },
81097 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
81098 .patterns = &.{
81099 .{ .src = .{ .to_mem, .to_mem, .none } },
81100 },
81101 .extra_temps = .{
81102 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
81103 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
81104 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
81105 .{ .kind = .{ .rc = .mmx } },
81106 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
81107 .{ .kind = .{ .rc = .mmx } },
81108 .unused,
81109 .unused,
81110 .unused,
81111 .unused,
81112 .unused,
81113 },
81114 .dst_temps = .{ .mem, .unused },
81115 .clobbers = .{ .eflags = true },
81116 .each = .{ .once = switch (cc) {
81117 else => unreachable,
81118 .e => &.{
81119 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
81120 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
81121 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
81122 .{ ._, .p_, .xor, .tmp3q, .tmp3q, ._, ._ },
81123 .{ .@"0:", ._q, .mov, .tmp5q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
81124 .{ ._, .p_w, .cmpeq, .tmp5q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
81125 .{ ._, .p_b, .ackssw, .tmp5q, .tmp3q, ._, ._ },
81126 .{ ._, .p_b, .movmsk, .tmp4d, .tmp5q, ._, ._ },
81127 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
81128 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
81129 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
81130 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
81131 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
81132 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
81133 .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ },
81134 .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ },
81135 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
81136 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
81137 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
81138 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
81139 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
81140 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
81141 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
81142 },
81143 .ne => &.{
81144 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
81145 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
81146 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
81147 .{ ._, .p_, .xor, .tmp3q, .tmp3q, ._, ._ },
81148 .{ .@"0:", ._q, .mov, .tmp5q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
81149 .{ ._, .p_w, .cmpeq, .tmp5q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
81150 .{ ._, .p_b, .ackssw, .tmp5q, .tmp3q, ._, ._ },
81151 .{ ._, .p_b, .movmsk, .tmp4d, .tmp5q, ._, ._ },
81152 .{ ._, ._, .xor, .tmp4b, .si(0b1111), ._, ._ },
81153 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
81154 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
81155 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
81156 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
81157 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
81158 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
81159 .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ },
81160 .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ },
81161 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
81162 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
81163 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
81164 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
81165 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
81166 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
81167 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
81168 },
81169 } },
81170 }, .{
81171 .required_features = .{ .sse, .mmx, null, null },
81172 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
81173 .patterns = &.{
81174 .{ .src = .{ .to_mem, .to_mem, .none } },
81175 },
81176 .extra_temps = .{
81177 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
81178 .{ .type = .u32, .kind = .{ .reg = .rcx } },
81179 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
81180 .{ .kind = .{ .rc = .mmx } },
81181 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
81182 .{ .kind = .{ .rc = .mmx } },
81183 .unused,
81184 .unused,
81185 .unused,
81186 .unused,
81187 .unused,
81188 },
81189 .dst_temps = .{ .mem, .unused },
81190 .clobbers = .{ .eflags = true },
81191 .each = .{ .once = switch (cc) {
81192 else => unreachable,
81193 .e => &.{
81194 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
81195 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
81196 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
81197 .{ ._, .p_, .xor, .tmp3q, .tmp3q, ._, ._ },
81198 .{ .@"0:", ._q, .mov, .tmp5q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
81199 .{ ._, .p_d, .cmpeq, .tmp5q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
81200 .{ ._, .p_w, .ackssd, .tmp5q, .tmp3q, ._, ._ },
81201 .{ ._, .p_b, .ackssw, .tmp5q, .tmp3q, ._, ._ },
81202 .{ ._, .p_b, .movmsk, .tmp4d, .tmp5q, ._, ._ },
81203 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
81204 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
81205 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
81206 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
81207 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
81208 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
81209 .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ },
81210 .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ },
81211 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
81212 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
81213 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
81214 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
81215 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
81216 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
81217 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
81218 },
81219 .ne => &.{
81220 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
81221 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
81222 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
81223 .{ ._, .p_, .xor, .tmp3q, .tmp3q, ._, ._ },
81224 .{ .@"0:", ._q, .mov, .tmp5q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
81225 .{ ._, .p_d, .cmpeq, .tmp5q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
81226 .{ ._, .p_w, .ackssd, .tmp5q, .tmp3q, ._, ._ },
81227 .{ ._, .p_b, .ackssw, .tmp5q, .tmp3q, ._, ._ },
81228 .{ ._, .p_b, .movmsk, .tmp4d, .tmp5q, ._, ._ },
81229 .{ ._, ._, .xor, .tmp4b, .si(0b11), ._, ._ },
81230 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
81231 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
81232 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
81233 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
81234 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
81235 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
81236 .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ },
81237 .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ },
81238 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
81239 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
81240 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
81241 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
81242 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
81243 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
81244 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
81245 },
81246 } },
81247 }, .{
81248 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
81249 .dst_constraints = .{ .{ .bool_vec = .byte }, .any },
81250 .patterns = &.{
81251 .{ .src = .{ .to_mem, .to_mem, .none } },
81252 },
81253 .extra_temps = .{
81254 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
81255 .{ .type = .u8, .kind = .{ .reg = .cl } },
81256 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
81257 .unused,
81258 .unused,
81259 .unused,
81260 .unused,
81261 .unused,
81262 .unused,
81263 .unused,
81264 .unused,
81265 },
81266 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
81267 .clobbers = .{ .eflags = true },
81268 .each = .{ .once = &.{
81269 .{ ._, ._, .xor, .dst0b, .dst0b, ._, ._ },
81270 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
81271 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
81272 .{ .@"0:", ._, .mov, .tmp2b, .memia(.src0b, .tmp0, .add_size), ._, ._ },
81273 .{ ._, ._, .cmp, .tmp2b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
81274 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
81275 .{ ._, ._l, .sh, .tmp2b, .tmp1b, ._, ._ },
81276 .{ ._, ._, .@"or", .dst0b, .tmp2b, ._, ._ },
81277 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
81278 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
81279 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
81280 } },
81281 }, .{
81282 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
81283 .dst_constraints = .{ .{ .bool_vec = .byte }, .any },
81284 .patterns = &.{
81285 .{ .src = .{ .to_mem, .to_mem, .none } },
81286 },
81287 .extra_temps = .{
81288 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
81289 .{ .type = .u8, .kind = .{ .reg = .cl } },
81290 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
81291 .unused,
81292 .unused,
81293 .unused,
81294 .unused,
81295 .unused,
81296 .unused,
81297 .unused,
81298 .unused,
81299 },
81300 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
81301 .clobbers = .{ .eflags = true },
81302 .each = .{ .once = &.{
81303 .{ ._, ._, .xor, .dst0b, .dst0b, ._, ._ },
81304 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
81305 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
81306 .{ .@"0:", ._, .mov, .tmp2w, .memia(.src0w, .tmp0, .add_size), ._, ._ },
81307 .{ ._, ._, .cmp, .tmp2w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
81308 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
81309 .{ ._, ._l, .sh, .tmp2d, .tmp1b, ._, ._ },
81310 .{ ._, ._, .@"or", .dst0d, .tmp2d, ._, ._ },
81311 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
81312 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
81313 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
81314 } },
81315 }, .{
81316 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
81317 .dst_constraints = .{ .{ .bool_vec = .byte }, .any },
81318 .patterns = &.{
81319 .{ .src = .{ .to_mem, .to_mem, .none } },
81320 },
81321 .extra_temps = .{
81322 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
81323 .{ .type = .u8, .kind = .{ .reg = .cl } },
81324 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
81325 .unused,
81326 .unused,
81327 .unused,
81328 .unused,
81329 .unused,
81330 .unused,
81331 .unused,
81332 .unused,
81333 },
81334 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
81335 .clobbers = .{ .eflags = true },
81336 .each = .{ .once = &.{
81337 .{ ._, ._, .xor, .dst0b, .dst0b, ._, ._ },
81338 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
81339 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
81340 .{ .@"0:", ._, .mov, .tmp2d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
81341 .{ ._, ._, .cmp, .tmp2d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
81342 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
81343 .{ ._, ._l, .sh, .tmp2b, .tmp1b, ._, ._ },
81344 .{ ._, ._, .@"or", .dst0b, .tmp2b, ._, ._ },
81345 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
81346 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
81347 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
81348 } },
81349 }, .{
81350 .required_features = .{ .@"64bit", null, null, null },
81351 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
81352 .dst_constraints = .{ .{ .bool_vec = .byte }, .any },
81353 .patterns = &.{
81354 .{ .src = .{ .to_mem, .to_mem, .none } },
81355 },
81356 .extra_temps = .{
81357 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
81358 .{ .type = .u8, .kind = .{ .reg = .cl } },
81359 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
81360 .unused,
81361 .unused,
81362 .unused,
81363 .unused,
81364 .unused,
81365 .unused,
81366 .unused,
81367 .unused,
81368 },
81369 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
81370 .clobbers = .{ .eflags = true },
81371 .each = .{ .once = &.{
81372 .{ ._, ._, .xor, .dst0b, .dst0b, ._, ._ },
81373 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
81374 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
81375 .{ .@"0:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
81376 .{ ._, ._, .cmp, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
81377 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
81378 .{ ._, ._l, .sh, .tmp2b, .tmp1b, ._, ._ },
81379 .{ ._, ._, .@"or", .dst0b, .tmp2b, ._, ._ },
81380 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
81381 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
81382 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
81383 } },
81384 }, .{
81385 .src_constraints = .{ .any_scalar_int, .any_scalar_int, .any },
81386 .dst_constraints = .{ .{ .bool_vec = .byte }, .any },
81387 .patterns = &.{
81388 .{ .src = .{ .to_mem, .to_mem, .none } },
81389 },
81390 .extra_temps = .{
81391 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
81392 .{ .type = .u8, .kind = .{ .reg = .cl } },
81393 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
81394 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
81395 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
81396 .unused,
81397 .unused,
81398 .unused,
81399 .unused,
81400 .unused,
81401 .unused,
81402 },
81403 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
81404 .clobbers = .{ .eflags = true },
81405 .each = .{ .once = &.{
81406 .{ ._, ._, .xor, .dst0b, .dst0b, ._, ._ },
81407 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
81408 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
81409 .{ .@"0:", ._, .mov, .tmp2d, .sa(.src0p, .add_elem_limbs), ._, ._ },
81410 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
81411 .{ .@"1:", ._, .mov, .tmp4p, .memi(.src0p, .tmp0), ._, ._ },
81412 .{ ._, ._, .xor, .tmp4p, .memi(.src1p, .tmp0), ._, ._ },
81413 .{ ._, ._, .@"or", .tmp3p, .tmp4p, ._, ._ },
81414 .{ ._, ._, .add, .tmp0p, .sa(.tmp4, .add_size), ._, ._ },
81415 .{ ._, ._, .sub, .tmp2d, .si(1), ._, ._ },
81416 .{ ._, ._a, .j, .@"1b", ._, ._, ._ },
81417 .{ ._, ._, .@"test", .tmp3p, .tmp3p, ._, ._ },
81418 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
81419 .{ ._, ._l, .sh, .tmp2b, .tmp1b, ._, ._ },
81420 .{ ._, ._, .@"or", .dst0b, .tmp2b, ._, ._ },
81421 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
81422 .{ ._, ._, .cmp, .tmp1b, .sa(.dst0, .add_len), ._, ._ },
81423 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
81424 } },
81425 }, .{
81426 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
81427 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
81428 .patterns = &.{
81429 .{ .src = .{ .to_mem, .to_mem, .none } },
81430 },
81431 .extra_temps = .{
81432 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
81433 .{ .type = .u8, .kind = .{ .reg = .cl } },
81434 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
81435 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
81436 .unused,
81437 .unused,
81438 .unused,
81439 .unused,
81440 .unused,
81441 .unused,
81442 .unused,
81443 },
81444 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
81445 .clobbers = .{ .eflags = true },
81446 .each = .{ .once = &.{
81447 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
81448 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
81449 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
81450 .{ .@"0:", ._, .xor, .tmp2d, .tmp2d, ._, ._ },
81451 .{ ._, ._, .mov, .tmp3b, .memia(.src0b, .tmp0, .add_size), ._, ._ },
81452 .{ ._, ._, .cmp, .tmp3b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
81453 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
81454 .{ ._, ._l, .sh, .tmp2d, .tmp1b, ._, ._ },
81455 .{ ._, ._, .@"or", .dst0d, .tmp2d, ._, ._ },
81456 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
81457 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
81458 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
81459 } },
81460 }, .{
81461 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
81462 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
81463 .patterns = &.{
81464 .{ .src = .{ .to_mem, .to_mem, .none } },
81465 },
81466 .extra_temps = .{
81467 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
81468 .{ .type = .u8, .kind = .{ .reg = .cl } },
81469 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
81470 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
81471 .unused,
81472 .unused,
81473 .unused,
81474 .unused,
81475 .unused,
81476 .unused,
81477 .unused,
81478 },
81479 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
81480 .clobbers = .{ .eflags = true },
81481 .each = .{ .once = &.{
81482 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
81483 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
81484 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
81485 .{ .@"0:", ._, .xor, .tmp2d, .tmp2d, ._, ._ },
81486 .{ ._, ._, .mov, .tmp3w, .memia(.src0w, .tmp0, .add_size), ._, ._ },
81487 .{ ._, ._, .cmp, .tmp3w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
81488 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
81489 .{ ._, ._l, .sh, .tmp2d, .tmp1b, ._, ._ },
81490 .{ ._, ._, .@"or", .dst0d, .tmp2d, ._, ._ },
81491 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
81492 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
81493 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
81494 } },
81495 }, .{
81496 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
81497 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
81498 .patterns = &.{
81499 .{ .src = .{ .to_mem, .to_mem, .none } },
81500 },
81501 .extra_temps = .{
81502 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
81503 .{ .type = .u8, .kind = .{ .reg = .cl } },
81504 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
81505 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
81506 .unused,
81507 .unused,
81508 .unused,
81509 .unused,
81510 .unused,
81511 .unused,
81512 .unused,
81513 },
81514 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
81515 .clobbers = .{ .eflags = true },
81516 .each = .{ .once = &.{
81517 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
81518 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
81519 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
81520 .{ .@"0:", ._, .xor, .tmp2d, .tmp2d, ._, ._ },
81521 .{ ._, ._, .mov, .tmp3d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
81522 .{ ._, ._, .cmp, .tmp3d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
81523 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
81524 .{ ._, ._l, .sh, .tmp2d, .tmp1b, ._, ._ },
81525 .{ ._, ._, .@"or", .dst0d, .tmp2d, ._, ._ },
81526 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
81527 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
81528 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
81529 } },
81530 }, .{
81531 .required_features = .{ .@"64bit", null, null, null },
81532 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
81533 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
81534 .patterns = &.{
81535 .{ .src = .{ .to_mem, .to_mem, .none } },
81536 },
81537 .extra_temps = .{
81538 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
81539 .{ .type = .u8, .kind = .{ .reg = .cl } },
81540 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
81541 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
81542 .unused,
81543 .unused,
81544 .unused,
81545 .unused,
81546 .unused,
81547 .unused,
81548 .unused,
81549 },
81550 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
81551 .clobbers = .{ .eflags = true },
81552 .each = .{ .once = &.{
81553 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
81554 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
81555 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
81556 .{ .@"0:", ._, .xor, .tmp2d, .tmp2d, ._, ._ },
81557 .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
81558 .{ ._, ._, .cmp, .tmp3q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
81559 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
81560 .{ ._, ._l, .sh, .tmp2d, .tmp1b, ._, ._ },
81561 .{ ._, ._, .@"or", .dst0d, .tmp2d, ._, ._ },
81562 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
81563 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
81564 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
81565 } },
81566 }, .{
81567 .src_constraints = .{ .any_scalar_int, .any_scalar_int, .any },
81568 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
81569 .patterns = &.{
81570 .{ .src = .{ .to_mem, .to_mem, .none } },
81571 },
81572 .extra_temps = .{
81573 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
81574 .{ .type = .u8, .kind = .{ .reg = .cl } },
81575 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
81576 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
81577 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
81578 .unused,
81579 .unused,
81580 .unused,
81581 .unused,
81582 .unused,
81583 .unused,
81584 },
81585 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
81586 .clobbers = .{ .eflags = true },
81587 .each = .{ .once = &.{
81588 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
81589 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
81590 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
81591 .{ .@"0:", ._, .mov, .tmp2d, .sa(.src0p, .add_elem_limbs), ._, ._ },
81592 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
81593 .{ .@"1:", ._, .mov, .tmp4p, .memi(.src0p, .tmp0), ._, ._ },
81594 .{ ._, ._, .xor, .tmp4p, .memi(.src1p, .tmp0), ._, ._ },
81595 .{ ._, ._, .@"or", .tmp3p, .tmp4p, ._, ._ },
81596 .{ ._, ._, .add, .tmp0p, .sa(.tmp4, .add_size), ._, ._ },
81597 .{ ._, ._, .sub, .tmp2d, .si(1), ._, ._ },
81598 .{ ._, ._a, .j, .@"1b", ._, ._, ._ },
81599 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
81600 .{ ._, ._, .@"test", .tmp3p, .tmp3p, ._, ._ },
81601 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
81602 .{ ._, ._l, .sh, .tmp2d, .tmp1b, ._, ._ },
81603 .{ ._, ._, .@"or", .dst0d, .tmp2d, ._, ._ },
81604 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
81605 .{ ._, ._, .cmp, .tmp1b, .sa(.dst0, .add_len), ._, ._ },
81606 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
81607 } },
81608 }, .{
81609 .required_features = .{ .@"64bit", null, null, null },
81610 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
81611 .dst_constraints = .{ .{ .bool_vec = .qword }, .any },
81612 .patterns = &.{
81613 .{ .src = .{ .to_mem, .to_mem, .none } },
81614 },
81615 .extra_temps = .{
81616 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
81617 .{ .type = .u8, .kind = .{ .reg = .cl } },
81618 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
81619 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
81620 .unused,
81621 .unused,
81622 .unused,
81623 .unused,
81624 .unused,
81625 .unused,
81626 .unused,
81627 },
81628 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
81629 .clobbers = .{ .eflags = true },
81630 .each = .{ .once = &.{
81631 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
81632 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
81633 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
81634 .{ .@"0:", ._, .xor, .tmp2d, .tmp2d, ._, ._ },
81635 .{ ._, ._, .mov, .tmp3b, .memia(.src0b, .tmp0, .add_size), ._, ._ },
81636 .{ ._, ._, .cmp, .tmp3b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
81637 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
81638 .{ ._, ._l, .sh, .tmp2q, .tmp1b, ._, ._ },
81639 .{ ._, ._, .@"or", .dst0q, .tmp2q, ._, ._ },
81640 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
81641 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
81642 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
81643 } },
81644 }, .{
81645 .required_features = .{ .@"64bit", null, null, null },
81646 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
81647 .dst_constraints = .{ .{ .bool_vec = .qword }, .any },
81648 .patterns = &.{
81649 .{ .src = .{ .to_mem, .to_mem, .none } },
81650 },
81651 .extra_temps = .{
81652 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
81653 .{ .type = .u8, .kind = .{ .reg = .cl } },
81654 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
81655 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
81656 .unused,
81657 .unused,
81658 .unused,
81659 .unused,
81660 .unused,
81661 .unused,
81662 .unused,
81663 },
81664 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
81665 .clobbers = .{ .eflags = true },
81666 .each = .{ .once = &.{
81667 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
81668 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
81669 .{ .@"0:", ._, .xor, .tmp2d, .tmp2d, ._, ._ },
81670 .{ ._, ._, .mov, .tmp3w, .memia(.src0w, .tmp0, .add_size), ._, ._ },
81671 .{ ._, ._, .cmp, .tmp3w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
81672 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
81673 .{ ._, ._l, .sh, .tmp2q, .tmp1b, ._, ._ },
81674 .{ ._, ._, .@"or", .dst0q, .tmp2q, ._, ._ },
81675 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
81676 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
81677 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
81678 } },
81679 }, .{
81680 .required_features = .{ .@"64bit", null, null, null },
81681 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
81682 .dst_constraints = .{ .{ .bool_vec = .qword }, .any },
81683 .patterns = &.{
81684 .{ .src = .{ .to_mem, .to_mem, .none } },
81685 },
81686 .extra_temps = .{
81687 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
81688 .{ .type = .u8, .kind = .{ .reg = .cl } },
81689 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
81690 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
81691 .unused,
81692 .unused,
81693 .unused,
81694 .unused,
81695 .unused,
81696 .unused,
81697 .unused,
81698 },
81699 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
81700 .clobbers = .{ .eflags = true },
81701 .each = .{ .once = &.{
81702 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
81703 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
81704 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
81705 .{ .@"0:", ._, .xor, .tmp2d, .tmp2d, ._, ._ },
81706 .{ ._, ._, .mov, .tmp3d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
81707 .{ ._, ._, .cmp, .tmp3d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
81708 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
81709 .{ ._, ._l, .sh, .tmp2q, .tmp1b, ._, ._ },
81710 .{ ._, ._, .@"or", .dst0q, .tmp2q, ._, ._ },
81711 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
81712 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
81713 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
81714 } },
81715 }, .{
81716 .required_features = .{ .@"64bit", null, null, null },
81717 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
81718 .dst_constraints = .{ .{ .bool_vec = .qword }, .any },
81719 .patterns = &.{
81720 .{ .src = .{ .to_mem, .to_mem, .none } },
81721 },
81722 .extra_temps = .{
81723 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
81724 .{ .type = .u8, .kind = .{ .reg = .cl } },
81725 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
81726 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
81727 .unused,
81728 .unused,
81729 .unused,
81730 .unused,
81731 .unused,
81732 .unused,
81733 .unused,
81734 },
81735 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
81736 .clobbers = .{ .eflags = true },
81737 .each = .{ .once = &.{
81738 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
81739 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
81740 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
81741 .{ .@"0:", ._, .xor, .tmp2d, .tmp2d, ._, ._ },
81742 .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
81743 .{ ._, ._, .cmp, .tmp3q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
81744 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
81745 .{ ._, ._l, .sh, .tmp2q, .tmp1b, ._, ._ },
81746 .{ ._, ._, .@"or", .dst0q, .tmp2q, ._, ._ },
81747 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
81748 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
81749 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
81750 } },
81751 }, .{
81752 .required_features = .{ .@"64bit", null, null, null },
81753 .src_constraints = .{ .any_scalar_int, .any_scalar_int, .any },
81754 .dst_constraints = .{ .{ .bool_vec = .qword }, .any },
81755 .patterns = &.{
81756 .{ .src = .{ .to_mem, .to_mem, .none } },
81757 },
81758 .extra_temps = .{
81759 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
81760 .{ .type = .u8, .kind = .{ .reg = .cl } },
81761 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
81762 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
81763 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
81764 .unused,
81765 .unused,
81766 .unused,
81767 .unused,
81768 .unused,
81769 .unused,
81770 },
81771 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
81772 .clobbers = .{ .eflags = true },
81773 .each = .{ .once = &.{
81774 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
81775 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
81776 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
81777 .{ .@"0:", ._, .mov, .tmp2d, .sa(.src0p, .add_elem_limbs), ._, ._ },
81778 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
81779 .{ .@"1:", ._, .mov, .tmp4p, .memi(.src0p, .tmp0), ._, ._ },
81780 .{ ._, ._, .xor, .tmp4p, .memi(.src1p, .tmp0), ._, ._ },
81781 .{ ._, ._, .@"or", .tmp3p, .tmp4p, ._, ._ },
81782 .{ ._, ._, .add, .tmp0p, .sa(.tmp4, .add_size), ._, ._ },
81783 .{ ._, ._, .sub, .tmp2d, .si(1), ._, ._ },
81784 .{ ._, ._a, .j, .@"1b", ._, ._, ._ },
81785 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
81786 .{ ._, ._, .@"test", .tmp3p, .tmp3p, ._, ._ },
81787 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
81788 .{ ._, ._l, .sh, .tmp2q, .tmp1b, ._, ._ },
81789 .{ ._, ._, .@"or", .dst0q, .tmp2q, ._, ._ },
81790 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
81791 .{ ._, ._, .cmp, .tmp1b, .sa(.dst0, .add_len), ._, ._ },
81792 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
81793 } },
81794 }, .{
81795 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
81796 .patterns = &.{
81797 .{ .src = .{ .to_mem, .to_mem, .none } },
81798 },
81799 .extra_temps = .{
81800 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
81801 .{ .type = .u32, .kind = .{ .reg = .ecx } },
81802 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
81803 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
81804 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
81805 .unused,
81806 .unused,
81807 .unused,
81808 .unused,
81809 .unused,
81810 .unused,
81811 },
81812 .dst_temps = .{ .mem, .unused },
81813 .clobbers = .{ .eflags = true },
81814 .each = .{ .once = &.{
81815 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
81816 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
81817 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
81818 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
81819 .{ ._, ._, .mov, .tmp4b, .memia(.src0b, .tmp0, .add_size), ._, ._ },
81820 .{ ._, ._, .cmp, .tmp4b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
81821 .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ },
81822 .{ ._, ._l, .sh, .tmp3p, .tmp1b, ._, ._ },
81823 .{ ._, ._, .@"or", .tmp2p, .tmp3p, ._, ._ },
81824 .{ ._, ._, .add, .tmp1d, .si(1), ._, ._ },
81825 .{ ._, ._, .@"test", .tmp1d, .sia(-1, .none, .add_ptr_bit_size), ._, ._ },
81826 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
81827 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
81828 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
81829 .{ ._, ._, .mov, .memia(.dst0p, .tmp3, .sub_ptr_size), .tmp2p, ._, ._ },
81830 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
81831 .{ .@"1:", ._, .add, .tmp0p, .si(1), ._, ._ },
81832 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
81833 .{ ._, ._, .@"test", .tmp1d, .sia(-1, .none, .add_ptr_bit_size), ._, ._ },
81834 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
81835 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
81836 .{ ._, ._, .mov, .memsi(.dst0p, .@"8", .tmp1), .tmp2p, ._, ._ },
81837 } },
81838 }, .{
81839 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
81840 .patterns = &.{
81841 .{ .src = .{ .to_mem, .to_mem, .none } },
81842 },
81843 .extra_temps = .{
81844 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
81845 .{ .type = .u32, .kind = .{ .reg = .ecx } },
81846 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
81847 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
81848 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
81849 .unused,
81850 .unused,
81851 .unused,
81852 .unused,
81853 .unused,
81854 .unused,
81855 },
81856 .dst_temps = .{ .mem, .unused },
81857 .clobbers = .{ .eflags = true },
81858 .each = .{ .once = &.{
81859 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
81860 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
81861 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
81862 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
81863 .{ ._, ._, .mov, .tmp4w, .memia(.src0w, .tmp0, .add_size), ._, ._ },
81864 .{ ._, ._, .cmp, .tmp4w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
81865 .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ },
81866 .{ ._, ._l, .sh, .tmp3p, .tmp1b, ._, ._ },
81867 .{ ._, ._, .@"or", .tmp2p, .tmp3p, ._, ._ },
81868 .{ ._, ._, .add, .tmp1d, .si(1), ._, ._ },
81869 .{ ._, ._, .@"test", .tmp1d, .sia(-1, .none, .add_ptr_bit_size), ._, ._ },
81870 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
81871 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
81872 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
81873 .{ ._, ._, .mov, .memia(.dst0p, .tmp3, .sub_ptr_size), .tmp2p, ._, ._ },
81874 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
81875 .{ .@"1:", ._, .add, .tmp0p, .si(2), ._, ._ },
81876 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
81877 .{ ._, ._, .@"test", .tmp1d, .sia(-1, .none, .add_ptr_bit_size), ._, ._ },
81878 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
81879 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
81880 .{ ._, ._, .mov, .memsi(.dst0p, .@"8", .tmp1), .tmp2p, ._, ._ },
81881 } },
81882 }, .{
81883 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
81884 .patterns = &.{
81885 .{ .src = .{ .to_mem, .to_mem, .none } },
81886 },
81887 .extra_temps = .{
81888 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
81889 .{ .type = .u32, .kind = .{ .reg = .ecx } },
81890 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
81891 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
81892 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
81893 .unused,
81894 .unused,
81895 .unused,
81896 .unused,
81897 .unused,
81898 .unused,
81899 },
81900 .dst_temps = .{ .mem, .unused },
81901 .clobbers = .{ .eflags = true },
81902 .each = .{ .once = &.{
81903 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
81904 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
81905 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
81906 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
81907 .{ ._, ._, .mov, .tmp4d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
81908 .{ ._, ._, .cmp, .tmp4d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
81909 .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ },
81910 .{ ._, ._l, .sh, .tmp3p, .tmp1b, ._, ._ },
81911 .{ ._, ._, .@"or", .tmp2p, .tmp3p, ._, ._ },
81912 .{ ._, ._, .add, .tmp1d, .si(1), ._, ._ },
81913 .{ ._, ._, .@"test", .tmp1d, .sia(-1, .none, .add_ptr_bit_size), ._, ._ },
81914 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
81915 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
81916 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
81917 .{ ._, ._, .mov, .memia(.dst0p, .tmp3, .sub_ptr_size), .tmp2p, ._, ._ },
81918 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
81919 .{ .@"1:", ._, .add, .tmp0p, .si(4), ._, ._ },
81920 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
81921 .{ ._, ._, .@"test", .tmp1d, .sia(-1, .none, .add_ptr_bit_size), ._, ._ },
81922 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
81923 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
81924 .{ ._, ._, .mov, .memsi(.dst0p, .@"8", .tmp1), .tmp2p, ._, ._ },
81925 } },
81926 }, .{
81927 .required_features = .{ .@"64bit", null, null, null },
81928 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
81929 .patterns = &.{
81930 .{ .src = .{ .to_mem, .to_mem, .none } },
81931 },
81932 .extra_temps = .{
81933 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
81934 .{ .type = .u32, .kind = .{ .reg = .ecx } },
81935 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
81936 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
81937 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
81938 .unused,
81939 .unused,
81940 .unused,
81941 .unused,
81942 .unused,
81943 .unused,
81944 },
81945 .dst_temps = .{ .mem, .unused },
81946 .clobbers = .{ .eflags = true },
81947 .each = .{ .once = &.{
81948 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
81949 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
81950 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
81951 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
81952 .{ ._, ._, .mov, .tmp4q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
81953 .{ ._, ._, .cmp, .tmp4q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
81954 .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ },
81955 .{ ._, ._l, .sh, .tmp3p, .tmp1b, ._, ._ },
81956 .{ ._, ._, .@"or", .tmp2p, .tmp3p, ._, ._ },
81957 .{ ._, ._, .add, .tmp1d, .si(1), ._, ._ },
81958 .{ ._, ._, .@"test", .tmp1d, .sia(-1, .none, .add_ptr_bit_size), ._, ._ },
81959 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
81960 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
81961 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
81962 .{ ._, ._, .mov, .memia(.dst0p, .tmp3, .sub_ptr_size), .tmp2p, ._, ._ },
81963 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
81964 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
81965 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
81966 .{ ._, ._, .@"test", .tmp1d, .sia(-1, .none, .add_ptr_bit_size), ._, ._ },
81967 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
81968 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
81969 .{ ._, ._, .mov, .memsi(.dst0p, .@"8", .tmp1), .tmp2p, ._, ._ },
81970 } },
81971 }, .{
8342481972 .required_features = .{ .f16c, null, null, null },
83425 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
81973 .src_constraints = .{
81974 .{ .scalar_float = .{ .of = .word, .is = .word } },
81975 .{ .scalar_float = .{ .of = .word, .is = .word } },
81976 .any,
81977 },
81978 .patterns = &.{
81979 .{ .src = .{ .to_sse, .to_sse, .none } },
81980 },
81981 .extra_temps = .{
81982 .{ .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
81983 .unused,
81984 .unused,
81985 .unused,
81986 .unused,
81987 .unused,
81988 .unused,
81989 .unused,
81990 .unused,
81991 .unused,
81992 .unused,
81993 },
81994 .dst_temps = .{ .{ .mut_rc_mask = .{
81995 .ref = .src0,
81996 .rc = .sse,
81997 .info = .{ .kind = .all, .scalar = .dword },
81998 } }, .unused },
81999 .each = .{ .once = &.{
82000 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
82001 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
82002 .{ ._, .v_ss, .cmp, .dst0x, .dst0x, .tmp0d, .vp(switch (cc) {
82003 else => unreachable,
82004 .e => .eq,
82005 .ne => .neq,
82006 }) },
82007 } },
82008 }, .{
82009 .required_features = .{ .f16c, null, null, null },
82010 .src_constraints = .{
82011 .{ .scalar_float = .{ .of = .qword, .is = .word } },
82012 .{ .scalar_float = .{ .of = .qword, .is = .word } },
82013 .any,
82014 },
82015 .patterns = &.{
82016 .{ .src = .{ .mem, .mem, .none } },
82017 .{ .src = .{ .sse, .mem, .none } },
82018 .{ .src = .{ .mem, .sse, .none } },
82019 .{ .src = .{ .to_sse, .to_sse, .none } },
82020 },
82021 .extra_temps = .{
82022 .{ .kind = .{ .rc = .sse } },
82023 .unused,
82024 .unused,
82025 .unused,
82026 .unused,
82027 .unused,
82028 .unused,
82029 .unused,
82030 .unused,
82031 .unused,
82032 .unused,
82033 },
82034 .dst_temps = .{ .{ .mut_rc_mask = .{
82035 .ref = .src0,
82036 .rc = .sse,
82037 .info = .{ .kind = .all, .scalar = .dword },
82038 } }, .unused },
82039 .each = .{ .once = &.{
82040 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
82041 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
82042 .{ ._, .v_ps, .cmp, .dst0x, .dst0x, .tmp0x, .vp(switch (cc) {
82043 else => unreachable,
82044 .e => .eq,
82045 .ne => .neq,
82046 }) },
82047 } },
82048 }, .{
82049 .required_features = .{ .f16c, null, null, null },
82050 .src_constraints = .{
82051 .{ .scalar_float = .{ .of = .xword, .is = .word } },
82052 .{ .scalar_float = .{ .of = .xword, .is = .word } },
82053 .any,
82054 },
82055 .patterns = &.{
82056 .{ .src = .{ .mem, .mem, .none } },
82057 .{ .src = .{ .to_sse, .mem, .none } },
82058 .{ .src = .{ .mem, .to_sse, .none } },
82059 .{ .src = .{ .to_sse, .to_sse, .none } },
82060 },
82061 .extra_temps = .{
82062 .{ .kind = .{ .rc = .sse } },
82063 .unused,
82064 .unused,
82065 .unused,
82066 .unused,
82067 .unused,
82068 .unused,
82069 .unused,
82070 .unused,
82071 .unused,
82072 .unused,
82073 },
82074 .dst_temps = .{ .{ .mut_rc_mask = .{
82075 .ref = .src0,
82076 .rc = .sse,
82077 .info = .{ .kind = .all, .scalar = .dword },
82078 } }, .unused },
82079 .each = .{ .once = &.{
82080 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
82081 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
82082 .{ ._, .v_ps, .cmp, .dst0y, .dst0y, .tmp0y, .vp(switch (cc) {
82083 else => unreachable,
82084 .e => .eq,
82085 .ne => .neq,
82086 }) },
82087 } },
82088 }, .{
82089 .required_features = .{ .avx, null, null, null },
82090 .src_constraints = .{
82091 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
82092 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
82093 .any,
82094 },
82095 .patterns = &.{
82096 .{ .src = .{ .to_sse, .mem, .none } },
82097 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
82098 .{ .src = .{ .to_sse, .to_sse, .none } },
82099 },
82100 .dst_temps = .{ .{ .mut_rc_mask = .{
82101 .ref = .src0,
82102 .rc = .sse,
82103 .info = .{ .kind = .all, .scalar = .dword },
82104 } }, .unused },
82105 .each = .{ .once = &.{
82106 .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1d, .vp(switch (cc) {
82107 else => unreachable,
82108 .e => .eq,
82109 .ne => .neq,
82110 }) },
82111 } },
82112 }, .{
82113 .required_features = .{ .sse, null, null, null },
82114 .src_constraints = .{
82115 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
82116 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
82117 .any,
82118 },
82119 .patterns = &.{
82120 .{ .src = .{ .to_mut_sse, .mem, .none } },
82121 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
82122 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
82123 },
82124 .dst_temps = .{ .{ .ref_mask = .{
82125 .ref = .src0,
82126 .info = .{ .kind = .all, .scalar = .dword },
82127 } }, .unused },
82128 .each = .{ .once = &.{
82129 .{ ._, ._ss, .cmp, .dst0x, .src1d, .sp(switch (cc) {
82130 else => unreachable,
82131 .e => .eq,
82132 .ne => .neq,
82133 }), ._ },
82134 } },
82135 }, .{
82136 .required_features = .{ .avx, null, null, null },
82137 .src_constraints = .{
82138 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
82139 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
82140 .any,
82141 },
82142 .patterns = &.{
82143 .{ .src = .{ .to_sse, .mem, .none } },
82144 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
82145 .{ .src = .{ .to_sse, .to_sse, .none } },
82146 },
82147 .dst_temps = .{ .{ .mut_rc_mask = .{
82148 .ref = .src0,
82149 .rc = .sse,
82150 .info = .{ .kind = .all, .scalar = .dword },
82151 } }, .unused },
82152 .each = .{ .once = &.{
82153 .{ ._, .v_ps, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) {
82154 else => unreachable,
82155 .e => .eq,
82156 .ne => .neq,
82157 }) },
82158 } },
82159 }, .{
82160 .required_features = .{ .sse, null, null, null },
82161 .src_constraints = .{
82162 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
82163 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
82164 .any,
82165 },
82166 .patterns = &.{
82167 .{ .src = .{ .to_mut_sse, .mem, .none } },
82168 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
82169 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
82170 },
82171 .dst_temps = .{ .{ .ref_mask = .{
82172 .ref = .src0,
82173 .info = .{ .kind = .all, .scalar = .dword },
82174 } }, .unused },
82175 .each = .{ .once = &.{
82176 .{ ._, ._ps, .cmp, .dst0x, .src1x, .sp(switch (cc) {
82177 else => unreachable,
82178 .e => .eq,
82179 .ne => .neq,
82180 }), ._ },
82181 } },
82182 }, .{
82183 .required_features = .{ .avx, null, null, null },
82184 .src_constraints = .{
82185 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
82186 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
82187 .any,
82188 },
82189 .patterns = &.{
82190 .{ .src = .{ .to_sse, .mem, .none } },
82191 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
82192 .{ .src = .{ .to_sse, .to_sse, .none } },
82193 },
82194 .dst_temps = .{ .{ .mut_rc_mask = .{
82195 .ref = .src0,
82196 .rc = .sse,
82197 .info = .{ .kind = .all, .scalar = .dword },
82198 } }, .unused },
82199 .each = .{ .once = &.{
82200 .{ ._, .v_ps, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) {
82201 else => unreachable,
82202 .e => .eq,
82203 .ne => .neq,
82204 }) },
82205 } },
82206 }, .{
82207 .required_features = .{ .avx, null, null, null },
82208 .src_constraints = .{
82209 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
82210 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
82211 .any,
82212 },
82213 .patterns = &.{
82214 .{ .src = .{ .to_sse, .mem, .none } },
82215 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
82216 .{ .src = .{ .to_sse, .to_sse, .none } },
82217 },
82218 .dst_temps = .{ .{ .mut_rc_mask = .{
82219 .ref = .src0,
82220 .rc = .sse,
82221 .info = .{ .kind = .all, .scalar = .qword },
82222 } }, .unused },
82223 .each = .{ .once = &.{
82224 .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1q, .vp(switch (cc) {
82225 else => unreachable,
82226 .e => .eq,
82227 .ne => .neq,
82228 }) },
82229 } },
82230 }, .{
82231 .required_features = .{ .sse2, null, null, null },
82232 .src_constraints = .{
82233 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
82234 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
82235 .any,
82236 },
82237 .patterns = &.{
82238 .{ .src = .{ .to_mut_sse, .mem, .none } },
82239 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
82240 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
82241 },
82242 .dst_temps = .{ .{ .ref_mask = .{
82243 .ref = .src0,
82244 .info = .{ .kind = .all, .scalar = .qword },
82245 } }, .unused },
82246 .each = .{ .once = &.{
82247 .{ ._, ._sd, .cmp, .dst0x, .src1q, .sp(switch (cc) {
82248 else => unreachable,
82249 .e => .eq,
82250 .ne => .neq,
82251 }), ._ },
82252 } },
82253 }, .{
82254 .required_features = .{ .avx, null, null, null },
82255 .src_constraints = .{
82256 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
82257 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
82258 .any,
82259 },
82260 .patterns = &.{
82261 .{ .src = .{ .to_sse, .mem, .none } },
82262 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
82263 .{ .src = .{ .to_sse, .to_sse, .none } },
82264 },
82265 .dst_temps = .{ .{ .mut_rc_mask = .{
82266 .ref = .src0,
82267 .rc = .sse,
82268 .info = .{ .kind = .all, .scalar = .qword },
82269 } }, .unused },
82270 .each = .{ .once = &.{
82271 .{ ._, .v_pd, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) {
82272 else => unreachable,
82273 .e => .eq,
82274 .ne => .neq,
82275 }) },
82276 } },
82277 }, .{
82278 .required_features = .{ .sse2, null, null, null },
82279 .src_constraints = .{
82280 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
82281 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
82282 .any,
82283 },
82284 .patterns = &.{
82285 .{ .src = .{ .to_mut_sse, .mem, .none } },
82286 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
82287 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
82288 },
82289 .dst_temps = .{ .{ .ref_mask = .{
82290 .ref = .src0,
82291 .info = .{ .kind = .all, .scalar = .qword },
82292 } }, .unused },
82293 .each = .{ .once = &.{
82294 .{ ._, ._pd, .cmp, .dst0x, .src1x, .sp(switch (cc) {
82295 else => unreachable,
82296 .e => .eq,
82297 .ne => .neq,
82298 }), ._ },
82299 } },
82300 }, .{
82301 .required_features = .{ .avx, null, null, null },
82302 .src_constraints = .{
82303 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
82304 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
82305 .any,
82306 },
82307 .patterns = &.{
82308 .{ .src = .{ .to_sse, .mem, .none } },
82309 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
82310 .{ .src = .{ .to_sse, .to_sse, .none } },
82311 },
82312 .dst_temps = .{ .{ .mut_rc_mask = .{
82313 .ref = .src0,
82314 .rc = .sse,
82315 .info = .{ .kind = .all, .scalar = .qword },
82316 } }, .unused },
82317 .each = .{ .once = &.{
82318 .{ ._, .v_pd, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) {
82319 else => unreachable,
82320 .e => .eq,
82321 .ne => .neq,
82322 }) },
82323 } },
82324 }, .{
82325 .required_features = .{ .f16c, .slow_incdec, null, null },
82326 .src_constraints = .{
82327 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
82328 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
82329 .any,
82330 },
82331 .patterns = &.{
82332 .{ .src = .{ .to_mem, .to_mem, .none } },
82333 },
82334 .extra_temps = .{
82335 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
82336 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
82337 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
82338 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
82339 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
82340 .unused,
82341 .unused,
82342 .unused,
82343 .unused,
82344 .unused,
82345 .unused,
82346 },
82347 .dst_temps = .{ .mem, .unused },
82348 .clobbers = .{ .eflags = true },
82349 .each = .{ .once = &.{
82350 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
82351 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
82352 .{ .@"0:", .v_ps, .cvtph2, .tmp2y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
82353 .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src1x, .tmp0, .add_size), ._, ._ },
82354 .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .tmp3y, .vp(switch (cc) {
82355 else => unreachable,
82356 .e => .eq,
82357 .ne => .neq,
82358 }) },
82359 .{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ },
82360 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
82361 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
82362 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
82363 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82364 } },
82365 }, .{
82366 .required_features = .{ .f16c, null, null, null },
82367 .src_constraints = .{
82368 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
82369 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
82370 .any,
82371 },
82372 .patterns = &.{
82373 .{ .src = .{ .to_mem, .to_mem, .none } },
82374 },
82375 .extra_temps = .{
82376 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
82377 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
82378 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
82379 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
82380 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
82381 .unused,
82382 .unused,
82383 .unused,
82384 .unused,
82385 .unused,
82386 .unused,
82387 },
82388 .dst_temps = .{ .mem, .unused },
82389 .clobbers = .{ .eflags = true },
82390 .each = .{ .once = &.{
82391 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
82392 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
82393 .{ .@"0:", .v_ps, .cvtph2, .tmp2y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
82394 .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src1x, .tmp0, .add_size), ._, ._ },
82395 .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .tmp3y, .vp(switch (cc) {
82396 else => unreachable,
82397 .e => .eq,
82398 .ne => .neq,
82399 }) },
82400 .{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ },
82401 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
82402 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
82403 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
82404 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82405 } },
82406 }, .{
82407 .required_features = .{ .avx, .slow_incdec, null, null },
82408 .src_constraints = .{
82409 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
82410 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
82411 .any,
82412 },
82413 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
82414 .patterns = &.{
82415 .{ .src = .{ .to_mem, .to_mem, .none } },
82416 },
82417 .call_frame = .{ .alignment = .@"16" },
82418 .extra_temps = .{
82419 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
82420 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
82421 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
82422 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
82423 .{ .type = .i32, .kind = .{ .reg = .eax } },
82424 .{ .type = .u8, .kind = .{ .reg = .cl } },
82425 .{ .type = .u32, .kind = .{ .reg = .edx } },
82426 .unused,
82427 .unused,
82428 .unused,
82429 .unused,
82430 },
82431 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
82432 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82433 .each = .{ .once = &.{
82434 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
82435 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
82436 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
82437 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
82438 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0) },
82439 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
82440 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
82441 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
82442 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
82443 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
82444 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
82445 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
82446 .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ },
82447 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
82448 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
82449 } },
82450 }, .{
82451 .required_features = .{ .avx, null, null, null },
82452 .src_constraints = .{
82453 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
82454 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
82455 .any,
82456 },
82457 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
82458 .patterns = &.{
82459 .{ .src = .{ .to_mem, .to_mem, .none } },
82460 },
82461 .call_frame = .{ .alignment = .@"16" },
82462 .extra_temps = .{
82463 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
82464 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
82465 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
82466 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
82467 .{ .type = .i32, .kind = .{ .reg = .eax } },
82468 .{ .type = .u8, .kind = .{ .reg = .cl } },
82469 .{ .type = .u32, .kind = .{ .reg = .edx } },
82470 .unused,
82471 .unused,
82472 .unused,
82473 .unused,
82474 },
82475 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
82476 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82477 .each = .{ .once = &.{
82478 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
82479 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
82480 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
82481 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
82482 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0) },
82483 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
82484 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
82485 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
82486 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
82487 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
82488 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
82489 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
82490 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
82491 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
82492 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
82493 } },
82494 }, .{
82495 .required_features = .{ .sse2, .slow_incdec, null, null },
82496 .src_constraints = .{
82497 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
82498 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
82499 .any,
82500 },
82501 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
82502 .patterns = &.{
82503 .{ .src = .{ .to_mem, .to_mem, .none } },
82504 },
82505 .call_frame = .{ .alignment = .@"16" },
82506 .extra_temps = .{
82507 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
82508 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
82509 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
82510 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
82511 .{ .type = .i32, .kind = .{ .reg = .eax } },
82512 .{ .type = .u8, .kind = .{ .reg = .cl } },
82513 .{ .type = .u32, .kind = .{ .reg = .edx } },
82514 .unused,
82515 .unused,
82516 .unused,
82517 .unused,
82518 },
82519 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
82520 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82521 .each = .{ .once = &.{
82522 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
82523 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
82524 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
82525 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
82526 .{ ._, .p_w, .insr, .tmp1x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
82527 .{ ._, .p_w, .insr, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ },
82528 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
82529 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
82530 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
82531 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
82532 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
82533 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
82534 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
82535 .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ },
82536 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
82537 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
82538 } },
82539 }, .{
82540 .required_features = .{ .sse2, null, null, null },
82541 .src_constraints = .{
82542 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
82543 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
82544 .any,
82545 },
82546 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
82547 .patterns = &.{
82548 .{ .src = .{ .to_mem, .to_mem, .none } },
82549 },
82550 .call_frame = .{ .alignment = .@"16" },
82551 .extra_temps = .{
82552 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
82553 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
82554 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
82555 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
82556 .{ .type = .i32, .kind = .{ .reg = .eax } },
82557 .{ .type = .u8, .kind = .{ .reg = .cl } },
82558 .{ .type = .u32, .kind = .{ .reg = .edx } },
82559 .unused,
82560 .unused,
82561 .unused,
82562 .unused,
82563 },
82564 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
82565 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82566 .each = .{ .once = &.{
82567 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
82568 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
82569 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
82570 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
82571 .{ ._, .p_w, .insr, .tmp1x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
82572 .{ ._, .p_w, .insr, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ },
82573 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
82574 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
82575 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
82576 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
82577 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
82578 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
82579 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
82580 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
82581 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
82582 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
82583 } },
82584 }, .{
82585 .required_features = .{ .sse, .slow_incdec, null, null },
82586 .src_constraints = .{
82587 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
82588 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
82589 .any,
82590 },
82591 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
82592 .patterns = &.{
82593 .{ .src = .{ .to_mem, .to_mem, .none } },
82594 },
82595 .call_frame = .{ .alignment = .@"16" },
82596 .extra_temps = .{
82597 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
82598 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
82599 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
82600 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
82601 .{ .type = .i32, .kind = .{ .reg = .eax } },
82602 .{ .type = .u8, .kind = .{ .reg = .cl } },
82603 .{ .type = .u32, .kind = .{ .reg = .edx } },
82604 .{ .type = .f32, .kind = .mem },
82605 .unused,
82606 .unused,
82607 .unused,
82608 },
82609 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
82610 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82611 .each = .{ .once = &.{
82612 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
82613 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
82614 .{ .@"0:", ._, .movzx, .tmp4d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
82615 .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ },
82616 .{ ._, ._ss, .mov, .tmp1x, .mem(.tmp7d), ._, ._ },
82617 .{ ._, ._, .movzx, .tmp4d, .memsi(.src1w, .@"2", .tmp0), ._, ._ },
82618 .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ },
82619 .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp7d), ._, ._ },
82620 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
82621 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
82622 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
82623 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
82624 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
82625 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
82626 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
82627 .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ },
82628 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
82629 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
82630 } },
82631 }, .{
82632 .required_features = .{ .sse, null, null, null },
82633 .src_constraints = .{
82634 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
82635 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
82636 .any,
82637 },
82638 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
82639 .patterns = &.{
82640 .{ .src = .{ .to_mem, .to_mem, .none } },
82641 },
82642 .call_frame = .{ .alignment = .@"16" },
82643 .extra_temps = .{
82644 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
82645 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
82646 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
82647 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
82648 .{ .type = .i32, .kind = .{ .reg = .eax } },
82649 .{ .type = .u8, .kind = .{ .reg = .cl } },
82650 .{ .type = .u32, .kind = .{ .reg = .edx } },
82651 .{ .type = .f32, .kind = .mem },
82652 .unused,
82653 .unused,
82654 .unused,
82655 },
82656 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
82657 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82658 .each = .{ .once = &.{
82659 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
82660 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
82661 .{ .@"0:", ._, .movzx, .tmp4d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
82662 .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ },
82663 .{ ._, ._ss, .mov, .tmp1x, .mem(.tmp7d), ._, ._ },
82664 .{ ._, ._, .movzx, .tmp4d, .memsi(.src1w, .@"2", .tmp0), ._, ._ },
82665 .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ },
82666 .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp7d), ._, ._ },
82667 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
82668 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
82669 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
82670 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
82671 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
82672 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
82673 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
82674 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
82675 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
82676 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
82677 } },
82678 }, .{
82679 .required_features = .{ .@"64bit", .avx, .slow_incdec, null },
82680 .src_constraints = .{
82681 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
82682 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
82683 .any,
82684 },
82685 .patterns = &.{
82686 .{ .src = .{ .to_mem, .to_mem, .none } },
82687 },
82688 .call_frame = .{ .alignment = .@"16" },
82689 .extra_temps = .{
82690 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
82691 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
82692 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
82693 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
82694 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
82695 .{ .type = .i32, .kind = .{ .reg = .eax } },
82696 .{ .type = .u8, .kind = .{ .reg = .cl } },
82697 .{ .type = .u64, .kind = .{ .reg = .rdx } },
82698 .unused,
82699 .unused,
82700 .unused,
82701 },
82702 .dst_temps = .{ .mem, .unused },
82703 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82704 .each = .{ .once = &.{
82705 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
82706 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82707 .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ },
82708 .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
82709 .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0) },
82710 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
82711 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
82712 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
82713 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
82714 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
82715 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
82716 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
82717 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
82718 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
82719 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
82720 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
82721 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
82722 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
82723 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82724 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
82725 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
82726 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
82727 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
82728 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
82729 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
82730 } },
82731 }, .{
82732 .required_features = .{ .@"64bit", .avx, null, null },
82733 .src_constraints = .{
82734 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
82735 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
82736 .any,
82737 },
82738 .patterns = &.{
82739 .{ .src = .{ .to_mem, .to_mem, .none } },
82740 },
82741 .call_frame = .{ .alignment = .@"16" },
82742 .extra_temps = .{
82743 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
82744 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
82745 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
82746 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
82747 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
82748 .{ .type = .i32, .kind = .{ .reg = .eax } },
82749 .{ .type = .u8, .kind = .{ .reg = .cl } },
82750 .{ .type = .u64, .kind = .{ .reg = .rdx } },
82751 .unused,
82752 .unused,
82753 .unused,
82754 },
82755 .dst_temps = .{ .mem, .unused },
82756 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82757 .each = .{ .once = &.{
82758 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
82759 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82760 .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ },
82761 .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
82762 .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0) },
82763 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
82764 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
82765 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
82766 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
82767 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
82768 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
82769 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
82770 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
82771 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
82772 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
82773 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
82774 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
82775 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
82776 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82777 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
82778 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
82779 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
82780 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
82781 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
82782 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
82783 } },
82784 }, .{
82785 .required_features = .{ .@"64bit", .sse2, .slow_incdec, null },
82786 .src_constraints = .{
82787 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
82788 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
82789 .any,
82790 },
82791 .patterns = &.{
82792 .{ .src = .{ .to_mem, .to_mem, .none } },
82793 },
82794 .call_frame = .{ .alignment = .@"16" },
82795 .extra_temps = .{
82796 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
82797 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
82798 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
82799 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
82800 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
82801 .{ .type = .i32, .kind = .{ .reg = .eax } },
82802 .{ .type = .u8, .kind = .{ .reg = .cl } },
82803 .{ .type = .u64, .kind = .{ .reg = .rdx } },
82804 .unused,
82805 .unused,
82806 .unused,
82807 },
82808 .dst_temps = .{ .mem, .unused },
82809 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82810 .each = .{ .once = &.{
82811 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
82812 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82813 .{ .@"0:", .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
82814 .{ ._, .p_w, .insr, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
82815 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },
82816 .{ ._, .p_w, .insr, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ },
82817 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
82818 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
82819 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
82820 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
82821 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
82822 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
82823 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
82824 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
82825 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
82826 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
82827 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
82828 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
82829 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
82830 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82831 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
82832 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
82833 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
82834 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
82835 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
82836 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
82837 } },
82838 }, .{
82839 .required_features = .{ .@"64bit", .sse2, null, null },
82840 .src_constraints = .{
82841 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
82842 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
82843 .any,
82844 },
82845 .patterns = &.{
82846 .{ .src = .{ .to_mem, .to_mem, .none } },
82847 },
82848 .call_frame = .{ .alignment = .@"16" },
82849 .extra_temps = .{
82850 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
82851 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
82852 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
82853 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
82854 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
82855 .{ .type = .i32, .kind = .{ .reg = .eax } },
82856 .{ .type = .u8, .kind = .{ .reg = .cl } },
82857 .{ .type = .u64, .kind = .{ .reg = .rdx } },
82858 .unused,
82859 .unused,
82860 .unused,
82861 },
82862 .dst_temps = .{ .mem, .unused },
82863 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82864 .each = .{ .once = &.{
82865 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
82866 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82867 .{ .@"0:", .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
82868 .{ ._, .p_w, .insr, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
82869 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },
82870 .{ ._, .p_w, .insr, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ },
82871 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
82872 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
82873 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
82874 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
82875 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
82876 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
82877 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
82878 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
82879 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
82880 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
82881 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
82882 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
82883 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
82884 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82885 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
82886 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
82887 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
82888 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
82889 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
82890 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
82891 } },
82892 }, .{
82893 .required_features = .{ .@"64bit", .sse, .slow_incdec, null },
82894 .src_constraints = .{
82895 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
82896 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
82897 .any,
82898 },
82899 .patterns = &.{
82900 .{ .src = .{ .to_mem, .to_mem, .none } },
82901 },
82902 .call_frame = .{ .alignment = .@"16" },
82903 .extra_temps = .{
82904 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
82905 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
82906 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
82907 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
82908 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
82909 .{ .type = .i32, .kind = .{ .reg = .eax } },
82910 .{ .type = .u8, .kind = .{ .reg = .cl } },
82911 .{ .type = .u64, .kind = .{ .reg = .rdx } },
82912 .{ .type = .f32, .kind = .mem },
82913 .unused,
82914 .unused,
82915 },
82916 .dst_temps = .{ .mem, .unused },
82917 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82918 .each = .{ .once = &.{
82919 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
82920 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82921 .{ .@"0:", ._, .movzx, .tmp5d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
82922 .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ },
82923 .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp8d), ._, ._ },
82924 .{ ._, ._, .movzx, .tmp5d, .memsi(.src1w, .@"2", .tmp0), ._, ._ },
82925 .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ },
82926 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp8d), ._, ._ },
82927 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
82928 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
82929 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
82930 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
82931 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
82932 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
82933 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
82934 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
82935 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
82936 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
82937 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
82938 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
82939 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
82940 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82941 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
82942 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
82943 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
82944 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
82945 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
82946 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
82947 } },
82948 }, .{
82949 .required_features = .{ .@"64bit", .sse, null, null },
82950 .src_constraints = .{
82951 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
82952 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
82953 .any,
82954 },
8342682955 .patterns = &.{
83427 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
82956 .{ .src = .{ .to_mem, .to_mem, .none } },
8342882957 },
82958 .call_frame = .{ .alignment = .@"16" },
8342982959 .extra_temps = .{
83430 .{ .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
83431 .{ .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
82960 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
82961 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
82962 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
82963 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
82964 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
82965 .{ .type = .i32, .kind = .{ .reg = .eax } },
82966 .{ .type = .u8, .kind = .{ .reg = .cl } },
82967 .{ .type = .u64, .kind = .{ .reg = .rdx } },
82968 .{ .type = .f32, .kind = .mem },
8343282969 .unused,
8343382970 .unused,
82971 },
82972 .dst_temps = .{ .mem, .unused },
82973 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82974 .each = .{ .once = &.{
82975 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
82976 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82977 .{ .@"0:", ._, .movzx, .tmp5d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
82978 .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ },
82979 .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp8d), ._, ._ },
82980 .{ ._, ._, .movzx, .tmp5d, .memsi(.src1w, .@"2", .tmp0), ._, ._ },
82981 .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ },
82982 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp8d), ._, ._ },
82983 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
82984 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
82985 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
82986 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
82987 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
82988 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
82989 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
82990 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
82991 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
82992 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
82993 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
82994 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
82995 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
82996 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82997 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
82998 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
82999 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
83000 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
83001 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
83002 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
83003 } },
83004 }, .{
83005 .required_features = .{ .avx, .slow_incdec, null, null },
83006 .src_constraints = .{
83007 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
83008 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
83009 .any,
83010 },
83011 .patterns = &.{
83012 .{ .src = .{ .to_mem, .to_mem, .none } },
83013 },
83014 .extra_temps = .{
83015 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83016 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
83017 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
83018 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
8343483019 .unused,
8343583020 .unused,
8343683021 .unused,
......@@ -83439,142 +83024,552 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8343983024 .unused,
8344083025 .unused,
8344183026 },
83442 .dst_temps = .{ .{ .cc = switch (strict) {
83443 true => .a,
83444 false => .ae,
83445 } }, .unused },
83027 .dst_temps = .{ .mem, .unused },
8344683028 .clobbers = .{ .eflags = true },
8344783029 .each = .{ .once = &.{
83448 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
83449 .{ ._, .v_ps, .cvtph2, .tmp1x, .src1q, ._, ._ },
83450 .{ ._, .v_ss, .ucomi, .tmp0x, .tmp1d, ._, ._ },
83030 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83031 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
83032 .{ .@"0:", .v_ps, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
83033 .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
83034 else => unreachable,
83035 .e => .eq,
83036 .ne => .neq,
83037 }) },
83038 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ },
83039 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
83040 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
83041 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
83042 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8345183043 } },
8345283044 }, .{
83453 .required_features = .{ .sse, null, null, null },
83454 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
83045 .required_features = .{ .avx, null, null, null },
83046 .src_constraints = .{
83047 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
83048 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
83049 .any,
83050 },
8345583051 .patterns = &.{
83456 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
83052 .{ .src = .{ .to_mem, .to_mem, .none } },
8345783053 },
83458 .call_frame = .{ .alignment = .@"16" },
8345983054 .extra_temps = .{
83460 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
83461 .{ .type = .i32, .kind = .{ .reg = .eax } },
83055 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83056 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
83057 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
83058 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83059 .unused,
83060 .unused,
8346283061 .unused,
8346383062 .unused,
8346483063 .unused,
8346583064 .unused,
8346683065 .unused,
83066 },
83067 .dst_temps = .{ .mem, .unused },
83068 .clobbers = .{ .eflags = true },
83069 .each = .{ .once = &.{
83070 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83071 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
83072 .{ .@"0:", .v_ps, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
83073 .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
83074 else => unreachable,
83075 .e => .eq,
83076 .ne => .neq,
83077 }) },
83078 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ },
83079 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
83080 .{ ._, ._c, .in, .tmp1q, ._, ._, ._ },
83081 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
83082 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83083 } },
83084 }, .{
83085 .required_features = .{ .sse2, null, null, null },
83086 .src_constraints = .{
83087 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
83088 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
83089 .any,
83090 },
83091 .patterns = &.{
83092 .{ .src = .{ .to_mem, .to_mem, .none } },
83093 },
83094 .extra_temps = .{
83095 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83096 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
83097 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
83098 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
83099 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83100 .unused,
83101 .unused,
8346783102 .unused,
8346883103 .unused,
8346983104 .unused,
8347083105 .unused,
8347183106 },
83472 .dst_temps = .{ .{ .cc = switch (strict) {
83473 true => .l,
83474 false => .le,
83475 } }, .unused },
83476 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
83107 .dst_temps = .{ .mem, .unused },
83108 .clobbers = .{ .eflags = true },
8347783109 .each = .{ .once = &.{
83478 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
83479 .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ },
83110 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83111 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
83112 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
83113 .{ ._, ._ps, .mova, .tmp3x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ },
83114 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
83115 else => unreachable,
83116 .e => .eq,
83117 .ne => .neq,
83118 }), ._ },
83119 .{ ._, ._ps, .cmp, .tmp3x, .memiad(.src1x, .tmp0, .add_size, 16), .sp(switch (cc) {
83120 else => unreachable,
83121 .e => .eq,
83122 .ne => .neq,
83123 }), ._ },
83124 .{ ._, .p_w, .ackssd, .tmp2x, .tmp3x, ._, ._ },
83125 .{ ._, .p_b, .ackssw, .tmp2x, .tmp2x, ._, ._ },
83126 .{ ._, .p_b, .movmsk, .tmp4d, .tmp2x, ._, ._ },
83127 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
83128 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
83129 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
83130 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8348083131 } },
8348183132 }, .{
83482 .required_features = .{ .avx, null, null, null },
83483 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },
83133 .required_features = .{ .sse, null, null, null },
83134 .src_constraints = .{
83135 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
83136 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
83137 .any,
83138 },
8348483139 .patterns = &.{
83485 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
83486 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
83140 .{ .src = .{ .to_mem, .to_mem, .none } },
8348783141 },
83488 .dst_temps = .{ .{ .cc = switch (strict) {
83489 true => .a,
83490 false => .ae,
83491 } }, .unused },
83142 .extra_temps = .{
83143 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83144 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
83145 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
83146 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83147 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83148 .unused,
83149 .unused,
83150 .unused,
83151 .unused,
83152 .unused,
83153 .unused,
83154 },
83155 .dst_temps = .{ .mem, .unused },
8349283156 .clobbers = .{ .eflags = true },
8349383157 .each = .{ .once = &.{
83494 .{ ._, .v_ss, .ucomi, .src0x, .src1d, ._, ._ },
83158 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83159 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
83160 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
83161 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
83162 else => unreachable,
83163 .e => .eq,
83164 .ne => .neq,
83165 }), ._ },
83166 .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ },
83167 .{ ._, ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ },
83168 .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, 16), .sp(switch (cc) {
83169 else => unreachable,
83170 .e => .eq,
83171 .ne => .neq,
83172 }), ._ },
83173 .{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ },
83174 .{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ },
83175 .{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ },
83176 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
83177 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
83178 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
83179 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8349583180 } },
8349683181 }, .{
8349783182 .required_features = .{ .sse, null, null, null },
83498 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },
83183 .src_constraints = .{
83184 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
83185 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
83186 .any,
83187 },
8349983188 .patterns = &.{
83500 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
83501 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
83189 .{ .src = .{ .to_mem, .to_mem, .none } },
8350283190 },
83503 .dst_temps = .{ .{ .cc = switch (strict) {
83504 true => .a,
83505 false => .ae,
83506 } }, .unused },
83191 .extra_temps = .{
83192 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83193 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
83194 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
83195 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83196 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83197 .unused,
83198 .unused,
83199 .unused,
83200 .unused,
83201 .unused,
83202 .unused,
83203 },
83204 .dst_temps = .{ .mem, .unused },
8350783205 .clobbers = .{ .eflags = true },
8350883206 .each = .{ .once = &.{
83509 .{ ._, ._ss, .ucomi, .src0x, .src1d, ._, ._ },
83207 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83208 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
83209 .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
83210 .{ .@"0:", ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, -16), ._, ._ },
83211 .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, -16), .sp(switch (cc) {
83212 else => unreachable,
83213 .e => .eq,
83214 .ne => .neq,
83215 }), ._ },
83216 .{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ },
83217 .{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ },
83218 .{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ },
83219 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
83220 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
83221 .{ .@"1:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
83222 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
83223 else => unreachable,
83224 .e => .eq,
83225 .ne => .neq,
83226 }), ._ },
83227 .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ },
83228 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
83229 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83230 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
83231 } },
83232 }, .{
83233 .required_features = .{ .avx, .slow_incdec, null, null },
83234 .src_constraints = .{
83235 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
83236 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
83237 .any,
83238 },
83239 .patterns = &.{
83240 .{ .src = .{ .to_mem, .to_mem, .none } },
83241 },
83242 .extra_temps = .{
83243 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83244 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
83245 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
83246 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
83247 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83248 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83249 .unused,
83250 .unused,
83251 .unused,
83252 .unused,
83253 .unused,
83254 },
83255 .dst_temps = .{ .mem, .unused },
83256 .clobbers = .{ .eflags = true },
83257 .each = .{ .once = &.{
83258 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83259 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
83260 .{ .@"0:", .v_pd, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
83261 .{ ._, .v_pd, .mova, .tmp3y, .memiad(.src0y, .tmp0, .add_size, 32), ._, ._ },
83262 .{ ._, .v_pd, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
83263 else => unreachable,
83264 .e => .eq,
83265 .ne => .neq,
83266 }) },
83267 .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memiad(.src1y, .tmp0, .add_size, 32), .vp(switch (cc) {
83268 else => unreachable,
83269 .e => .eq,
83270 .ne => .neq,
83271 }) },
83272 .{ ._, .v_pd, .movmsk, .tmp4d, .tmp2y, ._, ._ },
83273 .{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ },
83274 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
83275 .{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ },
83276 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
83277 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
83278 .{ ._, ._, .add, .tmp0p, .si(64), ._, ._ },
83279 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8351083280 } },
8351183281 }, .{
8351283282 .required_features = .{ .avx, null, null, null },
83513 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
83283 .src_constraints = .{
83284 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
83285 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
83286 .any,
83287 },
8351483288 .patterns = &.{
83515 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
83516 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
83289 .{ .src = .{ .to_mem, .to_mem, .none } },
8351783290 },
83518 .dst_temps = .{ .{ .cc = switch (strict) {
83519 true => .a,
83520 false => .ae,
83521 } }, .unused },
83291 .extra_temps = .{
83292 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83293 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
83294 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
83295 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
83296 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83297 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83298 .unused,
83299 .unused,
83300 .unused,
83301 .unused,
83302 .unused,
83303 },
83304 .dst_temps = .{ .mem, .unused },
8352283305 .clobbers = .{ .eflags = true },
8352383306 .each = .{ .once = &.{
83524 .{ ._, .v_sd, .ucomi, .src0x, .src1q, ._, ._ },
83307 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83308 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
83309 .{ .@"0:", .v_pd, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
83310 .{ ._, .v_pd, .mova, .tmp3y, .memiad(.src0y, .tmp0, .add_size, 32), ._, ._ },
83311 .{ ._, .v_pd, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
83312 else => unreachable,
83313 .e => .eq,
83314 .ne => .neq,
83315 }) },
83316 .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memiad(.src1y, .tmp0, .add_size, 32), .vp(switch (cc) {
83317 else => unreachable,
83318 .e => .eq,
83319 .ne => .neq,
83320 }) },
83321 .{ ._, .v_pd, .movmsk, .tmp4d, .tmp2y, ._, ._ },
83322 .{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ },
83323 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
83324 .{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ },
83325 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
83326 .{ ._, ._c, .in, .tmp1q, ._, ._, ._ },
83327 .{ ._, ._, .add, .tmp0p, .si(64), ._, ._ },
83328 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83329 } },
83330 }, .{
83331 .required_features = .{ .avx, null, null, null },
83332 .src_constraints = .{
83333 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
83334 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
83335 .any,
83336 },
83337 .patterns = &.{
83338 .{ .src = .{ .to_mem, .to_mem, .none } },
83339 },
83340 .extra_temps = .{
83341 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83342 .{ .type = .u32, .kind = .{ .reg = .rcx } },
83343 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83344 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
83345 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83346 .unused,
83347 .unused,
83348 .unused,
83349 .unused,
83350 .unused,
83351 .unused,
83352 },
83353 .dst_temps = .{ .mem, .unused },
83354 .clobbers = .{ .eflags = true },
83355 .each = .{ .once = &.{
83356 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83357 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83358 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
83359 .{ .@"0:", .v_pd, .mova, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
83360 .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
83361 else => unreachable,
83362 .e => .eq,
83363 .ne => .neq,
83364 }) },
83365 .{ ._, .v_pd, .movmsk, .tmp4d, .tmp3y, ._, ._ },
83366 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
83367 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
83368 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
83369 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
83370 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
83371 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
83372 .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ },
83373 .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ },
83374 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
83375 .{ .@"1:", ._, .add, .tmp0p, .si(32), ._, ._ },
83376 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83377 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
83378 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
83379 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
83380 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
8352583381 } },
8352683382 }, .{
8352783383 .required_features = .{ .sse2, null, null, null },
83528 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
83384 .src_constraints = .{
83385 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
83386 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
83387 .any,
83388 },
8352983389 .patterns = &.{
83530 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
83531 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
83390 .{ .src = .{ .to_mem, .to_mem, .none } },
8353283391 },
83533 .dst_temps = .{ .{ .cc = switch (strict) {
83534 true => .a,
83535 false => .ae,
83536 } }, .unused },
83392 .extra_temps = .{
83393 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83394 .{ .type = .u32, .kind = .{ .reg = .rcx } },
83395 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83396 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
83397 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83398 .unused,
83399 .unused,
83400 .unused,
83401 .unused,
83402 .unused,
83403 .unused,
83404 },
83405 .dst_temps = .{ .mem, .unused },
8353783406 .clobbers = .{ .eflags = true },
8353883407 .each = .{ .once = &.{
83539 .{ ._, ._sd, .ucomi, .src0x, .src1q, ._, ._ },
83408 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83409 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83410 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
83411 .{ .@"0:", ._pd, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
83412 .{ ._, ._pd, .cmp, .tmp3x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
83413 else => unreachable,
83414 .e => .eq,
83415 .ne => .neq,
83416 }), ._ },
83417 .{ ._, ._pd, .movmsk, .tmp4d, .tmp3x, ._, ._ },
83418 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
83419 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
83420 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
83421 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
83422 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
83423 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
83424 .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ },
83425 .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ },
83426 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
83427 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
83428 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83429 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
83430 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
83431 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
83432 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
8354083433 } },
8354183434 }, .{
83542 .required_features = .{ .x87, .cmov, null, null },
83543 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
83435 .required_features = .{ .x87, .cmov, .slow_incdec, null },
83436 .src_constraints = .{
83437 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
83438 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
83439 .any,
83440 },
8354483441 .patterns = &.{
83545 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
83442 .{ .src = .{ .to_mem, .to_mem, .none } },
8354683443 },
8354783444 .extra_temps = .{
83445 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83446 .{ .type = .u32, .kind = .{ .reg = .rcx } },
83447 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83448 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83449 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
8354883450 .{ .type = .f64, .kind = .{ .reg = .st6 } },
8354983451 .{ .type = .f64, .kind = .{ .reg = .st7 } },
8355083452 .unused,
8355183453 .unused,
8355283454 .unused,
8355383455 .unused,
83554 .unused,
83456 },
83457 .dst_temps = .{ .mem, .unused },
83458 .clobbers = .{ .eflags = true },
83459 .each = .{ .once = &.{
83460 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83461 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83462 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
83463 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
83464 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
83465 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ },
83466 .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ },
83467 .{ ._, .f_p, .ucomi, .tmp5t, .tmp6t, ._, ._ },
83468 .{ ._, .f_p, .st, .tmp6t, ._, ._, ._ },
83469 .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ },
83470 .{ ._, switch (cc) {
83471 else => unreachable,
83472 .e => ._np,
83473 .ne => ._p,
83474 }, .set, .tmp4b, ._, ._, ._ },
83475 .{ ._, ._, switch (cc) {
83476 else => unreachable,
83477 .e => .@"and",
83478 .ne => .@"or",
83479 }, .tmp3b, .tmp4b, ._, ._ },
83480 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
83481 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
83482 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
83483 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
83484 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
83485 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
83486 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
83487 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
83488 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
83489 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
83490 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83491 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
83492 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
83493 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
83494 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
83495 } },
83496 }, .{
83497 .required_features = .{ .x87, .cmov, null, null },
83498 .src_constraints = .{
83499 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
83500 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
83501 .any,
83502 },
83503 .patterns = &.{
83504 .{ .src = .{ .to_mem, .to_mem, .none } },
83505 },
83506 .extra_temps = .{
83507 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83508 .{ .type = .u32, .kind = .{ .reg = .rcx } },
83509 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83510 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83511 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83512 .{ .type = .f64, .kind = .{ .reg = .st6 } },
83513 .{ .type = .f64, .kind = .{ .reg = .st7 } },
8355583514 .unused,
8355683515 .unused,
8355783516 .unused,
8355883517 .unused,
8355983518 },
83560 .dst_temps = .{ .{ .cc = switch (strict) {
83561 true => .a,
83562 false => .ae,
83563 } }, .unused },
83519 .dst_temps = .{ .mem, .unused },
8356483520 .clobbers = .{ .eflags = true },
8356583521 .each = .{ .once = &.{
83566 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
83567 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
83568 .{ ._, .f_p, .ucomi, .tmp0t, .tmp1t, ._, ._ },
83569 .{ ._, .f_p, .st, .tmp1t, ._, ._, ._ },
83522 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83523 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83524 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
83525 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
83526 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
83527 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ },
83528 .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ },
83529 .{ ._, .f_p, .ucomi, .tmp5t, .tmp6t, ._, ._ },
83530 .{ ._, .f_p, .st, .tmp6t, ._, ._, ._ },
83531 .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ },
83532 .{ ._, switch (cc) {
83533 else => unreachable,
83534 .e => ._np,
83535 .ne => ._p,
83536 }, .set, .tmp4b, ._, ._, ._ },
83537 .{ ._, ._, switch (cc) {
83538 else => unreachable,
83539 .e => .@"and",
83540 .ne => .@"or",
83541 }, .tmp3b, .tmp4b, ._, ._ },
83542 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
83543 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
83544 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
83545 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
83546 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
83547 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
83548 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
83549 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
83550 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
83551 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
83552 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83553 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
83554 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
83555 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
83556 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
8357083557 } },
8357183558 }, .{
83572 .required_features = .{ .sahf, .x87, null, null },
83573 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
83559 .required_features = .{ .x87, null, null, null },
83560 .src_constraints = .{
83561 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
83562 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
83563 .any,
83564 },
8357483565 .patterns = &.{
83575 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
83566 .{ .src = .{ .to_mem, .to_mem, .none } },
8357683567 },
8357783568 .extra_temps = .{
83569 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83570 .{ .type = .u32, .kind = .{ .reg = .rcx } },
83571 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83572 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
8357883573 .{ .type = .f64, .kind = .{ .reg = .st6 } },
8357983574 .{ .type = .f64, .kind = .{ .reg = .st7 } },
8358083575 .{ .type = .u16, .kind = .{ .reg = .ax } },
......@@ -83582,810 +83577,810 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8358283577 .unused,
8358383578 .unused,
8358483579 .unused,
83580 },
83581 .dst_temps = .{ .mem, .unused },
83582 .clobbers = .{ .eflags = true },
83583 .each = .{ .once = &.{
83584 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83585 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83586 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
83587 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
83588 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ },
83589 .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ },
83590 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
83591 .{ ._, .fn_sw, .st, .tmp6w, ._, ._, ._ },
83592 .{ ._, ._, .xor, .tmp6h, .si(0b1_000_000), ._, ._ },
83593 .{ ._, ._, .@"test", .tmp6h, .si(0b1_000_100), ._, ._ },
83594 .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ },
83595 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
83596 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
83597 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
83598 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
83599 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
83600 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
83601 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
83602 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
83603 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
83604 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
83605 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83606 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
83607 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
83608 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
83609 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
83610 } },
83611 }, .{
83612 .required_features = .{ .x87, .cmov, .slow_incdec, null },
83613 .src_constraints = .{
83614 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
83615 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
83616 .any,
83617 },
83618 .patterns = &.{
83619 .{ .src = .{ .to_mem, .to_mem, .none } },
83620 },
83621 .extra_temps = .{
83622 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83623 .{ .type = .u32, .kind = .{ .reg = .rcx } },
83624 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83625 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83626 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83627 .{ .type = .f80, .kind = .{ .reg = .st6 } },
83628 .{ .type = .f80, .kind = .{ .reg = .st7 } },
83629 .unused,
83630 .unused,
83631 .unused,
83632 .unused,
83633 },
83634 .dst_temps = .{ .mem, .unused },
83635 .clobbers = .{ .eflags = true },
83636 .each = .{ .once = &.{
83637 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83638 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83639 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
83640 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
83641 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
83642 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
83643 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
83644 .{ ._, .f_p, .ucomi, .tmp5t, .tmp6t, ._, ._ },
83645 .{ ._, .f_p, .st, .tmp6t, ._, ._, ._ },
83646 .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ },
83647 .{ ._, switch (cc) {
83648 else => unreachable,
83649 .e => ._np,
83650 .ne => ._p,
83651 }, .set, .tmp4b, ._, ._, ._ },
83652 .{ ._, ._, switch (cc) {
83653 else => unreachable,
83654 .e => .@"and",
83655 .ne => .@"or",
83656 }, .tmp3b, .tmp4b, ._, ._ },
83657 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
83658 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
83659 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
83660 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
83661 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
83662 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
83663 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
83664 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
83665 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
83666 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
83667 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83668 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
83669 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
83670 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
83671 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
83672 } },
83673 }, .{
83674 .required_features = .{ .x87, .cmov, null, null },
83675 .src_constraints = .{
83676 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
83677 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
83678 .any,
83679 },
83680 .patterns = &.{
83681 .{ .src = .{ .to_mem, .to_mem, .none } },
83682 },
83683 .extra_temps = .{
83684 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83685 .{ .type = .u32, .kind = .{ .reg = .rcx } },
83686 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83687 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83688 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83689 .{ .type = .f80, .kind = .{ .reg = .st6 } },
83690 .{ .type = .f80, .kind = .{ .reg = .st7 } },
8358583691 .unused,
8358683692 .unused,
8358783693 .unused,
8358883694 .unused,
8358983695 },
83590 .dst_temps = .{ .{ .cc = switch (strict) {
83591 true => .a,
83592 false => .ae,
83593 } }, .unused },
83696 .dst_temps = .{ .mem, .unused },
8359483697 .clobbers = .{ .eflags = true },
8359583698 .each = .{ .once = &.{
83596 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
83597 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
83699 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83700 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83701 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
83702 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
83703 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
83704 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
83705 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
83706 .{ ._, .f_p, .ucomi, .tmp5t, .tmp6t, ._, ._ },
83707 .{ ._, .f_p, .st, .tmp6t, ._, ._, ._ },
83708 .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ },
83709 .{ ._, switch (cc) {
83710 else => unreachable,
83711 .e => ._np,
83712 .ne => ._p,
83713 }, .set, .tmp4b, ._, ._, ._ },
83714 .{ ._, ._, switch (cc) {
83715 else => unreachable,
83716 .e => .@"and",
83717 .ne => .@"or",
83718 }, .tmp3b, .tmp4b, ._, ._ },
83719 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
83720 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
83721 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
83722 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
83723 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
83724 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
83725 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
83726 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
83727 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
83728 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
83729 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83730 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
83731 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
83732 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
83733 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
83734 } },
83735 }, .{
83736 .required_features = .{ .x87, null, null, null },
83737 .src_constraints = .{
83738 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
83739 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
83740 .any,
83741 },
83742 .patterns = &.{
83743 .{ .src = .{ .to_mem, .to_mem, .none } },
83744 },
83745 .extra_temps = .{
83746 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83747 .{ .type = .u32, .kind = .{ .reg = .rcx } },
83748 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83749 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83750 .{ .type = .f80, .kind = .{ .reg = .st6 } },
83751 .{ .type = .f80, .kind = .{ .reg = .st7 } },
83752 .{ .type = .u16, .kind = .{ .reg = .ax } },
83753 .unused,
83754 .unused,
83755 .unused,
83756 .unused,
83757 },
83758 .dst_temps = .{ .mem, .unused },
83759 .clobbers = .{ .eflags = true },
83760 .each = .{ .once = &.{
83761 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83762 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83763 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
83764 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
83765 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
83766 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
8359883767 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
83599 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
83600 .{ ._, ._, .sahf, ._, ._, ._, ._ },
83768 .{ ._, .fn_sw, .st, .tmp6w, ._, ._, ._ },
83769 .{ ._, ._, .xor, .tmp6h, .si(0b1_000_000), ._, ._ },
83770 .{ ._, ._, .@"test", .tmp6h, .si(0b1_000_100), ._, ._ },
83771 .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ },
83772 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
83773 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
83774 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
83775 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
83776 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
83777 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
83778 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
83779 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
83780 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
83781 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
83782 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83783 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
83784 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
83785 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
83786 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
83787 } },
83788 }, .{
83789 .required_features = .{ .avx, .slow_incdec, null, null },
83790 .src_constraints = .{
83791 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
83792 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
83793 .any,
83794 },
83795 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
83796 .patterns = &.{
83797 .{ .src = .{ .to_mem, .to_mem, .none } },
83798 },
83799 .call_frame = .{ .alignment = .@"16" },
83800 .extra_temps = .{
83801 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83802 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83803 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
83804 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
83805 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
83806 .{ .type = .i32, .kind = .{ .reg = .eax } },
83807 .{ .type = .u8, .kind = .{ .reg = .cl } },
83808 .{ .type = .u32, .kind = .{ .reg = .edx } },
83809 .unused,
83810 .unused,
83811 .unused,
83812 },
83813 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
83814 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
83815 .each = .{ .once = &.{
83816 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
83817 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83818 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83819 .{ .@"0:", .v_dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
83820 .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
83821 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
83822 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
83823 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
83824 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
83825 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
83826 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
83827 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
83828 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
83829 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
83830 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83831 } },
83832 }, .{
83833 .required_features = .{ .avx, .slow_incdec, null, null },
83834 .src_constraints = .{
83835 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
83836 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
83837 .any,
83838 },
83839 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
83840 .patterns = &.{
83841 .{ .src = .{ .to_mem, .to_mem, .none } },
83842 },
83843 .call_frame = .{ .alignment = .@"16" },
83844 .extra_temps = .{
83845 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83846 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83847 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
83848 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
83849 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
83850 .{ .type = .i32, .kind = .{ .reg = .eax } },
83851 .{ .type = .u8, .kind = .{ .reg = .cl } },
83852 .{ .type = .u32, .kind = .{ .reg = .edx } },
83853 .unused,
83854 .unused,
83855 .unused,
83856 },
83857 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
83858 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
83859 .each = .{ .once = &.{
83860 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
83861 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83862 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83863 .{ .@"0:", .v_dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
83864 .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
83865 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
83866 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
83867 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
83868 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
83869 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
83870 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
83871 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
83872 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
83873 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
83874 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83875 } },
83876 }, .{
83877 .required_features = .{ .sse2, .slow_incdec, null, null },
83878 .src_constraints = .{
83879 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
83880 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
83881 .any,
83882 },
83883 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
83884 .patterns = &.{
83885 .{ .src = .{ .to_mem, .to_mem, .none } },
83886 },
83887 .call_frame = .{ .alignment = .@"16" },
83888 .extra_temps = .{
83889 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83890 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83891 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
83892 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
83893 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
83894 .{ .type = .i32, .kind = .{ .reg = .eax } },
83895 .{ .type = .u8, .kind = .{ .reg = .cl } },
83896 .{ .type = .u32, .kind = .{ .reg = .edx } },
83897 .unused,
83898 .unused,
83899 .unused,
83900 },
83901 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
83902 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
83903 .each = .{ .once = &.{
83904 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
83905 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83906 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83907 .{ .@"0:", ._dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
83908 .{ ._, ._dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
83909 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
83910 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
83911 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
83912 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
83913 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
83914 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
83915 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
83916 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
83917 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
83918 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83919 } },
83920 }, .{
83921 .required_features = .{ .sse2, .slow_incdec, null, null },
83922 .src_constraints = .{
83923 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
83924 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
83925 .any,
83926 },
83927 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
83928 .patterns = &.{
83929 .{ .src = .{ .to_mem, .to_mem, .none } },
83930 },
83931 .call_frame = .{ .alignment = .@"16" },
83932 .extra_temps = .{
83933 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83934 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83935 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
83936 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
83937 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
83938 .{ .type = .i32, .kind = .{ .reg = .eax } },
83939 .{ .type = .u8, .kind = .{ .reg = .cl } },
83940 .{ .type = .u32, .kind = .{ .reg = .edx } },
83941 .unused,
83942 .unused,
83943 .unused,
83944 },
83945 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
83946 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
83947 .each = .{ .once = &.{
83948 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
83949 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83950 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83951 .{ .@"0:", ._dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
83952 .{ ._, ._dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
83953 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
83954 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
83955 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
83956 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
83957 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
83958 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
83959 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
83960 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
83961 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
83962 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83963 } },
83964 }, .{
83965 .required_features = .{ .sse, .slow_incdec, null, null },
83966 .src_constraints = .{
83967 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
83968 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
83969 .any,
83970 },
83971 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
83972 .patterns = &.{
83973 .{ .src = .{ .to_mem, .to_mem, .none } },
83974 },
83975 .call_frame = .{ .alignment = .@"16" },
83976 .extra_temps = .{
83977 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83978 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83979 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
83980 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
83981 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
83982 .{ .type = .i32, .kind = .{ .reg = .eax } },
83983 .{ .type = .u8, .kind = .{ .reg = .cl } },
83984 .{ .type = .u32, .kind = .{ .reg = .edx } },
83985 .unused,
83986 .unused,
83987 .unused,
83988 },
83989 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
83990 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
83991 .each = .{ .once = &.{
83992 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
83993 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83994 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83995 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
83996 .{ ._, ._ps, .mova, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
83997 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
83998 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
83999 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
84000 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
84001 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
84002 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
84003 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
84004 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
84005 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
84006 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8360184007 } },
8360284008 }, .{
83603 .required_features = .{ .x87, null, null, null },
83604 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
84009 .required_features = .{ .sse2, .slow_incdec, null, null },
84010 .src_constraints = .{
84011 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84012 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84013 .any,
84014 },
84015 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
8360584016 .patterns = &.{
83606 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
84017 .{ .src = .{ .to_mem, .to_mem, .none } },
8360784018 },
84019 .call_frame = .{ .alignment = .@"16" },
8360884020 .extra_temps = .{
83609 .{ .type = .f64, .kind = .{ .reg = .st6 } },
83610 .{ .type = .f64, .kind = .{ .reg = .st7 } },
83611 .{ .type = .u16, .kind = .{ .reg = .ax } },
83612 .unused,
83613 .unused,
83614 .unused,
83615 .unused,
83616 .unused,
84021 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
84022 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84023 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84024 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84025 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
84026 .{ .type = .i32, .kind = .{ .reg = .eax } },
84027 .{ .type = .u8, .kind = .{ .reg = .cl } },
84028 .{ .type = .u32, .kind = .{ .reg = .edx } },
8361784029 .unused,
8361884030 .unused,
8361984031 .unused,
8362084032 },
83621 .dst_temps = .{ .{ .cc = switch (strict) {
83622 true => .z,
83623 false => .nc,
83624 } }, .unused },
83625 .clobbers = .{ .eflags = true },
84033 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
84034 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8362684035 .each = .{ .once = &.{
83627 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
83628 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
83629 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
83630 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
83631 switch (strict) {
83632 true => .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_001), ._, ._ },
83633 false => .{ ._, ._r, .sh, .tmp2h, .ui(1), ._, ._ },
83634 },
84036 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
84037 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
84038 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
84039 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
84040 .{ ._, ._ps, .mova, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
84041 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
84042 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
84043 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
84044 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
84045 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
84046 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
84047 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
84048 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
84049 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
84050 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8363584051 } },
8363684052 }, .{
83637 .required_features = .{ .x87, .cmov, null, null },
83638 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
84053 .required_features = .{ .@"64bit", .avx, .slow_incdec, null },
84054 .src_constraints = .{
84055 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84056 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84057 .any,
84058 },
8363984059 .patterns = &.{
83640 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
83641 .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } },
84060 .{ .src = .{ .to_mem, .to_mem, .none } },
8364284061 },
84062 .call_frame = .{ .alignment = .@"16" },
8364384063 .extra_temps = .{
83644 .{ .type = .f80, .kind = .{ .reg = .st7 } },
83645 .unused,
83646 .unused,
83647 .unused,
83648 .unused,
83649 .unused,
83650 .unused,
83651 .unused,
83652 .unused,
84064 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
84065 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84066 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
84067 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84068 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84069 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
84070 .{ .type = .i32, .kind = .{ .reg = .eax } },
84071 .{ .type = .u8, .kind = .{ .reg = .cl } },
84072 .{ .type = .u64, .kind = .{ .reg = .rdx } },
8365384073 .unused,
8365484074 .unused,
8365584075 },
83656 .dst_temps = .{ .{ .cc = switch (strict) {
83657 true => .a,
83658 false => .ae,
83659 } }, .unused },
83660 .clobbers = .{ .eflags = true },
84076 .dst_temps = .{ .mem, .unused },
84077 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8366184078 .each = .{ .once = &.{
83662 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
83663 .{ ._, .f_p, .ucomi, .tmp0t, .src1t, ._, ._ },
84079 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
84080 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
84081 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
84082 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
84083 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
84084 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
84085 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
84086 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
84087 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
84088 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
84089 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
84090 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
84091 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
84092 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
84093 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
84094 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
84095 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
84096 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
84097 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
84098 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
84099 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
84100 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
84101 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
84102 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
84103 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
8366484104 } },
8366584105 }, .{
83666 .required_features = .{ .sahf, .x87, null, null },
83667 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
84106 .required_features = .{ .@"64bit", .avx, null, null },
84107 .src_constraints = .{
84108 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84109 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84110 .any,
84111 },
8366884112 .patterns = &.{
83669 .{ .src = .{ .mem, .mem, .none }, .commute = .{ 0, 1 } },
84113 .{ .src = .{ .to_mem, .to_mem, .none } },
8367084114 },
84115 .call_frame = .{ .alignment = .@"16" },
8367184116 .extra_temps = .{
83672 .{ .type = .f80, .kind = .{ .reg = .st6 } },
83673 .{ .type = .f80, .kind = .{ .reg = .st7 } },
83674 .{ .type = .u16, .kind = .{ .reg = .ax } },
83675 .unused,
83676 .unused,
83677 .unused,
83678 .unused,
83679 .unused,
83680 .unused,
84117 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
84118 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84119 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
84120 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84121 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84122 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
84123 .{ .type = .i32, .kind = .{ .reg = .eax } },
84124 .{ .type = .u8, .kind = .{ .reg = .cl } },
84125 .{ .type = .u64, .kind = .{ .reg = .rdx } },
8368184126 .unused,
8368284127 .unused,
8368384128 },
83684 .dst_temps = .{ .{ .cc = switch (strict) {
83685 true => .a,
83686 false => .ae,
83687 } }, .unused },
83688 .clobbers = .{ .eflags = true },
84129 .dst_temps = .{ .mem, .unused },
84130 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8368984131 .each = .{ .once = &.{
83690 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
83691 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
83692 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
83693 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
83694 .{ ._, ._, .sahf, ._, ._, ._, ._ },
84132 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
84133 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
84134 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
84135 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
84136 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
84137 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
84138 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
84139 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
84140 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
84141 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
84142 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
84143 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
84144 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
84145 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
84146 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
84147 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
84148 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
84149 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
84150 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
84151 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
84152 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
84153 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
84154 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
84155 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
84156 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
8369584157 } },
8369684158 }, .{
83697 .required_features = .{ .sahf, .x87, null, null },
83698 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
84159 .required_features = .{ .@"64bit", .sse2, .slow_incdec, null },
84160 .src_constraints = .{
84161 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84162 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84163 .any,
84164 },
8369984165 .patterns = &.{
83700 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
83701 .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } },
84166 .{ .src = .{ .to_mem, .to_mem, .none } },
8370284167 },
84168 .call_frame = .{ .alignment = .@"16" },
8370384169 .extra_temps = .{
83704 .{ .type = .f80, .kind = .{ .reg = .st6 } },
83705 .{ .type = .f80, .kind = .{ .reg = .st7 } },
83706 .{ .type = .u16, .kind = .{ .reg = .ax } },
83707 .unused,
83708 .unused,
83709 .unused,
83710 .unused,
83711 .unused,
83712 .unused,
84170 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
84171 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84172 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
84173 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84174 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84175 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
84176 .{ .type = .i32, .kind = .{ .reg = .eax } },
84177 .{ .type = .u8, .kind = .{ .reg = .cl } },
84178 .{ .type = .u64, .kind = .{ .reg = .rdx } },
8371384179 .unused,
8371484180 .unused,
8371584181 },
83716 .dst_temps = .{ .{ .cc = switch (strict) {
83717 true => .a,
83718 false => .ae,
83719 } }, .unused },
83720 .clobbers = .{ .eflags = true },
84182 .dst_temps = .{ .mem, .unused },
84183 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8372184184 .each = .{ .once = &.{
83722 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
83723 .{ ._, .f_p, .ucom, .src1t, ._, ._, ._ },
83724 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
83725 .{ ._, ._, .sahf, ._, ._, ._, ._ },
84185 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
84186 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
84187 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
84188 .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
84189 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
84190 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
84191 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
84192 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
84193 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
84194 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
84195 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
84196 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
84197 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
84198 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
84199 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
84200 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
84201 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
84202 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
84203 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
84204 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
84205 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
84206 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
84207 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
84208 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
84209 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
8372684210 } },
8372784211 }, .{
83728 .required_features = .{ .x87, null, null, null },
83729 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
84212 .required_features = .{ .@"64bit", .sse2, null, null },
84213 .src_constraints = .{
84214 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84215 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84216 .any,
84217 },
8373084218 .patterns = &.{
83731 .{ .src = .{ .mem, .mem, .none }, .commute = .{ 0, 1 } },
84219 .{ .src = .{ .to_mem, .to_mem, .none } },
8373284220 },
84221 .call_frame = .{ .alignment = .@"16" },
8373384222 .extra_temps = .{
83734 .{ .type = .f80, .kind = .{ .reg = .st6 } },
83735 .{ .type = .f80, .kind = .{ .reg = .st7 } },
83736 .{ .type = .u16, .kind = .{ .reg = .ax } },
83737 .unused,
83738 .unused,
83739 .unused,
83740 .unused,
83741 .unused,
83742 .unused,
84223 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
84224 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84225 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
84226 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84227 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84228 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
84229 .{ .type = .i32, .kind = .{ .reg = .eax } },
84230 .{ .type = .u8, .kind = .{ .reg = .cl } },
84231 .{ .type = .u64, .kind = .{ .reg = .rdx } },
8374384232 .unused,
8374484233 .unused,
8374584234 },
83746 .dst_temps = .{ .{ .cc = switch (strict) {
83747 true => .z,
83748 false => .nc,
83749 } }, .unused },
83750 .clobbers = .{ .eflags = true },
84235 .dst_temps = .{ .mem, .unused },
84236 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8375184237 .each = .{ .once = &.{
83752 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
83753 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
83754 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
83755 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
83756 switch (strict) {
83757 true => .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_001), ._, ._ },
83758 false => .{ ._, ._r, .sh, .tmp2h, .ui(1), ._, ._ },
83759 },
84238 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
84239 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
84240 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
84241 .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
84242 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
84243 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
84244 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
84245 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
84246 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
84247 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
84248 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
84249 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
84250 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
84251 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
84252 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
84253 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
84254 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
84255 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
84256 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
84257 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
84258 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
84259 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
84260 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
84261 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
84262 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
8376084263 } },
8376184264 }, .{
83762 .required_features = .{ .x87, null, null, null },
83763 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
84265 .required_features = .{ .@"64bit", .sse, .slow_incdec, null },
84266 .src_constraints = .{
84267 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84268 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84269 .any,
84270 },
8376484271 .patterns = &.{
83765 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
83766 .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } },
84272 .{ .src = .{ .to_mem, .to_mem, .none } },
8376784273 },
84274 .call_frame = .{ .alignment = .@"16" },
8376884275 .extra_temps = .{
83769 .{ .type = .f80, .kind = .{ .reg = .st6 } },
83770 .{ .type = .f80, .kind = .{ .reg = .st7 } },
83771 .{ .type = .u16, .kind = .{ .reg = .ax } },
83772 .unused,
83773 .unused,
83774 .unused,
83775 .unused,
83776 .unused,
83777 .unused,
84276 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
84277 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84278 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
84279 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84280 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84281 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
84282 .{ .type = .i32, .kind = .{ .reg = .eax } },
84283 .{ .type = .u8, .kind = .{ .reg = .cl } },
84284 .{ .type = .u64, .kind = .{ .reg = .rdx } },
8377884285 .unused,
8377984286 .unused,
8378084287 },
83781 .dst_temps = .{ .{ .cc = switch (strict) {
83782 true => .z,
83783 false => .nc,
83784 } }, .unused },
83785 .clobbers = .{ .eflags = true },
84288 .dst_temps = .{ .mem, .unused },
84289 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8378684290 .each = .{ .once = &.{
83787 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
83788 .{ ._, .f_p, .ucom, .src1t, ._, ._, ._ },
83789 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
83790 switch (strict) {
83791 true => .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_001), ._, ._ },
83792 false => .{ ._, ._r, .sh, .tmp2h, .ui(1), ._, ._ },
83793 },
84291 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
84292 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
84293 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
84294 .{ .@"0:", ._ps, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
84295 .{ ._, ._ps, .mova, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
84296 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
84297 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
84298 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
84299 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
84300 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
84301 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
84302 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
84303 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
84304 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
84305 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
84306 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
84307 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
84308 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
84309 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
84310 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
84311 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
84312 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
84313 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
84314 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
84315 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
8379484316 } },
8379584317 }, .{
83796 .required_features = .{ .sse, null, null, null },
83797 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword }, .any },
84318 .required_features = .{ .@"64bit", .sse, null, null },
84319 .src_constraints = .{
84320 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84321 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84322 .any,
84323 },
8379884324 .patterns = &.{
83799 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
84325 .{ .src = .{ .to_mem, .to_mem, .none } },
8380084326 },
8380184327 .call_frame = .{ .alignment = .@"16" },
8380284328 .extra_temps = .{
84329 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
84330 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84331 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
84332 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84333 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
8380384334 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
8380484335 .{ .type = .i32, .kind = .{ .reg = .eax } },
83805 .unused,
83806 .unused,
83807 .unused,
83808 .unused,
83809 .unused,
83810 .unused,
83811 .unused,
84336 .{ .type = .u8, .kind = .{ .reg = .cl } },
84337 .{ .type = .u64, .kind = .{ .reg = .rdx } },
8381284338 .unused,
8381384339 .unused,
8381484340 },
83815 .dst_temps = .{ .{ .cc = switch (strict) {
83816 true => .l,
83817 false => .le,
83818 } }, .unused },
84341 .dst_temps = .{ .mem, .unused },
8381984342 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8382084343 .each = .{ .once = &.{
83821 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
83822 .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ },
84344 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
84345 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
84346 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
84347 .{ .@"0:", ._ps, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
84348 .{ ._, ._ps, .mova, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
84349 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
84350 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
84351 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
84352 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
84353 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
84354 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
84355 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
84356 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
84357 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
84358 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
84359 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
84360 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
84361 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
84362 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
84363 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
84364 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
84365 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
84366 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
84367 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
84368 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
8382384369 } },
8382484370 } },
83825 });
83826 } else err: {
83827 res[0] = ops[0].cmpInts(cmp_op, &ops[1], cg) catch |err| break :err err;
83828 }) catch |err| switch (err) {
83829 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
83830 @tagName(air_tag),
83831 cg.typeOf(bin_op.lhs).fmt(pt),
83832 ops[0].tracking(cg),
83833 ops[1].tracking(cg),
8383484371 }),
83835 else => |e| return e,
83836 };
83837 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
83838 },
83839 .cmp_eq,
83840 .cmp_eq_optimized,
83841 .cmp_neq,
83842 .cmp_neq_optimized,
83843 => |air_tag| if (use_old) try cg.airCmp(inst, air_tag.toCmpOp().?) else {
83844 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
83845 const cmp_op = air_tag.toCmpOp().?;
83846 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
83847 const ty = cg.typeOf(bin_op.lhs);
83848 var res: [1]Temp = undefined;
83849 const OptInfo = struct {
83850 deaths: [2]Air.Inst.Index,
83851 res: [1]Temp,
83852 state: State,
83853 reloc: Mir.Inst.Index,
83854 };
83855 var opt_info: ?OptInfo = null;
83856 (err: switch (@as(enum { float, int }, if (cg.floatBits(ty)) |_|
83857 .float
83858 else if (cg.intInfo(ty)) |_|
83859 .int
83860 else category: {
83861 const child_ty = ty.optionalChild(zcu);
83862 const has_value_off: u31 = @intCast(child_ty.abiSize(zcu));
83863 var has_values: [2]Temp = undefined;
83864 opt_info = @as(OptInfo, undefined);
83865 for (&has_values, &ops, &opt_info.?.deaths) |*has_value, *op, *death| {
83866 has_value.* = try op.read(.bool, .{ .disp = has_value_off }, cg);
83867 const child = try op.read(child_ty, .{}, cg);
83868 try op.die(cg);
83869 op.* = child;
83870 death.* = child.index;
83871 }
83872 cg.select(
83873 &opt_info.?.res,
83874 &.{.bool},
83875 &has_values,
83876 switch (Condition.fromCompareOperatorUnsigned(cmp_op)) {
83877 else => unreachable,
83878 inline .e, .ne => |cc| comptime &.{.{
83879 .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte }, .any },
83880 .patterns = &.{
83881 .{ .src = .{ .mem, .imm8, .none } },
83882 .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } },
83883 .{ .src = .{ .to_gpr, .imm8, .none } },
83884 .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } },
83885 .{ .src = .{ .mem, .to_gpr, .none } },
83886 .{ .src = .{ .to_gpr, .mem, .none }, .commute = .{ 0, 1 } },
83887 .{ .src = .{ .to_gpr, .to_gpr, .none } },
83888 },
83889 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
83890 .clobbers = .{ .eflags = true },
83891 .each = .{ .once = &.{
83892 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
83893 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
83894 .{ ._, .fromCond(cc), .set, .dst0b, ._, ._, ._ },
83895 .{ ._, ._, .@"test", .src0b, .src1b, ._, ._ },
83896 } },
83897 }},
83898 },
83899 ) catch |err| switch (err) {
83900 error.SelectFailed => unreachable,
83901 else => |e| return e,
83902 };
83903 for (has_values) |has_value| for (opt_info.?.res) |opt_res| {
83904 if (has_value.index == opt_res.index) break;
83905 } else try has_value.die(cg);
83906 opt_info.?.state = cg.initRetroactiveState();
83907 opt_info.?.state.next_temp_index = cg.next_temp_index;
83908 var state = try cg.saveState();
83909 state.next_temp_index = cg.next_temp_index;
83910 for (ops) |op| try op.die(cg);
83911 try cg.saveRetroactiveState(&opt_info.?.state);
83912 opt_info.?.reloc = try cg.asmJccReloc(.z, undefined);
83913 try cg.restoreState(state, &.{}, .{
83914 .emit_instructions = false,
83915 .update_tracking = true,
83916 .resurrect = true,
83917 .close_scope = true,
83918 });
83919 break :category if (cg.floatBits(child_ty)) |_| .float else .int;
83920 })) {
83921 .float => {
83922 cg.select(&res, &.{.bool}, &ops, switch (switch (air_tag) {
83923 else => unreachable,
83924 .cmp_eq, .cmp_neq => false,
83925 .cmp_eq_optimized, .cmp_neq_optimized => true,
83926 }) {
83927 inline false, true => |optimized| comptime &.{ .{
83928 .required_features = .{ .f16c, null, null, null },
83929 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
83930 .patterns = &.{
83931 .{ .src = .{ .to_sse, .to_sse, .none } },
83932 },
83933 .extra_temps = .{
83934 .{ .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
83935 .{ .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
83936 .unused,
83937 .unused,
83938 .unused,
83939 .unused,
83940 .unused,
83941 .unused,
83942 .unused,
83943 .unused,
83944 .unused,
83945 },
83946 .dst_temps = .{ .{ .cc = switch (optimized) {
83947 false => .z_and_np,
83948 true => .z,
83949 } }, .unused },
83950 .clobbers = .{ .eflags = true },
83951 .each = .{ .once = &.{
83952 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
83953 .{ ._, .v_ps, .cvtph2, .tmp1x, .src1q, ._, ._ },
83954 .{ ._, .v_ss, .ucomi, .tmp0x, .tmp1d, ._, ._ },
83955 } },
83956 }, .{
83957 .required_features = .{ .sse, null, null, null },
83958 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
83959 .patterns = &.{
83960 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
83961 },
83962 .call_frame = .{ .alignment = .@"16" },
83963 .extra_temps = .{
83964 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
83965 .{ .type = .i32, .kind = .{ .reg = .eax } },
83966 .unused,
83967 .unused,
83968 .unused,
83969 .unused,
83970 .unused,
83971 .unused,
83972 .unused,
83973 .unused,
83974 .unused,
83975 },
83976 .dst_temps = .{ .{ .cc = .z }, .unused },
83977 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
83978 .each = .{ .once = &.{
83979 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
83980 .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ },
83981 } },
83982 }, .{
83983 .required_features = .{ .avx, null, null, null },
83984 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },
83985 .patterns = &.{
83986 .{ .src = .{ .to_sse, .mem, .none } },
83987 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
83988 .{ .src = .{ .to_sse, .to_sse, .none } },
83989 },
83990 .dst_temps = .{ .{ .cc = switch (optimized) {
83991 false => .z_and_np,
83992 true => .z,
83993 } }, .unused },
83994 .clobbers = .{ .eflags = true },
83995 .each = .{ .once = &.{
83996 .{ ._, .v_ss, .ucomi, .src0x, .src1d, ._, ._ },
83997 } },
83998 }, .{
83999 .required_features = .{ .sse, null, null, null },
84000 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },
84001 .patterns = &.{
84002 .{ .src = .{ .to_sse, .mem, .none } },
84003 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
84004 .{ .src = .{ .to_sse, .to_sse, .none } },
84005 },
84006 .dst_temps = .{ .{ .cc = switch (optimized) {
84007 false => .z_and_np,
84008 true => .z,
84009 } }, .unused },
84010 .clobbers = .{ .eflags = true },
84011 .each = .{ .once = &.{
84012 .{ ._, ._ss, .ucomi, .src0x, .src1d, ._, ._ },
84013 } },
84014 }, .{
84015 .required_features = .{ .avx, null, null, null },
84016 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
84017 .patterns = &.{
84018 .{ .src = .{ .to_sse, .mem, .none } },
84019 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
84020 .{ .src = .{ .to_sse, .to_sse, .none } },
84021 },
84022 .dst_temps = .{ .{ .cc = switch (optimized) {
84023 false => .z_and_np,
84024 true => .z,
84025 } }, .unused },
84026 .clobbers = .{ .eflags = true },
84027 .each = .{ .once = &.{
84028 .{ ._, .v_sd, .ucomi, .src0x, .src1q, ._, ._ },
84029 } },
84030 }, .{
84031 .required_features = .{ .sse2, null, null, null },
84032 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
84033 .patterns = &.{
84034 .{ .src = .{ .to_sse, .mem, .none } },
84035 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
84036 .{ .src = .{ .to_sse, .to_sse, .none } },
84037 },
84038 .dst_temps = .{ .{ .cc = switch (optimized) {
84039 false => .z_and_np,
84040 true => .z,
84041 } }, .unused },
84042 .clobbers = .{ .eflags = true },
84043 .each = .{ .once = &.{
84044 .{ ._, ._sd, .ucomi, .src0x, .src1q, ._, ._ },
84045 } },
84046 }, .{
84047 .required_features = .{ .x87, .cmov, null, null },
84048 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
84049 .patterns = &.{
84050 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
84051 },
84052 .extra_temps = .{
84053 .{ .type = .f64, .kind = .{ .reg = .st6 } },
84054 .{ .type = .f64, .kind = .{ .reg = .st7 } },
84055 .unused,
84056 .unused,
84057 .unused,
84058 .unused,
84059 .unused,
84060 .unused,
84061 .unused,
84062 .unused,
84063 .unused,
84064 },
84065 .dst_temps = .{ .{ .cc = switch (optimized) {
84066 false => .z_and_np,
84067 true => .z,
84068 } }, .unused },
84069 .clobbers = .{ .eflags = true },
84070 .each = .{ .once = &.{
84071 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
84072 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
84073 .{ ._, .f_p, .ucomi, .tmp0t, .tmp1t, ._, ._ },
84074 .{ ._, .f_p, .st, .tmp1t, ._, ._, ._ },
84075 } },
84076 }, .{
84077 .required_features = .{ .sahf, .x87, null, null },
84078 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
84079 .patterns = &.{
84080 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
84081 },
84082 .extra_temps = .{
84083 .{ .type = .f64, .kind = .{ .reg = .st6 } },
84084 .{ .type = .f64, .kind = .{ .reg = .st7 } },
84085 .{ .type = .u16, .kind = .{ .reg = .ax } },
84086 .unused,
84087 .unused,
84088 .unused,
84089 .unused,
84090 .unused,
84091 .unused,
84092 .unused,
84093 .unused,
84094 },
84095 .dst_temps = .{ .{ .cc = switch (optimized) {
84096 false => .z_and_np,
84097 true => .z,
84098 } }, .unused },
84099 .clobbers = .{ .eflags = true },
84100 .each = .{ .once = &.{
84101 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
84102 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
84103 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
84104 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
84105 .{ ._, ._, .sahf, ._, ._, ._, ._ },
84106 } },
84107 }, .{
84108 .required_features = .{ .x87, null, null, null },
84109 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
84110 .patterns = &.{
84111 .{ .src = .{ .to_mem, .to_mem, .none } },
84112 },
84113 .extra_temps = .{
84114 .{ .type = .f64, .kind = .{ .reg = .st6 } },
84115 .{ .type = .f64, .kind = .{ .reg = .st7 } },
84116 .{ .type = .u16, .kind = .{ .reg = .ax } },
84117 .unused,
84118 .unused,
84119 .unused,
84120 .unused,
84121 .unused,
84122 .unused,
84123 .unused,
84124 .unused,
84125 },
84126 .dst_temps = .{ .{ .cc = switch (optimized) {
84127 false => .z,
84128 true => .nz,
84129 } }, .unused },
84130 .clobbers = .{ .eflags = true },
84131 .each = .{ .once = switch (optimized) {
84132 false => &.{
84133 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
84134 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
84135 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
84136 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
84137 .{ ._, ._, .xor, .tmp2h, .si(0b1_000_000), ._, ._ },
84138 .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_100), ._, ._ },
84139 },
84140 true => &.{
84141 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
84142 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
84143 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
84144 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
84145 .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_000), ._, ._ },
84146 },
84147 } },
84148 }, .{
84149 .required_features = .{ .x87, .cmov, null, null },
84150 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
84151 .patterns = &.{
84152 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
84153 .{ .src = .{ .mem, .to_x87, .none } },
84154 .{ .src = .{ .to_x87, .to_x87, .none } },
84155 },
84156 .extra_temps = .{
84157 .{ .type = .f80, .kind = .{ .reg = .st7 } },
84158 .unused,
84159 .unused,
84160 .unused,
84161 .unused,
84162 .unused,
84163 .unused,
84164 .unused,
84165 .unused,
84166 .unused,
84167 .unused,
84168 },
84169 .dst_temps = .{ .{ .cc = switch (optimized) {
84170 false => .z_and_np,
84171 true => .z,
84172 } }, .unused },
84173 .clobbers = .{ .eflags = true },
84174 .each = .{ .once = &.{
84175 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
84176 .{ ._, .f_p, .ucomi, .tmp0t, .src1t, ._, ._ },
84177 } },
84178 }, .{
84179 .required_features = .{ .sahf, .x87, null, null },
84180 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
84181 .patterns = &.{
84182 .{ .src = .{ .mem, .mem, .none } },
84183 },
84184 .extra_temps = .{
84185 .{ .type = .f80, .kind = .{ .reg = .st6 } },
84186 .{ .type = .f80, .kind = .{ .reg = .st7 } },
84187 .{ .type = .u16, .kind = .{ .reg = .ax } },
84188 .unused,
84189 .unused,
84190 .unused,
84191 .unused,
84192 .unused,
84193 .unused,
84194 .unused,
84195 .unused,
84196 },
84197 .dst_temps = .{ .{ .cc = switch (optimized) {
84198 false => .z_and_np,
84199 true => .z,
84200 } }, .unused },
84201 .clobbers = .{ .eflags = true },
84202 .each = .{ .once = &.{
84203 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
84204 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
84205 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
84206 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
84207 .{ ._, ._, .sahf, ._, ._, ._, ._ },
84208 } },
84209 }, .{
84210 .required_features = .{ .sahf, .x87, null, null },
84211 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
84212 .patterns = &.{
84213 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
84214 .{ .src = .{ .mem, .to_x87, .none } },
84215 .{ .src = .{ .to_x87, .to_x87, .none } },
84216 },
84217 .extra_temps = .{
84218 .{ .type = .f80, .kind = .{ .reg = .st6 } },
84219 .{ .type = .f80, .kind = .{ .reg = .st7 } },
84220 .{ .type = .u16, .kind = .{ .reg = .ax } },
84221 .unused,
84222 .unused,
84223 .unused,
84224 .unused,
84225 .unused,
84226 .unused,
84227 .unused,
84228 .unused,
84229 },
84230 .dst_temps = .{ .{ .cc = switch (optimized) {
84231 false => .z_and_np,
84232 true => .z,
84233 } }, .unused },
84234 .clobbers = .{ .eflags = true },
84235 .each = .{ .once = &.{
84236 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
84237 .{ ._, .f_p, .ucom, .src1t, ._, ._, ._ },
84238 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
84239 .{ ._, ._, .sahf, ._, ._, ._, ._ },
84240 } },
84241 }, .{
84242 .required_features = .{ .x87, null, null, null },
84243 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
84244 .patterns = &.{
84245 .{ .src = .{ .mem, .mem, .none } },
84246 },
84247 .extra_temps = .{
84248 .{ .type = .f80, .kind = .{ .reg = .st6 } },
84249 .{ .type = .f80, .kind = .{ .reg = .st7 } },
84250 .{ .type = .u16, .kind = .{ .reg = .ax } },
84251 .unused,
84252 .unused,
84253 .unused,
84254 .unused,
84255 .unused,
84256 .unused,
84257 .unused,
84258 .unused,
84259 },
84260 .dst_temps = .{ .{ .cc = switch (optimized) {
84261 false => .z,
84262 true => .nz,
84263 } }, .unused },
84264 .clobbers = .{ .eflags = true },
84265 .each = .{ .once = switch (optimized) {
84266 false => &.{
84267 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
84268 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
84269 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
84270 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
84271 .{ ._, ._, .xor, .tmp2h, .si(0b1_000_000), ._, ._ },
84272 .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_100), ._, ._ },
84273 },
84274 true => &.{
84275 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
84276 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
84277 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
84278 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
84279 .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_000), ._, ._ },
84280 },
84281 } },
84282 }, .{
84283 .required_features = .{ .x87, null, null, null },
84284 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
84285 .patterns = &.{
84286 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
84287 .{ .src = .{ .mem, .to_x87, .none } },
84288 .{ .src = .{ .to_x87, .to_x87, .none } },
84289 },
84290 .extra_temps = .{
84291 .{ .type = .f80, .kind = .{ .reg = .st6 } },
84292 .{ .type = .f80, .kind = .{ .reg = .st7 } },
84293 .{ .type = .u16, .kind = .{ .reg = .ax } },
84294 .unused,
84295 .unused,
84296 .unused,
84297 .unused,
84298 .unused,
84299 .unused,
84300 .unused,
84301 .unused,
84302 },
84303 .dst_temps = .{ .{ .cc = switch (optimized) {
84304 false => .z,
84305 true => .nz,
84306 } }, .unused },
84307 .clobbers = .{ .eflags = true },
84308 .each = .{ .once = switch (optimized) {
84309 false => &.{
84310 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
84311 .{ ._, .f_p, .ucom, .src1t, ._, ._, ._ },
84312 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
84313 .{ ._, ._, .xor, .tmp2h, .si(0b1_000_000), ._, ._ },
84314 .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_100), ._, ._ },
84315 },
84316 true => &.{
84317 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
84318 .{ ._, .f_p, .ucom, .src1t, ._, ._, ._ },
84319 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
84320 .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_000), ._, ._ },
84321 },
84322 } },
84323 }, .{
84324 .required_features = .{ .sse, null, null, null },
84325 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword }, .any },
84326 .patterns = &.{
84327 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
84328 },
84329 .call_frame = .{ .alignment = .@"16" },
84330 .extra_temps = .{
84331 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
84332 .{ .type = .i32, .kind = .{ .reg = .eax } },
84333 .unused,
84334 .unused,
84335 .unused,
84336 .unused,
84337 .unused,
84338 .unused,
84339 .unused,
84340 .unused,
84341 .unused,
84342 },
84343 .dst_temps = .{ .{ .cc = .z }, .unused },
84344 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
84345 .each = .{ .once = &.{
84346 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
84347 .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ },
84348 } },
84349 } },
84350 }) catch |err| break :err err;
84351 switch (cmp_op) {
84352 else => unreachable,
84353 .eq => {},
84354 .neq => {
84355 const cc = &res[0].unwrap(cg).temp.tracking(cg).short.eflags;
84356 cc.* = cc.negate();
84357 },
84358 }
84359 },
84360 .int => res[0] = ops[0].cmpInts(cmp_op, &ops[1], cg) catch |err| break :err err,
8436184372 }) catch |err| switch (err) {
84362 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
84373 error.SelectFailed => return cg.fail("failed to select {s} {s} {} {} {}", .{
8436384374 @tagName(air_tag),
84364 cg.typeOf(bin_op.lhs).fmt(pt),
84375 @tagName(extra.compareOperator()),
84376 cg.typeOf(extra.lhs).fmt(pt),
8436584377 ops[0].tracking(cg),
8436684378 ops[1].tracking(cg),
8436784379 }),
8436884380 else => |e| return e,
8436984381 };
84370 if (opt_info) |*oi| {
84371 for (ops) |op| for (res) |r| {
84372 if (op.index == r.index) break;
84373 } else try op.die(cg);
84374 try cg.genCopy(.bool, oi.res[0].tracking(cg).short, res[0].tracking(cg).short, .{});
84375 try res[0].die(cg);
84376 res[0] = oi.res[0];
84377 try cg.restoreState(oi.state, &oi.deaths, .{
84378 .emit_instructions = true,
84379 .update_tracking = true,
84380 .resurrect = true,
84381 .close_scope = true,
84382 });
84383 cg.performReloc(oi.reloc);
84384 @memset(&ops, res[0]);
84385 }
84386 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
84382 try res[0].finish(inst, &.{ extra.lhs, extra.rhs }, &ops, cg);
8438784383 },
84388
8438984384 .cond_br => try cg.airCondBr(inst),
8439084385 .switch_br => try cg.airSwitchBr(inst),
8439184386 .loop_switch_br => try cg.airLoopSwitchBr(inst),
......@@ -89934,14 +89929,1029 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8993489929 .clobbers = .{ .eflags = true },
8993589930 .each = .{ .once = &.{
8993689931 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
89937 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
89938 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
89939 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
89940 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
89932 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
89933 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
89934 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
89935 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
89936 } },
89937 }, .{
89938 .required_features = .{ .avx, null, null, null },
89939 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
89940 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
89941 .patterns = &.{
89942 .{ .src = .{ .mem, .none, .none } },
89943 .{ .src = .{ .to_sse, .none, .none } },
89944 },
89945 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
89946 .each = .{ .once = &.{
89947 .{ ._, .vp_q, .movsxb, .dst0x, .src0w, ._, ._ },
89948 } },
89949 }, .{
89950 .required_features = .{ .avx, null, null, null },
89951 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
89952 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
89953 .patterns = &.{
89954 .{ .src = .{ .mem, .none, .none } },
89955 .{ .src = .{ .to_sse, .none, .none } },
89956 },
89957 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
89958 .each = .{ .once = &.{
89959 .{ ._, .vp_q, .movzxb, .dst0x, .src0w, ._, ._ },
89960 } },
89961 }, .{
89962 .required_features = .{ .sse4_1, null, null, null },
89963 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
89964 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
89965 .patterns = &.{
89966 .{ .src = .{ .mem, .none, .none } },
89967 .{ .src = .{ .to_sse, .none, .none } },
89968 },
89969 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
89970 .each = .{ .once = &.{
89971 .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ },
89972 } },
89973 }, .{
89974 .required_features = .{ .sse4_1, null, null, null },
89975 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
89976 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
89977 .patterns = &.{
89978 .{ .src = .{ .mem, .none, .none } },
89979 .{ .src = .{ .to_sse, .none, .none } },
89980 },
89981 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
89982 .each = .{ .once = &.{
89983 .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ },
89984 } },
89985 }, .{
89986 .required_features = .{ .sse2, null, null, null },
89987 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
89988 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
89989 .patterns = &.{
89990 .{ .src = .{ .to_mut_sse, .none, .none } },
89991 },
89992 .extra_temps = .{
89993 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
89994 .unused,
89995 .unused,
89996 .unused,
89997 .unused,
89998 .unused,
89999 .unused,
90000 .unused,
90001 .unused,
90002 .unused,
90003 .unused,
90004 },
90005 .dst_temps = .{ .{ .ref = .src0 }, .unused },
90006 .each = .{ .once = &.{
90007 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
90008 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },
90009 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
90010 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
90011 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
90012 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
90013 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
90014 } },
90015 }, .{
90016 .required_features = .{ .sse2, null, null, null },
90017 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
90018 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
90019 .patterns = &.{
90020 .{ .src = .{ .to_mut_sse, .none, .none } },
90021 },
90022 .extra_temps = .{
90023 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
90024 .unused,
90025 .unused,
90026 .unused,
90027 .unused,
90028 .unused,
90029 .unused,
90030 .unused,
90031 .unused,
90032 .unused,
90033 .unused,
90034 },
90035 .dst_temps = .{ .{ .ref = .src0 }, .unused },
90036 .each = .{ .once = &.{
90037 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
90038 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
90039 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
90040 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
90041 } },
90042 }, .{
90043 .required_features = .{ .avx2, null, null, null },
90044 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
90045 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },
90046 .patterns = &.{
90047 .{ .src = .{ .mem, .none, .none } },
90048 .{ .src = .{ .to_sse, .none, .none } },
90049 },
90050 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90051 .each = .{ .once = &.{
90052 .{ ._, .vp_q, .movsxb, .dst0y, .src0d, ._, ._ },
90053 } },
90054 }, .{
90055 .required_features = .{ .avx2, null, null, null },
90056 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
90057 .dst_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .qword } }, .any },
90058 .patterns = &.{
90059 .{ .src = .{ .mem, .none, .none } },
90060 .{ .src = .{ .to_sse, .none, .none } },
90061 },
90062 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90063 .each = .{ .once = &.{
90064 .{ ._, .vp_q, .movzxb, .dst0y, .src0d, ._, ._ },
90065 } },
90066 }, .{
90067 .required_features = .{ .avx2, null, null, null },
90068 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
90069 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },
90070 .patterns = &.{
90071 .{ .src = .{ .to_mem, .none, .none } },
90072 },
90073 .extra_temps = .{
90074 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90075 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
90076 .unused,
90077 .unused,
90078 .unused,
90079 .unused,
90080 .unused,
90081 .unused,
90082 .unused,
90083 .unused,
90084 .unused,
90085 },
90086 .dst_temps = .{ .mem, .unused },
90087 .clobbers = .{ .eflags = true },
90088 .each = .{ .once = &.{
90089 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90090 .{ .@"0:", .vp_q, .movsxb, .tmp1y, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
90091 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
90092 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
90093 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90094 } },
90095 }, .{
90096 .required_features = .{ .avx2, null, null, null },
90097 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
90098 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }, .any },
90099 .patterns = &.{
90100 .{ .src = .{ .to_mem, .none, .none } },
90101 },
90102 .extra_temps = .{
90103 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90104 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
90105 .unused,
90106 .unused,
90107 .unused,
90108 .unused,
90109 .unused,
90110 .unused,
90111 .unused,
90112 .unused,
90113 .unused,
90114 },
90115 .dst_temps = .{ .mem, .unused },
90116 .clobbers = .{ .eflags = true },
90117 .each = .{ .once = &.{
90118 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90119 .{ .@"0:", .vp_q, .movzxb, .tmp1y, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
90120 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
90121 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
90122 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90123 } },
90124 }, .{
90125 .required_features = .{ .avx, null, null, null },
90126 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
90127 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
90128 .patterns = &.{
90129 .{ .src = .{ .to_mem, .none, .none } },
90130 },
90131 .extra_temps = .{
90132 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90133 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
90134 .unused,
90135 .unused,
90136 .unused,
90137 .unused,
90138 .unused,
90139 .unused,
90140 .unused,
90141 .unused,
90142 .unused,
90143 },
90144 .dst_temps = .{ .mem, .unused },
90145 .clobbers = .{ .eflags = true },
90146 .each = .{ .once = &.{
90147 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90148 .{ .@"0:", .vp_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
90149 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
90150 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
90151 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90152 } },
90153 }, .{
90154 .required_features = .{ .avx, null, null, null },
90155 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
90156 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }, .any },
90157 .patterns = &.{
90158 .{ .src = .{ .to_mem, .none, .none } },
90159 },
90160 .extra_temps = .{
90161 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90162 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
90163 .unused,
90164 .unused,
90165 .unused,
90166 .unused,
90167 .unused,
90168 .unused,
90169 .unused,
90170 .unused,
90171 .unused,
90172 },
90173 .dst_temps = .{ .mem, .unused },
90174 .clobbers = .{ .eflags = true },
90175 .each = .{ .once = &.{
90176 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90177 .{ .@"0:", .vp_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
90178 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
90179 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
90180 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90181 } },
90182 }, .{
90183 .required_features = .{ .sse4_1, null, null, null },
90184 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
90185 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
90186 .patterns = &.{
90187 .{ .src = .{ .to_mem, .none, .none } },
90188 },
90189 .extra_temps = .{
90190 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90191 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
90192 .unused,
90193 .unused,
90194 .unused,
90195 .unused,
90196 .unused,
90197 .unused,
90198 .unused,
90199 .unused,
90200 .unused,
90201 },
90202 .dst_temps = .{ .mem, .unused },
90203 .clobbers = .{ .eflags = true },
90204 .each = .{ .once = &.{
90205 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90206 .{ .@"0:", .p_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
90207 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
90208 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
90209 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90210 } },
90211 }, .{
90212 .required_features = .{ .sse4_1, null, null, null },
90213 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
90214 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }, .any },
90215 .patterns = &.{
90216 .{ .src = .{ .to_mem, .none, .none } },
90217 },
90218 .extra_temps = .{
90219 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90220 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
90221 .unused,
90222 .unused,
90223 .unused,
90224 .unused,
90225 .unused,
90226 .unused,
90227 .unused,
90228 .unused,
90229 .unused,
90230 },
90231 .dst_temps = .{ .mem, .unused },
90232 .clobbers = .{ .eflags = true },
90233 .each = .{ .once = &.{
90234 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90235 .{ .@"0:", .p_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
90236 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
90237 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
90238 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90239 } },
90240 }, .{
90241 .required_features = .{ .@"64bit", .slow_incdec, null, null },
90242 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
90243 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
90244 .patterns = &.{
90245 .{ .src = .{ .to_mem, .none, .none } },
90246 },
90247 .extra_temps = .{
90248 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90249 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
90250 .unused,
90251 .unused,
90252 .unused,
90253 .unused,
90254 .unused,
90255 .unused,
90256 .unused,
90257 .unused,
90258 .unused,
90259 },
90260 .dst_temps = .{ .mem, .unused },
90261 .clobbers = .{ .eflags = true },
90262 .each = .{ .once = &.{
90263 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90264 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
90265 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
90266 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
90267 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90268 } },
90269 }, .{
90270 .required_features = .{ .@"64bit", null, null, null },
90271 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
90272 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
90273 .patterns = &.{
90274 .{ .src = .{ .to_mem, .none, .none } },
90275 },
90276 .extra_temps = .{
90277 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90278 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
90279 .unused,
90280 .unused,
90281 .unused,
90282 .unused,
90283 .unused,
90284 .unused,
90285 .unused,
90286 .unused,
90287 .unused,
90288 },
90289 .dst_temps = .{ .mem, .unused },
90290 .clobbers = .{ .eflags = true },
90291 .each = .{ .once = &.{
90292 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90293 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
90294 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
90295 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
90296 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
90297 } },
90298 }, .{
90299 .required_features = .{ .slow_incdec, null, null, null },
90300 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
90301 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
90302 .patterns = &.{
90303 .{ .src = .{ .to_mem, .none, .none } },
90304 },
90305 .extra_temps = .{
90306 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90307 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
90308 .unused,
90309 .unused,
90310 .unused,
90311 .unused,
90312 .unused,
90313 .unused,
90314 .unused,
90315 .unused,
90316 .unused,
90317 },
90318 .dst_temps = .{ .mem, .unused },
90319 .clobbers = .{ .eflags = true },
90320 .each = .{ .once = &.{
90321 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90322 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
90323 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
90324 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
90325 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90326 } },
90327 }, .{
90328 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
90329 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
90330 .patterns = &.{
90331 .{ .src = .{ .to_mem, .none, .none } },
90332 },
90333 .extra_temps = .{
90334 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90335 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
90336 .unused,
90337 .unused,
90338 .unused,
90339 .unused,
90340 .unused,
90341 .unused,
90342 .unused,
90343 .unused,
90344 .unused,
90345 },
90346 .dst_temps = .{ .mem, .unused },
90347 .clobbers = .{ .eflags = true },
90348 .each = .{ .once = &.{
90349 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90350 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
90351 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
90352 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
90353 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
90354 } },
90355 }, .{
90356 .required_features = .{ .avx, null, null, null },
90357 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
90358 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
90359 .patterns = &.{
90360 .{ .src = .{ .mem, .none, .none } },
90361 .{ .src = .{ .to_sse, .none, .none } },
90362 },
90363 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90364 .each = .{ .once = &.{
90365 .{ ._, .vp_q, .movsxb, .dst0x, .src0w, ._, ._ },
90366 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
90367 } },
90368 }, .{
90369 .required_features = .{ .avx, null, null, null },
90370 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
90371 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
90372 .patterns = &.{
90373 .{ .src = .{ .mem, .none, .none } },
90374 .{ .src = .{ .to_sse, .none, .none } },
90375 },
90376 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90377 .each = .{ .once = &.{
90378 .{ ._, .vp_q, .movzxb, .dst0x, .src0w, ._, ._ },
90379 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
90380 } },
90381 }, .{
90382 .required_features = .{ .sse4_1, null, null, null },
90383 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
90384 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
90385 .patterns = &.{
90386 .{ .src = .{ .mem, .none, .none } },
90387 .{ .src = .{ .to_sse, .none, .none } },
90388 },
90389 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90390 .each = .{ .once = &.{
90391 .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ },
90392 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
90393 } },
90394 }, .{
90395 .required_features = .{ .sse4_1, null, null, null },
90396 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
90397 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
90398 .patterns = &.{
90399 .{ .src = .{ .mem, .none, .none } },
90400 .{ .src = .{ .to_sse, .none, .none } },
90401 },
90402 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90403 .each = .{ .once = &.{
90404 .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ },
90405 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
90406 } },
90407 }, .{
90408 .required_features = .{ .sse2, null, null, null },
90409 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
90410 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
90411 .patterns = &.{
90412 .{ .src = .{ .to_mut_sse, .none, .none } },
90413 },
90414 .extra_temps = .{
90415 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
90416 .unused,
90417 .unused,
90418 .unused,
90419 .unused,
90420 .unused,
90421 .unused,
90422 .unused,
90423 .unused,
90424 .unused,
90425 .unused,
90426 },
90427 .dst_temps = .{ .{ .ref = .src0 }, .unused },
90428 .each = .{ .once = &.{
90429 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
90430 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },
90431 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
90432 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
90433 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
90434 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
90435 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
90436 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },
90437 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
90438 } },
90439 }, .{
90440 .required_features = .{ .sse2, null, null, null },
90441 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
90442 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
90443 .patterns = &.{
90444 .{ .src = .{ .to_mut_sse, .none, .none } },
90445 },
90446 .extra_temps = .{
90447 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
90448 .unused,
90449 .unused,
90450 .unused,
90451 .unused,
90452 .unused,
90453 .unused,
90454 .unused,
90455 .unused,
90456 .unused,
90457 .unused,
90458 },
90459 .dst_temps = .{ .{ .ref = .src0 }, .unused },
90460 .each = .{ .once = &.{
90461 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
90462 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
90463 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
90464 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
90465 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
90466 } },
90467 }, .{
90468 .required_features = .{ .@"64bit", .slow_incdec, null, null },
90469 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
90470 .dst_constraints = .{ .any_scalar_signed_int, .any },
90471 .patterns = &.{
90472 .{ .src = .{ .to_mem, .none, .none } },
90473 },
90474 .extra_temps = .{
90475 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90476 .{ .type = .usize, .kind = .{ .reg = .rdi } },
90477 .{ .type = .i64, .kind = .{ .reg = .rax } },
90478 .{ .type = .u32, .kind = .{ .reg = .ecx } },
90479 .unused,
90480 .unused,
90481 .unused,
90482 .unused,
90483 .unused,
90484 .unused,
90485 .unused,
90486 },
90487 .dst_temps = .{ .mem, .unused },
90488 .clobbers = .{ .eflags = true },
90489 .each = .{ .once = &.{
90490 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90491 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
90492 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
90493 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
90494 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
90495 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
90496 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
90497 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
90498 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90499 } },
90500 }, .{
90501 .required_features = .{ .@"64bit", null, null, null },
90502 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
90503 .dst_constraints = .{ .any_scalar_signed_int, .any },
90504 .patterns = &.{
90505 .{ .src = .{ .to_mem, .none, .none } },
90506 },
90507 .extra_temps = .{
90508 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90509 .{ .type = .usize, .kind = .{ .reg = .rdi } },
90510 .{ .type = .i64, .kind = .{ .reg = .rax } },
90511 .{ .type = .u32, .kind = .{ .reg = .ecx } },
90512 .unused,
90513 .unused,
90514 .unused,
90515 .unused,
90516 .unused,
90517 .unused,
90518 .unused,
90519 },
90520 .dst_temps = .{ .mem, .unused },
90521 .clobbers = .{ .eflags = true },
90522 .each = .{ .once = &.{
90523 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90524 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
90525 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
90526 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
90527 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
90528 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
90529 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
90530 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
90531 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
90532 } },
90533 }, .{
90534 .required_features = .{ .@"64bit", .slow_incdec, null, null },
90535 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
90536 .dst_constraints = .{ .any_scalar_int, .any },
90537 .patterns = &.{
90538 .{ .src = .{ .to_mem, .none, .none } },
90539 },
90540 .extra_temps = .{
90541 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90542 .{ .type = .usize, .kind = .{ .reg = .rdi } },
90543 .{ .type = .u64, .kind = .{ .reg = .rax } },
90544 .{ .type = .u32, .kind = .{ .reg = .ecx } },
90545 .unused,
90546 .unused,
90547 .unused,
90548 .unused,
90549 .unused,
90550 .unused,
90551 .unused,
90552 },
90553 .dst_temps = .{ .mem, .unused },
90554 .clobbers = .{ .eflags = true },
90555 .each = .{ .once = &.{
90556 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90557 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
90558 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
90559 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
90560 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
90561 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
90562 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
90563 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
90564 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90565 } },
90566 }, .{
90567 .required_features = .{ .@"64bit", null, null, null },
90568 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
90569 .dst_constraints = .{ .any_scalar_int, .any },
90570 .patterns = &.{
90571 .{ .src = .{ .to_mem, .none, .none } },
90572 },
90573 .extra_temps = .{
90574 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90575 .{ .type = .usize, .kind = .{ .reg = .rdi } },
90576 .{ .type = .u64, .kind = .{ .reg = .rax } },
90577 .{ .type = .u32, .kind = .{ .reg = .ecx } },
90578 .unused,
90579 .unused,
90580 .unused,
90581 .unused,
90582 .unused,
90583 .unused,
90584 .unused,
90585 },
90586 .dst_temps = .{ .mem, .unused },
90587 .clobbers = .{ .eflags = true },
90588 .each = .{ .once = &.{
90589 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90590 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
90591 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
90592 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
90593 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
90594 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
90595 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
90596 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
90597 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
90598 } },
90599 }, .{
90600 .required_features = .{ .avx, null, null, null },
90601 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
90602 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
90603 .patterns = &.{
90604 .{ .src = .{ .mem, .none, .none } },
90605 .{ .src = .{ .to_sse, .none, .none } },
90606 },
90607 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90608 .each = .{ .once = &.{
90609 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },
90610 } },
90611 }, .{
90612 .required_features = .{ .avx, null, null, null },
90613 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
90614 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
90615 .patterns = &.{
90616 .{ .src = .{ .mem, .none, .none } },
90617 .{ .src = .{ .to_sse, .none, .none } },
90618 },
90619 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90620 .each = .{ .once = &.{
90621 .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ },
90622 } },
90623 }, .{
90624 .required_features = .{ .sse4_1, null, null, null },
90625 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
90626 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
90627 .patterns = &.{
90628 .{ .src = .{ .mem, .none, .none } },
90629 .{ .src = .{ .to_sse, .none, .none } },
90630 },
90631 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90632 .each = .{ .once = &.{
90633 .{ ._, .p_d, .movsxw, .dst0x, .src0q, ._, ._ },
90634 } },
90635 }, .{
90636 .required_features = .{ .sse4_1, null, null, null },
90637 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
90638 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
90639 .patterns = &.{
90640 .{ .src = .{ .mem, .none, .none } },
90641 .{ .src = .{ .to_sse, .none, .none } },
90642 },
90643 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90644 .each = .{ .once = &.{
90645 .{ ._, .p_d, .movzxw, .dst0x, .src0q, ._, ._ },
90646 } },
90647 }, .{
90648 .required_features = .{ .sse2, null, null, null },
90649 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
90650 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
90651 .patterns = &.{
90652 .{ .src = .{ .to_mut_sse, .none, .none } },
90653 },
90654 .extra_temps = .{
90655 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
90656 .unused,
90657 .unused,
90658 .unused,
90659 .unused,
90660 .unused,
90661 .unused,
90662 .unused,
90663 .unused,
90664 .unused,
90665 .unused,
90666 },
90667 .dst_temps = .{ .{ .ref = .src0 }, .unused },
90668 .each = .{ .once = &.{
90669 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
90670 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
90671 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
90672 } },
90673 }, .{
90674 .required_features = .{ .sse2, null, null, null },
90675 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
90676 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
90677 .patterns = &.{
90678 .{ .src = .{ .to_mut_sse, .none, .none } },
90679 },
90680 .extra_temps = .{
90681 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
90682 .unused,
90683 .unused,
90684 .unused,
90685 .unused,
90686 .unused,
90687 .unused,
90688 .unused,
90689 .unused,
90690 .unused,
90691 .unused,
90692 },
90693 .dst_temps = .{ .{ .ref = .src0 }, .unused },
90694 .each = .{ .once = &.{
90695 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
90696 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
90697 } },
90698 }, .{
90699 .required_features = .{ .avx2, null, null, null },
90700 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
90701 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any },
90702 .patterns = &.{
90703 .{ .src = .{ .mem, .none, .none } },
90704 .{ .src = .{ .to_sse, .none, .none } },
90705 },
90706 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90707 .each = .{ .once = &.{
90708 .{ ._, .vp_d, .movsxw, .dst0y, .src0x, ._, ._ },
90709 } },
90710 }, .{
90711 .required_features = .{ .avx2, null, null, null },
90712 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
90713 .dst_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },
90714 .patterns = &.{
90715 .{ .src = .{ .mem, .none, .none } },
90716 .{ .src = .{ .to_sse, .none, .none } },
90717 },
90718 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90719 .each = .{ .once = &.{
90720 .{ ._, .vp_d, .movzxw, .dst0y, .src0x, ._, ._ },
90721 } },
90722 }, .{
90723 .required_features = .{ .avx2, null, null, null },
90724 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
90725 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any },
90726 .patterns = &.{
90727 .{ .src = .{ .to_mem, .none, .none } },
90728 },
90729 .extra_temps = .{
90730 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90731 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
90732 .unused,
90733 .unused,
90734 .unused,
90735 .unused,
90736 .unused,
90737 .unused,
90738 .unused,
90739 .unused,
90740 .unused,
90741 },
90742 .dst_temps = .{ .mem, .unused },
90743 .clobbers = .{ .eflags = true },
90744 .each = .{ .once = &.{
90745 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90746 .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
90747 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
90748 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
90749 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90750 } },
90751 }, .{
90752 .required_features = .{ .avx2, null, null, null },
90753 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
90754 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }, .any },
90755 .patterns = &.{
90756 .{ .src = .{ .to_mem, .none, .none } },
90757 },
90758 .extra_temps = .{
90759 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90760 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
90761 .unused,
90762 .unused,
90763 .unused,
90764 .unused,
90765 .unused,
90766 .unused,
90767 .unused,
90768 .unused,
90769 .unused,
90770 },
90771 .dst_temps = .{ .mem, .unused },
90772 .clobbers = .{ .eflags = true },
90773 .each = .{ .once = &.{
90774 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90775 .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
90776 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
90777 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
90778 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90779 } },
90780 }, .{
90781 .required_features = .{ .avx, null, null, null },
90782 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
90783 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
90784 .patterns = &.{
90785 .{ .src = .{ .to_mem, .none, .none } },
90786 },
90787 .extra_temps = .{
90788 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90789 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
90790 .unused,
90791 .unused,
90792 .unused,
90793 .unused,
90794 .unused,
90795 .unused,
90796 .unused,
90797 .unused,
90798 .unused,
90799 },
90800 .dst_temps = .{ .mem, .unused },
90801 .clobbers = .{ .eflags = true },
90802 .each = .{ .once = &.{
90803 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90804 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
90805 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
90806 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
90807 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90808 } },
90809 }, .{
90810 .required_features = .{ .avx, null, null, null },
90811 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
90812 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any },
90813 .patterns = &.{
90814 .{ .src = .{ .to_mem, .none, .none } },
90815 },
90816 .extra_temps = .{
90817 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90818 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
90819 .unused,
90820 .unused,
90821 .unused,
90822 .unused,
90823 .unused,
90824 .unused,
90825 .unused,
90826 .unused,
90827 .unused,
90828 },
90829 .dst_temps = .{ .mem, .unused },
90830 .clobbers = .{ .eflags = true },
90831 .each = .{ .once = &.{
90832 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90833 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
90834 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
90835 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
90836 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90837 } },
90838 }, .{
90839 .required_features = .{ .sse4_1, null, null, null },
90840 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
90841 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
90842 .patterns = &.{
90843 .{ .src = .{ .to_mem, .none, .none } },
90844 },
90845 .extra_temps = .{
90846 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90847 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
90848 .unused,
90849 .unused,
90850 .unused,
90851 .unused,
90852 .unused,
90853 .unused,
90854 .unused,
90855 .unused,
90856 .unused,
90857 },
90858 .dst_temps = .{ .mem, .unused },
90859 .clobbers = .{ .eflags = true },
90860 .each = .{ .once = &.{
90861 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90862 .{ .@"0:", .p_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
90863 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
90864 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
90865 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90866 } },
90867 }, .{
90868 .required_features = .{ .sse4_1, null, null, null },
90869 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
90870 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any },
90871 .patterns = &.{
90872 .{ .src = .{ .to_mem, .none, .none } },
90873 },
90874 .extra_temps = .{
90875 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90876 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
90877 .unused,
90878 .unused,
90879 .unused,
90880 .unused,
90881 .unused,
90882 .unused,
90883 .unused,
90884 .unused,
90885 .unused,
90886 },
90887 .dst_temps = .{ .mem, .unused },
90888 .clobbers = .{ .eflags = true },
90889 .each = .{ .once = &.{
90890 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90891 .{ .@"0:", .p_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
90892 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
90893 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
90894 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90895 } },
90896 }, .{
90897 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
90898 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
90899 .patterns = &.{
90900 .{ .src = .{ .to_mem, .none, .none } },
90901 },
90902 .extra_temps = .{
90903 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90904 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
90905 .unused,
90906 .unused,
90907 .unused,
90908 .unused,
90909 .unused,
90910 .unused,
90911 .unused,
90912 .unused,
90913 .unused,
90914 },
90915 .dst_temps = .{ .mem, .unused },
90916 .clobbers = .{ .eflags = true },
90917 .each = .{ .once = &.{
90918 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90919 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
90920 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
90921 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
90922 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90923 } },
90924 }, .{
90925 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
90926 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },
90927 .patterns = &.{
90928 .{ .src = .{ .to_mem, .none, .none } },
90929 },
90930 .extra_temps = .{
90931 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90932 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
90933 .unused,
90934 .unused,
90935 .unused,
90936 .unused,
90937 .unused,
90938 .unused,
90939 .unused,
90940 .unused,
90941 .unused,
90942 },
90943 .dst_temps = .{ .mem, .unused },
90944 .clobbers = .{ .eflags = true },
90945 .each = .{ .once = &.{
90946 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90947 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
90948 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
90949 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
90950 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8994190951 } },
8994290952 }, .{
8994390953 .required_features = .{ .avx, null, null, null },
89944 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
90954 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
8994590955 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
8994690956 .patterns = &.{
8994790957 .{ .src = .{ .mem, .none, .none } },
......@@ -89949,11 +90959,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8994990959 },
8995090960 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
8995190961 .each = .{ .once = &.{
89952 .{ ._, .vp_q, .movsxb, .dst0x, .src0w, ._, ._ },
90962 .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ },
8995390963 } },
8995490964 }, .{
8995590965 .required_features = .{ .avx, null, null, null },
89956 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
90966 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
8995790967 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
8995890968 .patterns = &.{
8995990969 .{ .src = .{ .mem, .none, .none } },
......@@ -89961,11 +90971,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8996190971 },
8996290972 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
8996390973 .each = .{ .once = &.{
89964 .{ ._, .vp_q, .movzxb, .dst0x, .src0w, ._, ._ },
90974 .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ },
8996590975 } },
8996690976 }, .{
8996790977 .required_features = .{ .sse4_1, null, null, null },
89968 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
90978 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
8996990979 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
8997090980 .patterns = &.{
8997190981 .{ .src = .{ .mem, .none, .none } },
......@@ -89973,11 +90983,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8997390983 },
8997490984 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
8997590985 .each = .{ .once = &.{
89976 .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ },
90986 .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ },
8997790987 } },
8997890988 }, .{
8997990989 .required_features = .{ .sse4_1, null, null, null },
89980 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
90990 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
8998190991 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
8998290992 .patterns = &.{
8998390993 .{ .src = .{ .mem, .none, .none } },
......@@ -89985,17 +90995,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8998590995 },
8998690996 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
8998790997 .each = .{ .once = &.{
89988 .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ },
90998 .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ },
8998990999 } },
8999091000 }, .{
8999191001 .required_features = .{ .sse2, null, null, null },
89992 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
91002 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
8999391003 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
8999491004 .patterns = &.{
8999591005 .{ .src = .{ .to_mut_sse, .none, .none } },
8999691006 },
8999791007 .extra_temps = .{
89998 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
91008 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
8999991009 .unused,
9000091010 .unused,
9000191011 .unused,
......@@ -90010,22 +91020,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9001091020 .dst_temps = .{ .{ .ref = .src0 }, .unused },
9001191021 .each = .{ .once = &.{
9001291022 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
90013 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },
90014 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
90015 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
91023 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
9001691024 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
9001791025 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
9001891026 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
9001991027 } },
9002091028 }, .{
9002191029 .required_features = .{ .sse2, null, null, null },
90022 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
91030 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
9002391031 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
9002491032 .patterns = &.{
9002591033 .{ .src = .{ .to_mut_sse, .none, .none } },
9002691034 },
9002791035 .extra_temps = .{
90028 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
91036 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
9002991037 .unused,
9003091038 .unused,
9003191039 .unused,
......@@ -90040,13 +91048,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9004091048 .dst_temps = .{ .{ .ref = .src0 }, .unused },
9004191049 .each = .{ .once = &.{
9004291050 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
90043 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
9004491051 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
9004591052 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
9004691053 } },
9004791054 }, .{
9004891055 .required_features = .{ .avx2, null, null, null },
90049 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
91056 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
9005091057 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },
9005191058 .patterns = &.{
9005291059 .{ .src = .{ .mem, .none, .none } },
......@@ -90054,11 +91061,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9005491061 },
9005591062 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9005691063 .each = .{ .once = &.{
90057 .{ ._, .vp_q, .movsxb, .dst0y, .src0d, ._, ._ },
91064 .{ ._, .vp_q, .movsxw, .dst0y, .src0q, ._, ._ },
9005891065 } },
9005991066 }, .{
9006091067 .required_features = .{ .avx2, null, null, null },
90061 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
91068 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
9006291069 .dst_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .qword } }, .any },
9006391070 .patterns = &.{
9006491071 .{ .src = .{ .mem, .none, .none } },
......@@ -90066,11 +91073,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9006691073 },
9006791074 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9006891075 .each = .{ .once = &.{
90069 .{ ._, .vp_q, .movzxb, .dst0y, .src0d, ._, ._ },
91076 .{ ._, .vp_q, .movzxw, .dst0y, .src0q, ._, ._ },
9007091077 } },
9007191078 }, .{
9007291079 .required_features = .{ .avx2, null, null, null },
90073 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
91080 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
9007491081 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },
9007591082 .patterns = &.{
9007691083 .{ .src = .{ .to_mem, .none, .none } },
......@@ -90092,14 +91099,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9009291099 .clobbers = .{ .eflags = true },
9009391100 .each = .{ .once = &.{
9009491101 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90095 .{ .@"0:", .vp_q, .movsxb, .tmp1y, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
90096 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
90097 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
91102 .{ .@"0:", .vp_q, .movsxw, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
91103 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
91104 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
9009891105 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9009991106 } },
9010091107 }, .{
9010191108 .required_features = .{ .avx2, null, null, null },
90102 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
91109 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
9010391110 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }, .any },
9010491111 .patterns = &.{
9010591112 .{ .src = .{ .to_mem, .none, .none } },
......@@ -90121,14 +91128,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9012191128 .clobbers = .{ .eflags = true },
9012291129 .each = .{ .once = &.{
9012391130 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90124 .{ .@"0:", .vp_q, .movzxb, .tmp1y, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
90125 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
90126 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
91131 .{ .@"0:", .vp_q, .movzxw, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
91132 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
91133 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
9012791134 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9012891135 } },
9012991136 }, .{
9013091137 .required_features = .{ .avx, null, null, null },
90131 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
91138 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
9013291139 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
9013391140 .patterns = &.{
9013491141 .{ .src = .{ .to_mem, .none, .none } },
......@@ -90150,14 +91157,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9015091157 .clobbers = .{ .eflags = true },
9015191158 .each = .{ .once = &.{
9015291159 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90153 .{ .@"0:", .vp_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
90154 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
90155 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
91160 .{ .@"0:", .vp_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
91161 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
91162 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9015691163 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9015791164 } },
9015891165 }, .{
9015991166 .required_features = .{ .avx, null, null, null },
90160 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
91167 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
9016191168 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }, .any },
9016291169 .patterns = &.{
9016391170 .{ .src = .{ .to_mem, .none, .none } },
......@@ -90179,14 +91186,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9017991186 .clobbers = .{ .eflags = true },
9018091187 .each = .{ .once = &.{
9018191188 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90182 .{ .@"0:", .vp_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
90183 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
90184 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
91189 .{ .@"0:", .vp_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
91190 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
91191 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9018591192 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9018691193 } },
9018791194 }, .{
9018891195 .required_features = .{ .sse4_1, null, null, null },
90189 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
91196 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
9019091197 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
9019191198 .patterns = &.{
9019291199 .{ .src = .{ .to_mem, .none, .none } },
......@@ -90208,14 +91215,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9020891215 .clobbers = .{ .eflags = true },
9020991216 .each = .{ .once = &.{
9021091217 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90211 .{ .@"0:", .p_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
90212 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
90213 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
91218 .{ .@"0:", .p_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
91219 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
91220 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9021491221 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9021591222 } },
9021691223 }, .{
9021791224 .required_features = .{ .sse4_1, null, null, null },
90218 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
91225 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
9021991226 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }, .any },
9022091227 .patterns = &.{
9022191228 .{ .src = .{ .to_mem, .none, .none } },
......@@ -90237,14 +91244,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9023791244 .clobbers = .{ .eflags = true },
9023891245 .each = .{ .once = &.{
9023991246 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90240 .{ .@"0:", .p_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
90241 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
90242 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
91247 .{ .@"0:", .p_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
91248 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
91249 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9024391250 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9024491251 } },
9024591252 }, .{
90246 .required_features = .{ .@"64bit", .slow_incdec, null, null },
90247 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
91253 .required_features = .{ .@"64bit", null, null, null },
91254 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
9024891255 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
9024991256 .patterns = &.{
9025091257 .{ .src = .{ .to_mem, .none, .none } },
......@@ -90266,50 +91273,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9026691273 .clobbers = .{ .eflags = true },
9026791274 .each = .{ .once = &.{
9026891275 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90269 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
90270 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
90271 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
91276 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
91277 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
91278 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9027291279 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9027391280 } },
9027491281 }, .{
9027591282 .required_features = .{ .@"64bit", null, null, null },
90276 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
90277 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
90278 .patterns = &.{
90279 .{ .src = .{ .to_mem, .none, .none } },
90280 },
90281 .extra_temps = .{
90282 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90283 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
90284 .unused,
90285 .unused,
90286 .unused,
90287 .unused,
90288 .unused,
90289 .unused,
90290 .unused,
90291 .unused,
90292 .unused,
90293 },
90294 .dst_temps = .{ .mem, .unused },
90295 .clobbers = .{ .eflags = true },
90296 .each = .{ .once = &.{
90297 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90298 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
90299 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
90300 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
90301 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
90302 } },
90303 }, .{
90304 .required_features = .{ .slow_incdec, null, null, null },
90305 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
91283 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
9030691284 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
9030791285 .patterns = &.{
9030891286 .{ .src = .{ .to_mem, .none, .none } },
9030991287 },
9031091288 .extra_temps = .{
9031191289 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90312 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
91290 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
9031391291 .unused,
9031491292 .unused,
9031591293 .unused,
......@@ -90324,42 +91302,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9032491302 .clobbers = .{ .eflags = true },
9032591303 .each = .{ .once = &.{
9032691304 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90327 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
90328 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
90329 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
91305 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
91306 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
91307 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9033091308 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9033191309 } },
90332 }, .{
90333 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
90334 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
90335 .patterns = &.{
90336 .{ .src = .{ .to_mem, .none, .none } },
90337 },
90338 .extra_temps = .{
90339 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90340 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
90341 .unused,
90342 .unused,
90343 .unused,
90344 .unused,
90345 .unused,
90346 .unused,
90347 .unused,
90348 .unused,
90349 .unused,
90350 },
90351 .dst_temps = .{ .mem, .unused },
90352 .clobbers = .{ .eflags = true },
90353 .each = .{ .once = &.{
90354 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90355 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
90356 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
90357 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
90358 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
90359 } },
9036091310 }, .{
9036191311 .required_features = .{ .avx, null, null, null },
90362 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
91312 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
9036391313 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
9036491314 .patterns = &.{
9036591315 .{ .src = .{ .mem, .none, .none } },
......@@ -90367,12 +91317,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9036791317 },
9036891318 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9036991319 .each = .{ .once = &.{
90370 .{ ._, .vp_q, .movsxb, .dst0x, .src0w, ._, ._ },
91320 .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ },
9037191321 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
9037291322 } },
9037391323 }, .{
9037491324 .required_features = .{ .avx, null, null, null },
90375 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
91325 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
9037691326 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
9037791327 .patterns = &.{
9037891328 .{ .src = .{ .mem, .none, .none } },
......@@ -90380,12 +91330,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9038091330 },
9038191331 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9038291332 .each = .{ .once = &.{
90383 .{ ._, .vp_q, .movzxb, .dst0x, .src0w, ._, ._ },
91333 .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ },
9038491334 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
9038591335 } },
9038691336 }, .{
9038791337 .required_features = .{ .sse4_1, null, null, null },
90388 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
91338 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
9038991339 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
9039091340 .patterns = &.{
9039191341 .{ .src = .{ .mem, .none, .none } },
......@@ -90393,12 +91343,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9039391343 },
9039491344 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9039591345 .each = .{ .once = &.{
90396 .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ },
91346 .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ },
9039791347 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
9039891348 } },
9039991349 }, .{
9040091350 .required_features = .{ .sse4_1, null, null, null },
90401 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
91351 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
9040291352 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
9040391353 .patterns = &.{
9040491354 .{ .src = .{ .mem, .none, .none } },
......@@ -90406,18 +91356,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9040691356 },
9040791357 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9040891358 .each = .{ .once = &.{
90409 .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ },
91359 .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ },
9041091360 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
9041191361 } },
9041291362 }, .{
9041391363 .required_features = .{ .sse2, null, null, null },
90414 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
91364 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
9041591365 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
9041691366 .patterns = &.{
9041791367 .{ .src = .{ .to_mut_sse, .none, .none } },
9041891368 },
9041991369 .extra_temps = .{
90420 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
91370 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
9042191371 .unused,
9042291372 .unused,
9042391373 .unused,
......@@ -90432,9 +91382,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9043291382 .dst_temps = .{ .{ .ref = .src0 }, .unused },
9043391383 .each = .{ .once = &.{
9043491384 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
90435 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },
90436 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
90437 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
91385 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
9043891386 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
9043991387 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
9044091388 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
......@@ -90443,13 +91391,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9044391391 } },
9044491392 }, .{
9044591393 .required_features = .{ .sse2, null, null, null },
90446 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
91394 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
9044791395 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
9044891396 .patterns = &.{
9044991397 .{ .src = .{ .to_mut_sse, .none, .none } },
9045091398 },
9045191399 .extra_temps = .{
90452 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
91400 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
9045391401 .unused,
9045491402 .unused,
9045591403 .unused,
......@@ -90464,47 +91412,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9046491412 .dst_temps = .{ .{ .ref = .src0 }, .unused },
9046591413 .each = .{ .once = &.{
9046691414 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
90467 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
9046891415 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
9046991416 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
9047091417 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
9047191418 } },
90472 }, .{
90473 .required_features = .{ .@"64bit", .slow_incdec, null, null },
90474 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
90475 .dst_constraints = .{ .any_scalar_signed_int, .any },
90476 .patterns = &.{
90477 .{ .src = .{ .to_mem, .none, .none } },
90478 },
90479 .extra_temps = .{
90480 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90481 .{ .type = .usize, .kind = .{ .reg = .rdi } },
90482 .{ .type = .i64, .kind = .{ .reg = .rax } },
90483 .{ .type = .u32, .kind = .{ .reg = .ecx } },
90484 .unused,
90485 .unused,
90486 .unused,
90487 .unused,
90488 .unused,
90489 .unused,
90490 .unused,
90491 },
90492 .dst_temps = .{ .mem, .unused },
90493 .clobbers = .{ .eflags = true },
90494 .each = .{ .once = &.{
90495 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90496 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
90497 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
90498 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
90499 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
90500 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
90501 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
90502 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
90503 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90504 } },
9050591419 }, .{
9050691420 .required_features = .{ .@"64bit", null, null, null },
90507 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
91421 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
9050891422 .dst_constraints = .{ .any_scalar_signed_int, .any },
9050991423 .patterns = &.{
9051091424 .{ .src = .{ .to_mem, .none, .none } },
......@@ -90527,50 +91441,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9052791441 .each = .{ .once = &.{
9052891442 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
9052991443 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
90530 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
91444 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
9053191445 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
9053291446 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
9053391447 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
9053491448 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
90535 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
90536 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
90537 } },
90538 }, .{
90539 .required_features = .{ .@"64bit", .slow_incdec, null, null },
90540 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
90541 .dst_constraints = .{ .any_scalar_int, .any },
90542 .patterns = &.{
90543 .{ .src = .{ .to_mem, .none, .none } },
90544 },
90545 .extra_temps = .{
90546 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90547 .{ .type = .usize, .kind = .{ .reg = .rdi } },
90548 .{ .type = .u64, .kind = .{ .reg = .rax } },
90549 .{ .type = .u32, .kind = .{ .reg = .ecx } },
90550 .unused,
90551 .unused,
90552 .unused,
90553 .unused,
90554 .unused,
90555 .unused,
90556 .unused,
90557 },
90558 .dst_temps = .{ .mem, .unused },
90559 .clobbers = .{ .eflags = true },
90560 .each = .{ .once = &.{
90561 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90562 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
90563 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
90564 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
90565 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
90566 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
90567 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
90568 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
91449 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9056991450 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9057091451 } },
9057191452 }, .{
9057291453 .required_features = .{ .@"64bit", null, null, null },
90573 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
91454 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
9057491455 .dst_constraints = .{ .any_scalar_int, .any },
9057591456 .patterns = &.{
9057691457 .{ .src = .{ .to_mem, .none, .none } },
......@@ -90593,71 +91474,71 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9059391474 .each = .{ .once = &.{
9059491475 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
9059591476 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
90596 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
91477 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
9059791478 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
9059891479 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
9059991480 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
9060091481 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
90601 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
90602 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
91482 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
91483 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9060391484 } },
9060491485 }, .{
9060591486 .required_features = .{ .avx, null, null, null },
90606 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
90607 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
91487 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
91488 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
9060891489 .patterns = &.{
9060991490 .{ .src = .{ .mem, .none, .none } },
9061091491 .{ .src = .{ .to_sse, .none, .none } },
9061191492 },
9061291493 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9061391494 .each = .{ .once = &.{
90614 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },
91495 .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ },
9061591496 } },
9061691497 }, .{
9061791498 .required_features = .{ .avx, null, null, null },
90618 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
90619 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
91499 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
91500 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
9062091501 .patterns = &.{
9062191502 .{ .src = .{ .mem, .none, .none } },
9062291503 .{ .src = .{ .to_sse, .none, .none } },
9062391504 },
9062491505 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9062591506 .each = .{ .once = &.{
90626 .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ },
91507 .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ },
9062791508 } },
9062891509 }, .{
9062991510 .required_features = .{ .sse4_1, null, null, null },
90630 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
90631 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
91511 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
91512 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
9063291513 .patterns = &.{
9063391514 .{ .src = .{ .mem, .none, .none } },
9063491515 .{ .src = .{ .to_sse, .none, .none } },
9063591516 },
9063691517 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9063791518 .each = .{ .once = &.{
90638 .{ ._, .p_d, .movsxw, .dst0x, .src0q, ._, ._ },
91519 .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ },
9063991520 } },
9064091521 }, .{
9064191522 .required_features = .{ .sse4_1, null, null, null },
90642 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
90643 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
91523 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
91524 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
9064491525 .patterns = &.{
9064591526 .{ .src = .{ .mem, .none, .none } },
9064691527 .{ .src = .{ .to_sse, .none, .none } },
9064791528 },
9064891529 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9064991530 .each = .{ .once = &.{
90650 .{ ._, .p_d, .movzxw, .dst0x, .src0q, ._, ._ },
91531 .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ },
9065191532 } },
9065291533 }, .{
9065391534 .required_features = .{ .sse2, null, null, null },
90654 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
90655 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
91535 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
91536 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
9065691537 .patterns = &.{
9065791538 .{ .src = .{ .to_mut_sse, .none, .none } },
9065891539 },
9065991540 .extra_temps = .{
90660 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
91541 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
9066191542 .unused,
9066291543 .unused,
9066391544 .unused,
......@@ -90672,18 +91553,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9067291553 .dst_temps = .{ .{ .ref = .src0 }, .unused },
9067391554 .each = .{ .once = &.{
9067491555 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
90675 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
90676 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
91556 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },
91557 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
9067791558 } },
9067891559 }, .{
9067991560 .required_features = .{ .sse2, null, null, null },
90680 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
90681 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
91561 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
91562 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
9068291563 .patterns = &.{
9068391564 .{ .src = .{ .to_mut_sse, .none, .none } },
9068491565 },
9068591566 .extra_temps = .{
90686 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
91567 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
9068791568 .unused,
9068891569 .unused,
9068991570 .unused,
......@@ -90698,42 +91579,42 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9069891579 .dst_temps = .{ .{ .ref = .src0 }, .unused },
9069991580 .each = .{ .once = &.{
9070091581 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
90701 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
91582 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
9070291583 } },
9070391584 }, .{
9070491585 .required_features = .{ .avx2, null, null, null },
90705 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
90706 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any },
91586 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
91587 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },
9070791588 .patterns = &.{
9070891589 .{ .src = .{ .mem, .none, .none } },
9070991590 .{ .src = .{ .to_sse, .none, .none } },
9071091591 },
9071191592 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9071291593 .each = .{ .once = &.{
90713 .{ ._, .vp_d, .movsxw, .dst0y, .src0x, ._, ._ },
91594 .{ ._, .vp_q, .movsxd, .dst0y, .src0x, ._, ._ },
9071491595 } },
9071591596 }, .{
9071691597 .required_features = .{ .avx2, null, null, null },
90717 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
90718 .dst_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },
91598 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
91599 .dst_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .qword } }, .any },
9071991600 .patterns = &.{
9072091601 .{ .src = .{ .mem, .none, .none } },
9072191602 .{ .src = .{ .to_sse, .none, .none } },
9072291603 },
9072391604 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9072491605 .each = .{ .once = &.{
90725 .{ ._, .vp_d, .movzxw, .dst0y, .src0x, ._, ._ },
91606 .{ ._, .vp_q, .movzxd, .dst0y, .src0x, ._, ._ },
9072691607 } },
9072791608 }, .{
9072891609 .required_features = .{ .avx2, null, null, null },
90729 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
90730 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any },
91610 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
91611 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },
9073191612 .patterns = &.{
9073291613 .{ .src = .{ .to_mem, .none, .none } },
9073391614 },
9073491615 .extra_temps = .{
9073591616 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90736 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
91617 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
9073791618 .unused,
9073891619 .unused,
9073991620 .unused,
......@@ -90748,21 +91629,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9074891629 .clobbers = .{ .eflags = true },
9074991630 .each = .{ .once = &.{
9075091631 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90751 .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
91632 .{ .@"0:", .vp_q, .movsxd, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
9075291633 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
9075391634 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
9075491635 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9075591636 } },
9075691637 }, .{
9075791638 .required_features = .{ .avx2, null, null, null },
90758 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
90759 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }, .any },
91639 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
91640 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }, .any },
9076091641 .patterns = &.{
9076191642 .{ .src = .{ .to_mem, .none, .none } },
9076291643 },
9076391644 .extra_temps = .{
9076491645 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90765 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
91646 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
9076691647 .unused,
9076791648 .unused,
9076891649 .unused,
......@@ -90777,21 +91658,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9077791658 .clobbers = .{ .eflags = true },
9077891659 .each = .{ .once = &.{
9077991660 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90780 .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
91661 .{ .@"0:", .vp_q, .movzxd, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
9078191662 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
9078291663 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
9078391664 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9078491665 } },
9078591666 }, .{
9078691667 .required_features = .{ .avx, null, null, null },
90787 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
90788 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
91668 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
91669 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
9078991670 .patterns = &.{
9079091671 .{ .src = .{ .to_mem, .none, .none } },
9079191672 },
9079291673 .extra_temps = .{
9079391674 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90794 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
91675 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
9079591676 .unused,
9079691677 .unused,
9079791678 .unused,
......@@ -90806,21 +91687,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9080691687 .clobbers = .{ .eflags = true },
9080791688 .each = .{ .once = &.{
9080891689 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90809 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
91690 .{ .@"0:", .vp_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
9081091691 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
9081191692 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
9081291693 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9081391694 } },
9081491695 }, .{
9081591696 .required_features = .{ .avx, null, null, null },
90816 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
90817 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any },
91697 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
91698 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }, .any },
9081891699 .patterns = &.{
9081991700 .{ .src = .{ .to_mem, .none, .none } },
9082091701 },
9082191702 .extra_temps = .{
9082291703 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90823 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
91704 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
9082491705 .unused,
9082591706 .unused,
9082691707 .unused,
......@@ -90835,21 +91716,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9083591716 .clobbers = .{ .eflags = true },
9083691717 .each = .{ .once = &.{
9083791718 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90838 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
91719 .{ .@"0:", .vp_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
9083991720 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
9084091721 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
9084191722 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9084291723 } },
9084391724 }, .{
9084491725 .required_features = .{ .sse4_1, null, null, null },
90845 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
90846 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
91726 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
91727 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
9084791728 .patterns = &.{
9084891729 .{ .src = .{ .to_mem, .none, .none } },
9084991730 },
9085091731 .extra_temps = .{
9085191732 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90852 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
91733 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
9085391734 .unused,
9085491735 .unused,
9085591736 .unused,
......@@ -90864,21 +91745,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9086491745 .clobbers = .{ .eflags = true },
9086591746 .each = .{ .once = &.{
9086691747 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90867 .{ .@"0:", .p_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
91748 .{ .@"0:", .p_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
9086891749 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
9086991750 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
9087091751 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9087191752 } },
9087291753 }, .{
9087391754 .required_features = .{ .sse4_1, null, null, null },
90874 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
90875 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any },
91755 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
91756 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }, .any },
9087691757 .patterns = &.{
9087791758 .{ .src = .{ .to_mem, .none, .none } },
9087891759 },
9087991760 .extra_temps = .{
9088091761 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90881 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
91762 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
9088291763 .unused,
9088391764 .unused,
9088491765 .unused,
......@@ -90893,20 +91774,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9089391774 .clobbers = .{ .eflags = true },
9089491775 .each = .{ .once = &.{
9089591776 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90896 .{ .@"0:", .p_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
91777 .{ .@"0:", .p_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
9089791778 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
9089891779 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
9089991780 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9090091781 } },
9090191782 }, .{
90902 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
90903 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
91783 .required_features = .{ .@"64bit", null, null, null },
91784 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91785 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
9090491786 .patterns = &.{
9090591787 .{ .src = .{ .to_mem, .none, .none } },
9090691788 },
9090791789 .extra_temps = .{
9090891790 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90909 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
91791 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
9091091792 .unused,
9091191793 .unused,
9091291794 .unused,
......@@ -90921,20 +91803,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9092191803 .clobbers = .{ .eflags = true },
9092291804 .each = .{ .once = &.{
9092391805 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90924 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
90925 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
90926 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
91806 .{ .@"0:", ._d, .movsx, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
91807 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
91808 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9092791809 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9092891810 } },
9092991811 }, .{
90930 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
90931 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },
91812 .required_features = .{ .@"64bit", null, null, null },
91813 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91814 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
9093291815 .patterns = &.{
9093391816 .{ .src = .{ .to_mem, .none, .none } },
9093491817 },
9093591818 .extra_temps = .{
9093691819 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90937 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
91820 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
9093891821 .unused,
9093991822 .unused,
9094091823 .unused,
......@@ -90949,68 +91832,72 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9094991832 .clobbers = .{ .eflags = true },
9095091833 .each = .{ .once = &.{
9095191834 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90952 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
90953 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
90954 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
91835 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
91836 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
91837 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9095591838 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9095691839 } },
9095791840 }, .{
9095891841 .required_features = .{ .avx, null, null, null },
90959 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
90960 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
91842 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91843 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
9096191844 .patterns = &.{
9096291845 .{ .src = .{ .mem, .none, .none } },
9096391846 .{ .src = .{ .to_sse, .none, .none } },
9096491847 },
9096591848 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9096691849 .each = .{ .once = &.{
90967 .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ },
91850 .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ },
91851 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
9096891852 } },
9096991853 }, .{
9097091854 .required_features = .{ .avx, null, null, null },
90971 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
90972 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
91855 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91856 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
9097391857 .patterns = &.{
9097491858 .{ .src = .{ .mem, .none, .none } },
9097591859 .{ .src = .{ .to_sse, .none, .none } },
9097691860 },
9097791861 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9097891862 .each = .{ .once = &.{
90979 .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ },
91863 .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ },
91864 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
9098091865 } },
9098191866 }, .{
9098291867 .required_features = .{ .sse4_1, null, null, null },
90983 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
90984 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
91868 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91869 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
9098591870 .patterns = &.{
9098691871 .{ .src = .{ .mem, .none, .none } },
9098791872 .{ .src = .{ .to_sse, .none, .none } },
9098891873 },
9098991874 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9099091875 .each = .{ .once = &.{
90991 .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ },
91876 .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ },
91877 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
9099291878 } },
9099391879 }, .{
9099491880 .required_features = .{ .sse4_1, null, null, null },
90995 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
90996 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
91881 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91882 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
9099791883 .patterns = &.{
9099891884 .{ .src = .{ .mem, .none, .none } },
9099991885 .{ .src = .{ .to_sse, .none, .none } },
9100091886 },
9100191887 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9100291888 .each = .{ .once = &.{
91003 .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ },
91889 .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ },
91890 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
9100491891 } },
9100591892 }, .{
9100691893 .required_features = .{ .sse2, null, null, null },
91007 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
91008 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
91894 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91895 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
9100991896 .patterns = &.{
9101091897 .{ .src = .{ .to_mut_sse, .none, .none } },
9101191898 },
9101291899 .extra_temps = .{
91013 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
91900 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
9101491901 .unused,
9101591902 .unused,
9101691903 .unused,
......@@ -91025,20 +91912,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9102591912 .dst_temps = .{ .{ .ref = .src0 }, .unused },
9102691913 .each = .{ .once = &.{
9102791914 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
91028 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
91029 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
91030 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
91915 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },
9103191916 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
91917 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },
91918 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
9103291919 } },
9103391920 }, .{
9103491921 .required_features = .{ .sse2, null, null, null },
91035 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
91036 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
91922 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91923 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
9103791924 .patterns = &.{
9103891925 .{ .src = .{ .to_mut_sse, .none, .none } },
9103991926 },
9104091927 .extra_temps = .{
91041 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
91928 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
9104291929 .unused,
9104391930 .unused,
9104491931 .unused,
......@@ -91053,45 +91940,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9105391940 .dst_temps = .{ .{ .ref = .src0 }, .unused },
9105491941 .each = .{ .once = &.{
9105591942 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
91056 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
9105791943 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
91944 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
9105891945 } },
9105991946 }, .{
91060 .required_features = .{ .avx2, null, null, null },
91061 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
91062 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },
91063 .patterns = &.{
91064 .{ .src = .{ .mem, .none, .none } },
91065 .{ .src = .{ .to_sse, .none, .none } },
91066 },
91067 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
91068 .each = .{ .once = &.{
91069 .{ ._, .vp_q, .movsxw, .dst0y, .src0q, ._, ._ },
91070 } },
91071 }, .{
91072 .required_features = .{ .avx2, null, null, null },
91073 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
91074 .dst_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .qword } }, .any },
91075 .patterns = &.{
91076 .{ .src = .{ .mem, .none, .none } },
91077 .{ .src = .{ .to_sse, .none, .none } },
91078 },
91079 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
91080 .each = .{ .once = &.{
91081 .{ ._, .vp_q, .movzxw, .dst0y, .src0q, ._, ._ },
91082 } },
91083 }, .{
91084 .required_features = .{ .avx2, null, null, null },
91085 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
91086 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },
91947 .required_features = .{ .@"64bit", null, null, null },
91948 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91949 .dst_constraints = .{ .any_scalar_signed_int, .any },
9108791950 .patterns = &.{
9108891951 .{ .src = .{ .to_mem, .none, .none } },
9108991952 },
9109091953 .extra_temps = .{
9109191954 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91092 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
91093 .unused,
91094 .unused,
91955 .{ .type = .usize, .kind = .{ .reg = .rdi } },
91956 .{ .type = .i64, .kind = .{ .reg = .rax } },
91957 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9109591958 .unused,
9109691959 .unused,
9109791960 .unused,
......@@ -91104,23 +91967,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9110491967 .clobbers = .{ .eflags = true },
9110591968 .each = .{ .once = &.{
9110691969 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
91107 .{ .@"0:", .vp_q, .movsxw, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
91108 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
91109 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
91970 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
91971 .{ .@"0:", ._d, .movsx, .tmp2q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
91972 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
91973 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
91974 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
91975 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
91976 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9111091977 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9111191978 } },
9111291979 }, .{
91113 .required_features = .{ .avx2, null, null, null },
91114 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
91115 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }, .any },
91980 .required_features = .{ .@"64bit", null, null, null },
91981 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91982 .dst_constraints = .{ .any_scalar_int, .any },
9111691983 .patterns = &.{
9111791984 .{ .src = .{ .to_mem, .none, .none } },
9111891985 },
9111991986 .extra_temps = .{
9112091987 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91121 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
91122 .unused,
91123 .unused,
91988 .{ .type = .usize, .kind = .{ .reg = .rdi } },
91989 .{ .type = .u64, .kind = .{ .reg = .rax } },
91990 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9112491991 .unused,
9112591992 .unused,
9112691993 .unused,
......@@ -91133,24 +92000,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9113392000 .clobbers = .{ .eflags = true },
9113492001 .each = .{ .once = &.{
9113592002 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
91136 .{ .@"0:", .vp_q, .movzxw, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
91137 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
91138 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
92003 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
92004 .{ .@"0:", ._, .mov, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
92005 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
92006 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
92007 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
92008 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
92009 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9113992010 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9114092011 } },
9114192012 }, .{
91142 .required_features = .{ .avx, null, null, null },
91143 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
91144 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
92013 .required_features = .{ .@"64bit", .slow_incdec, null, null },
92014 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
92015 .dst_constraints = .{ .any_scalar_signed_int, .any },
9114592016 .patterns = &.{
9114692017 .{ .src = .{ .to_mem, .none, .none } },
9114792018 },
9114892019 .extra_temps = .{
91149 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91150 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
91151 .unused,
91152 .unused,
91153 .unused,
92020 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
92021 .{ .type = .usize, .kind = .{ .reg = .rsi } },
92022 .{ .type = .usize, .kind = .{ .reg = .rdi } },
92023 .{ .type = .u32, .kind = .{ .reg = .ecx } },
92024 .{ .type = .i64, .kind = .{ .reg = .rax } },
9115492025 .unused,
9115592026 .unused,
9115692027 .unused,
......@@ -91161,25 +92032,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9116192032 .dst_temps = .{ .mem, .unused },
9116292033 .clobbers = .{ .eflags = true },
9116392034 .each = .{ .once = &.{
91164 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
91165 .{ .@"0:", .vp_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
91166 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
91167 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
91168 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
92035 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
92036 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
92037 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
92038 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ },
92039 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
92040 .{ ._, ._sq, .lod, ._, ._, ._, ._ },
92041 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
92042 .{ ._, ._r, .sa, .tmp4q, .ui(63), ._, ._ },
92043 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
92044 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
92045 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
92046 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
9116992047 } },
9117092048 }, .{
91171 .required_features = .{ .avx, null, null, null },
91172 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
91173 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }, .any },
92049 .required_features = .{ .@"64bit", null, null, null },
92050 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
92051 .dst_constraints = .{ .any_scalar_signed_int, .any },
9117492052 .patterns = &.{
9117592053 .{ .src = .{ .to_mem, .none, .none } },
9117692054 },
9117792055 .extra_temps = .{
91178 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91179 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
91180 .unused,
91181 .unused,
91182 .unused,
92056 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
92057 .{ .type = .usize, .kind = .{ .reg = .rsi } },
92058 .{ .type = .usize, .kind = .{ .reg = .rdi } },
92059 .{ .type = .u32, .kind = .{ .reg = .ecx } },
92060 .{ .type = .i64, .kind = .{ .reg = .rax } },
9118392061 .unused,
9118492062 .unused,
9118592063 .unused,
......@@ -91190,25 +92068,66 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9119092068 .dst_temps = .{ .mem, .unused },
9119192069 .clobbers = .{ .eflags = true },
9119292070 .each = .{ .once = &.{
91193 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
91194 .{ .@"0:", .vp_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
91195 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
91196 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
91197 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
92071 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
92072 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
92073 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
92074 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ },
92075 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
92076 .{ ._, ._sq, .lod, ._, ._, ._, ._ },
92077 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
92078 .{ ._, ._r, .sa, .tmp4q, .ui(63), ._, ._ },
92079 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
92080 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
92081 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
92082 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9119892083 } },
9119992084 }, .{
91200 .required_features = .{ .sse4_1, null, null, null },
91201 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
91202 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
92085 .required_features = .{ .@"64bit", .slow_incdec, null, null },
92086 .src_constraints = .{ .any_scalar_int, .any, .any },
92087 .dst_constraints = .{ .any_scalar_int, .any },
9120392088 .patterns = &.{
9120492089 .{ .src = .{ .to_mem, .none, .none } },
9120592090 },
9120692091 .extra_temps = .{
91207 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91208 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
92092 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
92093 .{ .type = .usize, .kind = .{ .reg = .rsi } },
92094 .{ .type = .usize, .kind = .{ .reg = .rdi } },
92095 .{ .type = .u32, .kind = .{ .reg = .ecx } },
92096 .{ .type = .u64, .kind = .{ .reg = .rax } },
92097 .unused,
92098 .unused,
92099 .unused,
9120992100 .unused,
9121092101 .unused,
9121192102 .unused,
92103 },
92104 .dst_temps = .{ .mem, .unused },
92105 .clobbers = .{ .eflags = true },
92106 .each = .{ .once = &.{
92107 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
92108 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
92109 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
92110 .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ },
92111 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
92112 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
92113 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
92114 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
92115 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
92116 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
92117 } },
92118 }, .{
92119 .required_features = .{ .@"64bit", null, null, null },
92120 .src_constraints = .{ .any_scalar_int, .any, .any },
92121 .dst_constraints = .{ .any_scalar_int, .any },
92122 .patterns = &.{
92123 .{ .src = .{ .to_mem, .none, .none } },
92124 },
92125 .extra_temps = .{
92126 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
92127 .{ .type = .usize, .kind = .{ .reg = .rsi } },
92128 .{ .type = .usize, .kind = .{ .reg = .rdi } },
92129 .{ .type = .u32, .kind = .{ .reg = .ecx } },
92130 .{ .type = .u64, .kind = .{ .reg = .rax } },
9121292131 .unused,
9121392132 .unused,
9121492133 .unused,
......@@ -91219,23 +92138,346 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9121992138 .dst_temps = .{ .mem, .unused },
9122092139 .clobbers = .{ .eflags = true },
9122192140 .each = .{ .once = &.{
91222 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
91223 .{ .@"0:", .p_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
91224 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
91225 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
91226 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
92141 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
92142 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
92143 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
92144 .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ },
92145 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
92146 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
92147 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
92148 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
92149 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
92150 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
92151 } },
92152 } }) catch |err| switch (err) {
92153 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
92154 @tagName(air_tag),
92155 dst_ty.fmt(pt),
92156 src_ty.fmt(pt),
92157 ops[0].tracking(cg),
92158 }),
92159 else => |e| return e,
92160 };
92161 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
92162 },
92163 .intcast_safe => unreachable,
92164 .trunc => |air_tag| if (use_old) try cg.airTrunc(inst) else {
92165 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
92166 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
92167 var res: [1]Temp = undefined;
92168 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
92169 .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any },
92170 .dst_constraints = .{ .{ .exact_signed_int = 1 }, .any },
92171 .patterns = &.{
92172 .{ .src = .{ .to_mut_gpr, .none, .none } },
92173 },
92174 .dst_temps = .{ .{ .ref = .src0 }, .unused },
92175 .clobbers = .{ .eflags = true },
92176 .each = .{ .once = &.{
92177 .{ ._, ._, .@"and", .dst0d, .si(1), ._, ._ },
92178 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
9122792179 } },
9122892180 }, .{
91229 .required_features = .{ .sse4_1, null, null, null },
91230 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
91231 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }, .any },
92181 .src_constraints = .{ .any_signed_int, .any, .any },
92182 .dst_constraints = .{ .{ .exact_signed_int = 1 }, .any },
92183 .patterns = &.{
92184 .{ .src = .{ .to_mem, .none, .none } },
92185 },
92186 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92187 .clobbers = .{ .eflags = true },
92188 .each = .{ .once = &.{
92189 .{ ._, ._, .movzx, .dst0d, .mem(.src0b), ._, ._ },
92190 .{ ._, ._, .@"and", .dst0d, .si(1), ._, ._ },
92191 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
92192 } },
92193 }, .{
92194 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
92195 .dst_constraints = .{ .{ .exact_int = 8 }, .any },
92196 .patterns = &.{
92197 .{ .src = .{ .mut_mem, .none, .none } },
92198 .{ .src = .{ .to_mut_gpr, .none, .none } },
92199 },
92200 .dst_temps = .{ .{ .ref = .src0 }, .unused },
92201 .each = .{ .once = &.{} },
92202 }, .{
92203 .src_constraints = .{ .any_signed_int, .any, .any },
92204 .dst_constraints = .{ .{ .exact_signed_int = 8 }, .any },
92205 .patterns = &.{
92206 .{ .src = .{ .to_mem, .none, .none } },
92207 },
92208 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92209 .each = .{ .once = &.{
92210 .{ ._, ._, .movsx, .dst0d, .mem(.src0b), ._, ._ },
92211 } },
92212 }, .{
92213 .src_constraints = .{ .any_unsigned_int, .any, .any },
92214 .dst_constraints = .{ .{ .exact_unsigned_int = 8 }, .any },
92215 .patterns = &.{
92216 .{ .src = .{ .to_mem, .none, .none } },
92217 },
92218 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92219 .each = .{ .once = &.{
92220 .{ ._, ._, .movzx, .dst0d, .mem(.src0b), ._, ._ },
92221 } },
92222 }, .{
92223 .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any },
92224 .dst_constraints = .{ .{ .signed_int = .byte }, .any },
92225 .patterns = &.{
92226 .{ .src = .{ .to_mut_gpr, .none, .none } },
92227 },
92228 .dst_temps = .{ .{ .ref = .src0 }, .unused },
92229 .clobbers = .{ .eflags = true },
92230 .each = .{ .once = &.{
92231 .{ ._, ._l, .sa, .dst0b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
92232 .{ ._, ._r, .sa, .dst0b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
92233 } },
92234 }, .{
92235 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
92236 .dst_constraints = .{ .{ .unsigned_int = .byte }, .any },
92237 .patterns = &.{
92238 .{ .src = .{ .to_mut_gpr, .none, .none } },
92239 },
92240 .dst_temps = .{ .{ .ref = .src0 }, .unused },
92241 .clobbers = .{ .eflags = true },
92242 .each = .{ .once = &.{
92243 .{ ._, ._, .@"and", .dst0b, .sa(.dst0, .add_umax), ._, ._ },
92244 } },
92245 }, .{
92246 .src_constraints = .{ .any_int, .any, .any },
92247 .dst_constraints = .{ .{ .unsigned_int = .byte }, .any },
92248 .patterns = &.{
92249 .{ .src = .{ .to_mem, .none, .none } },
92250 },
92251 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92252 .clobbers = .{ .eflags = true },
92253 .each = .{ .once = &.{
92254 .{ ._, ._, .movzx, .dst0d, .mem(.src0b), ._, ._ },
92255 .{ ._, ._, .@"and", .dst0b, .sa(.dst0, .add_umax), ._, ._ },
92256 } },
92257 }, .{
92258 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
92259 .dst_constraints = .{ .{ .exact_int = 16 }, .any },
92260 .patterns = &.{
92261 .{ .src = .{ .mut_mem, .none, .none } },
92262 .{ .src = .{ .to_mut_gpr, .none, .none } },
92263 },
92264 .dst_temps = .{ .{ .ref = .src0 }, .unused },
92265 .each = .{ .once = &.{} },
92266 }, .{
92267 .src_constraints = .{ .any_signed_int, .any, .any },
92268 .dst_constraints = .{ .{ .exact_signed_int = 16 }, .any },
92269 .patterns = &.{
92270 .{ .src = .{ .to_mem, .none, .none } },
92271 },
92272 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92273 .each = .{ .once = &.{
92274 .{ ._, ._, .movsx, .dst0d, .mem(.src0w), ._, ._ },
92275 } },
92276 }, .{
92277 .src_constraints = .{ .any_unsigned_int, .any, .any },
92278 .dst_constraints = .{ .{ .exact_unsigned_int = 16 }, .any },
92279 .patterns = &.{
92280 .{ .src = .{ .to_mem, .none, .none } },
92281 },
92282 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92283 .each = .{ .once = &.{
92284 .{ ._, ._, .movzx, .dst0d, .mem(.src0w), ._, ._ },
92285 } },
92286 }, .{
92287 .required_features = .{ .fast_imm16, null, null, null },
92288 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
92289 .dst_constraints = .{ .{ .unsigned_int = .word }, .any },
92290 .patterns = &.{
92291 .{ .src = .{ .to_mut_gpr, .none, .none } },
92292 },
92293 .dst_temps = .{ .{ .ref = .src0 }, .unused },
92294 .clobbers = .{ .eflags = true },
92295 .each = .{ .once = &.{
92296 .{ ._, ._, .@"and", .dst0w, .sa(.dst0, .add_umax), ._, ._ },
92297 } },
92298 }, .{
92299 .required_features = .{ .fast_imm16, null, null, null },
92300 .src_constraints = .{ .any_unsigned_int, .any, .any },
92301 .dst_constraints = .{ .{ .unsigned_int = .word }, .any },
92302 .patterns = &.{
92303 .{ .src = .{ .to_mem, .none, .none } },
92304 },
92305 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92306 .clobbers = .{ .eflags = true },
92307 .each = .{ .once = &.{
92308 .{ ._, ._, .movzx, .dst0d, .mem(.src0w), ._, ._ },
92309 .{ ._, ._, .@"and", .dst0w, .sa(.dst0, .add_umax), ._, ._ },
92310 } },
92311 }, .{
92312 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
92313 .dst_constraints = .{ .{ .exact_int = 32 }, .any },
92314 .patterns = &.{
92315 .{ .src = .{ .mut_mem, .none, .none } },
92316 .{ .src = .{ .to_mut_gpr, .none, .none } },
92317 },
92318 .dst_temps = .{ .{ .ref = .src0 }, .unused },
92319 .each = .{ .once = &.{} },
92320 }, .{
92321 .src_constraints = .{ .any_int, .any, .any },
92322 .dst_constraints = .{ .{ .exact_int = 32 }, .any },
92323 .patterns = &.{
92324 .{ .src = .{ .to_mem, .none, .none } },
92325 },
92326 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92327 .each = .{ .once = &.{
92328 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
92329 } },
92330 }, .{
92331 .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any },
92332 .dst_constraints = .{ .{ .signed_int = .dword }, .any },
92333 .patterns = &.{
92334 .{ .src = .{ .to_mut_gpr, .none, .none } },
92335 },
92336 .dst_temps = .{ .{ .ref = .src0 }, .unused },
92337 .clobbers = .{ .eflags = true },
92338 .each = .{ .once = &.{
92339 .{ ._, ._l, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
92340 .{ ._, ._r, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
92341 } },
92342 }, .{
92343 .src_constraints = .{ .any_signed_int, .any, .any },
92344 .dst_constraints = .{ .{ .signed_int = .dword }, .any },
92345 .patterns = &.{
92346 .{ .src = .{ .to_mem, .none, .none } },
92347 },
92348 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92349 .clobbers = .{ .eflags = true },
92350 .each = .{ .once = &.{
92351 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
92352 .{ ._, ._l, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
92353 .{ ._, ._r, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
92354 } },
92355 }, .{
92356 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
92357 .dst_constraints = .{ .{ .unsigned_int = .dword }, .any },
92358 .patterns = &.{
92359 .{ .src = .{ .to_mut_gpr, .none, .none } },
92360 },
92361 .dst_temps = .{ .{ .ref = .src0 }, .unused },
92362 .clobbers = .{ .eflags = true },
92363 .each = .{ .once = &.{
92364 .{ ._, ._, .@"and", .dst0d, .sa(.dst0, .add_umax), ._, ._ },
92365 } },
92366 }, .{
92367 .src_constraints = .{ .any_unsigned_int, .any, .any },
92368 .dst_constraints = .{ .{ .unsigned_int = .dword }, .any },
92369 .patterns = &.{
92370 .{ .src = .{ .to_mem, .none, .none } },
92371 },
92372 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92373 .clobbers = .{ .eflags = true },
92374 .each = .{ .once = &.{
92375 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
92376 .{ ._, ._, .@"and", .dst0d, .sa(.dst0, .add_umax), ._, ._ },
92377 } },
92378 }, .{
92379 .required_features = .{ .@"64bit", null, null, null },
92380 .src_constraints = .{ .any_int, .any, .any },
92381 .dst_constraints = .{ .{ .exact_int = 64 }, .any },
92382 .patterns = &.{
92383 .{ .src = .{ .to_mem, .none, .none } },
92384 },
92385 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92386 .each = .{ .once = &.{
92387 .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },
92388 } },
92389 }, .{
92390 .required_features = .{ .@"64bit", null, null, null },
92391 .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any },
92392 .dst_constraints = .{ .{ .signed_int = .qword }, .any },
92393 .patterns = &.{
92394 .{ .src = .{ .to_mut_gpr, .none, .none } },
92395 },
92396 .dst_temps = .{ .{ .ref = .src0 }, .unused },
92397 .clobbers = .{ .eflags = true },
92398 .each = .{ .once = &.{
92399 .{ ._, ._l, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
92400 .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
92401 } },
92402 }, .{
92403 .required_features = .{ .@"64bit", null, null, null },
92404 .src_constraints = .{ .any_signed_int, .any, .any },
92405 .dst_constraints = .{ .{ .signed_int = .qword }, .any },
92406 .patterns = &.{
92407 .{ .src = .{ .to_mem, .none, .none } },
92408 },
92409 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92410 .clobbers = .{ .eflags = true },
92411 .each = .{ .once = &.{
92412 .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },
92413 .{ ._, ._l, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
92414 .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
92415 } },
92416 }, .{
92417 .required_features = .{ .@"64bit", .bmi2, null, null },
92418 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
92419 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },
92420 .patterns = &.{
92421 .{ .src = .{ .mem, .none, .none } },
92422 .{ .src = .{ .to_gpr, .none, .none } },
92423 },
92424 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92425 .clobbers = .{ .eflags = true },
92426 .each = .{ .once = &.{
92427 .{ ._, ._, .mov, .dst0d, .sa(.dst0, .add_bit_size), ._, ._ },
92428 .{ ._, ._, .bzhi, .dst0q, .src0q, .dst0q, ._ },
92429 } },
92430 }, .{
92431 .required_features = .{ .@"64bit", .bmi2, null, null },
92432 .src_constraints = .{ .any_unsigned_int, .any, .any },
92433 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },
92434 .patterns = &.{
92435 .{ .src = .{ .to_mem, .none, .none } },
92436 },
92437 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92438 .clobbers = .{ .eflags = true },
92439 .each = .{ .once = &.{
92440 .{ ._, ._, .mov, .dst0d, .sa(.dst0, .add_bit_size), ._, ._ },
92441 .{ ._, ._, .bzhi, .dst0q, .mem(.src0q), .dst0q, ._ },
92442 } },
92443 }, .{
92444 .required_features = .{ .@"64bit", null, null, null },
92445 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
92446 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },
92447 .patterns = &.{
92448 .{ .src = .{ .mem, .none, .none } },
92449 .{ .src = .{ .to_gpr, .none, .none } },
92450 },
92451 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92452 .clobbers = .{ .eflags = true },
92453 .each = .{ .once = &.{
92454 .{ ._, ._, .mov, .dst0q, .ua(.dst0, .add_umax), ._, ._ },
92455 .{ ._, ._, .@"and", .dst0q, .src0q, ._, ._ },
92456 } },
92457 }, .{
92458 .required_features = .{ .@"64bit", null, null, null },
92459 .src_constraints = .{ .any_unsigned_int, .any, .any },
92460 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },
92461 .patterns = &.{
92462 .{ .src = .{ .to_mem, .none, .none } },
92463 },
92464 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92465 .clobbers = .{ .eflags = true },
92466 .each = .{ .once = &.{
92467 .{ ._, ._, .mov, .dst0q, .ua(.dst0, .add_umax), ._, ._ },
92468 .{ ._, ._, .@"and", .dst0q, .mem(.src0q), ._, ._ },
92469 } },
92470 }, .{
92471 .required_features = .{ .@"64bit", null, null, null },
92472 .src_constraints = .{ .any_int, .any, .any },
92473 .dst_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = 128 } }, .any },
9123292474 .patterns = &.{
9123392475 .{ .src = .{ .to_mem, .none, .none } },
9123492476 },
9123592477 .extra_temps = .{
91236 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91237 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
91238 .unused,
92478 .{ .type = .usize, .kind = .{ .reg = .rsi } },
92479 .{ .type = .usize, .kind = .{ .reg = .rdi } },
92480 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9123992481 .unused,
9124092482 .unused,
9124192483 .unused,
......@@ -91246,25 +92488,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9124692488 .unused,
9124792489 },
9124892490 .dst_temps = .{ .mem, .unused },
91249 .clobbers = .{ .eflags = true },
9125092491 .each = .{ .once = &.{
91251 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
91252 .{ .@"0:", .p_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
91253 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
91254 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
91255 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
92492 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
92493 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
92494 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ },
92495 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
9125692496 } },
9125792497 }, .{
9125892498 .required_features = .{ .@"64bit", null, null, null },
91259 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
91260 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
92499 .src_constraints = .{ .any_signed_int, .any, .any },
92500 .dst_constraints = .{ .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } }, .any },
9126192501 .patterns = &.{
9126292502 .{ .src = .{ .to_mem, .none, .none } },
9126392503 },
9126492504 .extra_temps = .{
91265 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91266 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
91267 .unused,
92505 .{ .type = .usize, .kind = .{ .reg = .rsi } },
92506 .{ .type = .usize, .kind = .{ .reg = .rdi } },
92507 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9126892508 .unused,
9126992509 .unused,
9127092510 .unused,
......@@ -91277,23 +92517,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9127792517 .dst_temps = .{ .mem, .unused },
9127892518 .clobbers = .{ .eflags = true },
9127992519 .each = .{ .once = &.{
91280 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
91281 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
91282 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
91283 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
91284 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
92520 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
92521 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
92522 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
92523 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
92524 .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },
92525 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
92526 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
92527 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
9128592528 } },
9128692529 }, .{
9128792530 .required_features = .{ .@"64bit", null, null, null },
91288 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
91289 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
92531 .src_constraints = .{ .any_signed_int, .any, .any },
92532 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any },
9129092533 .patterns = &.{
9129192534 .{ .src = .{ .to_mem, .none, .none } },
9129292535 },
9129392536 .extra_temps = .{
91294 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91295 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
91296 .unused,
92537 .{ .type = .usize, .kind = .{ .reg = .rsi } },
92538 .{ .type = .usize, .kind = .{ .reg = .rdi } },
92539 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9129792540 .unused,
9129892541 .unused,
9129992542 .unused,
......@@ -91306,75 +92549,88 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9130692549 .dst_temps = .{ .mem, .unused },
9130792550 .clobbers = .{ .eflags = true },
9130892551 .each = .{ .once = &.{
91309 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
91310 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
91311 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
91312 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
91313 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
92552 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
92553 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
92554 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
92555 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
92556 .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },
92557 .{ ._, ._l, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
92558 .{ ._, ._r, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
92559 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
92560 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
92561 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
9131492562 } },
9131592563 }, .{
91316 .required_features = .{ .avx, null, null, null },
91317 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
91318 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
92564 .required_features = .{ .@"64bit", null, null, null },
92565 .src_constraints = .{ .any_signed_int, .any, .any },
92566 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } }, .any },
9131992567 .patterns = &.{
91320 .{ .src = .{ .mem, .none, .none } },
91321 .{ .src = .{ .to_sse, .none, .none } },
92568 .{ .src = .{ .to_mem, .none, .none } },
9132292569 },
91323 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
91324 .each = .{ .once = &.{
91325 .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ },
91326 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
91327 } },
91328 }, .{
91329 .required_features = .{ .avx, null, null, null },
91330 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
91331 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
91332 .patterns = &.{
91333 .{ .src = .{ .mem, .none, .none } },
91334 .{ .src = .{ .to_sse, .none, .none } },
92570 .extra_temps = .{
92571 .{ .type = .usize, .kind = .{ .reg = .rsi } },
92572 .{ .type = .usize, .kind = .{ .reg = .rdi } },
92573 .{ .type = .u32, .kind = .{ .reg = .ecx } },
92574 .unused,
92575 .unused,
92576 .unused,
92577 .unused,
92578 .unused,
92579 .unused,
92580 .unused,
92581 .unused,
9133592582 },
91336 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
92583 .dst_temps = .{ .mem, .unused },
92584 .clobbers = .{ .eflags = true },
9133792585 .each = .{ .once = &.{
91338 .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ },
91339 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
92586 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
92587 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
92588 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
92589 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
92590 .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ },
92591 .{ ._, ._l, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
92592 .{ ._, ._r, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
92593 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
9134092594 } },
9134192595 }, .{
91342 .required_features = .{ .sse4_1, null, null, null },
91343 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
91344 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
92596 .required_features = .{ .@"64bit", null, null, null },
92597 .src_constraints = .{ .any_unsigned_int, .any, .any },
92598 .dst_constraints = .{ .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } }, .any },
9134592599 .patterns = &.{
91346 .{ .src = .{ .mem, .none, .none } },
91347 .{ .src = .{ .to_sse, .none, .none } },
92600 .{ .src = .{ .to_mem, .none, .none } },
9134892601 },
91349 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
91350 .each = .{ .once = &.{
91351 .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ },
91352 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
91353 } },
91354 }, .{
91355 .required_features = .{ .sse4_1, null, null, null },
91356 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
91357 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
91358 .patterns = &.{
91359 .{ .src = .{ .mem, .none, .none } },
91360 .{ .src = .{ .to_sse, .none, .none } },
92602 .extra_temps = .{
92603 .{ .type = .usize, .kind = .{ .reg = .rsi } },
92604 .{ .type = .usize, .kind = .{ .reg = .rdi } },
92605 .{ .type = .u32, .kind = .{ .reg = .ecx } },
92606 .unused,
92607 .unused,
92608 .unused,
92609 .unused,
92610 .unused,
92611 .unused,
92612 .unused,
92613 .unused,
9136192614 },
91362 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
92615 .dst_temps = .{ .mem, .unused },
9136392616 .each = .{ .once = &.{
91364 .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ },
91365 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
92617 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
92618 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
92619 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
92620 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
92621 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
9136692622 } },
9136792623 }, .{
91368 .required_features = .{ .sse2, null, null, null },
91369 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
91370 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
92624 .required_features = .{ .@"64bit", .bmi2, null, null },
92625 .src_constraints = .{ .any_unsigned_int, .any, .any },
92626 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
9137192627 .patterns = &.{
91372 .{ .src = .{ .to_mut_sse, .none, .none } },
92628 .{ .src = .{ .to_mem, .none, .none } },
9137392629 },
9137492630 .extra_temps = .{
91375 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
91376 .unused,
91377 .unused,
92631 .{ .type = .usize, .kind = .{ .reg = .rsi } },
92632 .{ .type = .usize, .kind = .{ .reg = .rdi } },
92633 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9137892634 .unused,
9137992635 .unused,
9138092636 .unused,
......@@ -91384,27 +92640,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9138492640 .unused,
9138592641 .unused,
9138692642 },
91387 .dst_temps = .{ .{ .ref = .src0 }, .unused },
92643 .dst_temps = .{ .mem, .unused },
92644 .clobbers = .{ .eflags = true },
9138892645 .each = .{ .once = &.{
91389 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
91390 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
91391 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
91392 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
91393 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
91394 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },
91395 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
92646 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
92647 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
92648 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
92649 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
92650 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
92651 .{ ._, ._, .bzhi, .tmp2q, .memad(.src0q, .add_size, -16), .tmp2q, ._ },
92652 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp2q, ._, ._ },
92653 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
9139692654 } },
9139792655 }, .{
91398 .required_features = .{ .sse2, null, null, null },
91399 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
91400 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
92656 .required_features = .{ .@"64bit", .bmi2, null, null },
92657 .src_constraints = .{ .any_unsigned_int, .any, .any },
92658 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
9140192659 .patterns = &.{
91402 .{ .src = .{ .to_mut_sse, .none, .none } },
92660 .{ .src = .{ .to_mem, .none, .none } },
9140392661 },
9140492662 .extra_temps = .{
91405 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
91406 .unused,
91407 .unused,
92663 .{ .type = .usize, .kind = .{ .reg = .rsi } },
92664 .{ .type = .usize, .kind = .{ .reg = .rdi } },
92665 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9140892666 .unused,
9140992667 .unused,
9141092668 .unused,
......@@ -91414,24 +92672,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9141492672 .unused,
9141592673 .unused,
9141692674 },
91417 .dst_temps = .{ .{ .ref = .src0 }, .unused },
92675 .dst_temps = .{ .mem, .unused },
92676 .clobbers = .{ .eflags = true },
9141892677 .each = .{ .once = &.{
91419 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
91420 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
91421 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
91422 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
92678 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
92679 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
92680 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
92681 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
92682 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
92683 .{ ._, ._, .bzhi, .tmp2q, .memad(.src0q, .add_size, -8), .tmp2q, ._ },
92684 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },
9142392685 } },
9142492686 }, .{
9142592687 .required_features = .{ .@"64bit", null, null, null },
91426 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
91427 .dst_constraints = .{ .any_scalar_signed_int, .any },
92688 .src_constraints = .{ .any_unsigned_int, .any, .any },
92689 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
9142892690 .patterns = &.{
9142992691 .{ .src = .{ .to_mem, .none, .none } },
9143092692 },
9143192693 .extra_temps = .{
91432 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92694 .{ .type = .usize, .kind = .{ .reg = .rsi } },
9143392695 .{ .type = .usize, .kind = .{ .reg = .rdi } },
91434 .{ .type = .i64, .kind = .{ .reg = .rax } },
9143592696 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9143692697 .unused,
9143792698 .unused,
......@@ -91440,31 +92701,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9144092701 .unused,
9144192702 .unused,
9144292703 .unused,
92704 .unused,
9144392705 },
9144492706 .dst_temps = .{ .mem, .unused },
9144592707 .clobbers = .{ .eflags = true },
9144692708 .each = .{ .once = &.{
91447 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
91448 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
91449 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
91450 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
91451 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
91452 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
91453 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
91454 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
91455 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
92709 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
92710 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
92711 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
92712 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
92713 .{ ._, ._, .mov, .tmp0q, .ua(.dst0, .add_umax), ._, ._ },
92714 .{ ._, ._, .@"and", .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },
92715 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
92716 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
9145692717 } },
9145792718 }, .{
9145892719 .required_features = .{ .@"64bit", null, null, null },
91459 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
91460 .dst_constraints = .{ .any_scalar_int, .any },
92720 .src_constraints = .{ .any_unsigned_int, .any, .any },
92721 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
9146192722 .patterns = &.{
9146292723 .{ .src = .{ .to_mem, .none, .none } },
9146392724 },
9146492725 .extra_temps = .{
91465 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92726 .{ .type = .usize, .kind = .{ .reg = .rsi } },
9146692727 .{ .type = .usize, .kind = .{ .reg = .rdi } },
91467 .{ .type = .u64, .kind = .{ .reg = .rax } },
9146892728 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9146992729 .unused,
9147092730 .unused,
......@@ -91473,78 +92733,135 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9147392733 .unused,
9147492734 .unused,
9147592735 .unused,
92736 .unused,
9147692737 },
9147792738 .dst_temps = .{ .mem, .unused },
9147892739 .clobbers = .{ .eflags = true },
9147992740 .each = .{ .once = &.{
91480 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
91481 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
91482 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
91483 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
91484 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
91485 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
91486 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
91487 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
91488 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
92741 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
92742 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
92743 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
92744 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
92745 .{ ._, ._, .mov, .tmp0q, .ua(.dst0, .add_umax), ._, ._ },
92746 .{ ._, ._, .@"and", .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ },
92747 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
9148992748 } },
9149092749 }, .{
9149192750 .required_features = .{ .avx, null, null, null },
91492 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
91493 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
92751 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
92752 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },
9149492753 .patterns = &.{
91495 .{ .src = .{ .mem, .none, .none } },
9149692754 .{ .src = .{ .to_sse, .none, .none } },
9149792755 },
92756 .extra_temps = .{
92757 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
92758 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
92759 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
92760 .unused,
92761 .unused,
92762 .unused,
92763 .unused,
92764 .unused,
92765 .unused,
92766 .unused,
92767 .unused,
92768 },
9149892769 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9149992770 .each = .{ .once = &.{
91500 .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ },
92771 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
92772 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
92773 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
92774 .{ ._, .vp_b, .add, .dst0x, .dst0x, .lea(.tmp0x), ._ },
92775 .{ ._, .vp_, .xor, .dst0x, .dst0x, .lea(.tmp0x), ._ },
9150192776 } },
9150292777 }, .{
9150392778 .required_features = .{ .avx, null, null, null },
91504 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
91505 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
92779 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
92780 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
9150692781 .patterns = &.{
91507 .{ .src = .{ .mem, .none, .none } },
9150892782 .{ .src = .{ .to_sse, .none, .none } },
9150992783 },
92784 .extra_temps = .{
92785 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
92786 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
92787 .unused,
92788 .unused,
92789 .unused,
92790 .unused,
92791 .unused,
92792 .unused,
92793 .unused,
92794 .unused,
92795 .unused,
92796 },
9151092797 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9151192798 .each = .{ .once = &.{
91512 .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ },
92799 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
92800 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
9151392801 } },
9151492802 }, .{
91515 .required_features = .{ .sse4_1, null, null, null },
91516 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
91517 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
92803 .required_features = .{ .sse2, null, null, null },
92804 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
92805 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },
9151892806 .patterns = &.{
91519 .{ .src = .{ .mem, .none, .none } },
91520 .{ .src = .{ .to_sse, .none, .none } },
92807 .{ .src = .{ .to_mut_sse, .none, .none } },
9152192808 },
91522 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
92809 .extra_temps = .{
92810 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
92811 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
92812 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
92813 .unused,
92814 .unused,
92815 .unused,
92816 .unused,
92817 .unused,
92818 .unused,
92819 .unused,
92820 .unused,
92821 },
92822 .dst_temps = .{ .{ .ref = .src0 }, .unused },
9152392823 .each = .{ .once = &.{
91524 .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ },
92824 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
92825 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
92826 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
92827 .{ ._, .p_b, .add, .dst0x, .lea(.tmp0x), ._, ._ },
92828 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
9152592829 } },
9152692830 }, .{
91527 .required_features = .{ .sse4_1, null, null, null },
91528 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
91529 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
92831 .required_features = .{ .sse2, null, null, null },
92832 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
92833 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
9153092834 .patterns = &.{
91531 .{ .src = .{ .mem, .none, .none } },
91532 .{ .src = .{ .to_sse, .none, .none } },
92835 .{ .src = .{ .to_mut_sse, .none, .none } },
9153392836 },
91534 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
92837 .extra_temps = .{
92838 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
92839 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
92840 .unused,
92841 .unused,
92842 .unused,
92843 .unused,
92844 .unused,
92845 .unused,
92846 .unused,
92847 .unused,
92848 .unused,
92849 },
92850 .dst_temps = .{ .{ .ref = .src0 }, .unused },
9153592851 .each = .{ .once = &.{
91536 .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ },
92852 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
92853 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
9153792854 } },
9153892855 }, .{
91539 .required_features = .{ .sse2, null, null, null },
91540 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
91541 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
92856 .required_features = .{ .sse, null, null, null },
92857 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
92858 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
9154292859 .patterns = &.{
9154392860 .{ .src = .{ .to_mut_sse, .none, .none } },
9154492861 },
9154592862 .extra_temps = .{
91546 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
91547 .unused,
92863 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
92864 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
9154892865 .unused,
9154992866 .unused,
9155092867 .unused,
......@@ -91557,21 +92874,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9155792874 },
9155892875 .dst_temps = .{ .{ .ref = .src0 }, .unused },
9155992876 .each = .{ .once = &.{
91560 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
91561 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },
91562 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
92877 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
92878 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
9156392879 } },
9156492880 }, .{
91565 .required_features = .{ .sse2, null, null, null },
91566 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
91567 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
92881 .required_features = .{ .avx2, null, null, null },
92882 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any },
92883 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any },
9156892884 .patterns = &.{
91569 .{ .src = .{ .to_mut_sse, .none, .none } },
92885 .{ .src = .{ .to_sse, .none, .none } },
9157092886 },
9157192887 .extra_temps = .{
91572 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
91573 .unused,
91574 .unused,
92888 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
92889 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
92890 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
9157592891 .unused,
9157692892 .unused,
9157792893 .unused,
......@@ -91581,47 +92897,86 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9158192897 .unused,
9158292898 .unused,
9158392899 },
91584 .dst_temps = .{ .{ .ref = .src0 }, .unused },
92900 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9158592901 .each = .{ .once = &.{
91586 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
91587 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
92902 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
92903 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
92904 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
92905 .{ ._, .vp_b, .add, .dst0y, .dst0y, .lea(.tmp0y), ._ },
92906 .{ ._, .vp_, .xor, .dst0y, .dst0y, .lea(.tmp0y), ._ },
9158892907 } },
9158992908 }, .{
9159092909 .required_features = .{ .avx2, null, null, null },
91591 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
91592 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },
92910 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any },
92911 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any },
9159392912 .patterns = &.{
91594 .{ .src = .{ .mem, .none, .none } },
9159592913 .{ .src = .{ .to_sse, .none, .none } },
9159692914 },
92915 .extra_temps = .{
92916 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
92917 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
92918 .unused,
92919 .unused,
92920 .unused,
92921 .unused,
92922 .unused,
92923 .unused,
92924 .unused,
92925 .unused,
92926 .unused,
92927 },
9159792928 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9159892929 .each = .{ .once = &.{
91599 .{ ._, .vp_q, .movsxd, .dst0y, .src0x, ._, ._ },
92930 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
92931 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
9160092932 } },
9160192933 }, .{
9160292934 .required_features = .{ .avx2, null, null, null },
91603 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
91604 .dst_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .qword } }, .any },
92935 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any },
92936 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any },
9160592937 .patterns = &.{
91606 .{ .src = .{ .mem, .none, .none } },
91607 .{ .src = .{ .to_sse, .none, .none } },
92938 .{ .src = .{ .to_mem, .none, .none } },
9160892939 },
91609 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
92940 .extra_temps = .{
92941 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92942 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
92943 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
92944 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
92945 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
92946 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
92947 .unused,
92948 .unused,
92949 .unused,
92950 .unused,
92951 .unused,
92952 },
92953 .dst_temps = .{ .mem, .unused },
92954 .clobbers = .{ .eflags = true },
9161092955 .each = .{ .once = &.{
91611 .{ ._, .vp_q, .movzxd, .dst0y, .src0x, ._, ._ },
92956 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
92957 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
92958 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
92959 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
92960 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92961 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
92962 .{ ._, .vp_b, .add, .tmp3y, .tmp3y, .tmp2y, ._ },
92963 .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp2y, ._ },
92964 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp3y, ._, ._ },
92965 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
92966 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9161292967 } },
9161392968 }, .{
9161492969 .required_features = .{ .avx2, null, null, null },
91615 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
91616 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },
92970 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any },
92971 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any },
9161792972 .patterns = &.{
9161892973 .{ .src = .{ .to_mem, .none, .none } },
9161992974 },
9162092975 .extra_temps = .{
9162192976 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91622 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
91623 .unused,
91624 .unused,
92977 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },
92978 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },
92979 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
9162592980 .unused,
9162692981 .unused,
9162792982 .unused,
......@@ -91633,26 +92988,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9163392988 .dst_temps = .{ .mem, .unused },
9163492989 .clobbers = .{ .eflags = true },
9163592990 .each = .{ .once = &.{
91636 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
91637 .{ .@"0:", .vp_q, .movsxd, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
91638 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
91639 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
92991 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
92992 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
92993 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92994 .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
92995 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },
92996 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
9164092997 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9164192998 } },
9164292999 }, .{
91643 .required_features = .{ .avx2, null, null, null },
91644 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
91645 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }, .any },
93000 .required_features = .{ .avx, null, null, null },
93001 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
93002 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },
9164693003 .patterns = &.{
9164793004 .{ .src = .{ .to_mem, .none, .none } },
9164893005 },
9164993006 .extra_temps = .{
9165093007 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91651 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
91652 .unused,
91653 .unused,
91654 .unused,
91655 .unused,
93008 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
93009 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
93010 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
93011 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
93012 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
9165693013 .unused,
9165793014 .unused,
9165893015 .unused,
......@@ -91662,24 +93019,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9166293019 .dst_temps = .{ .mem, .unused },
9166393020 .clobbers = .{ .eflags = true },
9166493021 .each = .{ .once = &.{
91665 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
91666 .{ .@"0:", .vp_q, .movzxd, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
91667 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
93022 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
93023 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
93024 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
93025 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
93026 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93027 .{ .@"0:", .vp_, .@"and", .tmp3x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
93028 .{ ._, .vp_b, .add, .tmp3x, .tmp3x, .tmp2x, ._ },
93029 .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp2x, ._ },
93030 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
9166893031 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
9166993032 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9167093033 } },
9167193034 }, .{
9167293035 .required_features = .{ .avx, null, null, null },
91673 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
91674 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
93036 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
93037 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
9167593038 .patterns = &.{
9167693039 .{ .src = .{ .to_mem, .none, .none } },
9167793040 },
9167893041 .extra_temps = .{
9167993042 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91680 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
91681 .unused,
91682 .unused,
93043 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
93044 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
93045 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
9168393046 .unused,
9168493047 .unused,
9168593048 .unused,
......@@ -91691,26 +93054,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9169193054 .dst_temps = .{ .mem, .unused },
9169293055 .clobbers = .{ .eflags = true },
9169393056 .each = .{ .once = &.{
91694 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
91695 .{ .@"0:", .vp_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
91696 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
91697 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
93057 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
93058 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
93059 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93060 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
93061 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
93062 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
9169893063 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9169993064 } },
9170093065 }, .{
91701 .required_features = .{ .avx, null, null, null },
91702 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
91703 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }, .any },
93066 .required_features = .{ .sse2, null, null, null },
93067 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
93068 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },
9170493069 .patterns = &.{
9170593070 .{ .src = .{ .to_mem, .none, .none } },
9170693071 },
9170793072 .extra_temps = .{
9170893073 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91709 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
91710 .unused,
91711 .unused,
91712 .unused,
91713 .unused,
93074 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
93075 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
93076 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
93077 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
93078 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
9171493079 .unused,
9171593080 .unused,
9171693081 .unused,
......@@ -91720,24 +93085,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9172093085 .dst_temps = .{ .mem, .unused },
9172193086 .clobbers = .{ .eflags = true },
9172293087 .each = .{ .once = &.{
91723 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
91724 .{ .@"0:", .vp_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
91725 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
91726 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
93088 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
93089 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
93090 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
93091 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
93092 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93093 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp1x, ._, ._ },
93094 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
93095 .{ ._, .p_b, .add, .tmp3x, .tmp2x, ._, ._ },
93096 .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ },
93097 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
93098 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
9172793099 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9172893100 } },
9172993101 }, .{
91730 .required_features = .{ .sse4_1, null, null, null },
91731 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
91732 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
93102 .required_features = .{ .sse2, null, null, null },
93103 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
93104 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
9173393105 .patterns = &.{
9173493106 .{ .src = .{ .to_mem, .none, .none } },
9173593107 },
9173693108 .extra_temps = .{
9173793109 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91738 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
91739 .unused,
91740 .unused,
93110 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
93111 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
93112 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
9174193113 .unused,
9174293114 .unused,
9174393115 .unused,
......@@ -91749,24 +93121,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9174993121 .dst_temps = .{ .mem, .unused },
9175093122 .clobbers = .{ .eflags = true },
9175193123 .each = .{ .once = &.{
91752 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
91753 .{ .@"0:", .p_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
91754 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
91755 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
93124 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
93125 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
93126 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93127 .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
93128 .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
93129 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
93130 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
9175693131 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9175793132 } },
9175893133 }, .{
91759 .required_features = .{ .sse4_1, null, null, null },
91760 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
91761 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }, .any },
93134 .required_features = .{ .sse, null, null, null },
93135 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
93136 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
9176293137 .patterns = &.{
9176393138 .{ .src = .{ .to_mem, .none, .none } },
9176493139 },
9176593140 .extra_temps = .{
9176693141 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91767 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
91768 .unused,
91769 .unused,
93142 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
93143 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
93144 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
9177093145 .unused,
9177193146 .unused,
9177293147 .unused,
......@@ -91778,22 +93153,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9177893153 .dst_temps = .{ .mem, .unused },
9177993154 .clobbers = .{ .eflags = true },
9178093155 .each = .{ .once = &.{
91781 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
91782 .{ .@"0:", .p_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
91783 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
91784 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
93156 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
93157 .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ },
93158 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93159 .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
93160 .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
93161 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
93162 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
9178593163 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9178693164 } },
9178793165 }, .{
91788 .required_features = .{ .@"64bit", null, null, null },
91789 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91790 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
93166 .required_features = .{ .slow_incdec, null, null, null },
93167 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
93168 .dst_constraints = .{ .{ .multiple_scalar_exact_signed_int = .{ .of = .byte, .is = 1 } }, .any },
9179193169 .patterns = &.{
9179293170 .{ .src = .{ .to_mem, .none, .none } },
9179393171 },
9179493172 .extra_temps = .{
9179593173 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91796 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
93174 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
9179793175 .unused,
9179893176 .unused,
9179993177 .unused,
......@@ -91807,22 +93185,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9180793185 .dst_temps = .{ .mem, .unused },
9180893186 .clobbers = .{ .eflags = true },
9180993187 .each = .{ .once = &.{
91810 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
91811 .{ .@"0:", ._d, .movsx, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
91812 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
91813 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
93188 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93189 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
93190 .{ ._, ._, .@"and", .tmp1b, .si(1), ._, ._ },
93191 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },
93192 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93193 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
9181493194 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9181593195 } },
9181693196 }, .{
91817 .required_features = .{ .@"64bit", null, null, null },
91818 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91819 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
93197 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
93198 .dst_constraints = .{ .{ .multiple_scalar_exact_signed_int = .{ .of = .byte, .is = 1 } }, .any },
9182093199 .patterns = &.{
9182193200 .{ .src = .{ .to_mem, .none, .none } },
9182293201 },
9182393202 .extra_temps = .{
9182493203 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91825 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
93204 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
9182693205 .unused,
9182793206 .unused,
9182893207 .unused,
......@@ -91836,74 +93215,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9183693215 .dst_temps = .{ .mem, .unused },
9183793216 .clobbers = .{ .eflags = true },
9183893217 .each = .{ .once = &.{
91839 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
91840 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
91841 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
91842 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
91843 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
91844 } },
91845 }, .{
91846 .required_features = .{ .avx, null, null, null },
91847 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91848 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
91849 .patterns = &.{
91850 .{ .src = .{ .mem, .none, .none } },
91851 .{ .src = .{ .to_sse, .none, .none } },
91852 },
91853 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
91854 .each = .{ .once = &.{
91855 .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ },
91856 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
91857 } },
91858 }, .{
91859 .required_features = .{ .avx, null, null, null },
91860 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91861 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
91862 .patterns = &.{
91863 .{ .src = .{ .mem, .none, .none } },
91864 .{ .src = .{ .to_sse, .none, .none } },
91865 },
91866 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
91867 .each = .{ .once = &.{
91868 .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ },
91869 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
91870 } },
91871 }, .{
91872 .required_features = .{ .sse4_1, null, null, null },
91873 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91874 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
91875 .patterns = &.{
91876 .{ .src = .{ .mem, .none, .none } },
91877 .{ .src = .{ .to_sse, .none, .none } },
91878 },
91879 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
91880 .each = .{ .once = &.{
91881 .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ },
91882 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
91883 } },
91884 }, .{
91885 .required_features = .{ .sse4_1, null, null, null },
91886 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91887 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
91888 .patterns = &.{
91889 .{ .src = .{ .mem, .none, .none } },
91890 .{ .src = .{ .to_sse, .none, .none } },
91891 },
91892 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
91893 .each = .{ .once = &.{
91894 .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ },
91895 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
93218 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93219 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
93220 .{ ._, ._, .@"and", .tmp1b, .si(1), ._, ._ },
93221 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },
93222 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93223 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93224 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9189693225 } },
9189793226 }, .{
91898 .required_features = .{ .sse2, null, null, null },
91899 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91900 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
93227 .required_features = .{ .slow_incdec, null, null, null },
93228 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
93229 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
9190193230 .patterns = &.{
91902 .{ .src = .{ .to_mut_sse, .none, .none } },
93231 .{ .src = .{ .to_mem, .none, .none } },
9190393232 },
9190493233 .extra_temps = .{
91905 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
91906 .unused,
93234 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93235 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
9190793236 .unused,
9190893237 .unused,
9190993238 .unused,
......@@ -91914,24 +93243,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9191493243 .unused,
9191593244 .unused,
9191693245 },
91917 .dst_temps = .{ .{ .ref = .src0 }, .unused },
93246 .dst_temps = .{ .mem, .unused },
93247 .clobbers = .{ .eflags = true },
9191893248 .each = .{ .once = &.{
91919 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
91920 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },
91921 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
91922 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },
91923 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
93249 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93250 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
93251 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93252 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93253 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93254 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93255 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9192493256 } },
9192593257 }, .{
91926 .required_features = .{ .sse2, null, null, null },
91927 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91928 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
93258 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
93259 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
9192993260 .patterns = &.{
91930 .{ .src = .{ .to_mut_sse, .none, .none } },
93261 .{ .src = .{ .to_mem, .none, .none } },
9193193262 },
9193293263 .extra_temps = .{
91933 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
91934 .unused,
93264 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93265 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
9193593266 .unused,
9193693267 .unused,
9193793268 .unused,
......@@ -91942,24 +93273,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9194293273 .unused,
9194393274 .unused,
9194493275 },
91945 .dst_temps = .{ .{ .ref = .src0 }, .unused },
93276 .dst_temps = .{ .mem, .unused },
93277 .clobbers = .{ .eflags = true },
9194693278 .each = .{ .once = &.{
91947 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
91948 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
91949 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
93279 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93280 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
93281 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93282 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93283 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93284 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93285 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9195093286 } },
9195193287 }, .{
91952 .required_features = .{ .@"64bit", null, null, null },
91953 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91954 .dst_constraints = .{ .any_scalar_signed_int, .any },
93288 .required_features = .{ .slow_incdec, null, null, null },
93289 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
93290 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
9195593291 .patterns = &.{
9195693292 .{ .src = .{ .to_mem, .none, .none } },
9195793293 },
9195893294 .extra_temps = .{
9195993295 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91960 .{ .type = .usize, .kind = .{ .reg = .rdi } },
91961 .{ .type = .i64, .kind = .{ .reg = .rax } },
91962 .{ .type = .u32, .kind = .{ .reg = .ecx } },
93296 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93297 .unused,
93298 .unused,
9196393299 .unused,
9196493300 .unused,
9196593301 .unused,
......@@ -91971,28 +93307,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9197193307 .dst_temps = .{ .mem, .unused },
9197293308 .clobbers = .{ .eflags = true },
9197393309 .each = .{ .once = &.{
91974 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
91975 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
91976 .{ .@"0:", ._d, .movsx, .tmp2q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
91977 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
91978 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
91979 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
91980 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
91981 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
93310 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93311 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
93312 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
93313 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93314 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
9198293315 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9198393316 } },
9198493317 }, .{
91985 .required_features = .{ .@"64bit", null, null, null },
91986 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91987 .dst_constraints = .{ .any_scalar_int, .any },
93318 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
93319 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
9198893320 .patterns = &.{
9198993321 .{ .src = .{ .to_mem, .none, .none } },
9199093322 },
9199193323 .extra_temps = .{
9199293324 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91993 .{ .type = .usize, .kind = .{ .reg = .rdi } },
91994 .{ .type = .u64, .kind = .{ .reg = .rax } },
91995 .{ .type = .u32, .kind = .{ .reg = .ecx } },
93325 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93326 .unused,
93327 .unused,
9199693328 .unused,
9199793329 .unused,
9199893330 .unused,
......@@ -92004,29 +93336,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9200493336 .dst_temps = .{ .mem, .unused },
9200593337 .clobbers = .{ .eflags = true },
9200693338 .each = .{ .once = &.{
92007 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
92008 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
92009 .{ .@"0:", ._, .mov, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
92010 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
92011 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
92012 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
92013 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
92014 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
92015 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93339 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93340 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
93341 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
93342 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93343 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93344 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9201693345 } },
9201793346 }, .{
92018 .required_features = .{ .@"64bit", .slow_incdec, null, null },
92019 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
92020 .dst_constraints = .{ .any_scalar_signed_int, .any },
93347 .required_features = .{ .slow_incdec, null, null, null },
93348 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
93349 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
9202193350 .patterns = &.{
9202293351 .{ .src = .{ .to_mem, .none, .none } },
9202393352 },
9202493353 .extra_temps = .{
92025 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
92026 .{ .type = .usize, .kind = .{ .reg = .rsi } },
92027 .{ .type = .usize, .kind = .{ .reg = .rdi } },
92028 .{ .type = .u32, .kind = .{ .reg = .ecx } },
92029 .{ .type = .i64, .kind = .{ .reg = .rax } },
93354 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93355 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93356 .unused,
93357 .unused,
93358 .unused,
9203093359 .unused,
9203193360 .unused,
9203293361 .unused,
......@@ -92037,32 +93366,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9203793366 .dst_temps = .{ .mem, .unused },
9203893367 .clobbers = .{ .eflags = true },
9203993368 .each = .{ .once = &.{
92040 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
92041 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
92042 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
92043 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ },
92044 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
92045 .{ ._, ._sq, .lod, ._, ._, ._, ._ },
92046 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
92047 .{ ._, ._r, .sa, .tmp4q, .ui(63), ._, ._ },
92048 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
92049 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
92050 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
92051 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
93369 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93370 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
93371 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93372 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93373 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9205293374 } },
9205393375 }, .{
92054 .required_features = .{ .@"64bit", null, null, null },
92055 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
92056 .dst_constraints = .{ .any_scalar_signed_int, .any },
93376 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
93377 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
9205793378 .patterns = &.{
9205893379 .{ .src = .{ .to_mem, .none, .none } },
9205993380 },
9206093381 .extra_temps = .{
92061 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
92062 .{ .type = .usize, .kind = .{ .reg = .rsi } },
92063 .{ .type = .usize, .kind = .{ .reg = .rdi } },
92064 .{ .type = .u32, .kind = .{ .reg = .ecx } },
92065 .{ .type = .i64, .kind = .{ .reg = .rax } },
93382 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93383 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93384 .unused,
93385 .unused,
93386 .unused,
9206693387 .unused,
9206793388 .unused,
9206893389 .unused,
......@@ -92073,32 +93394,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9207393394 .dst_temps = .{ .mem, .unused },
9207493395 .clobbers = .{ .eflags = true },
9207593396 .each = .{ .once = &.{
92076 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
92077 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
92078 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
92079 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ },
92080 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
92081 .{ ._, ._sq, .lod, ._, ._, ._, ._ },
92082 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
92083 .{ ._, ._r, .sa, .tmp4q, .ui(63), ._, ._ },
92084 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
92085 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
92086 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
93397 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93398 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
93399 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93400 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
9208793401 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9208893402 } },
9208993403 }, .{
92090 .required_features = .{ .@"64bit", .slow_incdec, null, null },
92091 .src_constraints = .{ .any_scalar_int, .any, .any },
92092 .dst_constraints = .{ .any_scalar_int, .any },
93404 .required_features = .{ .slow_incdec, null, null, null },
93405 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
93406 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
9209393407 .patterns = &.{
9209493408 .{ .src = .{ .to_mem, .none, .none } },
9209593409 },
9209693410 .extra_temps = .{
92097 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
92098 .{ .type = .usize, .kind = .{ .reg = .rsi } },
92099 .{ .type = .usize, .kind = .{ .reg = .rdi } },
92100 .{ .type = .u32, .kind = .{ .reg = .ecx } },
92101 .{ .type = .u64, .kind = .{ .reg = .rax } },
93411 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93412 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
93413 .unused,
93414 .unused,
93415 .unused,
9210293416 .unused,
9210393417 .unused,
9210493418 .unused,
......@@ -92109,30 +93423,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9210993423 .dst_temps = .{ .mem, .unused },
9211093424 .clobbers = .{ .eflags = true },
9211193425 .each = .{ .once = &.{
92112 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
92113 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
92114 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
92115 .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ },
92116 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
92117 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
92118 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
92119 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
92120 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
92121 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
93426 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93427 .{ .@"0:", ._, .movsx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
93428 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93429 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93430 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93431 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93432 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9212293433 } },
9212393434 }, .{
92124 .required_features = .{ .@"64bit", null, null, null },
92125 .src_constraints = .{ .any_scalar_int, .any, .any },
92126 .dst_constraints = .{ .any_scalar_int, .any },
93435 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
93436 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
9212793437 .patterns = &.{
9212893438 .{ .src = .{ .to_mem, .none, .none } },
9212993439 },
9213093440 .extra_temps = .{
92131 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
92132 .{ .type = .usize, .kind = .{ .reg = .rsi } },
92133 .{ .type = .usize, .kind = .{ .reg = .rdi } },
92134 .{ .type = .u32, .kind = .{ .reg = .ecx } },
92135 .{ .type = .u64, .kind = .{ .reg = .rax } },
93441 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93442 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
93443 .unused,
93444 .unused,
93445 .unused,
9213693446 .unused,
9213793447 .unused,
9213893448 .unused,
......@@ -92143,343 +93453,84 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9214393453 .dst_temps = .{ .mem, .unused },
9214493454 .clobbers = .{ .eflags = true },
9214593455 .each = .{ .once = &.{
92146 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
92147 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
92148 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
92149 .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ },
92150 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
92151 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
92152 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
92153 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
92154 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
93456 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93457 .{ .@"0:", ._, .movsx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
93458 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93459 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93460 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93461 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
9215593462 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9215693463 } },
92157 } }) catch |err| switch (err) {
92158 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
92159 @tagName(air_tag),
92160 dst_ty.fmt(pt),
92161 src_ty.fmt(pt),
92162 ops[0].tracking(cg),
92163 }),
92164 else => |e| return e,
92165 };
92166 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
92167 },
92168 .intcast_safe => unreachable,
92169 .trunc => |air_tag| if (use_old) try cg.airTrunc(inst) else {
92170 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
92171 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
92172 var res: [1]Temp = undefined;
92173 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
92174 .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any },
92175 .dst_constraints = .{ .{ .exact_signed_int = 1 }, .any },
92176 .patterns = &.{
92177 .{ .src = .{ .to_mut_gpr, .none, .none } },
92178 },
92179 .dst_temps = .{ .{ .ref = .src0 }, .unused },
92180 .clobbers = .{ .eflags = true },
92181 .each = .{ .once = &.{
92182 .{ ._, ._, .@"and", .dst0d, .si(1), ._, ._ },
92183 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
92184 } },
92185 }, .{
92186 .src_constraints = .{ .any_signed_int, .any, .any },
92187 .dst_constraints = .{ .{ .exact_signed_int = 1 }, .any },
92188 .patterns = &.{
92189 .{ .src = .{ .to_mem, .none, .none } },
92190 },
92191 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92192 .clobbers = .{ .eflags = true },
92193 .each = .{ .once = &.{
92194 .{ ._, ._, .movzx, .dst0d, .mem(.src0b), ._, ._ },
92195 .{ ._, ._, .@"and", .dst0d, .si(1), ._, ._ },
92196 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
92197 } },
92198 }, .{
92199 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
92200 .dst_constraints = .{ .{ .exact_int = 8 }, .any },
92201 .patterns = &.{
92202 .{ .src = .{ .to_mut_gpr, .none, .none } },
92203 },
92204 .dst_temps = .{ .{ .ref = .src0 }, .unused },
92205 .each = .{ .once = &.{} },
92206 }, .{
92207 .src_constraints = .{ .any_signed_int, .any, .any },
92208 .dst_constraints = .{ .{ .exact_signed_int = 8 }, .any },
92209 .patterns = &.{
92210 .{ .src = .{ .to_mem, .none, .none } },
92211 },
92212 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92213 .each = .{ .once = &.{
92214 .{ ._, ._, .movsx, .dst0d, .mem(.src0b), ._, ._ },
92215 } },
92216 }, .{
92217 .src_constraints = .{ .any_unsigned_int, .any, .any },
92218 .dst_constraints = .{ .{ .exact_unsigned_int = 8 }, .any },
92219 .patterns = &.{
92220 .{ .src = .{ .to_mem, .none, .none } },
92221 },
92222 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92223 .each = .{ .once = &.{
92224 .{ ._, ._, .movzx, .dst0d, .mem(.src0b), ._, ._ },
92225 } },
92226 }, .{
92227 .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any },
92228 .dst_constraints = .{ .{ .signed_int = .byte }, .any },
92229 .patterns = &.{
92230 .{ .src = .{ .to_mut_gpr, .none, .none } },
92231 },
92232 .dst_temps = .{ .{ .ref = .src0 }, .unused },
92233 .clobbers = .{ .eflags = true },
92234 .each = .{ .once = &.{
92235 .{ ._, ._l, .sa, .dst0b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
92236 .{ ._, ._r, .sa, .dst0b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
92237 } },
92238 }, .{
92239 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
92240 .dst_constraints = .{ .{ .unsigned_int = .byte }, .any },
92241 .patterns = &.{
92242 .{ .src = .{ .to_mut_gpr, .none, .none } },
92243 },
92244 .dst_temps = .{ .{ .ref = .src0 }, .unused },
92245 .clobbers = .{ .eflags = true },
92246 .each = .{ .once = &.{
92247 .{ ._, ._, .@"and", .dst0b, .sa(.dst0, .add_umax), ._, ._ },
92248 } },
92249 }, .{
92250 .src_constraints = .{ .any_int, .any, .any },
92251 .dst_constraints = .{ .{ .unsigned_int = .byte }, .any },
92252 .patterns = &.{
92253 .{ .src = .{ .to_mem, .none, .none } },
92254 },
92255 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92256 .clobbers = .{ .eflags = true },
92257 .each = .{ .once = &.{
92258 .{ ._, ._, .movzx, .dst0d, .mem(.src0b), ._, ._ },
92259 .{ ._, ._, .@"and", .dst0b, .sa(.dst0, .add_umax), ._, ._ },
92260 } },
92261 }, .{
92262 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
92263 .dst_constraints = .{ .{ .exact_int = 16 }, .any },
92264 .patterns = &.{
92265 .{ .src = .{ .to_mut_gpr, .none, .none } },
92266 },
92267 .dst_temps = .{ .{ .ref = .src0 }, .unused },
92268 .each = .{ .once = &.{} },
92269 }, .{
92270 .src_constraints = .{ .any_signed_int, .any, .any },
92271 .dst_constraints = .{ .{ .exact_signed_int = 16 }, .any },
92272 .patterns = &.{
92273 .{ .src = .{ .to_mem, .none, .none } },
92274 },
92275 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92276 .each = .{ .once = &.{
92277 .{ ._, ._, .movsx, .dst0d, .mem(.src0w), ._, ._ },
92278 } },
92279 }, .{
92280 .src_constraints = .{ .any_unsigned_int, .any, .any },
92281 .dst_constraints = .{ .{ .exact_unsigned_int = 16 }, .any },
92282 .patterns = &.{
92283 .{ .src = .{ .to_mem, .none, .none } },
92284 },
92285 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92286 .each = .{ .once = &.{
92287 .{ ._, ._, .movzx, .dst0d, .mem(.src0w), ._, ._ },
92288 } },
92289 }, .{
92290 .required_features = .{ .fast_imm16, null, null, null },
92291 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
92292 .dst_constraints = .{ .{ .unsigned_int = .word }, .any },
92293 .patterns = &.{
92294 .{ .src = .{ .to_mut_gpr, .none, .none } },
92295 },
92296 .dst_temps = .{ .{ .ref = .src0 }, .unused },
92297 .clobbers = .{ .eflags = true },
92298 .each = .{ .once = &.{
92299 .{ ._, ._, .@"and", .dst0w, .sa(.dst0, .add_umax), ._, ._ },
92300 } },
92301 }, .{
92302 .required_features = .{ .fast_imm16, null, null, null },
92303 .src_constraints = .{ .any_unsigned_int, .any, .any },
92304 .dst_constraints = .{ .{ .unsigned_int = .word }, .any },
92305 .patterns = &.{
92306 .{ .src = .{ .to_mem, .none, .none } },
92307 },
92308 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92309 .clobbers = .{ .eflags = true },
92310 .each = .{ .once = &.{
92311 .{ ._, ._, .movzx, .dst0d, .mem(.src0w), ._, ._ },
92312 .{ ._, ._, .@"and", .dst0w, .sa(.dst0, .add_umax), ._, ._ },
92313 } },
92314 }, .{
92315 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
92316 .dst_constraints = .{ .{ .exact_int = 32 }, .any },
92317 .patterns = &.{
92318 .{ .src = .{ .to_mut_gpr, .none, .none } },
92319 },
92320 .dst_temps = .{ .{ .ref = .src0 }, .unused },
92321 .each = .{ .once = &.{} },
92322 }, .{
92323 .src_constraints = .{ .any_int, .any, .any },
92324 .dst_constraints = .{ .{ .exact_int = 32 }, .any },
92325 .patterns = &.{
92326 .{ .src = .{ .to_mem, .none, .none } },
92327 },
92328 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92329 .each = .{ .once = &.{
92330 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
92331 } },
92332 }, .{
92333 .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any },
92334 .dst_constraints = .{ .{ .signed_int = .dword }, .any },
92335 .patterns = &.{
92336 .{ .src = .{ .to_mut_gpr, .none, .none } },
92337 },
92338 .dst_temps = .{ .{ .ref = .src0 }, .unused },
92339 .clobbers = .{ .eflags = true },
92340 .each = .{ .once = &.{
92341 .{ ._, ._l, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
92342 .{ ._, ._r, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
92343 } },
92344 }, .{
92345 .src_constraints = .{ .any_signed_int, .any, .any },
92346 .dst_constraints = .{ .{ .signed_int = .dword }, .any },
92347 .patterns = &.{
92348 .{ .src = .{ .to_mem, .none, .none } },
92349 },
92350 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92351 .clobbers = .{ .eflags = true },
92352 .each = .{ .once = &.{
92353 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
92354 .{ ._, ._l, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
92355 .{ ._, ._r, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
92356 } },
92357 }, .{
92358 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
92359 .dst_constraints = .{ .{ .unsigned_int = .dword }, .any },
92360 .patterns = &.{
92361 .{ .src = .{ .to_mut_gpr, .none, .none } },
92362 },
92363 .dst_temps = .{ .{ .ref = .src0 }, .unused },
92364 .clobbers = .{ .eflags = true },
92365 .each = .{ .once = &.{
92366 .{ ._, ._, .@"and", .dst0d, .sa(.dst0, .add_umax), ._, ._ },
92367 } },
92368 }, .{
92369 .src_constraints = .{ .any_unsigned_int, .any, .any },
92370 .dst_constraints = .{ .{ .unsigned_int = .dword }, .any },
92371 .patterns = &.{
92372 .{ .src = .{ .to_mem, .none, .none } },
92373 },
92374 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92375 .clobbers = .{ .eflags = true },
92376 .each = .{ .once = &.{
92377 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
92378 .{ ._, ._, .@"and", .dst0d, .sa(.dst0, .add_umax), ._, ._ },
92379 } },
92380 }, .{
92381 .required_features = .{ .@"64bit", null, null, null },
92382 .src_constraints = .{ .any_int, .any, .any },
92383 .dst_constraints = .{ .{ .exact_int = 64 }, .any },
92384 .patterns = &.{
92385 .{ .src = .{ .to_mem, .none, .none } },
92386 },
92387 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92388 .each = .{ .once = &.{
92389 .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },
92390 } },
92391 }, .{
92392 .required_features = .{ .@"64bit", null, null, null },
92393 .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any },
92394 .dst_constraints = .{ .{ .signed_int = .qword }, .any },
92395 .patterns = &.{
92396 .{ .src = .{ .to_mut_gpr, .none, .none } },
92397 },
92398 .dst_temps = .{ .{ .ref = .src0 }, .unused },
92399 .clobbers = .{ .eflags = true },
92400 .each = .{ .once = &.{
92401 .{ ._, ._l, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
92402 .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
92403 } },
9240493464 }, .{
92405 .required_features = .{ .@"64bit", null, null, null },
92406 .src_constraints = .{ .any_signed_int, .any, .any },
92407 .dst_constraints = .{ .{ .signed_int = .qword }, .any },
93465 .required_features = .{ .slow_incdec, null, null, null },
93466 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
93467 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
9240893468 .patterns = &.{
9240993469 .{ .src = .{ .to_mem, .none, .none } },
9241093470 },
92411 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92412 .clobbers = .{ .eflags = true },
92413 .each = .{ .once = &.{
92414 .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },
92415 .{ ._, ._l, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
92416 .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
92417 } },
92418 }, .{
92419 .required_features = .{ .@"64bit", .bmi2, null, null },
92420 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
92421 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },
92422 .patterns = &.{
92423 .{ .src = .{ .mem, .none, .none } },
92424 .{ .src = .{ .to_gpr, .none, .none } },
93471 .extra_temps = .{
93472 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93473 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93474 .unused,
93475 .unused,
93476 .unused,
93477 .unused,
93478 .unused,
93479 .unused,
93480 .unused,
93481 .unused,
93482 .unused,
9242593483 },
92426 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
93484 .dst_temps = .{ .mem, .unused },
9242793485 .clobbers = .{ .eflags = true },
9242893486 .each = .{ .once = &.{
92429 .{ ._, ._, .mov, .dst0d, .sa(.dst0, .add_bit_size), ._, ._ },
92430 .{ ._, ._, .bzhi, .dst0q, .src0q, .dst0q, ._ },
93487 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93488 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
93489 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
93490 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93491 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93492 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9243193493 } },
9243293494 }, .{
92433 .required_features = .{ .@"64bit", .bmi2, null, null },
92434 .src_constraints = .{ .any_unsigned_int, .any, .any },
92435 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },
93495 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
93496 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
9243693497 .patterns = &.{
9243793498 .{ .src = .{ .to_mem, .none, .none } },
9243893499 },
92439 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92440 .clobbers = .{ .eflags = true },
92441 .each = .{ .once = &.{
92442 .{ ._, ._, .mov, .dst0d, .sa(.dst0, .add_bit_size), ._, ._ },
92443 .{ ._, ._, .bzhi, .dst0q, .mem(.src0q), .dst0q, ._ },
92444 } },
92445 }, .{
92446 .required_features = .{ .@"64bit", null, null, null },
92447 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
92448 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },
92449 .patterns = &.{
92450 .{ .src = .{ .mem, .none, .none } },
92451 .{ .src = .{ .to_gpr, .none, .none } },
92452 },
92453 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
92454 .clobbers = .{ .eflags = true },
92455 .each = .{ .once = &.{
92456 .{ ._, ._, .mov, .dst0q, .ua(.dst0, .add_umax), ._, ._ },
92457 .{ ._, ._, .@"and", .dst0q, .src0q, ._, ._ },
92458 } },
92459 }, .{
92460 .required_features = .{ .@"64bit", null, null, null },
92461 .src_constraints = .{ .any_unsigned_int, .any, .any },
92462 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },
92463 .patterns = &.{
92464 .{ .src = .{ .to_mem, .none, .none } },
93500 .extra_temps = .{
93501 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93502 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93503 .unused,
93504 .unused,
93505 .unused,
93506 .unused,
93507 .unused,
93508 .unused,
93509 .unused,
93510 .unused,
93511 .unused,
9246593512 },
92466 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
93513 .dst_temps = .{ .mem, .unused },
9246793514 .clobbers = .{ .eflags = true },
9246893515 .each = .{ .once = &.{
92469 .{ ._, ._, .mov, .dst0q, .ua(.dst0, .add_umax), ._, ._ },
92470 .{ ._, ._, .@"and", .dst0q, .mem(.src0q), ._, ._ },
93516 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93517 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
93518 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
93519 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93520 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93521 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9247193522 } },
9247293523 }, .{
92473 .required_features = .{ .@"64bit", null, null, null },
92474 .src_constraints = .{ .any_int, .any, .any },
92475 .dst_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = 128 } }, .any },
93524 .required_features = .{ .slow_incdec, null, null, null },
93525 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
93526 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
9247693527 .patterns = &.{
9247793528 .{ .src = .{ .to_mem, .none, .none } },
9247893529 },
9247993530 .extra_temps = .{
92480 .{ .type = .usize, .kind = .{ .reg = .rsi } },
92481 .{ .type = .usize, .kind = .{ .reg = .rdi } },
92482 .{ .type = .u32, .kind = .{ .reg = .ecx } },
93531 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93532 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93533 .unused,
9248393534 .unused,
9248493535 .unused,
9248593536 .unused,
......@@ -92490,23 +93541,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9249093541 .unused,
9249193542 },
9249293543 .dst_temps = .{ .mem, .unused },
93544 .clobbers = .{ .eflags = true },
9249393545 .each = .{ .once = &.{
92494 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
92495 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
92496 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ },
92497 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
93546 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93547 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
93548 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93549 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93550 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9249893551 } },
9249993552 }, .{
92500 .required_features = .{ .@"64bit", null, null, null },
92501 .src_constraints = .{ .any_signed_int, .any, .any },
92502 .dst_constraints = .{ .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } }, .any },
93553 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
93554 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
9250393555 .patterns = &.{
9250493556 .{ .src = .{ .to_mem, .none, .none } },
9250593557 },
9250693558 .extra_temps = .{
92507 .{ .type = .usize, .kind = .{ .reg = .rsi } },
92508 .{ .type = .usize, .kind = .{ .reg = .rdi } },
92509 .{ .type = .u32, .kind = .{ .reg = .ecx } },
93559 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93560 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93561 .unused,
9251093562 .unused,
9251193563 .unused,
9251293564 .unused,
......@@ -92519,26 +93571,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9251993571 .dst_temps = .{ .mem, .unused },
9252093572 .clobbers = .{ .eflags = true },
9252193573 .each = .{ .once = &.{
92522 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
92523 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
92524 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
92525 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
92526 .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },
92527 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
92528 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
92529 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
93574 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93575 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
93576 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93577 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93578 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9253093579 } },
9253193580 }, .{
92532 .required_features = .{ .@"64bit", null, null, null },
92533 .src_constraints = .{ .any_signed_int, .any, .any },
92534 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any },
93581 .required_features = .{ .slow_incdec, null, null, null },
93582 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
93583 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
9253593584 .patterns = &.{
9253693585 .{ .src = .{ .to_mem, .none, .none } },
9253793586 },
9253893587 .extra_temps = .{
92539 .{ .type = .usize, .kind = .{ .reg = .rsi } },
92540 .{ .type = .usize, .kind = .{ .reg = .rdi } },
92541 .{ .type = .u32, .kind = .{ .reg = .ecx } },
93588 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93589 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
93590 .unused,
9254293591 .unused,
9254393592 .unused,
9254493593 .unused,
......@@ -92551,28 +93600,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9255193600 .dst_temps = .{ .mem, .unused },
9255293601 .clobbers = .{ .eflags = true },
9255393602 .each = .{ .once = &.{
92554 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
92555 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
92556 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
92557 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
92558 .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },
92559 .{ ._, ._l, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
92560 .{ ._, ._r, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
92561 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
92562 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
92563 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
93603 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93604 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
93605 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93606 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93607 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93608 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93609 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9256493610 } },
9256593611 }, .{
92566 .required_features = .{ .@"64bit", null, null, null },
92567 .src_constraints = .{ .any_signed_int, .any, .any },
92568 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } }, .any },
93612 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
93613 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
9256993614 .patterns = &.{
9257093615 .{ .src = .{ .to_mem, .none, .none } },
9257193616 },
9257293617 .extra_temps = .{
92573 .{ .type = .usize, .kind = .{ .reg = .rsi } },
92574 .{ .type = .usize, .kind = .{ .reg = .rdi } },
92575 .{ .type = .u32, .kind = .{ .reg = .ecx } },
93618 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93619 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
93620 .unused,
9257693621 .unused,
9257793622 .unused,
9257893623 .unused,
......@@ -92585,26 +93630,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9258593630 .dst_temps = .{ .mem, .unused },
9258693631 .clobbers = .{ .eflags = true },
9258793632 .each = .{ .once = &.{
92588 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
92589 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
92590 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
92591 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
92592 .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ },
92593 .{ ._, ._l, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
92594 .{ ._, ._r, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
92595 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
93633 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93634 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
93635 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93636 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93637 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93638 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93639 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9259693640 } },
9259793641 }, .{
92598 .required_features = .{ .@"64bit", null, null, null },
92599 .src_constraints = .{ .any_unsigned_int, .any, .any },
92600 .dst_constraints = .{ .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } }, .any },
93642 .required_features = .{ .bmi2, .slow_incdec, null, null },
93643 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
93644 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
9260193645 .patterns = &.{
9260293646 .{ .src = .{ .to_mem, .none, .none } },
9260393647 },
9260493648 .extra_temps = .{
92605 .{ .type = .usize, .kind = .{ .reg = .rsi } },
92606 .{ .type = .usize, .kind = .{ .reg = .rdi } },
92607 .{ .type = .u32, .kind = .{ .reg = .ecx } },
93649 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93650 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93651 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
9260893652 .unused,
9260993653 .unused,
9261093654 .unused,
......@@ -92615,24 +93659,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9261593659 .unused,
9261693660 },
9261793661 .dst_temps = .{ .mem, .unused },
93662 .clobbers = .{ .eflags = true },
9261893663 .each = .{ .once = &.{
92619 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
92620 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
92621 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
92622 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
92623 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
93664 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93665 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
93666 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
93667 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
93668 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93669 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9262493670 } },
9262593671 }, .{
92626 .required_features = .{ .@"64bit", .bmi2, null, null },
92627 .src_constraints = .{ .any_unsigned_int, .any, .any },
92628 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
93672 .required_features = .{ .bmi2, null, null, null },
93673 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
93674 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
9262993675 .patterns = &.{
9263093676 .{ .src = .{ .to_mem, .none, .none } },
92631 },
92632 .extra_temps = .{
92633 .{ .type = .usize, .kind = .{ .reg = .rsi } },
92634 .{ .type = .usize, .kind = .{ .reg = .rdi } },
92635 .{ .type = .u32, .kind = .{ .reg = .ecx } },
93677 },
93678 .extra_temps = .{
93679 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93680 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93681 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
9263693682 .unused,
9263793683 .unused,
9263893684 .unused,
......@@ -92645,26 +93691,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9264593691 .dst_temps = .{ .mem, .unused },
9264693692 .clobbers = .{ .eflags = true },
9264793693 .each = .{ .once = &.{
92648 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
92649 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
92650 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
92651 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
92652 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
92653 .{ ._, ._, .bzhi, .tmp2q, .memad(.src0q, .add_size, -16), .tmp2q, ._ },
92654 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp2q, ._, ._ },
92655 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
93694 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93695 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
93696 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
93697 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
93698 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93699 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9265693700 } },
9265793701 }, .{
92658 .required_features = .{ .@"64bit", .bmi2, null, null },
92659 .src_constraints = .{ .any_unsigned_int, .any, .any },
92660 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
93702 .required_features = .{ .slow_incdec, null, null, null },
93703 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
93704 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
9266193705 .patterns = &.{
9266293706 .{ .src = .{ .to_mem, .none, .none } },
9266393707 },
9266493708 .extra_temps = .{
92665 .{ .type = .usize, .kind = .{ .reg = .rsi } },
92666 .{ .type = .usize, .kind = .{ .reg = .rdi } },
92667 .{ .type = .u32, .kind = .{ .reg = .ecx } },
93709 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93710 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93711 .unused,
9266893712 .unused,
9266993713 .unused,
9267093714 .unused,
......@@ -92677,25 +93721,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9267793721 .dst_temps = .{ .mem, .unused },
9267893722 .clobbers = .{ .eflags = true },
9267993723 .each = .{ .once = &.{
92680 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
92681 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
92682 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
92683 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
92684 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
92685 .{ ._, ._, .bzhi, .tmp2q, .memad(.src0q, .add_size, -8), .tmp2q, ._ },
92686 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },
93724 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93725 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
93726 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
93727 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93728 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93729 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9268793730 } },
9268893731 }, .{
92689 .required_features = .{ .@"64bit", null, null, null },
92690 .src_constraints = .{ .any_unsigned_int, .any, .any },
92691 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
93732 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
93733 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
9269293734 .patterns = &.{
9269393735 .{ .src = .{ .to_mem, .none, .none } },
9269493736 },
9269593737 .extra_temps = .{
92696 .{ .type = .usize, .kind = .{ .reg = .rsi } },
92697 .{ .type = .usize, .kind = .{ .reg = .rdi } },
92698 .{ .type = .u32, .kind = .{ .reg = .ecx } },
93738 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93739 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93740 .unused,
9269993741 .unused,
9270093742 .unused,
9270193743 .unused,
......@@ -92708,26 +93750,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9270893750 .dst_temps = .{ .mem, .unused },
9270993751 .clobbers = .{ .eflags = true },
9271093752 .each = .{ .once = &.{
92711 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
92712 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
92713 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
92714 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
92715 .{ ._, ._, .mov, .tmp0q, .ua(.dst0, .add_umax), ._, ._ },
92716 .{ ._, ._, .@"and", .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },
92717 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
92718 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
93753 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93754 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
93755 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
93756 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93757 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93758 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9271993759 } },
9272093760 }, .{
92721 .required_features = .{ .@"64bit", null, null, null },
92722 .src_constraints = .{ .any_unsigned_int, .any, .any },
92723 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
93761 .required_features = .{ .slow_incdec, null, null, null },
93762 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
93763 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
9272493764 .patterns = &.{
9272593765 .{ .src = .{ .to_mem, .none, .none } },
9272693766 },
9272793767 .extra_temps = .{
92728 .{ .type = .usize, .kind = .{ .reg = .rsi } },
92729 .{ .type = .usize, .kind = .{ .reg = .rdi } },
92730 .{ .type = .u32, .kind = .{ .reg = .ecx } },
93768 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93769 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93770 .unused,
9273193771 .unused,
9273293772 .unused,
9273393773 .unused,
......@@ -92740,25 +93780,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9274093780 .dst_temps = .{ .mem, .unused },
9274193781 .clobbers = .{ .eflags = true },
9274293782 .each = .{ .once = &.{
92743 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
92744 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
92745 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
92746 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
92747 .{ ._, ._, .mov, .tmp0q, .ua(.dst0, .add_umax), ._, ._ },
92748 .{ ._, ._, .@"and", .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ },
92749 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
93783 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93784 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
93785 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93786 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93787 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9275093788 } },
9275193789 }, .{
92752 .required_features = .{ .avx, null, null, null },
92753 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
92754 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },
93790 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
93791 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
9275593792 .patterns = &.{
92756 .{ .src = .{ .to_sse, .none, .none } },
93793 .{ .src = .{ .to_mem, .none, .none } },
9275793794 },
9275893795 .extra_temps = .{
92759 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
92760 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
92761 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
93796 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93797 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93798 .unused,
9276293799 .unused,
9276393800 .unused,
9276493801 .unused,
......@@ -92768,24 +93805,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9276893805 .unused,
9276993806 .unused,
9277093807 },
92771 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
93808 .dst_temps = .{ .mem, .unused },
93809 .clobbers = .{ .eflags = true },
9277293810 .each = .{ .once = &.{
92773 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
92774 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
92775 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
92776 .{ ._, .vp_b, .add, .dst0x, .dst0x, .lea(.tmp0x), ._ },
92777 .{ ._, .vp_, .xor, .dst0x, .dst0x, .lea(.tmp0x), ._ },
93811 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93812 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
93813 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93814 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93815 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9277893816 } },
9277993817 }, .{
92780 .required_features = .{ .avx, null, null, null },
92781 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
92782 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
93818 .required_features = .{ .slow_incdec, null, null, null },
93819 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
93820 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
9278393821 .patterns = &.{
92784 .{ .src = .{ .to_sse, .none, .none } },
93822 .{ .src = .{ .to_mem, .none, .none } },
9278593823 },
9278693824 .extra_temps = .{
92787 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
92788 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
93825 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93826 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
9278993827 .unused,
9279093828 .unused,
9279193829 .unused,
......@@ -92796,22 +93834,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9279693834 .unused,
9279793835 .unused,
9279893836 },
92799 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
93837 .dst_temps = .{ .mem, .unused },
93838 .clobbers = .{ .eflags = true },
9280093839 .each = .{ .once = &.{
92801 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
92802 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
93840 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93841 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
93842 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93843 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93844 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93845 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93846 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9280393847 } },
9280493848 }, .{
92805 .required_features = .{ .sse2, null, null, null },
92806 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
92807 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },
93849 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
93850 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
9280893851 .patterns = &.{
92809 .{ .src = .{ .to_mut_sse, .none, .none } },
93852 .{ .src = .{ .to_mem, .none, .none } },
9281093853 },
9281193854 .extra_temps = .{
92812 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
92813 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
92814 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
93855 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93856 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
93857 .unused,
9281593858 .unused,
9281693859 .unused,
9281793860 .unused,
......@@ -92821,25 +93864,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9282193864 .unused,
9282293865 .unused,
9282393866 },
92824 .dst_temps = .{ .{ .ref = .src0 }, .unused },
93867 .dst_temps = .{ .mem, .unused },
93868 .clobbers = .{ .eflags = true },
9282593869 .each = .{ .once = &.{
92826 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
92827 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
92828 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
92829 .{ ._, .p_b, .add, .dst0x, .lea(.tmp0x), ._, ._ },
92830 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
93870 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93871 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
93872 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93873 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93874 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93875 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93876 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9283193877 } },
9283293878 }, .{
92833 .required_features = .{ .sse2, null, null, null },
92834 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
92835 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
93879 .required_features = .{ .bmi2, .slow_incdec, null, null },
93880 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
93881 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
9283693882 .patterns = &.{
92837 .{ .src = .{ .to_mut_sse, .none, .none } },
93883 .{ .src = .{ .to_mem, .none, .none } },
9283893884 },
9283993885 .extra_temps = .{
92840 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
92841 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
92842 .unused,
93886 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93887 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93888 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
9284393889 .unused,
9284493890 .unused,
9284593891 .unused,
......@@ -92849,22 +93895,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9284993895 .unused,
9285093896 .unused,
9285193897 },
92852 .dst_temps = .{ .{ .ref = .src0 }, .unused },
93898 .dst_temps = .{ .mem, .unused },
93899 .clobbers = .{ .eflags = true },
9285393900 .each = .{ .once = &.{
92854 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
92855 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
93901 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93902 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
93903 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
93904 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
93905 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93906 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9285693907 } },
9285793908 }, .{
92858 .required_features = .{ .sse, null, null, null },
92859 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
92860 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
93909 .required_features = .{ .bmi2, null, null, null },
93910 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
93911 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
9286193912 .patterns = &.{
92862 .{ .src = .{ .to_mut_sse, .none, .none } },
93913 .{ .src = .{ .to_mem, .none, .none } },
9286393914 },
9286493915 .extra_temps = .{
92865 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
92866 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
92867 .unused,
93916 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93917 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93918 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
9286893919 .unused,
9286993920 .unused,
9287093921 .unused,
......@@ -92874,22 +93925,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9287493925 .unused,
9287593926 .unused,
9287693927 },
92877 .dst_temps = .{ .{ .ref = .src0 }, .unused },
93928 .dst_temps = .{ .mem, .unused },
93929 .clobbers = .{ .eflags = true },
9287893930 .each = .{ .once = &.{
92879 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
92880 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
93931 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93932 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
93933 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
93934 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
93935 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93936 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9288193937 } },
9288293938 }, .{
92883 .required_features = .{ .avx2, null, null, null },
92884 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any },
92885 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any },
93939 .required_features = .{ .slow_incdec, null, null, null },
93940 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
93941 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
9288693942 .patterns = &.{
92887 .{ .src = .{ .to_sse, .none, .none } },
93943 .{ .src = .{ .to_mem, .none, .none } },
9288893944 },
9288993945 .extra_temps = .{
92890 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
92891 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
92892 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
93946 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93947 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93948 .unused,
9289393949 .unused,
9289493950 .unused,
9289593951 .unused,
......@@ -92899,24 +93955,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9289993955 .unused,
9290093956 .unused,
9290193957 },
92902 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
93958 .dst_temps = .{ .mem, .unused },
93959 .clobbers = .{ .eflags = true },
9290393960 .each = .{ .once = &.{
92904 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
92905 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
92906 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
92907 .{ ._, .vp_b, .add, .dst0y, .dst0y, .lea(.tmp0y), ._ },
92908 .{ ._, .vp_, .xor, .dst0y, .dst0y, .lea(.tmp0y), ._ },
93961 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93962 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
93963 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
93964 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93965 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93966 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9290993967 } },
9291093968 }, .{
92911 .required_features = .{ .avx2, null, null, null },
92912 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any },
92913 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any },
93969 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
93970 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
9291493971 .patterns = &.{
92915 .{ .src = .{ .to_sse, .none, .none } },
93972 .{ .src = .{ .to_mem, .none, .none } },
9291693973 },
9291793974 .extra_temps = .{
92918 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
92919 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
93975 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93976 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
9292093977 .unused,
9292193978 .unused,
9292293979 .unused,
......@@ -92927,25 +93984,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9292793984 .unused,
9292893985 .unused,
9292993986 },
92930 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
93987 .dst_temps = .{ .mem, .unused },
93988 .clobbers = .{ .eflags = true },
9293193989 .each = .{ .once = &.{
92932 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
92933 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
93990 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93991 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
93992 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
93993 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93994 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93995 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9293493996 } },
9293593997 }, .{
92936 .required_features = .{ .avx2, null, null, null },
92937 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any },
92938 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any },
93998 .required_features = .{ .slow_incdec, null, null, null },
93999 .src_constraints = .{ .any_scalar_int, .any, .any },
94000 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
9293994001 .patterns = &.{
9294094002 .{ .src = .{ .to_mem, .none, .none } },
9294194003 },
9294294004 .extra_temps = .{
9294394005 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92944 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
92945 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
92946 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
92947 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
92948 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
94006 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94007 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94008 .unused,
94009 .unused,
94010 .unused,
9294994011 .unused,
9295094012 .unused,
9295194013 .unused,
......@@ -92955,30 +94017,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9295594017 .dst_temps = .{ .mem, .unused },
9295694018 .clobbers = .{ .eflags = true },
9295794019 .each = .{ .once = &.{
92958 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
92959 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
92960 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
92961 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
9296294020 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92963 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
92964 .{ ._, .vp_b, .add, .tmp3y, .tmp3y, .tmp2y, ._ },
92965 .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp2y, ._ },
92966 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp3y, ._, ._ },
92967 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
94021 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
94022 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
94023 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
94024 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94025 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
9296894026 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9296994027 } },
9297094028 }, .{
92971 .required_features = .{ .avx2, null, null, null },
92972 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any },
92973 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any },
94029 .src_constraints = .{ .any_scalar_int, .any, .any },
94030 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
9297494031 .patterns = &.{
9297594032 .{ .src = .{ .to_mem, .none, .none } },
9297694033 },
9297794034 .extra_temps = .{
9297894035 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92979 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },
92980 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },
92981 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
94036 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94037 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94038 .unused,
9298294039 .unused,
9298394040 .unused,
9298494041 .unused,
......@@ -92990,28 +94047,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9299094047 .dst_temps = .{ .mem, .unused },
9299194048 .clobbers = .{ .eflags = true },
9299294049 .each = .{ .once = &.{
92993 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
92994 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
9299594050 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92996 .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
92997 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },
92998 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
92999 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94051 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
94052 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
94053 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
94054 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94055 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
94056 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9300094057 } },
9300194058 }, .{
93002 .required_features = .{ .avx, null, null, null },
93003 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
93004 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },
94059 .required_features = .{ .slow_incdec, null, null, null },
94060 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
94061 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
9300594062 .patterns = &.{
9300694063 .{ .src = .{ .to_mem, .none, .none } },
9300794064 },
9300894065 .extra_temps = .{
9300994066 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93010 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
93011 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
93012 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
93013 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
93014 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
94067 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94068 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
94069 .unused,
94070 .unused,
94071 .unused,
9301594072 .unused,
9301694073 .unused,
9301794074 .unused,
......@@ -93021,30 +94078,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9302194078 .dst_temps = .{ .mem, .unused },
9302294079 .clobbers = .{ .eflags = true },
9302394080 .each = .{ .once = &.{
93024 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
93025 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
93026 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
93027 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
9302894081 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93029 .{ .@"0:", .vp_, .@"and", .tmp3x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
93030 .{ ._, .vp_b, .add, .tmp3x, .tmp3x, .tmp2x, ._ },
93031 .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp2x, ._ },
93032 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
93033 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
94082 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
94083 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
94084 .{ ._, ._l, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
94085 .{ ._, ._r, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
94086 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
94087 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94088 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
9303494089 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9303594090 } },
9303694091 }, .{
93037 .required_features = .{ .avx, null, null, null },
93038 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
93039 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
94092 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
94093 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
9304094094 .patterns = &.{
9304194095 .{ .src = .{ .to_mem, .none, .none } },
9304294096 },
9304394097 .extra_temps = .{
9304494098 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93045 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
93046 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
93047 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
94099 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94100 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
94101 .unused,
9304894102 .unused,
9304994103 .unused,
9305094104 .unused,
......@@ -93056,28 +94110,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9305694110 .dst_temps = .{ .mem, .unused },
9305794111 .clobbers = .{ .eflags = true },
9305894112 .each = .{ .once = &.{
93059 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
93060 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
9306194113 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93062 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
93063 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
93064 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
93065 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94114 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
94115 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
94116 .{ ._, ._l, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
94117 .{ ._, ._r, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
94118 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
94119 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94120 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
94121 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9306694122 } },
9306794123 }, .{
93068 .required_features = .{ .sse2, null, null, null },
93069 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
93070 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },
94124 .required_features = .{ .bmi2, .slow_incdec, null, null },
94125 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
94126 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
9307194127 .patterns = &.{
9307294128 .{ .src = .{ .to_mem, .none, .none } },
9307394129 },
9307494130 .extra_temps = .{
9307594131 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93076 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
93077 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
93078 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
93079 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
93080 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
94132 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94133 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94134 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94135 .unused,
94136 .unused,
9308194137 .unused,
9308294138 .unused,
9308394139 .unused,
......@@ -93087,31 +94143,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9308794143 .dst_temps = .{ .mem, .unused },
9308894144 .clobbers = .{ .eflags = true },
9308994145 .each = .{ .once = &.{
93090 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
93091 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
93092 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
93093 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
9309494146 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93095 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp1x, ._, ._ },
93096 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
93097 .{ ._, .p_b, .add, .tmp3x, .tmp2x, ._, ._ },
93098 .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ },
93099 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
93100 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
94147 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
94148 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
94149 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },
94150 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
94151 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94152 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
9310194153 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9310294154 } },
9310394155 }, .{
93104 .required_features = .{ .sse2, null, null, null },
93105 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
93106 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
94156 .required_features = .{ .bmi2, null, null, null },
94157 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
94158 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
9310794159 .patterns = &.{
9310894160 .{ .src = .{ .to_mem, .none, .none } },
9310994161 },
9311094162 .extra_temps = .{
9311194163 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93112 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
93113 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
93114 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
94164 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94165 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94166 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
9311594167 .unused,
9311694168 .unused,
9311794169 .unused,
......@@ -93123,27 +94175,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9312394175 .dst_temps = .{ .mem, .unused },
9312494176 .clobbers = .{ .eflags = true },
9312594177 .each = .{ .once = &.{
93126 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
93127 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
9312894178 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93129 .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
93130 .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
93131 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
93132 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
93133 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94179 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
94180 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
94181 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },
94182 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
94183 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94184 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
94185 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9313494186 } },
9313594187 }, .{
93136 .required_features = .{ .sse, null, null, null },
93137 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
93138 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
94188 .required_features = .{ .slow_incdec, null, null, null },
94189 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
94190 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
9313994191 .patterns = &.{
9314094192 .{ .src = .{ .to_mem, .none, .none } },
9314194193 },
9314294194 .extra_temps = .{
9314394195 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93144 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
93145 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
93146 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
94196 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94197 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94198 .unused,
9314794199 .unused,
9314894200 .unused,
9314994201 .unused,
......@@ -93155,26 +94207,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9315594207 .dst_temps = .{ .mem, .unused },
9315694208 .clobbers = .{ .eflags = true },
9315794209 .each = .{ .once = &.{
93158 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
93159 .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ },
9316094210 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93161 .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
93162 .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
93163 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
93164 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
94211 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
94212 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
94213 .{ ._, ._, .@"and", .tmp2b, .sa(.dst0, .add_umax), ._, ._ },
94214 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
94215 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94216 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
9316594217 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9316694218 } },
9316794219 }, .{
93168 .required_features = .{ .slow_incdec, null, null, null },
93169 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
93170 .dst_constraints = .{ .{ .multiple_scalar_exact_signed_int = .{ .of = .byte, .is = 1 } }, .any },
94220 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
94221 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
9317194222 .patterns = &.{
9317294223 .{ .src = .{ .to_mem, .none, .none } },
9317394224 },
9317494225 .extra_temps = .{
9317594226 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93176 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
93177 .unused,
94227 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94228 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
9317894229 .unused,
9317994230 .unused,
9318094231 .unused,
......@@ -93188,22 +94239,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9318894239 .clobbers = .{ .eflags = true },
9318994240 .each = .{ .once = &.{
9319094241 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93191 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
93192 .{ ._, ._, .@"and", .tmp1b, .si(1), ._, ._ },
93193 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },
93194 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93195 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93196 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94242 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
94243 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
94244 .{ ._, ._, .@"and", .tmp2b, .sa(.dst0, .add_umax), ._, ._ },
94245 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
94246 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94247 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
94248 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9319794249 } },
9319894250 }, .{
93199 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
93200 .dst_constraints = .{ .{ .multiple_scalar_exact_signed_int = .{ .of = .byte, .is = 1 } }, .any },
94251 .required_features = .{ .avx, null, null, null },
94252 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
94253 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },
9320194254 .patterns = &.{
93202 .{ .src = .{ .to_mem, .none, .none } },
94255 .{ .src = .{ .to_sse, .none, .none } },
94256 },
94257 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
94258 .each = .{ .once = &.{
94259 .{ ._, .vp_w, .sll, .dst0x, .src0x, .uia(16, .dst0, .sub_bit_size), ._ },
94260 .{ ._, .vp_w, .sra, .dst0x, .dst0x, .uia(16, .dst0, .sub_bit_size), ._ },
94261 } },
94262 }, .{
94263 .required_features = .{ .avx, null, null, null },
94264 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
94265 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },
94266 .patterns = &.{
94267 .{ .src = .{ .to_sse, .none, .none } },
9320394268 },
9320494269 .extra_temps = .{
93205 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93206 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
94270 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
94271 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
9320794272 .unused,
9320894273 .unused,
9320994274 .unused,
......@@ -93214,27 +94279,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9321494279 .unused,
9321594280 .unused,
9321694281 },
93217 .dst_temps = .{ .mem, .unused },
93218 .clobbers = .{ .eflags = true },
94282 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9321994283 .each = .{ .once = &.{
93220 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93221 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
93222 .{ ._, ._, .@"and", .tmp1b, .si(1), ._, ._ },
93223 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },
93224 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93225 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93226 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
94284 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
94285 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
9322794286 } },
9322894287 }, .{
93229 .required_features = .{ .slow_incdec, null, null, null },
93230 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
93231 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
94288 .required_features = .{ .sse2, null, null, null },
94289 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
94290 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },
9323294291 .patterns = &.{
93233 .{ .src = .{ .to_mem, .none, .none } },
94292 .{ .src = .{ .to_mut_sse, .none, .none } },
94293 },
94294 .dst_temps = .{ .{ .ref = .src0 }, .unused },
94295 .each = .{ .once = &.{
94296 .{ ._, .p_w, .sll, .dst0x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
94297 .{ ._, .p_w, .sra, .dst0x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
94298 } },
94299 }, .{
94300 .required_features = .{ .sse2, null, null, null },
94301 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
94302 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },
94303 .patterns = &.{
94304 .{ .src = .{ .to_mut_sse, .none, .none } },
9323494305 },
9323594306 .extra_temps = .{
93236 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93237 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
94307 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
94308 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
9323894309 .unused,
9323994310 .unused,
9324094311 .unused,
......@@ -93245,26 +94316,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9324594316 .unused,
9324694317 .unused,
9324794318 },
93248 .dst_temps = .{ .mem, .unused },
93249 .clobbers = .{ .eflags = true },
94319 .dst_temps = .{ .{ .ref = .src0 }, .unused },
9325094320 .each = .{ .once = &.{
93251 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93252 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
93253 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93254 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93255 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93256 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93257 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94321 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
94322 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
9325894323 } },
9325994324 }, .{
93260 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
93261 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
94325 .required_features = .{ .sse, null, null, null },
94326 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
94327 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },
9326294328 .patterns = &.{
93263 .{ .src = .{ .to_mem, .none, .none } },
94329 .{ .src = .{ .to_mut_sse, .none, .none } },
9326494330 },
9326594331 .extra_temps = .{
93266 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93267 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
94332 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
94333 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
9326894334 .unused,
9326994335 .unused,
9327094336 .unused,
......@@ -93275,27 +94341,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9327594341 .unused,
9327694342 .unused,
9327794343 },
93278 .dst_temps = .{ .mem, .unused },
93279 .clobbers = .{ .eflags = true },
94344 .dst_temps = .{ .{ .ref = .src0 }, .unused },
9328094345 .each = .{ .once = &.{
93281 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93282 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
93283 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93284 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93285 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93286 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93287 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
94346 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
94347 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
9328894348 } },
9328994349 }, .{
93290 .required_features = .{ .slow_incdec, null, null, null },
93291 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
93292 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
94350 .required_features = .{ .avx2, null, null, null },
94351 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any },
94352 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, .any },
9329394353 .patterns = &.{
93294 .{ .src = .{ .to_mem, .none, .none } },
94354 .{ .src = .{ .to_sse, .none, .none } },
94355 },
94356 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
94357 .each = .{ .once = &.{
94358 .{ ._, .vp_w, .sll, .dst0y, .src0y, .uia(16, .dst0, .sub_bit_size), ._ },
94359 .{ ._, .vp_w, .sra, .dst0y, .dst0y, .uia(16, .dst0, .sub_bit_size), ._ },
94360 } },
94361 }, .{
94362 .required_features = .{ .avx2, null, null, null },
94363 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any },
94364 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any },
94365 .patterns = &.{
94366 .{ .src = .{ .to_sse, .none, .none } },
9329594367 },
9329694368 .extra_temps = .{
93297 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93298 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94369 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
94370 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
9329994371 .unused,
9330094372 .unused,
9330194373 .unused,
......@@ -93306,25 +94378,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9330694378 .unused,
9330794379 .unused,
9330894380 },
93309 .dst_temps = .{ .mem, .unused },
93310 .clobbers = .{ .eflags = true },
94381 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9331194382 .each = .{ .once = &.{
93312 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93313 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
93314 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
93315 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93316 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93317 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94383 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
94384 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
9331894385 } },
9331994386 }, .{
93320 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
93321 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
94387 .required_features = .{ .avx2, null, null, null },
94388 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any },
94389 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, .any },
9332294390 .patterns = &.{
9332394391 .{ .src = .{ .to_mem, .none, .none } },
9332494392 },
9332594393 .extra_temps = .{
9332694394 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93327 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94395 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
9332894396 .unused,
9332994397 .unused,
9333094398 .unused,
......@@ -93339,24 +94407,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9333994407 .clobbers = .{ .eflags = true },
9334094408 .each = .{ .once = &.{
9334194409 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93342 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
93343 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
93344 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93345 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93346 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
94410 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
94411 .{ ._, .vp_w, .sll, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },
94412 .{ ._, .vp_w, .sra, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },
94413 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
94414 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
94415 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9334794416 } },
9334894417 }, .{
93349 .required_features = .{ .slow_incdec, null, null, null },
93350 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
93351 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
94418 .required_features = .{ .avx2, null, null, null },
94419 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any },
94420 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any },
9335294421 .patterns = &.{
9335394422 .{ .src = .{ .to_mem, .none, .none } },
9335494423 },
9335594424 .extra_temps = .{
9335694425 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93357 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93358 .unused,
93359 .unused,
94426 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
94427 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
94428 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
9336094429 .unused,
9336194430 .unused,
9336294431 .unused,
......@@ -93368,21 +94437,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9336894437 .dst_temps = .{ .mem, .unused },
9336994438 .clobbers = .{ .eflags = true },
9337094439 .each = .{ .once = &.{
94440 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
94441 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
9337194442 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93372 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
93373 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93374 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
94443 .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
94444 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },
94445 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
9337594446 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9337694447 } },
9337794448 }, .{
93378 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
93379 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
94449 .required_features = .{ .avx, null, null, null },
94450 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
94451 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },
9338094452 .patterns = &.{
9338194453 .{ .src = .{ .to_mem, .none, .none } },
9338294454 },
9338394455 .extra_temps = .{
9338494456 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93385 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94457 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
9338694458 .unused,
9338794459 .unused,
9338894460 .unused,
......@@ -93397,23 +94469,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9339794469 .clobbers = .{ .eflags = true },
9339894470 .each = .{ .once = &.{
9339994471 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93400 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
93401 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93402 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93403 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
94472 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
94473 .{ ._, .vp_w, .sll, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
94474 .{ ._, .vp_w, .sra, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
94475 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
94476 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
94477 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9340494478 } },
9340594479 }, .{
93406 .required_features = .{ .slow_incdec, null, null, null },
93407 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
93408 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
94480 .required_features = .{ .avx, null, null, null },
94481 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
94482 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },
9340994483 .patterns = &.{
9341094484 .{ .src = .{ .to_mem, .none, .none } },
9341194485 },
9341294486 .extra_temps = .{
9341394487 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93414 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
93415 .unused,
93416 .unused,
94488 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
94489 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
94490 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
9341794491 .unused,
9341894492 .unused,
9341994493 .unused,
......@@ -93425,23 +94499,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9342594499 .dst_temps = .{ .mem, .unused },
9342694500 .clobbers = .{ .eflags = true },
9342794501 .each = .{ .once = &.{
94502 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
94503 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
9342894504 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93429 .{ .@"0:", ._, .movsx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
93430 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93431 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93432 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93433 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
94505 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
94506 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
94507 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
9343494508 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9343594509 } },
9343694510 }, .{
93437 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
93438 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
94511 .required_features = .{ .sse2, null, null, null },
94512 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
94513 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },
9343994514 .patterns = &.{
9344094515 .{ .src = .{ .to_mem, .none, .none } },
9344194516 },
9344294517 .extra_temps = .{
9344394518 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93444 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
94519 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
9344594520 .unused,
9344694521 .unused,
9344794522 .unused,
......@@ -93456,25 +94531,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9345694531 .clobbers = .{ .eflags = true },
9345794532 .each = .{ .once = &.{
9345894533 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93459 .{ .@"0:", ._, .movsx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
93460 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93461 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93462 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93463 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93464 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
94534 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
94535 .{ ._, .p_w, .sll, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
94536 .{ ._, .p_w, .sra, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
94537 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
94538 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
94539 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9346594540 } },
9346694541 }, .{
93467 .required_features = .{ .slow_incdec, null, null, null },
93468 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
93469 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
94542 .required_features = .{ .sse2, null, null, null },
94543 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
94544 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },
9347094545 .patterns = &.{
9347194546 .{ .src = .{ .to_mem, .none, .none } },
9347294547 },
9347394548 .extra_temps = .{
9347494549 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93475 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93476 .unused,
93477 .unused,
94550 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
94551 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
94552 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
9347894553 .unused,
9347994554 .unused,
9348094555 .unused,
......@@ -93486,24 +94561,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9348694561 .dst_temps = .{ .mem, .unused },
9348794562 .clobbers = .{ .eflags = true },
9348894563 .each = .{ .once = &.{
94564 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
94565 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
9348994566 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93490 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
93491 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
93492 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93493 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
94567 .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
94568 .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
94569 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
94570 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
9349494571 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9349594572 } },
9349694573 }, .{
93497 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
93498 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
94574 .required_features = .{ .sse, null, null, null },
94575 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
94576 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },
9349994577 .patterns = &.{
9350094578 .{ .src = .{ .to_mem, .none, .none } },
9350194579 },
9350294580 .extra_temps = .{
9350394581 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93504 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93505 .unused,
93506 .unused,
94582 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
94583 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
94584 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
9350794585 .unused,
9350894586 .unused,
9350994587 .unused,
......@@ -93515,23 +94593,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9351594593 .dst_temps = .{ .mem, .unused },
9351694594 .clobbers = .{ .eflags = true },
9351794595 .each = .{ .once = &.{
94596 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
94597 .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ },
9351894598 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93519 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
93520 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
93521 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93522 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93523 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
94599 .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
94600 .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
94601 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
94602 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
94603 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9352494604 } },
9352594605 }, .{
93526 .required_features = .{ .slow_incdec, null, null, null },
93527 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
93528 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
94606 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
94607 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }, .any },
9352994608 .patterns = &.{
9353094609 .{ .src = .{ .to_mem, .none, .none } },
9353194610 },
9353294611 .extra_temps = .{
9353394612 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93534 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94613 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
9353594614 .unused,
9353694615 .unused,
9353794616 .unused,
......@@ -93546,20 +94625,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9354694625 .clobbers = .{ .eflags = true },
9354794626 .each = .{ .once = &.{
9354894627 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93549 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
93550 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93551 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
94628 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
94629 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94630 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9355294631 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9355394632 } },
9355494633 }, .{
93555 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
93556 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
94634 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
94635 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
9355794636 .patterns = &.{
9355894637 .{ .src = .{ .to_mem, .none, .none } },
9355994638 },
9356094639 .extra_temps = .{
9356194640 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93562 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94641 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
9356394642 .unused,
9356494643 .unused,
9356594644 .unused,
......@@ -93574,21 +94653,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9357494653 .clobbers = .{ .eflags = true },
9357594654 .each = .{ .once = &.{
9357694655 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93577 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
93578 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93579 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93580 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
94656 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
94657 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
94658 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
94659 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94660 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
94661 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9358194662 } },
9358294663 }, .{
93583 .required_features = .{ .slow_incdec, null, null, null },
93584 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
93585 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
94664 .required_features = .{ .fast_imm16, null, null, null },
94665 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
94666 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
9358694667 .patterns = &.{
9358794668 .{ .src = .{ .to_mem, .none, .none } },
9358894669 },
9358994670 .extra_temps = .{
9359094671 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93591 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
94672 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
9359294673 .unused,
9359394674 .unused,
9359494675 .unused,
......@@ -93603,22 +94684,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9360394684 .clobbers = .{ .eflags = true },
9360494685 .each = .{ .once = &.{
9360594686 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93606 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
93607 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93608 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93609 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93610 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
94687 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
94688 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
94689 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94690 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9361194691 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9361294692 } },
9361394693 }, .{
93614 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
93615 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
94694 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
94695 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
9361694696 .patterns = &.{
9361794697 .{ .src = .{ .to_mem, .none, .none } },
9361894698 },
9361994699 .extra_temps = .{
9362094700 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93621 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
94701 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
9362294702 .unused,
9362394703 .unused,
9362494704 .unused,
......@@ -93633,24 +94713,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9363394713 .clobbers = .{ .eflags = true },
9363494714 .each = .{ .once = &.{
9363594715 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93636 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
93637 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93638 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93639 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93640 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93641 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
94716 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
94717 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
94718 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94719 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
94720 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9364294721 } },
9364394722 }, .{
93644 .required_features = .{ .bmi2, .slow_incdec, null, null },
93645 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
93646 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
94723 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
94724 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }, .any },
9364794725 .patterns = &.{
9364894726 .{ .src = .{ .to_mem, .none, .none } },
9364994727 },
9365094728 .extra_temps = .{
9365194729 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93652 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93653 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94730 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
94731 .unused,
9365494732 .unused,
9365594733 .unused,
9365694734 .unused,
......@@ -93664,23 +94742,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9366494742 .clobbers = .{ .eflags = true },
9366594743 .each = .{ .once = &.{
9366694744 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93667 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
93668 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
93669 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
93670 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
94745 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
94746 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94747 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9367194748 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9367294749 } },
9367394750 }, .{
93674 .required_features = .{ .bmi2, null, null, null },
93675 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
93676 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
94751 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
94752 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
9367794753 .patterns = &.{
9367894754 .{ .src = .{ .to_mem, .none, .none } },
9367994755 },
9368094756 .extra_temps = .{
9368194757 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93682 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93683 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94758 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
94759 .unused,
9368494760 .unused,
9368594761 .unused,
9368694762 .unused,
......@@ -93694,23 +94770,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9369494770 .clobbers = .{ .eflags = true },
9369594771 .each = .{ .once = &.{
9369694772 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93697 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
93698 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
93699 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
93700 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93701 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
94773 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
94774 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
94775 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
94776 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94777 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
94778 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9370294779 } },
9370394780 }, .{
93704 .required_features = .{ .slow_incdec, null, null, null },
94781 .required_features = .{ .bmi2, null, null, null },
9370594782 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
93706 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
94783 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
9370794784 .patterns = &.{
9370894785 .{ .src = .{ .to_mem, .none, .none } },
9370994786 },
9371094787 .extra_temps = .{
9371194788 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9371294789 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93713 .unused,
94790 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
9371494791 .unused,
9371594792 .unused,
9371694793 .unused,
......@@ -93724,21 +94801,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9372494801 .clobbers = .{ .eflags = true },
9372594802 .each = .{ .once = &.{
9372694803 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93727 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
93728 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
93729 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93730 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
94804 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
94805 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._ },
94806 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
94807 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9373194808 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9373294809 } },
9373394810 }, .{
94811 .required_features = .{ .fast_imm16, null, null, null },
9373494812 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
93735 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
94813 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
9373694814 .patterns = &.{
9373794815 .{ .src = .{ .to_mem, .none, .none } },
9373894816 },
9373994817 .extra_temps = .{
9374094818 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93741 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94819 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
9374294820 .unused,
9374394821 .unused,
9374494822 .unused,
......@@ -93753,22 +94831,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9375394831 .clobbers = .{ .eflags = true },
9375494832 .each = .{ .once = &.{
9375594833 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93756 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
93757 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
93758 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93759 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93760 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
94834 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
94835 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
94836 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94837 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
94838 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9376194839 } },
9376294840 }, .{
93763 .required_features = .{ .slow_incdec, null, null, null },
93764 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
93765 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
94841 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
94842 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
9376694843 .patterns = &.{
9376794844 .{ .src = .{ .to_mem, .none, .none } },
9376894845 },
9376994846 .extra_temps = .{
9377094847 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93771 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94848 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
9377294849 .unused,
9377394850 .unused,
9377494851 .unused,
......@@ -93783,20 +94860,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9378394860 .clobbers = .{ .eflags = true },
9378494861 .each = .{ .once = &.{
9378594862 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93786 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
93787 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93788 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
94863 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
94864 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
94865 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94866 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9378994867 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9379094868 } },
9379194869 }, .{
9379294870 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
93793 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
94871 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }, .any },
9379494872 .patterns = &.{
9379594873 .{ .src = .{ .to_mem, .none, .none } },
9379694874 },
9379794875 .extra_temps = .{
9379894876 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93799 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94877 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
9380094878 .unused,
9380194879 .unused,
9380294880 .unused,
......@@ -93811,21 +94889,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9381194889 .clobbers = .{ .eflags = true },
9381294890 .each = .{ .once = &.{
9381394891 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93814 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
93815 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93816 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93817 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
94892 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
94893 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94894 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
94895 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9381894896 } },
9381994897 }, .{
93820 .required_features = .{ .slow_incdec, null, null, null },
9382194898 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
93822 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
94899 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
9382394900 .patterns = &.{
9382494901 .{ .src = .{ .to_mem, .none, .none } },
9382594902 },
9382694903 .extra_temps = .{
9382794904 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93828 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
94905 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
9382994906 .unused,
9383094907 .unused,
9383194908 .unused,
......@@ -93840,23 +94917,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9384094917 .clobbers = .{ .eflags = true },
9384194918 .each = .{ .once = &.{
9384294919 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93843 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
93844 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93845 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93846 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93847 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
94920 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
94921 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
94922 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
94923 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94924 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9384894925 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9384994926 } },
9385094927 }, .{
93851 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
93852 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
94928 .required_features = .{ .bmi2, null, null, null },
94929 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
94930 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
9385394931 .patterns = &.{
9385494932 .{ .src = .{ .to_mem, .none, .none } },
9385594933 },
9385694934 .extra_temps = .{
9385794935 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93858 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
93859 .unused,
94936 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94937 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
9386094938 .unused,
9386194939 .unused,
9386294940 .unused,
......@@ -93870,24 +94948,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9387094948 .clobbers = .{ .eflags = true },
9387194949 .each = .{ .once = &.{
9387294950 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93873 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
93874 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93875 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93876 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93877 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93878 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
94951 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
94952 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
94953 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
94954 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
94955 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9387994956 } },
9388094957 }, .{
93881 .required_features = .{ .bmi2, .slow_incdec, null, null },
94958 .required_features = .{ .fast_imm16, null, null, null },
9388294959 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
93883 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
94960 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
9388494961 .patterns = &.{
9388594962 .{ .src = .{ .to_mem, .none, .none } },
9388694963 },
9388794964 .extra_temps = .{
9388894965 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93889 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93890 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94966 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
94967 .unused,
9389194968 .unused,
9389294969 .unused,
9389394970 .unused,
......@@ -93901,23 +94978,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9390194978 .clobbers = .{ .eflags = true },
9390294979 .each = .{ .once = &.{
9390394980 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93904 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
93905 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
93906 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
93907 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
94981 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
94982 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
94983 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94984 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9390894985 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9390994986 } },
9391094987 }, .{
93911 .required_features = .{ .bmi2, null, null, null },
9391294988 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
93913 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
94989 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
9391494990 .patterns = &.{
9391594991 .{ .src = .{ .to_mem, .none, .none } },
9391694992 },
9391794993 .extra_temps = .{
9391894994 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93919 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93920 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94995 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
94996 .unused,
9392194997 .unused,
9392294998 .unused,
9392394999 .unused,
......@@ -93931,22 +95007,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9393195007 .clobbers = .{ .eflags = true },
9393295008 .each = .{ .once = &.{
9393395009 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93934 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
93935 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
93936 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
93937 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93938 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
95010 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
95011 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
95012 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
95013 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
95014 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9393995015 } },
9394095016 }, .{
93941 .required_features = .{ .slow_incdec, null, null, null },
93942 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
93943 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
95017 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
95018 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }, .any },
9394495019 .patterns = &.{
9394595020 .{ .src = .{ .to_mem, .none, .none } },
9394695021 },
9394795022 .extra_temps = .{
9394895023 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93949 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
95024 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
9395095025 .unused,
9395195026 .unused,
9395295027 .unused,
......@@ -93962,20 +95037,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9396295037 .each = .{ .once = &.{
9396395038 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
9396495039 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
93965 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
93966 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93967 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
95040 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
95041 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9396895042 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9396995043 } },
9397095044 }, .{
93971 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
93972 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
95045 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
95046 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
9397395047 .patterns = &.{
9397495048 .{ .src = .{ .to_mem, .none, .none } },
9397595049 },
9397695050 .extra_temps = .{
9397795051 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93978 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
95052 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
9397995053 .unused,
9398095054 .unused,
9398195055 .unused,
......@@ -93991,22 +95065,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9399195065 .each = .{ .once = &.{
9399295066 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
9399395067 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
93994 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
93995 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93996 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93997 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
95068 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95069 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95070 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
95071 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
95072 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9399895073 } },
9399995074 }, .{
94000 .required_features = .{ .slow_incdec, null, null, null },
94001 .src_constraints = .{ .any_scalar_int, .any, .any },
94002 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
95075 .required_features = .{ .bmi2, null, null, null },
95076 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
95077 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
9400395078 .patterns = &.{
9400495079 .{ .src = .{ .to_mem, .none, .none } },
9400595080 },
9400695081 .extra_temps = .{
9400795082 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94008 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
9400995083 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
95084 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
9401095085 .unused,
9401195086 .unused,
9401295087 .unused,
......@@ -94020,23 +95095,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9402095095 .clobbers = .{ .eflags = true },
9402195096 .each = .{ .once = &.{
9402295097 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94023 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
94024 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
94025 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
94026 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94027 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
95098 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
95099 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
95100 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
95101 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9402895102 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9402995103 } },
94030 }, .{
94031 .src_constraints = .{ .any_scalar_int, .any, .any },
94032 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
95104 }, .{
95105 .required_features = .{ .fast_imm16, null, null, null },
95106 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
95107 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
9403395108 .patterns = &.{
9403495109 .{ .src = .{ .to_mem, .none, .none } },
9403595110 },
9403695111 .extra_temps = .{
9403795112 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94038 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94039 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
95113 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
95114 .unused,
9404095115 .unused,
9404195116 .unused,
9404295117 .unused,
......@@ -94050,24 +95125,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9405095125 .clobbers = .{ .eflags = true },
9405195126 .each = .{ .once = &.{
9405295127 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94053 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
94054 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
94055 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
94056 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94057 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
94058 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
95128 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
95129 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
95130 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
95131 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
95132 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9405995133 } },
9406095134 }, .{
94061 .required_features = .{ .slow_incdec, null, null, null },
94062 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
94063 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
95135 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
95136 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
9406495137 .patterns = &.{
9406595138 .{ .src = .{ .to_mem, .none, .none } },
9406695139 },
9406795140 .extra_temps = .{
9406895141 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94069 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94070 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
95142 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
95143 .unused,
9407195144 .unused,
9407295145 .unused,
9407395146 .unused,
......@@ -94081,25 +95154,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9408195154 .clobbers = .{ .eflags = true },
9408295155 .each = .{ .once = &.{
9408395156 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94084 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
94085 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
94086 .{ ._, ._l, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
94087 .{ ._, ._r, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
94088 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
94089 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94090 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
95157 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
95158 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
95159 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
95160 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9409195161 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9409295162 } },
9409395163 }, .{
94094 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
94095 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
95164 .src_constraints = .{ .any_scalar_int, .any, .any },
95165 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }, .any },
9409695166 .patterns = &.{
9409795167 .{ .src = .{ .to_mem, .none, .none } },
9409895168 },
9409995169 .extra_temps = .{
9410095170 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9410195171 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94102 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
95172 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
9410395173 .unused,
9410495174 .unused,
9410595175 .unused,
......@@ -94115,25 +95185,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9411595185 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
9411695186 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
9411795187 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
94118 .{ ._, ._l, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
94119 .{ ._, ._r, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
94120 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
95188 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
9412195189 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94122 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
94123 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
95190 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
95191 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9412495192 } },
9412595193 }, .{
94126 .required_features = .{ .bmi2, .slow_incdec, null, null },
94127 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
94128 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
95194 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
95195 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
9412995196 .patterns = &.{
9413095197 .{ .src = .{ .to_mem, .none, .none } },
9413195198 },
9413295199 .extra_temps = .{
9413395200 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9413495201 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94135 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94136 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
95202 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
95203 .unused,
9413795204 .unused,
9413895205 .unused,
9413995206 .unused,
......@@ -94147,17 +95214,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9414795214 .each = .{ .once = &.{
9414895215 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
9414995216 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
94150 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
94151 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },
94152 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
95217 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
95218 .{ ._, ._l, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95219 .{ ._, ._r, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95220 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
9415395221 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94154 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
95222 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9415595223 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9415695224 } },
9415795225 }, .{
9415895226 .required_features = .{ .bmi2, null, null, null },
9415995227 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
94160 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
95228 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
9416195229 .patterns = &.{
9416295230 .{ .src = .{ .to_mem, .none, .none } },
9416395231 },
......@@ -94165,7 +95233,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9416595233 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9416695234 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
9416795235 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94168 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
95236 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
9416995237 .unused,
9417095238 .unused,
9417195239 .unused,
......@@ -94181,22 +95249,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9418195249 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
9418295250 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
9418395251 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },
94184 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
95252 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
9418595253 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94186 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
94187 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
95254 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
95255 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9418895256 } },
9418995257 }, .{
94190 .required_features = .{ .slow_incdec, null, null, null },
95258 .required_features = .{ .fast_imm16, null, null, null },
9419195259 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
94192 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
95260 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
9419395261 .patterns = &.{
9419495262 .{ .src = .{ .to_mem, .none, .none } },
9419595263 },
9419695264 .extra_temps = .{
9419795265 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9419895266 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94199 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
95267 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
9420095268 .unused,
9420195269 .unused,
9420295270 .unused,
......@@ -94212,22 +95280,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9421295280 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
9421395281 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
9421495282 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
94215 .{ ._, ._, .@"and", .tmp2b, .sa(.dst0, .add_umax), ._, ._ },
94216 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
95283 .{ ._, ._, .@"and", .tmp2w, .sa(.dst0, .add_umax), ._, ._ },
95284 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
9421795285 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94218 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
95286 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9421995287 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9422095288 } },
9422195289 }, .{
9422295290 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
94223 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
95291 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
9422495292 .patterns = &.{
9422595293 .{ .src = .{ .to_mem, .none, .none } },
9422695294 },
9422795295 .extra_temps = .{
9422895296 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9422995297 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94230 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
95298 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
9423195299 .unused,
9423295300 .unused,
9423395301 .unused,
......@@ -94243,28 +95311,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9424395311 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
9424495312 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
9424595313 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
94246 .{ ._, ._, .@"and", .tmp2b, .sa(.dst0, .add_umax), ._, ._ },
94247 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
95314 .{ ._, ._, .@"and", .tmp2d, .sa(.dst0, .add_umax), ._, ._ },
95315 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
9424895316 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94249 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
94250 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
95317 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
95318 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9425195319 } },
9425295320 }, .{
9425395321 .required_features = .{ .avx, null, null, null },
94254 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
94255 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },
95322 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
95323 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
9425695324 .patterns = &.{
9425795325 .{ .src = .{ .to_sse, .none, .none } },
9425895326 },
9425995327 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9426095328 .each = .{ .once = &.{
94261 .{ ._, .vp_w, .sll, .dst0x, .src0x, .uia(16, .dst0, .sub_bit_size), ._ },
94262 .{ ._, .vp_w, .sra, .dst0x, .dst0x, .uia(16, .dst0, .sub_bit_size), ._ },
95329 .{ ._, .vp_d, .sll, .dst0x, .src0x, .uia(32, .dst0, .sub_bit_size), ._ },
95330 .{ ._, .vp_d, .sra, .dst0x, .dst0x, .uia(32, .dst0, .sub_bit_size), ._ },
9426395331 } },
9426495332 }, .{
9426595333 .required_features = .{ .avx, null, null, null },
94266 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
94267 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },
95334 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
95335 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },
9426895336 .patterns = &.{
9426995337 .{ .src = .{ .to_sse, .none, .none } },
9427095338 },
......@@ -94288,20 +95356,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9428895356 } },
9428995357 }, .{
9429095358 .required_features = .{ .sse2, null, null, null },
94291 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
94292 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },
95359 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
95360 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
9429395361 .patterns = &.{
9429495362 .{ .src = .{ .to_mut_sse, .none, .none } },
9429595363 },
9429695364 .dst_temps = .{ .{ .ref = .src0 }, .unused },
9429795365 .each = .{ .once = &.{
94298 .{ ._, .p_w, .sll, .dst0x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
94299 .{ ._, .p_w, .sra, .dst0x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
95366 .{ ._, .p_d, .sll, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95367 .{ ._, .p_d, .sra, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ },
9430095368 } },
9430195369 }, .{
9430295370 .required_features = .{ .sse2, null, null, null },
94303 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
94304 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },
95371 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
95372 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },
9430595373 .patterns = &.{
9430695374 .{ .src = .{ .to_mut_sse, .none, .none } },
9430795375 },
......@@ -94325,8 +95393,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9432595393 } },
9432695394 }, .{
9432795395 .required_features = .{ .sse, null, null, null },
94328 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
94329 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },
95396 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
95397 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },
9433095398 .patterns = &.{
9433195399 .{ .src = .{ .to_mut_sse, .none, .none } },
9433295400 },
......@@ -94350,20 +95418,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9435095418 } },
9435195419 }, .{
9435295420 .required_features = .{ .avx2, null, null, null },
94353 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any },
94354 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, .any },
95421 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },
95422 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any },
9435595423 .patterns = &.{
9435695424 .{ .src = .{ .to_sse, .none, .none } },
9435795425 },
9435895426 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9435995427 .each = .{ .once = &.{
94360 .{ ._, .vp_w, .sll, .dst0y, .src0y, .uia(16, .dst0, .sub_bit_size), ._ },
94361 .{ ._, .vp_w, .sra, .dst0y, .dst0y, .uia(16, .dst0, .sub_bit_size), ._ },
95428 .{ ._, .vp_d, .sll, .dst0y, .src0y, .uia(32, .dst0, .sub_bit_size), ._ },
95429 .{ ._, .vp_d, .sra, .dst0y, .dst0y, .uia(32, .dst0, .sub_bit_size), ._ },
9436295430 } },
9436395431 }, .{
9436495432 .required_features = .{ .avx2, null, null, null },
94365 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any },
94366 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any },
95433 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any },
95434 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any },
9436795435 .patterns = &.{
9436895436 .{ .src = .{ .to_sse, .none, .none } },
9436995437 },
......@@ -94387,14 +95455,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9438795455 } },
9438895456 }, .{
9438995457 .required_features = .{ .avx2, null, null, null },
94390 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any },
94391 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, .any },
95458 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },
95459 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any },
9439295460 .patterns = &.{
9439395461 .{ .src = .{ .to_mem, .none, .none } },
9439495462 },
9439595463 .extra_temps = .{
9439695464 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94397 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
95465 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
9439895466 .unused,
9439995467 .unused,
9440095468 .unused,
......@@ -94410,23 +95478,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9441095478 .each = .{ .once = &.{
9441195479 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
9441295480 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
94413 .{ ._, .vp_w, .sll, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },
94414 .{ ._, .vp_w, .sra, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },
95481 .{ ._, .vp_d, .sll, .tmp1y, .tmp1y, .uia(32, .dst0, .sub_bit_size), ._ },
95482 .{ ._, .vp_d, .sra, .tmp1y, .tmp1y, .uia(32, .dst0, .sub_bit_size), ._ },
9441595483 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
9441695484 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
9441795485 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9441895486 } },
9441995487 }, .{
9442095488 .required_features = .{ .avx2, null, null, null },
94421 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any },
94422 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any },
95489 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any },
95490 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any },
9442395491 .patterns = &.{
9442495492 .{ .src = .{ .to_mem, .none, .none } },
9442595493 },
9442695494 .extra_temps = .{
9442795495 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94428 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
94429 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
95496 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
95497 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
9443095498 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
9443195499 .unused,
9443295500 .unused,
......@@ -94449,14 +95517,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9444995517 } },
9445095518 }, .{
9445195519 .required_features = .{ .avx, null, null, null },
94452 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
94453 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },
95520 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
95521 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
9445495522 .patterns = &.{
9445595523 .{ .src = .{ .to_mem, .none, .none } },
9445695524 },
9445795525 .extra_temps = .{
9445895526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94459 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
95527 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
9446095528 .unused,
9446195529 .unused,
9446295530 .unused,
......@@ -94472,23 +95540,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9447295540 .each = .{ .once = &.{
9447395541 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
9447495542 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
94475 .{ ._, .vp_w, .sll, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
94476 .{ ._, .vp_w, .sra, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
95543 .{ ._, .vp_d, .sll, .tmp1x, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._ },
95544 .{ ._, .vp_d, .sra, .tmp1x, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._ },
9447795545 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
9447895546 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
9447995547 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9448095548 } },
9448195549 }, .{
9448295550 .required_features = .{ .avx, null, null, null },
94483 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
94484 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },
95551 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
95552 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },
9448595553 .patterns = &.{
9448695554 .{ .src = .{ .to_mem, .none, .none } },
9448795555 },
9448895556 .extra_temps = .{
9448995557 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94490 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
94491 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
95558 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
95559 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
9449295560 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
9449395561 .unused,
9449495562 .unused,
......@@ -94511,14 +95579,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9451195579 } },
9451295580 }, .{
9451395581 .required_features = .{ .sse2, null, null, null },
94514 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
94515 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },
95582 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
95583 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
9451695584 .patterns = &.{
9451795585 .{ .src = .{ .to_mem, .none, .none } },
9451895586 },
9451995587 .extra_temps = .{
9452095588 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94521 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
95589 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
9452295590 .unused,
9452395591 .unused,
9452495592 .unused,
......@@ -94534,23 +95602,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9453495602 .each = .{ .once = &.{
9453595603 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
9453695604 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
94537 .{ ._, .p_w, .sll, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
94538 .{ ._, .p_w, .sra, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
95605 .{ ._, .p_d, .sll, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95606 .{ ._, .p_d, .sra, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._, ._ },
9453995607 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
9454095608 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
9454195609 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9454295610 } },
9454395611 }, .{
9454495612 .required_features = .{ .sse2, null, null, null },
94545 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
94546 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },
95613 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
95614 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },
9454795615 .patterns = &.{
9454895616 .{ .src = .{ .to_mem, .none, .none } },
9454995617 },
9455095618 .extra_temps = .{
9455195619 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94552 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
94553 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
95620 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
95621 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
9455495622 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
9455595623 .unused,
9455695624 .unused,
......@@ -94574,15 +95642,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9457495642 } },
9457595643 }, .{
9457695644 .required_features = .{ .sse, null, null, null },
94577 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
94578 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },
95645 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
95646 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },
9457995647 .patterns = &.{
9458095648 .{ .src = .{ .to_mem, .none, .none } },
9458195649 },
9458295650 .extra_temps = .{
9458395651 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94584 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
94585 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
95652 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
95653 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
9458695654 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
9458795655 .unused,
9458895656 .unused,
......@@ -94605,14 +95673,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9460595673 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9460695674 } },
9460795675 }, .{
94608 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
94609 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }, .any },
95676 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
95677 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }, .any },
9461095678 .patterns = &.{
9461195679 .{ .src = .{ .to_mem, .none, .none } },
9461295680 },
9461395681 .extra_temps = .{
9461495682 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94615 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
95683 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
9461695684 .unused,
9461795685 .unused,
9461895686 .unused,
......@@ -94627,20 +95695,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9462795695 .clobbers = .{ .eflags = true },
9462895696 .each = .{ .once = &.{
9462995697 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94630 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
94631 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94632 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
95698 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
95699 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
95700 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9463395701 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9463495702 } },
9463595703 }, .{
94636 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
94637 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
95704 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
95705 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
9463895706 .patterns = &.{
9463995707 .{ .src = .{ .to_mem, .none, .none } },
9464095708 },
9464195709 .extra_temps = .{
9464295710 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94643 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
95711 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
9464495712 .unused,
9464595713 .unused,
9464695714 .unused,
......@@ -94655,24 +95723,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9465595723 .clobbers = .{ .eflags = true },
9465695724 .each = .{ .once = &.{
9465795725 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94658 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
95726 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
9465995727 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
9466095728 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
94661 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94662 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
95729 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
95730 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9466395731 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9466495732 } },
9466595733 }, .{
94666 .required_features = .{ .fast_imm16, null, null, null },
94667 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
94668 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
95734 .required_features = .{ .bmi2, null, null, null },
95735 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
95736 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
9466995737 .patterns = &.{
9467095738 .{ .src = .{ .to_mem, .none, .none } },
9467195739 },
9467295740 .extra_temps = .{
9467395741 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94674 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
94675 .unused,
95742 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
95743 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
9467695744 .unused,
9467795745 .unused,
9467895746 .unused,
......@@ -94686,21 +95754,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9468695754 .clobbers = .{ .eflags = true },
9468795755 .each = .{ .once = &.{
9468895756 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94689 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
94690 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
94691 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94692 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
95757 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
95758 .{ .@"0:", ._, .bzhi, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), .tmp1d, ._ },
95759 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
95760 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9469395761 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9469495762 } },
9469595763 }, .{
94696 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
94697 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
95764 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
95765 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
9469895766 .patterns = &.{
9469995767 .{ .src = .{ .to_mem, .none, .none } },
9470095768 },
9470195769 .extra_temps = .{
9470295770 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94703 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
95771 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
9470495772 .unused,
9470595773 .unused,
9470695774 .unused,
......@@ -94715,21 +95783,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9471595783 .clobbers = .{ .eflags = true },
9471695784 .each = .{ .once = &.{
9471795785 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94718 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
95786 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
9471995787 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
94720 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94721 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
95788 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
95789 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9472295790 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9472395791 } },
9472495792 }, .{
94725 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
94726 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }, .any },
95793 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
95794 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }, .any },
9472795795 .patterns = &.{
9472895796 .{ .src = .{ .to_mem, .none, .none } },
9472995797 },
9473095798 .extra_temps = .{
9473195799 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94732 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
95800 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
9473395801 .unused,
9473495802 .unused,
9473595803 .unused,
......@@ -94745,19 +95813,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9474595813 .each = .{ .once = &.{
9474695814 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
9474795815 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
94748 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94749 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
95816 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
95817 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9475095818 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9475195819 } },
9475295820 }, .{
94753 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
94754 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
95821 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
95822 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
9475595823 .patterns = &.{
9475695824 .{ .src = .{ .to_mem, .none, .none } },
9475795825 },
9475895826 .extra_temps = .{
9475995827 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94760 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
95828 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
9476195829 .unused,
9476295830 .unused,
9476395831 .unused,
......@@ -94775,21 +95843,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9477595843 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
9477695844 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
9477795845 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
94778 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94779 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
95846 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
95847 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9478095848 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9478195849 } },
9478295850 }, .{
9478395851 .required_features = .{ .bmi2, null, null, null },
94784 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
94785 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
95852 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
95853 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
9478695854 .patterns = &.{
9478795855 .{ .src = .{ .to_mem, .none, .none } },
9478895856 },
9478995857 .extra_temps = .{
9479095858 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9479195859 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94792 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
95860 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
9479395861 .unused,
9479495862 .unused,
9479595863 .unused,
......@@ -94805,20 +95873,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9480595873 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
9480695874 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
9480795875 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._ },
94808 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
94809 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
95876 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
95877 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9481095878 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9481195879 } },
9481295880 }, .{
94813 .required_features = .{ .fast_imm16, null, null, null },
94814 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
94815 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
95881 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
95882 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
9481695883 .patterns = &.{
9481795884 .{ .src = .{ .to_mem, .none, .none } },
9481895885 },
9481995886 .extra_temps = .{
9482095887 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94821 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
95888 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
9482295889 .unused,
9482395890 .unused,
9482495891 .unused,
......@@ -94834,20 +95901,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9483495901 .each = .{ .once = &.{
9483595902 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
9483695903 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
94837 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
94838 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94839 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
95904 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
95905 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
95906 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9484095907 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9484195908 } },
9484295909 }, .{
94843 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
94844 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
95910 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
95911 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }, .any },
9484595912 .patterns = &.{
9484695913 .{ .src = .{ .to_mem, .none, .none } },
9484795914 },
9484895915 .extra_temps = .{
9484995916 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94850 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
95917 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
9485195918 .unused,
9485295919 .unused,
9485395920 .unused,
......@@ -94862,21 +95929,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9486295929 .clobbers = .{ .eflags = true },
9486395930 .each = .{ .once = &.{
9486495931 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94865 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
94866 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
94867 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94868 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
95932 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
95933 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
95934 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9486995935 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9487095936 } },
9487195937 }, .{
94872 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
94873 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }, .any },
95938 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
95939 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
9487495940 .patterns = &.{
9487595941 .{ .src = .{ .to_mem, .none, .none } },
9487695942 },
9487795943 .extra_temps = .{
9487895944 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94879 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
95945 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
9488095946 .unused,
9488195947 .unused,
9488295948 .unused,
......@@ -94892,19 +95958,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9489295958 .each = .{ .once = &.{
9489395959 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
9489495960 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
94895 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94896 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
95961 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95962 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95963 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
95964 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9489795965 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9489895966 } },
9489995967 }, .{
94900 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
94901 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
95968 .required_features = .{ .bmi2, null, null, null },
95969 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
95970 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
9490295971 .patterns = &.{
9490395972 .{ .src = .{ .to_mem, .none, .none } },
9490495973 },
9490595974 .extra_temps = .{
9490695975 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94907 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
95976 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
95977 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95978 .unused,
95979 .unused,
95980 .unused,
95981 .unused,
95982 .unused,
95983 .unused,
95984 .unused,
95985 .unused,
95986 },
95987 .dst_temps = .{ .mem, .unused },
95988 .clobbers = .{ .eflags = true },
95989 .each = .{ .once = &.{
95990 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95991 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
95992 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
95993 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
95994 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
95995 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
95996 } },
95997 }, .{
95998 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
95999 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
96000 .patterns = &.{
96001 .{ .src = .{ .to_mem, .none, .none } },
96002 },
96003 .extra_temps = .{
96004 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96005 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
9490896006 .unused,
9490996007 .unused,
9491096008 .unused,
......@@ -94920,23 +96018,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9492096018 .each = .{ .once = &.{
9492196019 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
9492296020 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
94923 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
94924 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
94925 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94926 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
96021 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
96022 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
96023 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9492796024 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9492896025 } },
9492996026 }, .{
94930 .required_features = .{ .bmi2, null, null, null },
94931 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
94932 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
96027 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },
96028 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }, .any },
9493396029 .patterns = &.{
9493496030 .{ .src = .{ .to_mem, .none, .none } },
9493596031 },
9493696032 .extra_temps = .{
9493796033 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94938 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94939 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
96034 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
96035 .unused,
9494096036 .unused,
9494196037 .unused,
9494296038 .unused,
......@@ -94950,22 +96046,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9495096046 .clobbers = .{ .eflags = true },
9495196047 .each = .{ .once = &.{
9495296048 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94953 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
94954 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
94955 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
94956 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
96049 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
96050 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
96051 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9495796052 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9495896053 } },
9495996054 }, .{
94960 .required_features = .{ .fast_imm16, null, null, null },
94961 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
94962 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
96055 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .yword } }, .any, .any },
96056 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
9496396057 .patterns = &.{
9496496058 .{ .src = .{ .to_mem, .none, .none } },
9496596059 },
9496696060 .extra_temps = .{
9496796061 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94968 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
96062 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
9496996063 .unused,
9497096064 .unused,
9497196065 .unused,
......@@ -94980,22 +96074,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9498096074 .clobbers = .{ .eflags = true },
9498196075 .each = .{ .once = &.{
9498296076 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94983 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
94984 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
94985 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94986 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
96077 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
96078 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
96079 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
96080 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
96081 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9498796082 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9498896083 } },
9498996084 }, .{
94990 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
94991 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
96085 .required_features = .{ .bmi2, null, null, null },
96086 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
96087 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
9499296088 .patterns = &.{
9499396089 .{ .src = .{ .to_mem, .none, .none } },
9499496090 },
9499596091 .extra_temps = .{
9499696092 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94997 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
94998 .unused,
96093 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
96094 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
9499996095 .unused,
9500096096 .unused,
9500196097 .unused,
......@@ -95009,21 +96105,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9500996105 .clobbers = .{ .eflags = true },
9501096106 .each = .{ .once = &.{
9501196107 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95012 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
95013 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
95014 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
95015 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
96108 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
96109 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
96110 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
96111 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9501696112 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9501796113 } },
9501896114 }, .{
95019 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
95020 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }, .any },
96115 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
96116 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
9502196117 .patterns = &.{
9502296118 .{ .src = .{ .to_mem, .none, .none } },
9502396119 },
9502496120 .extra_temps = .{
9502596121 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95026 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
96122 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
9502796123 .unused,
9502896124 .unused,
9502996125 .unused,
......@@ -95039,19 +96135,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9503996135 .each = .{ .once = &.{
9504096136 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
9504196137 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
95042 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
95043 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
96138 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
96139 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
96140 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9504496141 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9504596142 } },
9504696143 }, .{
95047 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
95048 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
96144 .src_constraints = .{ .any_scalar_int, .any, .any },
96145 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }, .any },
9504996146 .patterns = &.{
9505096147 .{ .src = .{ .to_mem, .none, .none } },
9505196148 },
9505296149 .extra_temps = .{
9505396150 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95054 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
96151 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
96152 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
96153 .unused,
9505596154 .unused,
9505696155 .unused,
9505796156 .unused,
......@@ -95059,6 +96158,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9505996158 .unused,
9506096159 .unused,
9506196160 .unused,
96161 },
96162 .dst_temps = .{ .mem, .unused },
96163 .clobbers = .{ .eflags = true },
96164 .each = .{ .once = &.{
96165 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96166 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
96167 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
96168 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
96169 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
96170 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
96171 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
96172 } },
96173 }, .{
96174 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
96175 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
96176 .patterns = &.{
96177 .{ .src = .{ .to_mem, .none, .none } },
96178 },
96179 .extra_temps = .{
96180 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96181 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
96182 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
96183 .unused,
96184 .unused,
96185 .unused,
96186 .unused,
96187 .unused,
96188 .unused,
9506296189 .unused,
9506396190 .unused,
9506496191 },
......@@ -95066,25 +96193,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9506696193 .clobbers = .{ .eflags = true },
9506796194 .each = .{ .once = &.{
9506896195 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95069 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
95070 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95071 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95072 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
95073 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
96196 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
96197 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
96198 .{ ._, ._l, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
96199 .{ ._, ._r, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
96200 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
96201 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
96202 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9507496203 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9507596204 } },
9507696205 }, .{
9507796206 .required_features = .{ .bmi2, null, null, null },
95078 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
95079 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
96207 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
96208 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
9508096209 .patterns = &.{
9508196210 .{ .src = .{ .to_mem, .none, .none } },
9508296211 },
9508396212 .extra_temps = .{
9508496213 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96214 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
9508596215 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
95086 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
95087 .unused,
96216 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
9508896217 .unused,
9508996218 .unused,
9509096219 .unused,
......@@ -95097,23 +96226,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9509796226 .clobbers = .{ .eflags = true },
9509896227 .each = .{ .once = &.{
9509996228 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95100 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
95101 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
95102 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
95103 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
96229 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
96230 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
96231 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },
96232 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
96233 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
96234 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9510496235 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9510596236 } },
9510696237 }, .{
95107 .required_features = .{ .fast_imm16, null, null, null },
95108 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
95109 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
96238 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
96239 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
9511096240 .patterns = &.{
9511196241 .{ .src = .{ .to_mem, .none, .none } },
9511296242 },
9511396243 .extra_temps = .{
9511496244 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95115 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
95116 .unused,
96245 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
96246 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
9511796247 .unused,
9511896248 .unused,
9511996249 .unused,
......@@ -95127,26 +96257,248 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9512796257 .clobbers = .{ .eflags = true },
9512896258 .each = .{ .once = &.{
9512996259 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95130 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
95131 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
95132 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
95133 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
96260 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
96261 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
96262 .{ ._, ._, .@"and", .tmp2d, .sa(.dst0, .add_umax), ._, ._ },
96263 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
96264 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
96265 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
9513496266 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9513596267 } },
9513696268 }, .{
95137 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
95138 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
96269 .required_features = .{ .avx, null, null, null },
96270 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96271 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
96272 .patterns = &.{
96273 .{ .src = .{ .to_sse, .none, .none } },
96274 },
96275 .extra_temps = .{
96276 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
96277 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
96278 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
96279 .unused,
96280 .unused,
96281 .unused,
96282 .unused,
96283 .unused,
96284 .unused,
96285 .unused,
96286 .unused,
96287 },
96288 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
96289 .each = .{ .once = &.{
96290 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
96291 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
96292 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
96293 .{ ._, .vp_q, .add, .dst0x, .dst0x, .lea(.tmp0x), ._ },
96294 .{ ._, .vp_, .xor, .dst0x, .dst0x, .lea(.tmp0x), ._ },
96295 } },
96296 }, .{
96297 .required_features = .{ .avx, null, null, null },
96298 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96299 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
96300 .patterns = &.{
96301 .{ .src = .{ .to_sse, .none, .none } },
96302 },
96303 .extra_temps = .{
96304 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
96305 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
96306 .unused,
96307 .unused,
96308 .unused,
96309 .unused,
96310 .unused,
96311 .unused,
96312 .unused,
96313 .unused,
96314 .unused,
96315 },
96316 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
96317 .each = .{ .once = &.{
96318 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
96319 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
96320 } },
96321 }, .{
96322 .required_features = .{ .sse2, null, null, null },
96323 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96324 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
96325 .patterns = &.{
96326 .{ .src = .{ .to_mut_sse, .none, .none } },
96327 },
96328 .extra_temps = .{
96329 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
96330 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
96331 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
96332 .unused,
96333 .unused,
96334 .unused,
96335 .unused,
96336 .unused,
96337 .unused,
96338 .unused,
96339 .unused,
96340 },
96341 .dst_temps = .{ .{ .ref = .src0 }, .unused },
96342 .each = .{ .once = &.{
96343 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
96344 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
96345 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
96346 .{ ._, .p_q, .add, .dst0x, .lea(.tmp0x), ._, ._ },
96347 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
96348 } },
96349 }, .{
96350 .required_features = .{ .sse2, null, null, null },
96351 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96352 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
96353 .patterns = &.{
96354 .{ .src = .{ .to_mut_sse, .none, .none } },
96355 },
96356 .extra_temps = .{
96357 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
96358 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
96359 .unused,
96360 .unused,
96361 .unused,
96362 .unused,
96363 .unused,
96364 .unused,
96365 .unused,
96366 .unused,
96367 .unused,
96368 },
96369 .dst_temps = .{ .{ .ref = .src0 }, .unused },
96370 .each = .{ .once = &.{
96371 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
96372 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
96373 } },
96374 }, .{
96375 .required_features = .{ .sse, null, null, null },
96376 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96377 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
96378 .patterns = &.{
96379 .{ .src = .{ .to_mut_sse, .none, .none } },
96380 },
96381 .extra_temps = .{
96382 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
96383 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
96384 .unused,
96385 .unused,
96386 .unused,
96387 .unused,
96388 .unused,
96389 .unused,
96390 .unused,
96391 .unused,
96392 .unused,
96393 },
96394 .dst_temps = .{ .{ .ref = .src0 }, .unused },
96395 .each = .{ .once = &.{
96396 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
96397 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
96398 } },
96399 }, .{
96400 .required_features = .{ .avx2, null, null, null },
96401 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any },
96402 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },
96403 .patterns = &.{
96404 .{ .src = .{ .to_sse, .none, .none } },
96405 },
96406 .extra_temps = .{
96407 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
96408 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
96409 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
96410 .unused,
96411 .unused,
96412 .unused,
96413 .unused,
96414 .unused,
96415 .unused,
96416 .unused,
96417 .unused,
96418 },
96419 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
96420 .each = .{ .once = &.{
96421 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
96422 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
96423 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
96424 .{ ._, .vp_q, .add, .dst0y, .dst0y, .lea(.tmp0y), ._ },
96425 .{ ._, .vp_, .xor, .dst0y, .dst0y, .lea(.tmp0y), ._ },
96426 } },
96427 }, .{
96428 .required_features = .{ .avx2, null, null, null },
96429 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any },
96430 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any },
96431 .patterns = &.{
96432 .{ .src = .{ .to_sse, .none, .none } },
96433 },
96434 .extra_temps = .{
96435 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
96436 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
96437 .unused,
96438 .unused,
96439 .unused,
96440 .unused,
96441 .unused,
96442 .unused,
96443 .unused,
96444 .unused,
96445 .unused,
96446 },
96447 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
96448 .each = .{ .once = &.{
96449 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
96450 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
96451 } },
96452 }, .{
96453 .required_features = .{ .avx2, null, null, null },
96454 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any },
96455 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },
9513996456 .patterns = &.{
9514096457 .{ .src = .{ .to_mem, .none, .none } },
9514196458 },
9514296459 .extra_temps = .{
9514396460 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95144 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
96461 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
96462 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
96463 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
96464 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
96465 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
9514596466 .unused,
9514696467 .unused,
9514796468 .unused,
9514896469 .unused,
9514996470 .unused,
96471 },
96472 .dst_temps = .{ .mem, .unused },
96473 .clobbers = .{ .eflags = true },
96474 .each = .{ .once = &.{
96475 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
96476 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
96477 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
96478 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
96479 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96480 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
96481 .{ ._, .vp_q, .add, .tmp3y, .tmp3y, .tmp2y, ._ },
96482 .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp2y, ._ },
96483 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp3y, ._, ._ },
96484 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
96485 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
96486 } },
96487 }, .{
96488 .required_features = .{ .avx2, null, null, null },
96489 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any },
96490 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any },
96491 .patterns = &.{
96492 .{ .src = .{ .to_mem, .none, .none } },
96493 },
96494 .extra_temps = .{
96495 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96496 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
96497 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
96498 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
96499 .unused,
96500 .unused,
96501 .unused,
9515096502 .unused,
9515196503 .unused,
9515296504 .unused,
......@@ -95155,24 +96507,61 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9515596507 .dst_temps = .{ .mem, .unused },
9515696508 .clobbers = .{ .eflags = true },
9515796509 .each = .{ .once = &.{
96510 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
96511 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
9515896512 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95159 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
95160 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
95161 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
95162 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
96513 .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
96514 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },
96515 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
9516396516 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9516496517 } },
9516596518 }, .{
95166 .src_constraints = .{ .any_scalar_int, .any, .any },
95167 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }, .any },
96519 .required_features = .{ .avx, null, null, null },
96520 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96521 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
9516896522 .patterns = &.{
9516996523 .{ .src = .{ .to_mem, .none, .none } },
9517096524 },
9517196525 .extra_temps = .{
9517296526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95173 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95174 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
96527 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
96528 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
96529 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
96530 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
96531 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
96532 .unused,
96533 .unused,
96534 .unused,
96535 .unused,
9517596536 .unused,
96537 },
96538 .dst_temps = .{ .mem, .unused },
96539 .clobbers = .{ .eflags = true },
96540 .each = .{ .once = &.{
96541 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
96542 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
96543 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
96544 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
96545 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96546 .{ .@"0:", .vp_, .@"and", .tmp3x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
96547 .{ ._, .vp_q, .add, .tmp3x, .tmp3x, .tmp2x, ._ },
96548 .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp2x, ._ },
96549 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
96550 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
96551 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
96552 } },
96553 }, .{
96554 .required_features = .{ .avx, null, null, null },
96555 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96556 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
96557 .patterns = &.{
96558 .{ .src = .{ .to_mem, .none, .none } },
96559 },
96560 .extra_temps = .{
96561 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96562 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
96563 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
96564 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
9517696565 .unused,
9517796566 .unused,
9517896567 .unused,
......@@ -95184,27 +96573,64 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9518496573 .dst_temps = .{ .mem, .unused },
9518596574 .clobbers = .{ .eflags = true },
9518696575 .each = .{ .once = &.{
96576 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
96577 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
9518796578 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95188 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
95189 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
95190 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
95191 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
95192 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
96579 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
96580 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
96581 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
9519396582 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9519496583 } },
9519596584 }, .{
95196 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
95197 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
96585 .required_features = .{ .sse2, null, null, null },
96586 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96587 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
9519896588 .patterns = &.{
9519996589 .{ .src = .{ .to_mem, .none, .none } },
9520096590 },
9520196591 .extra_temps = .{
9520296592 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95203 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95204 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
96593 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
96594 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
96595 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
96596 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
96597 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
96598 .unused,
96599 .unused,
9520596600 .unused,
9520696601 .unused,
9520796602 .unused,
96603 },
96604 .dst_temps = .{ .mem, .unused },
96605 .clobbers = .{ .eflags = true },
96606 .each = .{ .once = &.{
96607 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
96608 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
96609 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
96610 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
96611 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96612 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp1x, ._, ._ },
96613 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
96614 .{ ._, .p_q, .add, .tmp3x, .tmp2x, ._, ._ },
96615 .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ },
96616 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
96617 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
96618 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
96619 } },
96620 }, .{
96621 .required_features = .{ .sse2, null, null, null },
96622 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96623 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
96624 .patterns = &.{
96625 .{ .src = .{ .to_mem, .none, .none } },
96626 },
96627 .extra_temps = .{
96628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96629 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
96630 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
96631 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
96632 .unused,
96633 .unused,
9520896634 .unused,
9520996635 .unused,
9521096636 .unused,
......@@ -95214,28 +96640,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9521496640 .dst_temps = .{ .mem, .unused },
9521596641 .clobbers = .{ .eflags = true },
9521696642 .each = .{ .once = &.{
96643 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
96644 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
9521796645 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95218 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
95219 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
95220 .{ ._, ._l, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95221 .{ ._, ._r, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95222 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
95223 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
95224 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
96646 .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
96647 .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
96648 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
96649 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
9522596650 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9522696651 } },
9522796652 }, .{
95228 .required_features = .{ .bmi2, null, null, null },
95229 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
95230 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
96653 .required_features = .{ .sse, null, null, null },
96654 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96655 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
9523196656 .patterns = &.{
9523296657 .{ .src = .{ .to_mem, .none, .none } },
9523396658 },
9523496659 .extra_temps = .{
9523596660 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95236 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95237 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
95238 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
96661 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
96662 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
96663 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
9523996664 .unused,
9524096665 .unused,
9524196666 .unused,
......@@ -95247,26 +96672,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9524796672 .dst_temps = .{ .mem, .unused },
9524896673 .clobbers = .{ .eflags = true },
9524996674 .each = .{ .once = &.{
96675 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
96676 .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ },
9525096677 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95251 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
95252 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
95253 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },
95254 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
95255 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
95256 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
96678 .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
96679 .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
96680 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
96681 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
9525796682 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9525896683 } },
9525996684 }, .{
95260 .required_features = .{ .fast_imm16, null, null, null },
95261 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
95262 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
96685 .required_features = .{ .@"64bit", null, null, null },
96686 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
96687 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }, .any },
9526396688 .patterns = &.{
9526496689 .{ .src = .{ .to_mem, .none, .none } },
9526596690 },
9526696691 .extra_temps = .{
9526796692 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95268 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95269 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
96693 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
96694 .unused,
9527096695 .unused,
9527196696 .unused,
9527296697 .unused,
......@@ -95280,24 +96705,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9528096705 .clobbers = .{ .eflags = true },
9528196706 .each = .{ .once = &.{
9528296707 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95283 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
95284 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
95285 .{ ._, ._, .@"and", .tmp2w, .sa(.dst0, .add_umax), ._, ._ },
95286 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
95287 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
95288 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
96708 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
96709 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
96710 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
9528996711 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9529096712 } },
9529196713 }, .{
95292 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
95293 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
96714 .required_features = .{ .@"64bit", null, null, null },
96715 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
96716 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
9529496717 .patterns = &.{
9529596718 .{ .src = .{ .to_mem, .none, .none } },
9529696719 },
9529796720 .extra_temps = .{
9529896721 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95299 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95300 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
96722 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
96723 .unused,
9530196724 .unused,
9530296725 .unused,
9530396726 .unused,
......@@ -95311,36 +96734,53 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9531196734 .clobbers = .{ .eflags = true },
9531296735 .each = .{ .once = &.{
9531396736 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95314 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
95315 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
95316 .{ ._, ._, .@"and", .tmp2d, .sa(.dst0, .add_umax), ._, ._ },
95317 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
95318 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
95319 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
96737 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
96738 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
96739 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
96740 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
96741 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
9532096742 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9532196743 } },
9532296744 }, .{
95323 .required_features = .{ .avx, null, null, null },
95324 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
95325 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
96745 .required_features = .{ .@"64bit", .bmi2, null, null },
96746 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
96747 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
9532696748 .patterns = &.{
95327 .{ .src = .{ .to_sse, .none, .none } },
96749 .{ .src = .{ .to_mem, .none, .none } },
9532896750 },
95329 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
96751 .extra_temps = .{
96752 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96753 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
96754 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
96755 .unused,
96756 .unused,
96757 .unused,
96758 .unused,
96759 .unused,
96760 .unused,
96761 .unused,
96762 .unused,
96763 },
96764 .dst_temps = .{ .mem, .unused },
96765 .clobbers = .{ .eflags = true },
9533096766 .each = .{ .once = &.{
95331 .{ ._, .vp_d, .sll, .dst0x, .src0x, .uia(32, .dst0, .sub_bit_size), ._ },
95332 .{ ._, .vp_d, .sra, .dst0x, .dst0x, .uia(32, .dst0, .sub_bit_size), ._ },
96767 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96768 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
96769 .{ .@"0:", ._, .bzhi, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), .tmp1q, ._ },
96770 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
96771 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
96772 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9533396773 } },
9533496774 }, .{
95335 .required_features = .{ .avx, null, null, null },
95336 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
95337 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },
96775 .required_features = .{ .@"64bit", null, null, null },
96776 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
96777 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
9533896778 .patterns = &.{
95339 .{ .src = .{ .to_sse, .none, .none } },
96779 .{ .src = .{ .to_mem, .none, .none } },
9534096780 },
9534196781 .extra_temps = .{
95342 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
95343 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
96782 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96783 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
9534496784 .unused,
9534596785 .unused,
9534696786 .unused,
......@@ -95351,33 +96791,55 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9535196791 .unused,
9535296792 .unused,
9535396793 },
95354 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
96794 .dst_temps = .{ .mem, .unused },
96795 .clobbers = .{ .eflags = true },
9535596796 .each = .{ .once = &.{
95356 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
95357 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
96797 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96798 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
96799 .{ ._, ._, .@"and", .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
96800 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
96801 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
96802 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9535896803 } },
9535996804 }, .{
95360 .required_features = .{ .sse2, null, null, null },
95361 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
95362 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
96805 .required_features = .{ .@"64bit", null, null, null },
96806 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
96807 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }, .any },
9536396808 .patterns = &.{
95364 .{ .src = .{ .to_mut_sse, .none, .none } },
96809 .{ .src = .{ .to_mem, .none, .none } },
9536596810 },
95366 .dst_temps = .{ .{ .ref = .src0 }, .unused },
96811 .extra_temps = .{
96812 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96813 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
96814 .unused,
96815 .unused,
96816 .unused,
96817 .unused,
96818 .unused,
96819 .unused,
96820 .unused,
96821 .unused,
96822 .unused,
96823 },
96824 .dst_temps = .{ .mem, .unused },
96825 .clobbers = .{ .eflags = true },
9536796826 .each = .{ .once = &.{
95368 .{ ._, .p_d, .sll, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95369 .{ ._, .p_d, .sra, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ },
96827 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96828 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
96829 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
96830 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
96831 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9537096832 } },
9537196833 }, .{
95372 .required_features = .{ .sse2, null, null, null },
95373 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
95374 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },
96834 .required_features = .{ .@"64bit", null, null, null },
96835 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
96836 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
9537596837 .patterns = &.{
95376 .{ .src = .{ .to_mut_sse, .none, .none } },
96838 .{ .src = .{ .to_mem, .none, .none } },
9537796839 },
9537896840 .extra_temps = .{
95379 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
95380 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
96841 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96842 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
9538196843 .unused,
9538296844 .unused,
9538396845 .unused,
......@@ -95388,22 +96850,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9538896850 .unused,
9538996851 .unused,
9539096852 },
95391 .dst_temps = .{ .{ .ref = .src0 }, .unused },
96853 .dst_temps = .{ .mem, .unused },
96854 .clobbers = .{ .eflags = true },
9539296855 .each = .{ .once = &.{
95393 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
95394 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
96856 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96857 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
96858 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
96859 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
96860 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
96861 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
96862 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9539596863 } },
9539696864 }, .{
95397 .required_features = .{ .sse, null, null, null },
95398 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
95399 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },
96865 .required_features = .{ .@"64bit", .bmi2, null, null },
96866 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
96867 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
9540096868 .patterns = &.{
95401 .{ .src = .{ .to_mut_sse, .none, .none } },
96869 .{ .src = .{ .to_mem, .none, .none } },
9540296870 },
9540396871 .extra_temps = .{
95404 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
95405 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
95406 .unused,
96872 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96873 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
96874 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
9540796875 .unused,
9540896876 .unused,
9540996877 .unused,
......@@ -95413,33 +96881,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9541396881 .unused,
9541496882 .unused,
9541596883 },
95416 .dst_temps = .{ .{ .ref = .src0 }, .unused },
95417 .each = .{ .once = &.{
95418 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
95419 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
95420 } },
95421 }, .{
95422 .required_features = .{ .avx2, null, null, null },
95423 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },
95424 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any },
95425 .patterns = &.{
95426 .{ .src = .{ .to_sse, .none, .none } },
95427 },
95428 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
96884 .dst_temps = .{ .mem, .unused },
96885 .clobbers = .{ .eflags = true },
9542996886 .each = .{ .once = &.{
95430 .{ ._, .vp_d, .sll, .dst0y, .src0y, .uia(32, .dst0, .sub_bit_size), ._ },
95431 .{ ._, .vp_d, .sra, .dst0y, .dst0y, .uia(32, .dst0, .sub_bit_size), ._ },
96887 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96888 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
96889 .{ .@"0:", ._, .bzhi, .tmp2q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._ },
96890 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
96891 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
96892 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9543296893 } },
9543396894 }, .{
95434 .required_features = .{ .avx2, null, null, null },
95435 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any },
95436 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any },
96895 .required_features = .{ .@"64bit", null, null, null },
96896 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
96897 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
9543796898 .patterns = &.{
95438 .{ .src = .{ .to_sse, .none, .none } },
96899 .{ .src = .{ .to_mem, .none, .none } },
9543996900 },
9544096901 .extra_temps = .{
95441 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
95442 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
96902 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96903 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
9544396904 .unused,
9544496905 .unused,
9544596906 .unused,
......@@ -95450,21 +96911,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9545096911 .unused,
9545196912 .unused,
9545296913 },
95453 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
96914 .dst_temps = .{ .mem, .unused },
96915 .clobbers = .{ .eflags = true },
9545496916 .each = .{ .once = &.{
95455 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
95456 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
96917 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96918 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
96919 .{ ._, ._, .@"and", .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
96920 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
96921 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
96922 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9545796923 } },
9545896924 }, .{
95459 .required_features = .{ .avx2, null, null, null },
95460 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },
95461 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any },
96925 .required_features = .{ .@"64bit", null, null, null },
96926 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },
96927 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }, .any },
9546296928 .patterns = &.{
9546396929 .{ .src = .{ .to_mem, .none, .none } },
9546496930 },
9546596931 .extra_temps = .{
9546696932 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95467 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
96933 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
9546896934 .unused,
9546996935 .unused,
9547096936 .unused,
......@@ -95479,25 +96945,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9547996945 .clobbers = .{ .eflags = true },
9548096946 .each = .{ .once = &.{
9548196947 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95482 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
95483 .{ ._, .vp_d, .sll, .tmp1y, .tmp1y, .uia(32, .dst0, .sub_bit_size), ._ },
95484 .{ ._, .vp_d, .sra, .tmp1y, .tmp1y, .uia(32, .dst0, .sub_bit_size), ._ },
95485 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
95486 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
96948 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
96949 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
96950 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
9548796951 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9548896952 } },
9548996953 }, .{
95490 .required_features = .{ .avx2, null, null, null },
95491 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any },
95492 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any },
96954 .required_features = .{ .@"64bit", null, null, null },
96955 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .yword } }, .any, .any },
96956 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
9549396957 .patterns = &.{
9549496958 .{ .src = .{ .to_mem, .none, .none } },
9549596959 },
9549696960 .extra_temps = .{
9549796961 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95498 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
95499 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
95500 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
96962 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
96963 .unused,
96964 .unused,
9550196965 .unused,
9550296966 .unused,
9550396967 .unused,
......@@ -95509,25 +96973,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9550996973 .dst_temps = .{ .mem, .unused },
9551096974 .clobbers = .{ .eflags = true },
9551196975 .each = .{ .once = &.{
95512 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
95513 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
9551496976 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95515 .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
95516 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },
95517 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
96977 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
96978 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
96979 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
96980 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
96981 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
9551896982 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9551996983 } },
9552096984 }, .{
95521 .required_features = .{ .avx, null, null, null },
95522 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
95523 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
96985 .required_features = .{ .@"64bit", .bmi2, null, null },
96986 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
96987 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
9552496988 .patterns = &.{
9552596989 .{ .src = .{ .to_mem, .none, .none } },
9552696990 },
9552796991 .extra_temps = .{
9552896992 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95529 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
95530 .unused,
96993 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
96994 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
9553196995 .unused,
9553296996 .unused,
9553396997 .unused,
......@@ -95541,25 +97005,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9554197005 .clobbers = .{ .eflags = true },
9554297006 .each = .{ .once = &.{
9554397007 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95544 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
95545 .{ ._, .vp_d, .sll, .tmp1x, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._ },
95546 .{ ._, .vp_d, .sra, .tmp1x, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._ },
95547 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
95548 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
97008 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
97009 .{ .@"0:", ._, .bzhi, .tmp2q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._ },
97010 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
97011 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
9554997012 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9555097013 } },
9555197014 }, .{
95552 .required_features = .{ .avx, null, null, null },
95553 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
95554 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },
97015 .required_features = .{ .@"64bit", null, null, null },
97016 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
97017 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
9555597018 .patterns = &.{
9555697019 .{ .src = .{ .to_mem, .none, .none } },
9555797020 },
9555897021 .extra_temps = .{
9555997022 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95560 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
95561 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
95562 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
97023 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
97024 .unused,
97025 .unused,
9556397026 .unused,
9556497027 .unused,
9556597028 .unused,
......@@ -95571,25 +97034,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9557197034 .dst_temps = .{ .mem, .unused },
9557297035 .clobbers = .{ .eflags = true },
9557397036 .each = .{ .once = &.{
95574 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
95575 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
9557697037 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95577 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
95578 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
95579 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
97038 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
97039 .{ ._, ._, .@"and", .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
97040 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
97041 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
9558097042 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9558197043 } },
9558297044 }, .{
95583 .required_features = .{ .sse2, null, null, null },
95584 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
95585 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
97045 .required_features = .{ .@"64bit", null, null, null },
97046 .src_constraints = .{ .any_scalar_int, .any, .any },
97047 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }, .any },
9558697048 .patterns = &.{
9558797049 .{ .src = .{ .to_mem, .none, .none } },
9558897050 },
9558997051 .extra_temps = .{
9559097052 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95591 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
95592 .unused,
97053 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97054 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
9559397055 .unused,
9559497056 .unused,
9559597057 .unused,
......@@ -95603,25 +97065,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9560397065 .clobbers = .{ .eflags = true },
9560497066 .each = .{ .once = &.{
9560597067 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95606 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
95607 .{ ._, .p_d, .sll, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95608 .{ ._, .p_d, .sra, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95609 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
95610 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
97068 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
97069 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
97070 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
97071 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
97072 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
9561197073 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9561297074 } },
9561397075 }, .{
95614 .required_features = .{ .sse2, null, null, null },
95615 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
95616 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },
97076 .required_features = .{ .@"64bit", null, null, null },
97077 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
97078 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
9561797079 .patterns = &.{
9561897080 .{ .src = .{ .to_mem, .none, .none } },
9561997081 },
9562097082 .extra_temps = .{
9562197083 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95622 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
95623 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
95624 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
97084 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97085 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
97086 .unused,
9562597087 .unused,
9562697088 .unused,
9562797089 .unused,
......@@ -95633,27 +97095,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9563397095 .dst_temps = .{ .mem, .unused },
9563497096 .clobbers = .{ .eflags = true },
9563597097 .each = .{ .once = &.{
95636 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
95637 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
9563897098 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95639 .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
95640 .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
95641 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
95642 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
97099 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
97100 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
97101 .{ ._, ._l, .sa, .tmp2q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
97102 .{ ._, ._r, .sa, .tmp2q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
97103 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
97104 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
97105 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
9564397106 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9564497107 } },
9564597108 }, .{
95646 .required_features = .{ .sse, null, null, null },
95647 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
95648 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },
97109 .required_features = .{ .@"64bit", .bmi2, null, null },
97110 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97111 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
9564997112 .patterns = &.{
9565097113 .{ .src = .{ .to_mem, .none, .none } },
9565197114 },
9565297115 .extra_temps = .{
9565397116 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95654 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
95655 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
95656 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
97117 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97118 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
97119 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
9565797120 .unused,
9565897121 .unused,
9565997122 .unused,
......@@ -95665,25 +97128,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9566597128 .dst_temps = .{ .mem, .unused },
9566697129 .clobbers = .{ .eflags = true },
9566797130 .each = .{ .once = &.{
95668 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
95669 .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ },
9567097131 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95671 .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
95672 .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
95673 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
95674 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
97132 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
97133 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
97134 .{ .@"0:", ._, .bzhi, .tmp3q, .memi(.src0q, .tmp1), .tmp2q, ._ },
97135 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
97136 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
97137 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
9567597138 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9567697139 } },
9567797140 }, .{
95678 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
95679 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }, .any },
97141 .required_features = .{ .@"64bit", null, null, null },
97142 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97143 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
9568097144 .patterns = &.{
9568197145 .{ .src = .{ .to_mem, .none, .none } },
9568297146 },
9568397147 .extra_temps = .{
9568497148 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9568597149 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95686 .unused,
97150 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
9568797151 .unused,
9568897152 .unused,
9568997153 .unused,
......@@ -95697,22 +97161,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9569797161 .clobbers = .{ .eflags = true },
9569897162 .each = .{ .once = &.{
9569997163 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95700 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
95701 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
95702 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
97164 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
97165 .{ .@"0:", ._, .mov, .tmp2q, .ua(.dst0, .add_umax), ._, ._ },
97166 .{ ._, ._, .@"and", .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
97167 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
97168 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
97169 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
9570397170 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9570497171 } },
9570597172 }, .{
95706 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
95707 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
97173 .required_features = .{ .@"64bit", .slow_incdec, null, null },
97174 .src_constraints = .{ .any_scalar_int, .any, .any },
97175 .dst_constraints = .{ .{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
9570897176 .patterns = &.{
9570997177 .{ .src = .{ .to_mem, .none, .none } },
9571097178 },
9571197179 .extra_temps = .{
95712 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95713 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
95714 .unused,
95715 .unused,
97180 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97181 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97182 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97183 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9571697184 .unused,
9571797185 .unused,
9571897186 .unused,
......@@ -95724,26 +97192,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9572497192 .dst_temps = .{ .mem, .unused },
9572597193 .clobbers = .{ .eflags = true },
9572697194 .each = .{ .once = &.{
95727 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95728 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
95729 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95730 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95731 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
95732 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
95733 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
97195 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97196 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97197 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97198 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
97199 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97200 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
97201 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
97202 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
9573497203 } },
9573597204 }, .{
95736 .required_features = .{ .bmi2, null, null, null },
95737 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
95738 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
97205 .required_features = .{ .@"64bit", null, null, null },
97206 .src_constraints = .{ .any_scalar_int, .any, .any },
97207 .dst_constraints = .{ .{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
9573997208 .patterns = &.{
9574097209 .{ .src = .{ .to_mem, .none, .none } },
9574197210 },
9574297211 .extra_temps = .{
95743 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95744 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
9574597212 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95746 .unused,
97213 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97214 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97215 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9574797216 .unused,
9574897217 .unused,
9574997218 .unused,
......@@ -95755,24 +97224,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9575597224 .dst_temps = .{ .mem, .unused },
9575697225 .clobbers = .{ .eflags = true },
9575797226 .each = .{ .once = &.{
95758 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95759 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
95760 .{ .@"0:", ._, .bzhi, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), .tmp1d, ._ },
95761 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
95762 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
95763 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
97227 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97228 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97229 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97230 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
97231 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97232 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
97233 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
97234 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9576497235 } },
9576597236 }, .{
95766 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
95767 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
97237 .required_features = .{ .@"64bit", .slow_incdec, null, null },
97238 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
97239 .dst_constraints = .{ .{ .scalar_exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any },
9576897240 .patterns = &.{
9576997241 .{ .src = .{ .to_mem, .none, .none } },
9577097242 },
9577197243 .extra_temps = .{
95772 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9577397244 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95774 .unused,
95775 .unused,
97245 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97246 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97247 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9577697248 .unused,
9577797249 .unused,
9577897250 .unused,
......@@ -95784,24 +97256,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9578497256 .dst_temps = .{ .mem, .unused },
9578597257 .clobbers = .{ .eflags = true },
9578697258 .each = .{ .once = &.{
95787 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95788 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
95789 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
95790 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
95791 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
95792 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
97259 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97260 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97261 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97262 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
97263 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97264 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
97265 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
97266 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
97267 .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ },
97268 .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97269 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
97270 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
97271 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
9579397272 } },
9579497273 }, .{
95795 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
95796 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }, .any },
97274 .required_features = .{ .@"64bit", null, null, null },
97275 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
97276 .dst_constraints = .{ .{ .scalar_exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any },
9579797277 .patterns = &.{
9579897278 .{ .src = .{ .to_mem, .none, .none } },
9579997279 },
9580097280 .extra_temps = .{
95801 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9580297281 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95803 .unused,
95804 .unused,
97282 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97283 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97284 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9580597285 .unused,
9580697286 .unused,
9580797287 .unused,
......@@ -95813,23 +97293,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9581397293 .dst_temps = .{ .mem, .unused },
9581497294 .clobbers = .{ .eflags = true },
9581597295 .each = .{ .once = &.{
95816 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95817 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
95818 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
95819 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
95820 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
97296 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97297 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97298 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97299 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
97300 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97301 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
97302 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
97303 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
97304 .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ },
97305 .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97306 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
97307 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
97308 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9582197309 } },
9582297310 }, .{
95823 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
95824 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
97311 .required_features = .{ .@"64bit", .slow_incdec, null, null },
97312 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
97313 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any },
9582597314 .patterns = &.{
9582697315 .{ .src = .{ .to_mem, .none, .none } },
9582797316 },
9582897317 .extra_temps = .{
95829 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95830 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
95831 .unused,
95832 .unused,
97318 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97319 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97320 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97321 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9583397322 .unused,
9583497323 .unused,
9583597324 .unused,
......@@ -95841,26 +97330,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9584197330 .dst_temps = .{ .mem, .unused },
9584297331 .clobbers = .{ .eflags = true },
9584397332 .each = .{ .once = &.{
95844 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95845 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
95846 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95847 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95848 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
95849 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
95850 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
97333 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97334 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97335 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97336 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
97337 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97338 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
97339 .{ ._, ._l, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
97340 .{ ._, ._r, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
97341 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
97342 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
97343 .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ },
97344 .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97345 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
97346 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
97347 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
9585197348 } },
9585297349 }, .{
95853 .required_features = .{ .bmi2, null, null, null },
95854 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
95855 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
97350 .required_features = .{ .@"64bit", null, null, null },
97351 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
97352 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any },
9585697353 .patterns = &.{
9585797354 .{ .src = .{ .to_mem, .none, .none } },
9585897355 },
9585997356 .extra_temps = .{
95860 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95861 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
9586297357 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95863 .unused,
97358 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97359 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97360 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9586497361 .unused,
9586597362 .unused,
9586697363 .unused,
......@@ -95872,25 +97369,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9587297369 .dst_temps = .{ .mem, .unused },
9587397370 .clobbers = .{ .eflags = true },
9587497371 .each = .{ .once = &.{
95875 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95876 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
95877 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._ },
95878 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
95879 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
95880 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
97372 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97373 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97374 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97375 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
97376 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97377 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
97378 .{ ._, ._l, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
97379 .{ ._, ._r, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
97380 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
97381 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
97382 .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ },
97383 .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97384 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
97385 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
97386 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9588197387 } },
9588297388 }, .{
95883 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
95884 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
97389 .required_features = .{ .@"64bit", .slow_incdec, null, null },
97390 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
97391 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }, .any },
9588597392 .patterns = &.{
9588697393 .{ .src = .{ .to_mem, .none, .none } },
9588797394 },
9588897395 .extra_temps = .{
95889 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9589097396 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95891 .unused,
95892 .unused,
95893 .unused,
97397 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97398 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97399 .{ .type = .u32, .kind = .{ .reg = .ecx } },
97400 .{ .type = .u64, .kind = .{ .reg = .rax } },
9589497401 .unused,
9589597402 .unused,
9589697403 .unused,
......@@ -95901,25 +97408,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9590197408 .dst_temps = .{ .mem, .unused },
9590297409 .clobbers = .{ .eflags = true },
9590397410 .each = .{ .once = &.{
95904 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95905 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
95906 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
95907 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
95908 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
95909 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
97411 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97412 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97413 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97414 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
97415 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97416 .{ ._, ._, .mov, .tmp4q, .lea(.tmp1q), ._, ._ },
97417 .{ ._, ._l, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
97418 .{ ._, ._r, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
97419 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
97420 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97421 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
97422 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
9591097423 } },
9591197424 }, .{
95912 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
95913 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }, .any },
97425 .required_features = .{ .@"64bit", null, null, null },
97426 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
97427 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }, .any },
9591497428 .patterns = &.{
9591597429 .{ .src = .{ .to_mem, .none, .none } },
9591697430 },
9591797431 .extra_temps = .{
95918 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9591997432 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95920 .unused,
95921 .unused,
95922 .unused,
97433 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97434 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97435 .{ .type = .u32, .kind = .{ .reg = .ecx } },
97436 .{ .type = .u64, .kind = .{ .reg = .rax } },
9592397437 .unused,
9592497438 .unused,
9592597439 .unused,
......@@ -95930,24 +97444,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9593097444 .dst_temps = .{ .mem, .unused },
9593197445 .clobbers = .{ .eflags = true },
9593297446 .each = .{ .once = &.{
95933 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95934 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
95935 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
95936 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
95937 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
97447 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97448 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97449 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97450 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
97451 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97452 .{ ._, ._, .mov, .tmp4q, .lea(.tmp1q), ._, ._ },
97453 .{ ._, ._l, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
97454 .{ ._, ._r, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
97455 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
97456 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97457 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
97458 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9593897459 } },
9593997460 }, .{
95940 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
95941 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
97461 .required_features = .{ .@"64bit", .slow_incdec, null, null },
97462 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97463 .dst_constraints = .{ .{ .scalar_exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
9594297464 .patterns = &.{
9594397465 .{ .src = .{ .to_mem, .none, .none } },
9594497466 },
9594597467 .extra_temps = .{
95946 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95947 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
95948 .unused,
95949 .unused,
95950 .unused,
97468 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97469 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97470 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97471 .{ .type = .u64, .kind = .{ .reg = .rax } },
97472 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9595197473 .unused,
9595297474 .unused,
9595397475 .unused,
......@@ -95958,27 +97480,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9595897480 .dst_temps = .{ .mem, .unused },
9595997481 .clobbers = .{ .eflags = true },
9596097482 .each = .{ .once = &.{
95961 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95962 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
95963 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95964 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95965 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
95966 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
95967 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
97483 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97484 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97485 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97486 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
97487 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
97488 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97489 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
97490 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
97491 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
97492 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
9596897493 } },
9596997494 }, .{
95970 .required_features = .{ .bmi2, null, null, null },
95971 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
95972 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
97495 .required_features = .{ .@"64bit", null, null, null },
97496 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97497 .dst_constraints = .{ .{ .scalar_exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
9597397498 .patterns = &.{
9597497499 .{ .src = .{ .to_mem, .none, .none } },
9597597500 },
9597697501 .extra_temps = .{
95977 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95978 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
9597997502 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95980 .unused,
95981 .unused,
97503 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97504 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97505 .{ .type = .u64, .kind = .{ .reg = .rax } },
97506 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9598297507 .unused,
9598397508 .unused,
9598497509 .unused,
......@@ -95989,26 +97514,68 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9598997514 .dst_temps = .{ .mem, .unused },
9599097515 .clobbers = .{ .eflags = true },
9599197516 .each = .{ .once = &.{
95992 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95993 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
95994 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
95995 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
95996 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
95997 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
97517 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97518 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97519 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97520 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
97521 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
97522 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97523 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
97524 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
97525 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
97526 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9599897527 } },
9599997528 }, .{
96000 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
96001 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
97529 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
97530 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97531 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
9600297532 .patterns = &.{
9600397533 .{ .src = .{ .to_mem, .none, .none } },
9600497534 },
9600597535 .extra_temps = .{
96006 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9600797536 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97537 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97538 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97539 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
97540 .{ .type = .u32, .kind = .{ .reg = .ecx } },
97541 .unused,
97542 .unused,
9600897543 .unused,
9600997544 .unused,
9601097545 .unused,
9601197546 .unused,
97547 },
97548 .dst_temps = .{ .mem, .unused },
97549 .clobbers = .{ .eflags = true },
97550 .each = .{ .once = &.{
97551 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97552 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97553 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97554 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
97555 .{ .@"0:", ._, .mov, .tmp4d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
97556 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97557 .{ ._, ._, .bzhi, .tmp4q, .lea(.tmp1q), .tmp3q, ._ },
97558 .{ ._, ._, .mov, .lea(.tmp2q), .tmp4q, ._, ._ },
97559 .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ },
97560 .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97561 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
97562 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
97563 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
97564 } },
97565 }, .{
97566 .required_features = .{ .@"64bit", .bmi2, null, null },
97567 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97568 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
97569 .patterns = &.{
97570 .{ .src = .{ .to_mem, .none, .none } },
97571 },
97572 .extra_temps = .{
97573 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97574 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97575 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97576 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
97577 .{ .type = .u32, .kind = .{ .reg = .ecx } },
97578 .unused,
9601297579 .unused,
9601397580 .unused,
9601497581 .unused,
......@@ -96018,27 +97585,70 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9601897585 .dst_temps = .{ .mem, .unused },
9601997586 .clobbers = .{ .eflags = true },
9602097587 .each = .{ .once = &.{
96021 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96022 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
96023 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
96024 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
96025 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
96026 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
97588 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97589 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97590 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97591 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
97592 .{ .@"0:", ._, .mov, .tmp4d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
97593 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97594 .{ ._, ._, .bzhi, .tmp4q, .lea(.tmp1q), .tmp3q, ._ },
97595 .{ ._, ._, .mov, .lea(.tmp2q), .tmp4q, ._, ._ },
97596 .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ },
97597 .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97598 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
97599 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
97600 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9602797601 } },
9602897602 }, .{
96029 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },
96030 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }, .any },
97603 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
97604 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97605 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
9603197606 .patterns = &.{
9603297607 .{ .src = .{ .to_mem, .none, .none } },
9603397608 },
9603497609 .extra_temps = .{
96035 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9603697610 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97611 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97612 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97613 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
97614 .{ .type = .u32, .kind = .{ .reg = .ecx } },
97615 .{ .type = .u64, .kind = .{ .reg = .rax } },
9603797616 .unused,
9603897617 .unused,
9603997618 .unused,
9604097619 .unused,
9604197620 .unused,
97621 },
97622 .dst_temps = .{ .mem, .unused },
97623 .clobbers = .{ .eflags = true },
97624 .each = .{ .once = &.{
97625 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97626 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97627 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97628 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
97629 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
97630 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97631 .{ ._, ._, .bzhi, .tmp5q, .lea(.tmp1q), .tmp3q, ._ },
97632 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
97633 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97634 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
97635 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
97636 } },
97637 }, .{
97638 .required_features = .{ .@"64bit", .bmi2, null, null },
97639 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97640 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
97641 .patterns = &.{
97642 .{ .src = .{ .to_mem, .none, .none } },
97643 },
97644 .extra_temps = .{
97645 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97646 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97647 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97648 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
97649 .{ .type = .u32, .kind = .{ .reg = .ecx } },
97650 .{ .type = .u64, .kind = .{ .reg = .rax } },
97651 .unused,
9604297652 .unused,
9604397653 .unused,
9604497654 .unused,
......@@ -96047,23 +97657,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9604797657 .dst_temps = .{ .mem, .unused },
9604897658 .clobbers = .{ .eflags = true },
9604997659 .each = .{ .once = &.{
96050 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96051 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
96052 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
96053 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
96054 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
97660 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97661 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97662 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97663 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
97664 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
97665 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97666 .{ ._, ._, .bzhi, .tmp5q, .lea(.tmp1q), .tmp3q, ._ },
97667 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
97668 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97669 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
97670 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9605597671 } },
9605697672 }, .{
96057 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .yword } }, .any, .any },
96058 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
97673 .required_features = .{ .@"64bit", .slow_incdec, null, null },
97674 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97675 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
9605997676 .patterns = &.{
9606097677 .{ .src = .{ .to_mem, .none, .none } },
9606197678 },
9606297679 .extra_temps = .{
96063 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96064 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
96065 .unused,
96066 .unused,
97680 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97681 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97682 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97683 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9606797684 .unused,
9606897685 .unused,
9606997686 .unused,
......@@ -96075,26 +97692,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9607597692 .dst_temps = .{ .mem, .unused },
9607697693 .clobbers = .{ .eflags = true },
9607797694 .each = .{ .once = &.{
96078 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96079 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
96080 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
96081 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
96082 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
96083 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
96084 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
97695 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97696 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97697 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97698 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
97699 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97700 .{ ._, ._, .mov, .tmp3q, .ua(.dst0, .add_umax), ._, ._ },
97701 .{ ._, ._, .@"and", .tmp3q, .lea(.tmp1q), ._, ._ },
97702 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
97703 .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ },
97704 .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97705 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
97706 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
97707 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
9608597708 } },
9608697709 }, .{
96087 .required_features = .{ .bmi2, null, null, null },
96088 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
96089 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
97710 .required_features = .{ .@"64bit", null, null, null },
97711 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97712 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
9609097713 .patterns = &.{
9609197714 .{ .src = .{ .to_mem, .none, .none } },
9609297715 },
9609397716 .extra_temps = .{
96094 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96095 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
9609697717 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
96097 .unused,
97718 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97719 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97720 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9609897721 .unused,
9609997722 .unused,
9610097723 .unused,
......@@ -96106,25 +97729,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9610697729 .dst_temps = .{ .mem, .unused },
9610797730 .clobbers = .{ .eflags = true },
9610897731 .each = .{ .once = &.{
96109 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96110 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
96111 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
96112 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
96113 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
96114 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
97732 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97733 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97734 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97735 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
97736 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97737 .{ ._, ._, .mov, .tmp3q, .ua(.dst0, .add_umax), ._, ._ },
97738 .{ ._, ._, .@"and", .tmp3q, .lea(.tmp1q), ._, ._ },
97739 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
97740 .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ },
97741 .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97742 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
97743 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
97744 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9611597745 } },
9611697746 }, .{
96117 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
96118 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
97747 .required_features = .{ .@"64bit", .slow_incdec, null, null },
97748 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97749 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
9611997750 .patterns = &.{
9612097751 .{ .src = .{ .to_mem, .none, .none } },
9612197752 },
9612297753 .extra_temps = .{
96123 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9612497754 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
96125 .unused,
96126 .unused,
96127 .unused,
97755 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97756 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97757 .{ .type = .u64, .kind = .{ .reg = .rax } },
97758 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9612897759 .unused,
9612997760 .unused,
9613097761 .unused,
......@@ -96135,25 +97766,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9613597766 .dst_temps = .{ .mem, .unused },
9613697767 .clobbers = .{ .eflags = true },
9613797768 .each = .{ .once = &.{
96138 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96139 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
96140 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
96141 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
96142 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
96143 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
97769 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97770 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97771 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97772 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
97773 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
97774 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97775 .{ ._, ._, .mov, .tmp4q, .ua(.dst0, .add_umax), ._, ._ },
97776 .{ ._, ._, .@"and", .tmp4q, .lea(.tmp1q), ._, ._ },
97777 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
97778 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97779 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
97780 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
9614497781 } },
9614597782 }, .{
96146 .src_constraints = .{ .any_scalar_int, .any, .any },
96147 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }, .any },
97783 .required_features = .{ .@"64bit", null, null, null },
97784 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97785 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
9614897786 .patterns = &.{
9614997787 .{ .src = .{ .to_mem, .none, .none } },
9615097788 },
9615197789 .extra_temps = .{
96152 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9615397790 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
96154 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
96155 .unused,
96156 .unused,
97791 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97792 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97793 .{ .type = .u64, .kind = .{ .reg = .rax } },
97794 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9615797795 .unused,
9615897796 .unused,
9615997797 .unused,
......@@ -96161,658 +97799,659 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9616197799 .unused,
9616297800 .unused,
9616397801 },
96164 .dst_temps = .{ .mem, .unused },
97802 .dst_temps = .{ .mem, .unused },
97803 .clobbers = .{ .eflags = true },
97804 .each = .{ .once = &.{
97805 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97806 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97807 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97808 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
97809 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
97810 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97811 .{ ._, ._, .mov, .tmp4q, .ua(.dst0, .add_umax), ._, ._ },
97812 .{ ._, ._, .@"and", .tmp4q, .lea(.tmp1q), ._, ._ },
97813 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
97814 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97815 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
97816 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
97817 } },
97818 } }) catch |err| switch (err) {
97819 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
97820 @tagName(air_tag),
97821 ty_op.ty.toType().fmt(pt),
97822 cg.typeOf(ty_op.operand).fmt(pt),
97823 ops[0].tracking(cg),
97824 }),
97825 else => |e| return e,
97826 };
97827 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
97828 },
97829 .optional_payload => if (use_old) try cg.airOptionalPayload(inst) else {
97830 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
97831 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
97832 const pl = if (!hack_around_sema_opv_bugs or ty_op.ty.toType().hasRuntimeBitsIgnoreComptime(zcu))
97833 try ops[0].read(ty_op.ty.toType(), .{}, cg)
97834 else
97835 try cg.tempInit(ty_op.ty.toType(), .none);
97836 try pl.finish(inst, &.{ty_op.operand}, &ops, cg);
97837 },
97838 .optional_payload_ptr => if (use_old) try cg.airOptionalPayloadPtr(inst) else {
97839 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
97840 const ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
97841 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
97842 },
97843 .optional_payload_ptr_set => if (use_old) try cg.airOptionalPayloadPtrSet(inst) else {
97844 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
97845 const opt_ty = cg.typeOf(ty_op.operand).childType(zcu);
97846 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
97847 if (!opt_ty.optionalReprIsPayload(zcu)) {
97848 const opt_pl_ty = opt_ty.optionalChild(zcu);
97849 const opt_pl_abi_size: i32 = @intCast(opt_pl_ty.abiSize(zcu));
97850 try ops[0].toOffset(opt_pl_abi_size, cg);
97851 var has_value = try cg.tempInit(.bool, .{ .immediate = 1 });
97852 try ops[0].store(&has_value, .{}, cg);
97853 try has_value.die(cg);
97854 try ops[0].toOffset(-opt_pl_abi_size, cg);
97855 }
97856 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
97857 },
97858 .wrap_optional => if (use_old) try cg.airWrapOptional(inst) else {
97859 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
97860 const opt_ty = ty_op.ty.toType();
97861 const opt_pl_ty = cg.typeOf(ty_op.operand);
97862 const opt_pl_abi_size: u31 = @intCast(opt_pl_ty.abiSize(zcu));
97863 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
97864 var opt = try cg.tempAlloc(opt_ty);
97865 try opt.write(&ops[0], .{}, cg);
97866 if (!opt_ty.optionalReprIsPayload(zcu)) {
97867 var has_value = try cg.tempInit(.bool, .{ .immediate = 1 });
97868 try opt.write(&has_value, .{ .disp = opt_pl_abi_size }, cg);
97869 try has_value.die(cg);
97870 }
97871 try opt.finish(inst, &.{ty_op.operand}, &ops, cg);
97872 },
97873 .unwrap_errunion_payload => if (use_old) try cg.airUnwrapErrUnionPayload(inst) else {
97874 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
97875 const eu_pl_ty = ty_op.ty.toType();
97876 const eu_pl_off: i32 = @intCast(codegen.errUnionPayloadOffset(eu_pl_ty, zcu));
97877 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
97878 const pl = if (!hack_around_sema_opv_bugs or eu_pl_ty.hasRuntimeBitsIgnoreComptime(zcu))
97879 try ops[0].read(eu_pl_ty, .{ .disp = eu_pl_off }, cg)
97880 else
97881 try cg.tempInit(eu_pl_ty, .none);
97882 try pl.finish(inst, &.{ty_op.operand}, &ops, cg);
97883 },
97884 .unwrap_errunion_err => if (use_old) try cg.airUnwrapErrUnionErr(inst) else {
97885 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
97886 const eu_ty = cg.typeOf(ty_op.operand);
97887 const eu_err_ty = ty_op.ty.toType();
97888 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
97889 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
97890 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
97891 const err = try ops[0].read(eu_err_ty, .{ .disp = eu_err_off }, cg);
97892 try err.finish(inst, &.{ty_op.operand}, &ops, cg);
97893 },
97894 .unwrap_errunion_payload_ptr => if (use_old) try cg.airUnwrapErrUnionPayloadPtr(inst) else {
97895 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
97896 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);
97897 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
97898 const eu_pl_off: i32 = @intCast(codegen.errUnionPayloadOffset(eu_pl_ty, zcu));
97899 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
97900 try ops[0].toOffset(eu_pl_off, cg);
97901 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
97902 },
97903 .unwrap_errunion_err_ptr => if (use_old) try cg.airUnwrapErrUnionErrPtr(inst) else {
97904 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
97905 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);
97906 const eu_err_ty = ty_op.ty.toType();
97907 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
97908 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
97909 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
97910 try ops[0].toOffset(eu_err_off, cg);
97911 const err = try ops[0].load(eu_err_ty, .{}, cg);
97912 try err.finish(inst, &.{ty_op.operand}, &ops, cg);
97913 },
97914 .errunion_payload_ptr_set => if (use_old) try cg.airErrUnionPayloadPtrSet(inst) else {
97915 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
97916 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);
97917 const eu_err_ty = eu_ty.errorUnionSet(zcu);
97918 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
97919 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
97920 const eu_pl_off: i32 = @intCast(codegen.errUnionPayloadOffset(eu_pl_ty, zcu));
97921 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
97922 try ops[0].toOffset(eu_err_off, cg);
97923 var err = try cg.tempInit(eu_err_ty, .{ .immediate = 0 });
97924 try ops[0].store(&err, .{}, cg);
97925 try err.die(cg);
97926 try ops[0].toOffset(eu_pl_off - eu_err_off, cg);
97927 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
97928 },
97929 .wrap_errunion_payload => if (use_old) try cg.airWrapErrUnionPayload(inst) else {
97930 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
97931 const eu_ty = ty_op.ty.toType();
97932 const eu_err_ty = eu_ty.errorUnionSet(zcu);
97933 const eu_pl_ty = cg.typeOf(ty_op.operand);
97934 const eu_err_off: u31 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
97935 const eu_pl_off: u31 = @intCast(codegen.errUnionPayloadOffset(eu_pl_ty, zcu));
97936 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
97937 var eu = try cg.tempAlloc(eu_ty);
97938 try eu.write(&ops[0], .{ .disp = eu_pl_off }, cg);
97939 var err = try cg.tempInit(eu_err_ty, .{ .immediate = 0 });
97940 try eu.write(&err, .{ .disp = eu_err_off }, cg);
97941 try err.die(cg);
97942 try eu.finish(inst, &.{ty_op.operand}, &ops, cg);
97943 },
97944 .wrap_errunion_err => if (use_old) try cg.airWrapErrUnionErr(inst) else {
97945 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
97946 const eu_ty = ty_op.ty.toType();
97947 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
97948 const eu_err_off: u31 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
97949 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
97950 var eu = try cg.tempAlloc(eu_ty);
97951 try eu.write(&ops[0], .{ .disp = eu_err_off }, cg);
97952 try eu.finish(inst, &.{ty_op.operand}, &ops, cg);
97953 },
97954 .struct_field_ptr => if (use_old) try cg.airStructFieldPtr(inst) else {
97955 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
97956 const extra = cg.air.extraData(Air.StructField, ty_pl.payload).data;
97957 var ops = try cg.tempsFromOperands(inst, .{extra.struct_operand});
97958 try ops[0].toOffset(cg.fieldOffset(
97959 cg.typeOf(extra.struct_operand),
97960 ty_pl.ty.toType(),
97961 extra.field_index,
97962 ), cg);
97963 try ops[0].finish(inst, &.{extra.struct_operand}, &ops, cg);
97964 },
97965 .struct_field_ptr_index_0,
97966 .struct_field_ptr_index_1,
97967 .struct_field_ptr_index_2,
97968 .struct_field_ptr_index_3,
97969 => |air_tag| if (use_old) try cg.airStructFieldPtrIndex(inst, switch (air_tag) {
97970 else => unreachable,
97971 .struct_field_ptr_index_0 => 0,
97972 .struct_field_ptr_index_1 => 1,
97973 .struct_field_ptr_index_2 => 2,
97974 .struct_field_ptr_index_3 => 3,
97975 }) else {
97976 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
97977 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
97978 try ops[0].toOffset(cg.fieldOffset(
97979 cg.typeOf(ty_op.operand),
97980 ty_op.ty.toType(),
97981 switch (air_tag) {
97982 else => unreachable,
97983 .struct_field_ptr_index_0 => 0,
97984 .struct_field_ptr_index_1 => 1,
97985 .struct_field_ptr_index_2 => 2,
97986 .struct_field_ptr_index_3 => 3,
97987 },
97988 ), cg);
97989 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
97990 },
97991 .struct_field_val => if (use_old) try cg.airStructFieldVal(inst) else fallback: {
97992 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
97993 const extra = cg.air.extraData(Air.StructField, ty_pl.payload).data;
97994 const agg_ty = cg.typeOf(extra.struct_operand);
97995 const field_ty = ty_pl.ty.toType();
97996 const field_off: u31 = switch (agg_ty.containerLayout(zcu)) {
97997 .auto, .@"extern" => @intCast(agg_ty.structFieldOffset(extra.field_index, zcu)),
97998 .@"packed" => break :fallback try cg.airStructFieldVal(inst),
97999 };
98000 var ops = try cg.tempsFromOperands(inst, .{extra.struct_operand});
98001 var res = if (!hack_around_sema_opv_bugs or field_ty.hasRuntimeBitsIgnoreComptime(zcu))
98002 try ops[0].read(field_ty, .{ .disp = field_off }, cg)
98003 else
98004 try cg.tempInit(field_ty, .none);
98005 try res.finish(inst, &.{extra.struct_operand}, &ops, cg);
98006 },
98007 .set_union_tag => if (use_old) try cg.airSetUnionTag(inst) else {
98008 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
98009 const union_ty = cg.typeOf(bin_op.lhs).childType(zcu);
98010 const union_layout = union_ty.unionGetLayout(zcu);
98011 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
98012 if (!hack_around_sema_opv_bugs or union_layout.tag_size > 0) try ops[0].store(&ops[1], .{
98013 .disp = @intCast(union_layout.tagOffset()),
98014 }, cg);
98015 const res = try cg.tempInit(.void, .none);
98016 try res.finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
98017 },
98018 .get_union_tag => if (use_old) try cg.airGetUnionTag(inst) else {
98019 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98020 const union_ty = cg.typeOf(ty_op.operand);
98021 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98022 const union_layout = union_ty.unionGetLayout(zcu);
98023 assert(union_layout.tag_size > 0);
98024 const res = try ops[0].read(ty_op.ty.toType(), .{
98025 .disp = @intCast(union_layout.tagOffset()),
98026 }, cg);
98027 try res.finish(inst, &.{ty_op.operand}, &ops, cg);
98028 },
98029 .slice => if (use_old) try cg.airSlice(inst) else {
98030 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
98031 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
98032 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
98033 try ops[0].toPair(&ops[1], cg);
98034 try ops[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
98035 },
98036 .slice_len => if (use_old) try cg.airSliceLen(inst) else {
98037 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98038 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98039 try ops[0].toSliceLen(cg);
98040 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98041 },
98042 .slice_ptr => if (use_old) try cg.airSlicePtr(inst) else {
98043 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98044 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98045 try ops[0].toSlicePtr(cg);
98046 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98047 },
98048 .ptr_slice_len_ptr => if (use_old) try cg.airPtrSliceLenPtr(inst) else {
98049 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98050 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98051 try ops[0].toOffset(8, cg);
98052 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98053 },
98054 .ptr_slice_ptr_ptr => if (use_old) try cg.airPtrSlicePtrPtr(inst) else {
98055 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98056 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98057 try ops[0].toOffset(0, cg);
98058 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98059 },
98060 .array_elem_val => if (use_old) try cg.airArrayElemVal(inst) else {
98061 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
98062 const array_ty = cg.typeOf(bin_op.lhs);
98063 const res_ty = array_ty.elemType2(zcu);
98064 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
98065 var res: [1]Temp = undefined;
98066 cg.select(&res, &.{res_ty}, &ops, comptime &.{ .{
98067 .src_constraints = .{ .{ .bool_vec = .dword }, .any, .any },
98068 .patterns = &.{
98069 .{ .src = .{ .to_gpr, .imm32, .none } },
98070 },
98071 .dst_temps = .{ .{ .cc = .c }, .unused },
9616598072 .clobbers = .{ .eflags = true },
9616698073 .each = .{ .once = &.{
96167 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96168 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
96169 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
96170 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
96171 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
96172 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
96173 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98074 .{ ._, ._, .bt, .src0d, .ua(.none, .add_src1_rem_32), ._, ._ },
9617498075 } },
9617598076 }, .{
96176 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
96177 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
98077 .src_constraints = .{ .{ .bool_vec = .dword }, .any, .any },
9617898078 .patterns = &.{
96179 .{ .src = .{ .to_mem, .none, .none } },
96180 },
96181 .extra_temps = .{
96182 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96183 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
96184 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
96185 .unused,
96186 .unused,
96187 .unused,
96188 .unused,
96189 .unused,
96190 .unused,
96191 .unused,
96192 .unused,
98079 .{ .src = .{ .to_gpr, .to_gpr, .none } },
9619398080 },
96194 .dst_temps = .{ .mem, .unused },
98081 .dst_temps = .{ .{ .cc = .c }, .unused },
9619598082 .clobbers = .{ .eflags = true },
9619698083 .each = .{ .once = &.{
96197 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96198 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
96199 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
96200 .{ ._, ._l, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
96201 .{ ._, ._r, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
96202 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
96203 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
96204 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
96205 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98084 .{ ._, ._, .bt, .src0d, .src1d, ._, ._ },
9620698085 } },
9620798086 }, .{
96208 .required_features = .{ .bmi2, null, null, null },
96209 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
96210 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
98087 .required_features = .{ .@"64bit", null, null, null },
98088 .src_constraints = .{ .{ .bool_vec = .qword }, .any, .any },
9621198089 .patterns = &.{
96212 .{ .src = .{ .to_mem, .none, .none } },
96213 },
96214 .extra_temps = .{
96215 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96216 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
96217 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
96218 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
96219 .unused,
96220 .unused,
96221 .unused,
96222 .unused,
96223 .unused,
96224 .unused,
96225 .unused,
98090 .{ .src = .{ .to_gpr, .imm32, .none } },
9622698091 },
96227 .dst_temps = .{ .mem, .unused },
98092 .dst_temps = .{ .{ .cc = .c }, .unused },
9622898093 .clobbers = .{ .eflags = true },
9622998094 .each = .{ .once = &.{
96230 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96231 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
96232 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
96233 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },
96234 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
96235 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
96236 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
96237 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98095 .{ ._, ._, .bt, .src0q, .ua(.none, .add_src1_rem_64), ._, ._ },
9623898096 } },
9623998097 }, .{
96240 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
96241 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
98098 .required_features = .{ .@"64bit", null, null, null },
98099 .src_constraints = .{ .{ .bool_vec = .qword }, .any, .any },
9624298100 .patterns = &.{
96243 .{ .src = .{ .to_mem, .none, .none } },
96244 },
96245 .extra_temps = .{
96246 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96247 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
96248 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
96249 .unused,
96250 .unused,
96251 .unused,
96252 .unused,
96253 .unused,
96254 .unused,
96255 .unused,
96256 .unused,
98101 .{ .src = .{ .to_gpr, .to_gpr, .none } },
9625798102 },
96258 .dst_temps = .{ .mem, .unused },
98103 .dst_temps = .{ .{ .cc = .c }, .unused },
9625998104 .clobbers = .{ .eflags = true },
9626098105 .each = .{ .once = &.{
96261 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96262 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
96263 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
96264 .{ ._, ._, .@"and", .tmp2d, .sa(.dst0, .add_umax), ._, ._ },
96265 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
96266 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
96267 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
96268 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98106 .{ ._, ._, .bt, .src0q, .src1q, ._, ._ },
9626998107 } },
9627098108 }, .{
96271 .required_features = .{ .avx, null, null, null },
96272 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96273 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
98109 .src_constraints = .{ .any_bool_vec, .any, .any },
9627498110 .patterns = &.{
96275 .{ .src = .{ .to_sse, .none, .none } },
96276 },
96277 .extra_temps = .{
96278 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
96279 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
96280 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
96281 .unused,
96282 .unused,
96283 .unused,
96284 .unused,
96285 .unused,
96286 .unused,
96287 .unused,
96288 .unused,
98111 .{ .src = .{ .to_mem, .imm32, .none } },
9628998112 },
96290 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
98113 .dst_temps = .{ .{ .cc = .c }, .unused },
98114 .clobbers = .{ .eflags = true },
9629198115 .each = .{ .once = &.{
96292 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
96293 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
96294 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
96295 .{ ._, .vp_q, .add, .dst0x, .dst0x, .lea(.tmp0x), ._ },
96296 .{ ._, .vp_, .xor, .dst0x, .dst0x, .lea(.tmp0x), ._ },
98116 .{ ._, ._, .bt, .mema(.src0d, .add_src1_div_8_down_4), .ua(.none, .add_src1_rem_32), ._, ._ },
9629798117 } },
9629898118 }, .{
96299 .required_features = .{ .avx, null, null, null },
96300 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96301 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
98119 .src_constraints = .{ .any_bool_vec, .any, .any },
9630298120 .patterns = &.{
96303 .{ .src = .{ .to_sse, .none, .none } },
96304 },
96305 .extra_temps = .{
96306 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
96307 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
96308 .unused,
96309 .unused,
96310 .unused,
96311 .unused,
96312 .unused,
96313 .unused,
96314 .unused,
96315 .unused,
96316 .unused,
98121 .{ .src = .{ .to_mem, .to_gpr, .none } },
9631798122 },
96318 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
98123 .dst_temps = .{ .{ .cc = .c }, .unused },
98124 .clobbers = .{ .eflags = true },
9631998125 .each = .{ .once = &.{
96320 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
96321 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
98126 .{ ._, ._, .bt, .src0d, .src1d, ._, ._ },
9632298127 } },
9632398128 }, .{
96324 .required_features = .{ .sse2, null, null, null },
96325 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96326 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
98129 .dst_constraints = .{ .{ .int = .byte }, .any },
9632798130 .patterns = &.{
96328 .{ .src = .{ .to_mut_sse, .none, .none } },
96329 },
96330 .extra_temps = .{
96331 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
96332 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
96333 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
96334 .unused,
96335 .unused,
96336 .unused,
96337 .unused,
96338 .unused,
96339 .unused,
96340 .unused,
96341 .unused,
98131 .{ .src = .{ .to_mem, .simm32, .none } },
9634298132 },
96343 .dst_temps = .{ .{ .ref = .src0 }, .unused },
98133 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
9634498134 .each = .{ .once = &.{
96345 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
96346 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
96347 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
96348 .{ ._, .p_q, .add, .dst0x, .lea(.tmp0x), ._, ._ },
96349 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
98135 .{ ._, ._, .movzx, .dst0d, .mema(.src0b, .add_src0_elem_size_mul_src1), ._, ._ },
9635098136 } },
9635198137 }, .{
96352 .required_features = .{ .sse2, null, null, null },
96353 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96354 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
98138 .dst_constraints = .{ .{ .int = .byte }, .any },
9635598139 .patterns = &.{
96356 .{ .src = .{ .to_mut_sse, .none, .none } },
96357 },
96358 .extra_temps = .{
96359 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
96360 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
96361 .unused,
96362 .unused,
96363 .unused,
96364 .unused,
96365 .unused,
96366 .unused,
96367 .unused,
96368 .unused,
96369 .unused,
98140 .{ .src = .{ .to_mem, .to_gpr, .none } },
9637098141 },
96371 .dst_temps = .{ .{ .ref = .src0 }, .unused },
98142 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
9637298143 .each = .{ .once = &.{
96373 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
96374 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
98144 .{ ._, ._, .movzx, .dst0d, .memi(.src0b, .src1), ._, ._ },
9637598145 } },
9637698146 }, .{
96377 .required_features = .{ .sse, null, null, null },
96378 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96379 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
98147 .dst_constraints = .{ .{ .int = .word }, .any },
9638098148 .patterns = &.{
96381 .{ .src = .{ .to_mut_sse, .none, .none } },
96382 },
96383 .extra_temps = .{
96384 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
96385 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
96386 .unused,
96387 .unused,
96388 .unused,
96389 .unused,
96390 .unused,
96391 .unused,
96392 .unused,
96393 .unused,
96394 .unused,
98149 .{ .src = .{ .to_mem, .simm32, .none } },
9639598150 },
96396 .dst_temps = .{ .{ .ref = .src0 }, .unused },
98151 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
9639798152 .each = .{ .once = &.{
96398 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
96399 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
98153 .{ ._, ._, .movzx, .dst0d, .mema(.src0w, .add_src0_elem_size_mul_src1), ._, ._ },
9640098154 } },
9640198155 }, .{
96402 .required_features = .{ .avx2, null, null, null },
96403 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any },
96404 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },
98156 .dst_constraints = .{ .{ .int = .word }, .any },
9640598157 .patterns = &.{
96406 .{ .src = .{ .to_sse, .none, .none } },
96407 },
96408 .extra_temps = .{
96409 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
96410 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
96411 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
96412 .unused,
96413 .unused,
96414 .unused,
96415 .unused,
96416 .unused,
96417 .unused,
96418 .unused,
96419 .unused,
98158 .{ .src = .{ .to_mem, .to_gpr, .none } },
9642098159 },
96421 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
98160 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
9642298161 .each = .{ .once = &.{
96423 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
96424 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
96425 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
96426 .{ ._, .vp_q, .add, .dst0y, .dst0y, .lea(.tmp0y), ._ },
96427 .{ ._, .vp_, .xor, .dst0y, .dst0y, .lea(.tmp0y), ._ },
98162 .{ ._, ._, .movzx, .dst0d, .memsi(.src0w, .@"2", .src1), ._, ._ },
9642898163 } },
9642998164 }, .{
96430 .required_features = .{ .avx2, null, null, null },
96431 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any },
96432 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any },
98165 .dst_constraints = .{ .{ .int = .dword }, .any },
9643398166 .patterns = &.{
96434 .{ .src = .{ .to_sse, .none, .none } },
96435 },
96436 .extra_temps = .{
96437 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
96438 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
96439 .unused,
96440 .unused,
96441 .unused,
96442 .unused,
96443 .unused,
96444 .unused,
96445 .unused,
96446 .unused,
96447 .unused,
98167 .{ .src = .{ .to_mem, .simm32, .none } },
9644898168 },
96449 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
98169 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
9645098170 .each = .{ .once = &.{
96451 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
96452 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
98171 .{ ._, ._, .mov, .dst0d, .mema(.src0d, .add_src0_elem_size_mul_src1), ._, ._ },
9645398172 } },
9645498173 }, .{
96455 .required_features = .{ .avx2, null, null, null },
96456 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any },
96457 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },
98174 .dst_constraints = .{ .{ .int = .dword }, .any },
9645898175 .patterns = &.{
96459 .{ .src = .{ .to_mem, .none, .none } },
96460 },
96461 .extra_temps = .{
96462 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96463 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
96464 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
96465 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
96466 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
96467 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
96468 .unused,
96469 .unused,
96470 .unused,
96471 .unused,
96472 .unused,
98176 .{ .src = .{ .to_mem, .to_gpr, .none } },
9647398177 },
96474 .dst_temps = .{ .mem, .unused },
96475 .clobbers = .{ .eflags = true },
98178 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
9647698179 .each = .{ .once = &.{
96477 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
96478 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
96479 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
96480 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
96481 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96482 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
96483 .{ ._, .vp_q, .add, .tmp3y, .tmp3y, .tmp2y, ._ },
96484 .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp2y, ._ },
96485 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp3y, ._, ._ },
96486 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
96487 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98180 .{ ._, ._, .mov, .dst0d, .memsi(.src0d, .@"4", .src1), ._, ._ },
9648898181 } },
9648998182 }, .{
96490 .required_features = .{ .avx2, null, null, null },
96491 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any },
96492 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any },
98183 .dst_constraints = .{ .{ .int = .qword }, .any },
9649398184 .patterns = &.{
96494 .{ .src = .{ .to_mem, .none, .none } },
96495 },
96496 .extra_temps = .{
96497 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96498 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
96499 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
96500 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
96501 .unused,
96502 .unused,
96503 .unused,
96504 .unused,
96505 .unused,
96506 .unused,
96507 .unused,
98185 .{ .src = .{ .to_mem, .simm32, .none } },
9650898186 },
96509 .dst_temps = .{ .mem, .unused },
96510 .clobbers = .{ .eflags = true },
98187 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
9651198188 .each = .{ .once = &.{
96512 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
96513 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
96514 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96515 .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
96516 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },
96517 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
96518 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98189 .{ ._, ._, .mov, .dst0q, .mema(.src0q, .add_src0_elem_size_mul_src1), ._, ._ },
9651998190 } },
9652098191 }, .{
96521 .required_features = .{ .avx, null, null, null },
96522 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96523 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
98192 .required_features = .{ .@"64bit", null, null, null },
98193 .dst_constraints = .{ .{ .int = .qword }, .any },
9652498194 .patterns = &.{
96525 .{ .src = .{ .to_mem, .none, .none } },
96526 },
96527 .extra_temps = .{
96528 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96529 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
96530 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
96531 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
96532 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
96533 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
96534 .unused,
96535 .unused,
96536 .unused,
96537 .unused,
96538 .unused,
98195 .{ .src = .{ .to_mem, .to_gpr, .none } },
9653998196 },
96540 .dst_temps = .{ .mem, .unused },
96541 .clobbers = .{ .eflags = true },
98197 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
9654298198 .each = .{ .once = &.{
96543 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
96544 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
96545 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
96546 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
96547 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96548 .{ .@"0:", .vp_, .@"and", .tmp3x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
96549 .{ ._, .vp_q, .add, .tmp3x, .tmp3x, .tmp2x, ._ },
96550 .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp2x, ._ },
96551 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
96552 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
96553 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98199 .{ ._, ._, .mov, .dst0q, .memsi(.src0q, .@"8", .src1), ._, ._ },
9655498200 } },
96555 }, .{
96556 .required_features = .{ .avx, null, null, null },
96557 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96558 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
96559 .patterns = &.{
96560 .{ .src = .{ .to_mem, .none, .none } },
98201 } }) catch |err| switch (err) {
98202 error.SelectFailed => {
98203 const elem_size = res_ty.abiSize(zcu);
98204 const base = try cg.tempAllocReg(.usize, abi.RegisterClass.gp);
98205 while (try ops[0].toBase(false, cg) or
98206 try ops[1].toRegClass(true, .general_purpose, cg))
98207 {}
98208 const base_reg = base.tracking(cg).short.register.to64();
98209 const rhs_reg = ops[1].tracking(cg).short.register.to64();
98210 if (!std.math.isPowerOfTwo(elem_size)) {
98211 try cg.spillEflagsIfOccupied();
98212 try cg.asmRegisterRegisterImmediate(
98213 .{ .i_, .mul },
98214 rhs_reg,
98215 rhs_reg,
98216 .u(elem_size),
98217 );
98218 try cg.asmRegisterMemory(
98219 .{ ._, .lea },
98220 base_reg,
98221 try ops[0].tracking(cg).short.mem(cg, .{ .index = rhs_reg }),
98222 );
98223 } else if (elem_size > 8) {
98224 try cg.spillEflagsIfOccupied();
98225 try cg.asmRegisterImmediate(
98226 .{ ._l, .sh },
98227 rhs_reg,
98228 .u(std.math.log2_int(u64, elem_size)),
98229 );
98230 try cg.asmRegisterMemory(
98231 .{ ._, .lea },
98232 base_reg,
98233 try ops[0].tracking(cg).short.mem(cg, .{ .index = rhs_reg }),
98234 );
98235 } else try cg.asmRegisterMemory(
98236 .{ ._, .lea },
98237 base_reg,
98238 try ops[0].tracking(cg).short.mem(cg, .{
98239 .index = rhs_reg,
98240 .scale = .fromFactor(@intCast(elem_size)),
98241 }),
98242 );
98243 // Hack around Sema insanity: lhs could be an arbitrarily large comptime-known array
98244 // which could easily get spilled by the upcoming `load`, which would infinite recurse
98245 // since spilling an array requires the same operation that triggered the spill.
98246 try ops[0].die(cg);
98247 ops[0] = base;
98248 res[0] = try ops[0].load(res_ty, .{}, cg);
9656198249 },
96562 .extra_temps = .{
96563 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96564 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
96565 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
96566 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
96567 .unused,
96568 .unused,
96569 .unused,
96570 .unused,
96571 .unused,
96572 .unused,
96573 .unused,
98250 else => |e| return e,
98251 };
98252 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
98253 },
98254 .slice_elem_val, .ptr_elem_val => |air_tag| if (use_old) switch (air_tag) {
98255 else => unreachable,
98256 .slice_elem_val => try cg.airSliceElemVal(inst),
98257 .ptr_elem_val => try cg.airPtrElemVal(inst),
98258 } else {
98259 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
98260 const res_ty = cg.typeOf(bin_op.lhs).elemType2(zcu);
98261 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
98262 try ops[0].toSlicePtr(cg);
98263 var res: [1]Temp = undefined;
98264 if (!hack_around_sema_opv_bugs or res_ty.hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{res_ty}, &ops, comptime &.{ .{
98265 .dst_constraints = .{ .{ .int = .byte }, .any },
98266 .patterns = &.{
98267 .{ .src = .{ .to_gpr, .simm32, .none } },
9657498268 },
96575 .dst_temps = .{ .mem, .unused },
96576 .clobbers = .{ .eflags = true },
98269 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
9657798270 .each = .{ .once = &.{
96578 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
96579 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
96580 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96581 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
96582 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
96583 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
96584 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98271 .{ ._, ._, .movzx, .dst0d, .leaa(.src0b, .add_src0_elem_size_mul_src1), ._, ._ },
9658598272 } },
9658698273 }, .{
96587 .required_features = .{ .sse2, null, null, null },
96588 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96589 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
98274 .dst_constraints = .{ .{ .int = .byte }, .any },
9659098275 .patterns = &.{
96591 .{ .src = .{ .to_mem, .none, .none } },
96592 },
96593 .extra_temps = .{
96594 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96595 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
96596 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
96597 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
96598 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
96599 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
96600 .unused,
96601 .unused,
96602 .unused,
96603 .unused,
96604 .unused,
98276 .{ .src = .{ .to_gpr, .to_gpr, .none } },
9660598277 },
96606 .dst_temps = .{ .mem, .unused },
96607 .clobbers = .{ .eflags = true },
98278 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
9660898279 .each = .{ .once = &.{
96609 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
96610 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
96611 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
96612 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
96613 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96614 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp1x, ._, ._ },
96615 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
96616 .{ ._, .p_q, .add, .tmp3x, .tmp2x, ._, ._ },
96617 .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ },
96618 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
96619 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
96620 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98280 .{ ._, ._, .movzx, .dst0d, .leai(.src0b, .src1), ._, ._ },
9662198281 } },
9662298282 }, .{
96623 .required_features = .{ .sse2, null, null, null },
96624 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96625 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
98283 .dst_constraints = .{ .{ .int = .word }, .any },
9662698284 .patterns = &.{
96627 .{ .src = .{ .to_mem, .none, .none } },
96628 },
96629 .extra_temps = .{
96630 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96631 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
96632 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
96633 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
96634 .unused,
96635 .unused,
96636 .unused,
96637 .unused,
96638 .unused,
96639 .unused,
96640 .unused,
98285 .{ .src = .{ .to_gpr, .simm32, .none } },
9664198286 },
96642 .dst_temps = .{ .mem, .unused },
96643 .clobbers = .{ .eflags = true },
98287 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
9664498288 .each = .{ .once = &.{
96645 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
96646 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
96647 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96648 .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
96649 .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
96650 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
96651 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
96652 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98289 .{ ._, ._, .movzx, .dst0d, .leaa(.src0w, .add_src0_elem_size_mul_src1), ._, ._ },
9665398290 } },
9665498291 }, .{
96655 .required_features = .{ .sse, null, null, null },
96656 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96657 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
98292 .dst_constraints = .{ .{ .int = .word }, .any },
9665898293 .patterns = &.{
96659 .{ .src = .{ .to_mem, .none, .none } },
96660 },
96661 .extra_temps = .{
96662 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96663 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
96664 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
96665 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
96666 .unused,
96667 .unused,
96668 .unused,
96669 .unused,
96670 .unused,
96671 .unused,
96672 .unused,
98294 .{ .src = .{ .to_gpr, .to_gpr, .none } },
9667398295 },
96674 .dst_temps = .{ .mem, .unused },
96675 .clobbers = .{ .eflags = true },
98296 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
9667698297 .each = .{ .once = &.{
96677 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
96678 .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ },
96679 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96680 .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
96681 .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
96682 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
96683 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
96684 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98298 .{ ._, ._, .movzx, .dst0d, .leasi(.src0w, .@"2", .src1), ._, ._ },
9668598299 } },
9668698300 }, .{
96687 .required_features = .{ .@"64bit", null, null, null },
96688 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
96689 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }, .any },
98301 .dst_constraints = .{ .{ .int = .dword }, .any },
9669098302 .patterns = &.{
96691 .{ .src = .{ .to_mem, .none, .none } },
96692 },
96693 .extra_temps = .{
96694 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96695 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
96696 .unused,
96697 .unused,
96698 .unused,
96699 .unused,
96700 .unused,
96701 .unused,
96702 .unused,
96703 .unused,
96704 .unused,
98303 .{ .src = .{ .to_gpr, .simm32, .none } },
9670598304 },
96706 .dst_temps = .{ .mem, .unused },
96707 .clobbers = .{ .eflags = true },
98305 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
9670898306 .each = .{ .once = &.{
96709 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96710 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
96711 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
96712 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
96713 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98307 .{ ._, ._, .mov, .dst0d, .leaa(.src0d, .add_src0_elem_size_mul_src1), ._, ._ },
9671498308 } },
9671598309 }, .{
96716 .required_features = .{ .@"64bit", null, null, null },
96717 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
96718 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
98310 .dst_constraints = .{ .{ .int = .dword }, .any },
9671998311 .patterns = &.{
96720 .{ .src = .{ .to_mem, .none, .none } },
96721 },
96722 .extra_temps = .{
96723 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96724 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
96725 .unused,
96726 .unused,
96727 .unused,
96728 .unused,
96729 .unused,
96730 .unused,
96731 .unused,
96732 .unused,
96733 .unused,
98312 .{ .src = .{ .to_gpr, .to_gpr, .none } },
9673498313 },
96735 .dst_temps = .{ .mem, .unused },
96736 .clobbers = .{ .eflags = true },
98314 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
9673798315 .each = .{ .once = &.{
96738 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96739 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
96740 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
96741 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
96742 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
96743 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
96744 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98316 .{ ._, ._, .mov, .dst0d, .leasi(.src0d, .@"4", .src1), ._, ._ },
9674598317 } },
9674698318 }, .{
96747 .required_features = .{ .@"64bit", .bmi2, null, null },
96748 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
96749 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
98319 .dst_constraints = .{ .{ .int = .qword }, .any },
9675098320 .patterns = &.{
96751 .{ .src = .{ .to_mem, .none, .none } },
96752 },
96753 .extra_temps = .{
96754 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96755 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
96756 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
96757 .unused,
96758 .unused,
96759 .unused,
96760 .unused,
96761 .unused,
96762 .unused,
96763 .unused,
96764 .unused,
98321 .{ .src = .{ .to_gpr, .simm32, .none } },
9676598322 },
96766 .dst_temps = .{ .mem, .unused },
96767 .clobbers = .{ .eflags = true },
98323 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
9676898324 .each = .{ .once = &.{
96769 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96770 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
96771 .{ .@"0:", ._, .bzhi, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), .tmp1q, ._ },
96772 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
96773 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
96774 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98325 .{ ._, ._, .mov, .dst0q, .leaa(.src0q, .add_src0_elem_size_mul_src1), ._, ._ },
9677598326 } },
9677698327 }, .{
9677798328 .required_features = .{ .@"64bit", null, null, null },
96778 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
96779 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
98329 .dst_constraints = .{ .{ .int = .qword }, .any },
9678098330 .patterns = &.{
96781 .{ .src = .{ .to_mem, .none, .none } },
96782 },
96783 .extra_temps = .{
96784 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96785 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
96786 .unused,
96787 .unused,
96788 .unused,
96789 .unused,
96790 .unused,
96791 .unused,
96792 .unused,
96793 .unused,
96794 .unused,
98331 .{ .src = .{ .to_gpr, .to_gpr, .none } },
9679598332 },
96796 .dst_temps = .{ .mem, .unused },
96797 .clobbers = .{ .eflags = true },
98333 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
9679898334 .each = .{ .once = &.{
96799 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96800 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
96801 .{ ._, ._, .@"and", .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
96802 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
96803 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
96804 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98335 .{ ._, ._, .mov, .dst0q, .leasi(.src0q, .@"8", .src1), ._, ._ },
9680598336 } },
96806 }, .{
96807 .required_features = .{ .@"64bit", null, null, null },
96808 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
96809 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }, .any },
98337 } }) catch |err| switch (err) {
98338 error.SelectFailed => {
98339 const elem_size = res_ty.abiSize(zcu);
98340 while (true) for (&ops) |*op| {
98341 if (try op.toRegClass(true, .general_purpose, cg)) break;
98342 } else break;
98343 const lhs_reg = ops[0].tracking(cg).short.register.to64();
98344 const rhs_reg = ops[1].tracking(cg).short.register.to64();
98345 if (!std.math.isPowerOfTwo(elem_size)) {
98346 try cg.spillEflagsIfOccupied();
98347 try cg.asmRegisterRegisterImmediate(
98348 .{ .i_, .mul },
98349 rhs_reg,
98350 rhs_reg,
98351 .u(elem_size),
98352 );
98353 try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
98354 .base = .{ .reg = lhs_reg },
98355 .mod = .{ .rm = .{ .index = rhs_reg } },
98356 });
98357 } else if (elem_size > 8) {
98358 try cg.spillEflagsIfOccupied();
98359 try cg.asmRegisterImmediate(
98360 .{ ._l, .sh },
98361 rhs_reg,
98362 .u(std.math.log2_int(u64, elem_size)),
98363 );
98364 try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
98365 .base = .{ .reg = lhs_reg },
98366 .mod = .{ .rm = .{ .index = rhs_reg } },
98367 });
98368 } else try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
98369 .base = .{ .reg = lhs_reg },
98370 .mod = .{ .rm = .{
98371 .index = rhs_reg,
98372 .scale = .fromFactor(@intCast(elem_size)),
98373 } },
98374 });
98375 res[0] = try ops[0].load(res_ty, .{}, cg);
98376 },
98377 else => |e| return e,
98378 } else res[0] = try cg.tempInit(res_ty, .none);
98379 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
98380 },
98381 .slice_elem_ptr, .ptr_elem_ptr => |air_tag| if (use_old) switch (air_tag) {
98382 else => unreachable,
98383 .slice_elem_ptr => try cg.airSliceElemPtr(inst),
98384 .ptr_elem_ptr => try cg.airPtrElemPtr(inst),
98385 } else {
98386 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
98387 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
98388 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
98389 try ops[0].toSlicePtr(cg);
98390 const dst_ty = ty_pl.ty.toType();
98391 if (dst_ty.ptrInfo(zcu).flags.vector_index == .none) zero_offset: {
98392 const elem_size = dst_ty.childType(zcu).abiSize(zcu);
98393 if (hack_around_sema_opv_bugs and elem_size == 0) break :zero_offset;
98394 while (true) for (&ops) |*op| {
98395 if (try op.toRegClass(true, .general_purpose, cg)) break;
98396 } else break;
98397 const lhs_reg = ops[0].tracking(cg).short.register.to64();
98398 const rhs_reg = ops[1].tracking(cg).short.register.to64();
98399 if (!std.math.isPowerOfTwo(elem_size)) {
98400 try cg.spillEflagsIfOccupied();
98401 try cg.asmRegisterRegisterImmediate(
98402 .{ .i_, .mul },
98403 rhs_reg,
98404 rhs_reg,
98405 .u(elem_size),
98406 );
98407 try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
98408 .base = .{ .reg = lhs_reg },
98409 .mod = .{ .rm = .{ .index = rhs_reg } },
98410 });
98411 } else if (elem_size > 8) {
98412 try cg.spillEflagsIfOccupied();
98413 try cg.asmRegisterImmediate(
98414 .{ ._l, .sh },
98415 rhs_reg,
98416 .u(std.math.log2_int(u64, elem_size)),
98417 );
98418 try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
98419 .base = .{ .reg = lhs_reg },
98420 .mod = .{ .rm = .{ .index = rhs_reg } },
98421 });
98422 } else try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
98423 .base = .{ .reg = lhs_reg },
98424 .mod = .{ .rm = .{
98425 .index = rhs_reg,
98426 .scale = .fromFactor(@intCast(elem_size)),
98427 } },
98428 });
98429 }
98430 try ops[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
98431 },
98432 .array_to_slice => if (use_old) try cg.airArrayToSlice(inst) else {
98433 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98434 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98435 var len = try cg.tempInit(.usize, .{
98436 .immediate = cg.typeOf(ty_op.operand).childType(zcu).arrayLen(zcu),
98437 });
98438 try ops[0].toPair(&len, cg);
98439 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98440 },
98441 .int_from_float, .int_from_float_optimized => |air_tag| if (use_old) try cg.airIntFromFloat(inst) else {
98442 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98443 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98444 var res: [1]Temp = undefined;
98445 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
98446 .required_features = .{ .f16c, null, null, null },
98447 .src_constraints = .{ .{ .float = .word }, .any, .any },
98448 .dst_constraints = .{ .{ .int = .dword }, .any },
9681098449 .patterns = &.{
96811 .{ .src = .{ .to_mem, .none, .none } },
98450 .{ .src = .{ .to_sse, .none, .none } },
9681298451 },
9681398452 .extra_temps = .{
96814 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96815 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
98453 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
98454 .unused,
9681698455 .unused,
9681798456 .unused,
9681898457 .unused,
......@@ -96823,57 +98462,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9682398462 .unused,
9682498463 .unused,
9682598464 },
96826 .dst_temps = .{ .mem, .unused },
96827 .clobbers = .{ .eflags = true },
98465 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
9682898466 .each = .{ .once = &.{
96829 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96830 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
96831 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
96832 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
96833 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98467 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
98468 .{ ._, .v_, .cvttss2si, .dst0d, .tmp0d, ._, ._ },
9683498469 } },
9683598470 }, .{
96836 .required_features = .{ .@"64bit", null, null, null },
96837 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
96838 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
98471 .required_features = .{ .@"64bit", .f16c, null, null },
98472 .src_constraints = .{ .{ .float = .word }, .any, .any },
98473 .dst_constraints = .{ .{ .signed_int = .qword }, .any },
9683998474 .patterns = &.{
96840 .{ .src = .{ .to_mem, .none, .none } },
98475 .{ .src = .{ .to_sse, .none, .none } },
9684198476 },
9684298477 .extra_temps = .{
96843 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96844 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
96845 .unused,
96846 .unused,
96847 .unused,
96848 .unused,
96849 .unused,
96850 .unused,
96851 .unused,
98478 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
9685298479 .unused,
9685398480 .unused,
96854 },
96855 .dst_temps = .{ .mem, .unused },
96856 .clobbers = .{ .eflags = true },
96857 .each = .{ .once = &.{
96858 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96859 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
96860 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
96861 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
96862 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
96863 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
96864 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
96865 } },
96866 }, .{
96867 .required_features = .{ .@"64bit", .bmi2, null, null },
96868 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
96869 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
96870 .patterns = &.{
96871 .{ .src = .{ .to_mem, .none, .none } },
96872 },
96873 .extra_temps = .{
96874 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96875 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
96876 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
9687798481 .unused,
9687898482 .unused,
9687998483 .unused,
......@@ -96883,26 +98487,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9688398487 .unused,
9688498488 .unused,
9688598489 },
96886 .dst_temps = .{ .mem, .unused },
96887 .clobbers = .{ .eflags = true },
98490 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
9688898491 .each = .{ .once = &.{
96889 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96890 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
96891 .{ .@"0:", ._, .bzhi, .tmp2q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._ },
96892 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
96893 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
96894 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98492 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
98493 .{ ._, .v_, .cvttss2si, .dst0q, .tmp0d, ._, ._ },
9689598494 } },
9689698495 }, .{
96897 .required_features = .{ .@"64bit", null, null, null },
96898 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
96899 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
98496 .required_features = .{ .@"64bit", .f16c, null, null },
98497 .src_constraints = .{ .{ .float = .word }, .any, .any },
98498 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },
9690098499 .patterns = &.{
96901 .{ .src = .{ .to_mem, .none, .none } },
98500 .{ .src = .{ .to_sse, .none, .none } },
9690298501 },
9690398502 .extra_temps = .{
96904 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96905 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
98503 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
98504 .unused,
9690698505 .unused,
9690798506 .unused,
9690898507 .unused,
......@@ -96913,26 +98512,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9691398512 .unused,
9691498513 .unused,
9691598514 },
96916 .dst_temps = .{ .mem, .unused },
96917 .clobbers = .{ .eflags = true },
98515 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
9691898516 .each = .{ .once = &.{
96919 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96920 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
96921 .{ ._, ._, .@"and", .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
96922 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
96923 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
96924 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98517 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
98518 .{ ._, .v_, .cvttss2si, .dst0d, .tmp0d, ._, ._ },
9692598519 } },
9692698520 }, .{
96927 .required_features = .{ .@"64bit", null, null, null },
96928 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },
96929 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }, .any },
98521 .required_features = .{ .@"64bit", .f16c, null, null },
98522 .src_constraints = .{ .{ .float = .word }, .any, .any },
98523 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
9693098524 .patterns = &.{
96931 .{ .src = .{ .to_mem, .none, .none } },
98525 .{ .src = .{ .to_sse, .none, .none } },
9693298526 },
9693398527 .extra_temps = .{
96934 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96935 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
98528 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
98529 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
9693698530 .unused,
9693798531 .unused,
9693898532 .unused,
......@@ -96946,22 +98540,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9694698540 .dst_temps = .{ .mem, .unused },
9694798541 .clobbers = .{ .eflags = true },
9694898542 .each = .{ .once = &.{
96949 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96950 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
96951 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
96952 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
96953 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98543 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
98544 .{ ._, .v_, .cvttss2si, .tmp1q, .tmp0d, ._, ._ },
98545 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
98546 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
98547 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp1q, ._, ._ },
9695498548 } },
9695598549 }, .{
96956 .required_features = .{ .@"64bit", null, null, null },
96957 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .yword } }, .any, .any },
96958 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
98550 .required_features = .{ .@"64bit", .f16c, null, null },
98551 .src_constraints = .{ .{ .float = .word }, .any, .any },
98552 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
9695998553 .patterns = &.{
96960 .{ .src = .{ .to_mem, .none, .none } },
98554 .{ .src = .{ .to_sse, .none, .none } },
9696198555 },
9696298556 .extra_temps = .{
96963 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96964 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
98557 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
98558 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
9696598559 .unused,
9696698560 .unused,
9696798561 .unused,
......@@ -96973,28 +98567,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9697398567 .unused,
9697498568 },
9697598569 .dst_temps = .{ .mem, .unused },
96976 .clobbers = .{ .eflags = true },
9697798570 .each = .{ .once = &.{
96978 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
96979 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
96980 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
96981 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
96982 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
96983 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
96984 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98571 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
98572 .{ ._, .v_, .cvttss2si, .tmp1q, .tmp0d, ._, ._ },
98573 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
98574 .{ ._, ._, .mov, .memd(.dst0q, 8), .si(0), ._, ._ },
9698598575 } },
9698698576 }, .{
96987 .required_features = .{ .@"64bit", .bmi2, null, null },
96988 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
96989 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
98577 .required_features = .{ .@"64bit", .f16c, null, null },
98578 .src_constraints = .{ .{ .float = .word }, .any, .any },
98579 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
9699098580 .patterns = &.{
96991 .{ .src = .{ .to_mem, .none, .none } },
98581 .{ .src = .{ .to_sse, .none, .none } },
9699298582 },
9699398583 .extra_temps = .{
96994 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96995 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
96996 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
96997 .unused,
98584 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
98585 .{ .type = .i64, .kind = .{ .reg = .rax } },
98586 .{ .type = .usize, .kind = .{ .reg = .rdi } },
98587 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9699898588 .unused,
9699998589 .unused,
9700098590 .unused,
......@@ -97006,25 +98596,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9700698596 .dst_temps = .{ .mem, .unused },
9700798597 .clobbers = .{ .eflags = true },
9700898598 .each = .{ .once = &.{
97009 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
97010 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
97011 .{ .@"0:", ._, .bzhi, .tmp2q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._ },
97012 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
97013 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
97014 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98599 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
98600 .{ ._, .v_, .cvttss2si, .tmp1q, .tmp0d, ._, ._ },
98601 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
98602 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
98603 .{ ._, ._, .lea, .tmp2p, .memd(.dst0, 8), ._, ._ },
98604 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
98605 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
9701598606 } },
9701698607 }, .{
97017 .required_features = .{ .@"64bit", null, null, null },
97018 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
97019 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
98608 .required_features = .{ .@"64bit", .f16c, null, null },
98609 .src_constraints = .{ .{ .float = .word }, .any, .any },
98610 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
9702098611 .patterns = &.{
97021 .{ .src = .{ .to_mem, .none, .none } },
98612 .{ .src = .{ .to_sse, .none, .none } },
9702298613 },
9702398614 .extra_temps = .{
97024 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
97025 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
97026 .unused,
97027 .unused,
98615 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
98616 .{ .type = .i64, .kind = .{ .reg = .rax } },
98617 .{ .type = .usize, .kind = .{ .reg = .rdi } },
98618 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9702898619 .unused,
9702998620 .unused,
9703098621 .unused,
......@@ -97036,24 +98627,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9703698627 .dst_temps = .{ .mem, .unused },
9703798628 .clobbers = .{ .eflags = true },
9703898629 .each = .{ .once = &.{
97039 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
97040 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
97041 .{ ._, ._, .@"and", .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
97042 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
97043 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
97044 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98630 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
98631 .{ ._, .v_, .cvttss2si, .tmp1q, .tmp0d, ._, ._ },
98632 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
98633 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
98634 .{ ._, ._, .lea, .tmp2p, .memd(.dst0, 8), ._, ._ },
98635 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
98636 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
9704598637 } },
9704698638 }, .{
97047 .required_features = .{ .@"64bit", null, null, null },
97048 .src_constraints = .{ .any_scalar_int, .any, .any },
97049 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }, .any },
98639 .required_features = .{ .sse, null, null, null },
98640 .src_constraints = .{ .{ .float = .word }, .any, .any },
98641 .dst_constraints = .{ .{ .signed_int = .dword }, .any },
9705098642 .patterns = &.{
97051 .{ .src = .{ .to_mem, .none, .none } },
98643 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
9705298644 },
98645 .call_frame = .{ .alignment = .@"16" },
9705398646 .extra_temps = .{
97054 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
97055 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97056 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
98647 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
98648 .unused,
98649 .unused,
9705798650 .unused,
9705898651 .unused,
9705998652 .unused,
......@@ -97063,28 +98656,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9706398656 .unused,
9706498657 .unused,
9706598658 },
97066 .dst_temps = .{ .mem, .unused },
97067 .clobbers = .{ .eflags = true },
98659 .dst_temps = .{ .{ .reg = .eax }, .unused },
98660 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9706898661 .each = .{ .once = &.{
97069 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
97070 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
97071 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
97072 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
97073 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
97074 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
97075 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98662 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
9707698663 } },
9707798664 }, .{
97078 .required_features = .{ .@"64bit", null, null, null },
97079 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
97080 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
98665 .required_features = .{ .sse, null, null, null },
98666 .src_constraints = .{ .{ .float = .word }, .any, .any },
98667 .dst_constraints = .{ .{ .unsigned_int = .dword }, .any },
9708198668 .patterns = &.{
97082 .{ .src = .{ .to_mem, .none, .none } },
98669 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
9708398670 },
98671 .call_frame = .{ .alignment = .@"16" },
9708498672 .extra_temps = .{
97085 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
97086 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97087 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
98673 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },
98674 .unused,
98675 .unused,
9708898676 .unused,
9708998677 .unused,
9709098678 .unused,
......@@ -97094,31 +98682,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9709498682 .unused,
9709598683 .unused,
9709698684 },
97097 .dst_temps = .{ .mem, .unused },
97098 .clobbers = .{ .eflags = true },
98685 .dst_temps = .{ .{ .reg = .eax }, .unused },
98686 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9709998687 .each = .{ .once = &.{
97100 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
97101 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
97102 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
97103 .{ ._, ._l, .sa, .tmp2q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
97104 .{ ._, ._r, .sa, .tmp2q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
97105 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
97106 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
97107 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
97108 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98688 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
9710998689 } },
9711098690 }, .{
97111 .required_features = .{ .@"64bit", .bmi2, null, null },
97112 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97113 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
98691 .required_features = .{ .@"64bit", .sse, null, null },
98692 .src_constraints = .{ .{ .float = .word }, .any, .any },
98693 .dst_constraints = .{ .{ .signed_int = .qword }, .any },
9711498694 .patterns = &.{
97115 .{ .src = .{ .to_mem, .none, .none } },
98695 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
9711698696 },
98697 .call_frame = .{ .alignment = .@"16" },
9711798698 .extra_temps = .{
97118 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
97119 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97120 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
97121 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
98699 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
98700 .unused,
98701 .unused,
98702 .unused,
9712298703 .unused,
9712398704 .unused,
9712498705 .unused,
......@@ -97127,29 +98708,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9712798708 .unused,
9712898709 .unused,
9712998710 },
97130 .dst_temps = .{ .mem, .unused },
97131 .clobbers = .{ .eflags = true },
98711 .dst_temps = .{ .{ .reg = .rax }, .unused },
98712 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9713298713 .each = .{ .once = &.{
97133 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
97134 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
97135 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
97136 .{ .@"0:", ._, .bzhi, .tmp3q, .memi(.src0q, .tmp1), .tmp2q, ._ },
97137 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
97138 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
97139 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
97140 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98714 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
9714198715 } },
9714298716 }, .{
97143 .required_features = .{ .@"64bit", null, null, null },
97144 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97145 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
98717 .required_features = .{ .@"64bit", .sse, null, null },
98718 .src_constraints = .{ .{ .float = .word }, .any, .any },
98719 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },
9714698720 .patterns = &.{
97147 .{ .src = .{ .to_mem, .none, .none } },
98721 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
9714898722 },
98723 .call_frame = .{ .alignment = .@"16" },
9714998724 .extra_temps = .{
97150 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
97151 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97152 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
98725 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },
98726 .unused,
98727 .unused,
9715398728 .unused,
9715498729 .unused,
9715598730 .unused,
......@@ -97159,30 +98734,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9715998734 .unused,
9716098735 .unused,
9716198736 },
97162 .dst_temps = .{ .mem, .unused },
97163 .clobbers = .{ .eflags = true },
98737 .dst_temps = .{ .{ .reg = .rax }, .unused },
98738 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9716498739 .each = .{ .once = &.{
97165 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
97166 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
97167 .{ .@"0:", ._, .mov, .tmp2q, .ua(.dst0, .add_umax), ._, ._ },
97168 .{ ._, ._, .@"and", .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
97169 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
97170 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
97171 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
97172 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98740 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
9717398741 } },
9717498742 }, .{
97175 .required_features = .{ .@"64bit", .slow_incdec, null, null },
97176 .src_constraints = .{ .any_scalar_int, .any, .any },
97177 .dst_constraints = .{ .{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
98743 .required_features = .{ .@"64bit", .sse, null, null },
98744 .src_constraints = .{ .{ .float = .word }, .any, .any },
98745 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
9717898746 .patterns = &.{
97179 .{ .src = .{ .to_mem, .none, .none } },
98747 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
9718098748 },
98749 .call_frame = .{ .alignment = .@"16" },
9718198750 .extra_temps = .{
97182 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97183 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97184 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97185 .{ .type = .u32, .kind = .{ .reg = .ecx } },
98751 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } },
98752 .unused,
98753 .unused,
98754 .unused,
9718698755 .unused,
9718798756 .unused,
9718898757 .unused,
......@@ -97191,30 +98760,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9719198760 .unused,
9719298761 .unused,
9719398762 },
97194 .dst_temps = .{ .mem, .unused },
97195 .clobbers = .{ .eflags = true },
98763 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
98764 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9719698765 .each = .{ .once = &.{
97197 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97198 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97199 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97200 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
97201 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97202 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
97203 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
97204 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
98766 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
9720598767 } },
9720698768 }, .{
97207 .required_features = .{ .@"64bit", null, null, null },
97208 .src_constraints = .{ .any_scalar_int, .any, .any },
97209 .dst_constraints = .{ .{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
98769 .required_features = .{ .@"64bit", .sse, null, null },
98770 .src_constraints = .{ .{ .float = .word }, .any, .any },
98771 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
9721098772 .patterns = &.{
97211 .{ .src = .{ .to_mem, .none, .none } },
98773 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
9721298774 },
98775 .call_frame = .{ .alignment = .@"16" },
9721398776 .extra_temps = .{
97214 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97215 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97216 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97217 .{ .type = .u32, .kind = .{ .reg = .ecx } },
98777 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } },
98778 .unused,
98779 .unused,
98780 .unused,
9721898781 .unused,
9721998782 .unused,
9722098783 .unused,
......@@ -97223,28 +98786,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9722398786 .unused,
9722498787 .unused,
9722598788 },
97226 .dst_temps = .{ .mem, .unused },
97227 .clobbers = .{ .eflags = true },
98789 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
98790 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9722898791 .each = .{ .once = &.{
97229 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97230 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97231 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97232 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
97233 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97234 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
97235 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
97236 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
98792 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
9723798793 } },
9723898794 }, .{
97239 .required_features = .{ .@"64bit", .slow_incdec, null, null },
97240 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
97241 .dst_constraints = .{ .{ .scalar_exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any },
98795 .required_features = .{ .@"64bit", .sse, null, null },
98796 .src_constraints = .{ .{ .float = .word }, .any, .any },
98797 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
9724298798 .patterns = &.{
97243 .{ .src = .{ .to_mem, .none, .none } },
98799 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
9724498800 },
98801 .call_frame = .{ .alignment = .@"16" },
9724598802 .extra_temps = .{
97246 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97247 .{ .type = .usize, .kind = .{ .reg = .rsi } },
98803 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
98804 .{ .type = .i64, .kind = .{ .reg = .rax } },
9724898805 .{ .type = .usize, .kind = .{ .reg = .rdi } },
9724998806 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9725098807 .unused,
......@@ -97256,32 +98813,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9725698813 .unused,
9725798814 },
9725898815 .dst_temps = .{ .mem, .unused },
97259 .clobbers = .{ .eflags = true },
98816 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9726098817 .each = .{ .once = &.{
97261 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97262 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97263 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97264 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
97265 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97266 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
97267 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
97268 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
97269 .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ },
97270 .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97271 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
97272 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
97273 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
98818 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
98819 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
98820 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
98821 .{ ._, ._, .lea, .tmp2p, .memd(.dst0, 8), ._, ._ },
98822 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
98823 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
9727498824 } },
9727598825 }, .{
97276 .required_features = .{ .@"64bit", null, null, null },
97277 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
97278 .dst_constraints = .{ .{ .scalar_exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any },
98826 .required_features = .{ .@"64bit", .sse, null, null },
98827 .src_constraints = .{ .{ .float = .word }, .any, .any },
98828 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
9727998829 .patterns = &.{
97280 .{ .src = .{ .to_mem, .none, .none } },
98830 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
9728198831 },
98832 .call_frame = .{ .alignment = .@"16" },
9728298833 .extra_temps = .{
97283 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97284 .{ .type = .usize, .kind = .{ .reg = .rsi } },
98834 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },
98835 .{ .type = .i64, .kind = .{ .reg = .rax } },
9728598836 .{ .type = .usize, .kind = .{ .reg = .rdi } },
9728698837 .{ .type = .u32, .kind = .{ .reg = .ecx } },
9728798838 .unused,
......@@ -97293,34 +98844,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9729398844 .unused,
9729498845 },
9729598846 .dst_temps = .{ .mem, .unused },
97296 .clobbers = .{ .eflags = true },
98847 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9729798848 .each = .{ .once = &.{
97298 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97299 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97300 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97301 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
97302 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97303 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
97304 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
97305 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
97306 .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ },
97307 .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97308 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
97309 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
97310 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
98849 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
98850 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
98851 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
98852 .{ ._, ._, .lea, .tmp2p, .memd(.dst0, 8), ._, ._ },
98853 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
98854 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
9731198855 } },
9731298856 }, .{
97313 .required_features = .{ .@"64bit", .slow_incdec, null, null },
97314 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
97315 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any },
98857 .required_features = .{ .f16c, null, null, null },
98858 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
98859 .dst_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },
9731698860 .patterns = &.{
97317 .{ .src = .{ .to_mem, .none, .none } },
98861 .{ .src = .{ .mem, .none, .none } },
98862 .{ .src = .{ .to_sse, .none, .none } },
9731898863 },
9731998864 .extra_temps = .{
97320 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97321 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97322 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97323 .{ .type = .u32, .kind = .{ .reg = .ecx } },
98865 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
98866 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
98867 .unused,
98868 .unused,
9732498869 .unused,
9732598870 .unused,
9732698871 .unused,
......@@ -97329,37 +98874,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9732998874 .unused,
9733098875 .unused,
9733198876 },
97332 .dst_temps = .{ .mem, .unused },
97333 .clobbers = .{ .eflags = true },
98877 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9733498878 .each = .{ .once = &.{
97335 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97336 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97337 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97338 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
97339 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97340 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
97341 .{ ._, ._l, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
97342 .{ ._, ._r, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
97343 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
97344 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
97345 .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ },
97346 .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97347 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
97348 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
97349 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
98879 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
98880 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
98881 .{ ._, .v_, .cvttps2dq, .dst0x, .dst0x, ._, ._ },
98882 .{ ._, .vp_b, .shuf, .dst0x, .dst0x, .lea(.tmp0x), ._ },
9735098883 } },
9735198884 }, .{
97352 .required_features = .{ .@"64bit", null, null, null },
97353 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
97354 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any },
98885 .required_features = .{ .f16c, null, null, null },
98886 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
98887 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },
9735598888 .patterns = &.{
9735698889 .{ .src = .{ .to_mem, .none, .none } },
9735798890 },
9735898891 .extra_temps = .{
97359 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97360 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97361 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97362 .{ .type = .u32, .kind = .{ .reg = .ecx } },
98892 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
98893 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
98894 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
98895 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
9736398896 .unused,
9736498897 .unused,
9736598898 .unused,
......@@ -97369,37 +98902,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9736998902 .unused,
9737098903 },
9737198904 .dst_temps = .{ .mem, .unused },
97372 .clobbers = .{ .eflags = true },
9737398905 .each = .{ .once = &.{
97374 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97375 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97376 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97377 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
97378 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97379 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
97380 .{ ._, ._l, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
97381 .{ ._, ._r, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
97382 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
97383 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
97384 .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ },
97385 .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97386 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
97387 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
97388 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
98906 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
98907 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
98908 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
98909 .{ .@"0:", .v_ps, .cvtph2, .tmp3x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
98910 .{ ._, .v_, .cvttps2dq, .tmp3x, .tmp3x, ._, ._ },
98911 .{ ._, .vp_b, .shuf, .tmp3x, .tmp3x, .tmp2x, ._ },
98912 .{ ._, .v_d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
98913 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
98914 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9738998915 } },
9739098916 }, .{
97391 .required_features = .{ .@"64bit", .slow_incdec, null, null },
97392 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
97393 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }, .any },
98917 .required_features = .{ .avx, .slow_incdec, null, null },
98918 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
98919 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
9739498920 .patterns = &.{
9739598921 .{ .src = .{ .to_mem, .none, .none } },
9739698922 },
98923 .call_frame = .{ .alignment = .@"16" },
9739798924 .extra_temps = .{
97398 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97399 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97400 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97401 .{ .type = .u32, .kind = .{ .reg = .ecx } },
97402 .{ .type = .u64, .kind = .{ .reg = .rax } },
98925 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
98926 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
98927 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
98928 .{ .type = .i32, .kind = .{ .reg = .eax } },
98929 .unused,
9740398930 .unused,
9740498931 .unused,
9740598932 .unused,
......@@ -97408,34 +98935,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9740898935 .unused,
9740998936 },
9741098937 .dst_temps = .{ .mem, .unused },
97411 .clobbers = .{ .eflags = true },
98938 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9741298939 .each = .{ .once = &.{
97413 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97414 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97415 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97416 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
97417 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97418 .{ ._, ._, .mov, .tmp4q, .lea(.tmp1q), ._, ._ },
97419 .{ ._, ._l, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
97420 .{ ._, ._r, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
97421 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
97422 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97423 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
97424 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
98940 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
98941 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
98942 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), .ui(0) },
98943 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
98944 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
98945 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
98946 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9742598947 } },
9742698948 }, .{
97427 .required_features = .{ .@"64bit", null, null, null },
97428 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
97429 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }, .any },
98949 .required_features = .{ .avx, null, null, null },
98950 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
98951 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
9743098952 .patterns = &.{
9743198953 .{ .src = .{ .to_mem, .none, .none } },
9743298954 },
98955 .call_frame = .{ .alignment = .@"16" },
9743398956 .extra_temps = .{
97434 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97435 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97436 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97437 .{ .type = .u32, .kind = .{ .reg = .ecx } },
97438 .{ .type = .u64, .kind = .{ .reg = .rax } },
98957 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
98958 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
98959 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
98960 .{ .type = .i32, .kind = .{ .reg = .eax } },
98961 .unused,
9743998962 .unused,
9744098963 .unused,
9744198964 .unused,
......@@ -97444,34 +98967,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9744498967 .unused,
9744598968 },
9744698969 .dst_temps = .{ .mem, .unused },
97447 .clobbers = .{ .eflags = true },
98970 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9744898971 .each = .{ .once = &.{
97449 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97450 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97451 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97452 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
97453 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97454 .{ ._, ._, .mov, .tmp4q, .lea(.tmp1q), ._, ._ },
97455 .{ ._, ._l, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
97456 .{ ._, ._r, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
97457 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
97458 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97459 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
98972 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
98973 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
98974 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), .ui(0) },
98975 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
98976 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
98977 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
9746098978 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9746198979 } },
9746298980 }, .{
97463 .required_features = .{ .@"64bit", .slow_incdec, null, null },
97464 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97465 .dst_constraints = .{ .{ .scalar_exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
98981 .required_features = .{ .sse2, .slow_incdec, null, null },
98982 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
98983 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
9746698984 .patterns = &.{
9746798985 .{ .src = .{ .to_mem, .none, .none } },
9746898986 },
98987 .call_frame = .{ .alignment = .@"16" },
9746998988 .extra_temps = .{
97470 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97471 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97472 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97473 .{ .type = .u64, .kind = .{ .reg = .rax } },
97474 .{ .type = .u32, .kind = .{ .reg = .ecx } },
98989 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
98990 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
98991 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
98992 .{ .type = .i32, .kind = .{ .reg = .eax } },
98993 .unused,
9747598994 .unused,
9747698995 .unused,
9747798996 .unused,
......@@ -97480,32 +98999,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9748098999 .unused,
9748199000 },
9748299001 .dst_temps = .{ .mem, .unused },
97483 .clobbers = .{ .eflags = true },
99002 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9748499003 .each = .{ .once = &.{
97485 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97486 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97487 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97488 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
97489 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
97490 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97491 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
97492 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
97493 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
97494 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
99004 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
99005 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
99006 .{ ._, .p_w, .insr, .tmp1x, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), .ui(0), ._ },
99007 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99008 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
99009 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
99010 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9749599011 } },
9749699012 }, .{
97497 .required_features = .{ .@"64bit", null, null, null },
97498 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97499 .dst_constraints = .{ .{ .scalar_exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
99013 .required_features = .{ .sse2, null, null, null },
99014 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99015 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
9750099016 .patterns = &.{
9750199017 .{ .src = .{ .to_mem, .none, .none } },
9750299018 },
99019 .call_frame = .{ .alignment = .@"16" },
9750399020 .extra_temps = .{
97504 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97505 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97506 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97507 .{ .type = .u64, .kind = .{ .reg = .rax } },
97508 .{ .type = .u32, .kind = .{ .reg = .ecx } },
99021 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99022 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99023 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
99024 .{ .type = .i32, .kind = .{ .reg = .eax } },
99025 .unused,
9750999026 .unused,
9751099027 .unused,
9751199028 .unused,
......@@ -97514,32 +99031,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9751499031 .unused,
9751599032 },
9751699033 .dst_temps = .{ .mem, .unused },
97517 .clobbers = .{ .eflags = true },
99034 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9751899035 .each = .{ .once = &.{
97519 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97520 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97521 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97522 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
97523 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
97524 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97525 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
97526 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
97527 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
99036 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
99037 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
99038 .{ ._, .p_w, .insr, .tmp1x, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), .ui(0), ._ },
99039 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99040 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
99041 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
9752899042 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9752999043 } },
9753099044 }, .{
97531 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
97532 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97533 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
99045 .required_features = .{ .sse, .slow_incdec, null, null },
99046 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99047 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
9753499048 .patterns = &.{
9753599049 .{ .src = .{ .to_mem, .none, .none } },
9753699050 },
99051 .call_frame = .{ .alignment = .@"16" },
9753799052 .extra_temps = .{
97538 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97539 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97540 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97541 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
97542 .{ .type = .u32, .kind = .{ .reg = .ecx } },
99053 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99054 .{ .type = .i32, .kind = .{ .reg = .eax } },
99055 .{ .type = .f32, .kind = .mem },
99056 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99057 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
9754399058 .unused,
9754499059 .unused,
9754599060 .unused,
......@@ -97548,35 +99063,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9754899063 .unused,
9754999064 },
9755099065 .dst_temps = .{ .mem, .unused },
97551 .clobbers = .{ .eflags = true },
99066 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9755299067 .each = .{ .once = &.{
97553 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97554 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97555 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97556 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
97557 .{ .@"0:", ._, .mov, .tmp4d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
97558 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97559 .{ ._, ._, .bzhi, .tmp4q, .lea(.tmp1q), .tmp3q, ._ },
97560 .{ ._, ._, .mov, .lea(.tmp2q), .tmp4q, ._, ._ },
97561 .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ },
97562 .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97563 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
97564 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
97565 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
99068 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
99069 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
99070 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
99071 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
99072 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99073 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
99074 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
99075 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9756699076 } },
9756799077 }, .{
97568 .required_features = .{ .@"64bit", .bmi2, null, null },
97569 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97570 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
99078 .required_features = .{ .sse, null, null, null },
99079 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99080 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
9757199081 .patterns = &.{
9757299082 .{ .src = .{ .to_mem, .none, .none } },
9757399083 },
99084 .call_frame = .{ .alignment = .@"16" },
9757499085 .extra_temps = .{
97575 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97576 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97577 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97578 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
97579 .{ .type = .u32, .kind = .{ .reg = .ecx } },
99086 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99087 .{ .type = .i32, .kind = .{ .reg = .eax } },
99088 .{ .type = .f32, .kind = .mem },
99089 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99090 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
9758099091 .unused,
9758199092 .unused,
9758299093 .unused,
......@@ -97585,71 +99096,59 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9758599096 .unused,
9758699097 },
9758799098 .dst_temps = .{ .mem, .unused },
97588 .clobbers = .{ .eflags = true },
99099 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9758999100 .each = .{ .once = &.{
97590 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97591 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97592 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97593 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
97594 .{ .@"0:", ._, .mov, .tmp4d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
97595 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97596 .{ ._, ._, .bzhi, .tmp4q, .lea(.tmp1q), .tmp3q, ._ },
97597 .{ ._, ._, .mov, .lea(.tmp2q), .tmp4q, ._, ._ },
97598 .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ },
97599 .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97600 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
97601 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
99101 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
99102 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
99103 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
99104 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
99105 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99106 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
99107 .{ ._, ._c, .in, .tmp0p, .si(1), ._, ._ },
9760299108 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9760399109 } },
9760499110 }, .{
97605 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
97606 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97607 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
99111 .required_features = .{ .f16c, null, null, null },
99112 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
99113 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
9760899114 .patterns = &.{
97609 .{ .src = .{ .to_mem, .none, .none } },
99115 .{ .src = .{ .mem, .none, .none } },
99116 .{ .src = .{ .to_sse, .none, .none } },
9761099117 },
97611 .extra_temps = .{
97612 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97613 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97614 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97615 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
97616 .{ .type = .u32, .kind = .{ .reg = .ecx } },
97617 .{ .type = .u64, .kind = .{ .reg = .rax } },
97618 .unused,
97619 .unused,
97620 .unused,
97621 .unused,
97622 .unused,
99118 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
99119 .each = .{ .once = &.{
99120 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
99121 .{ ._, .v_, .cvttps2dq, .dst0x, .dst0x, ._, ._ },
99122 .{ ._, .vp_w, .ackssd, .dst0x, .dst0x, .dst0x, ._ },
99123 } },
99124 }, .{
99125 .required_features = .{ .f16c, null, null, null },
99126 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
99127 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },
99128 .patterns = &.{
99129 .{ .src = .{ .mem, .none, .none } },
99130 .{ .src = .{ .to_sse, .none, .none } },
9762399131 },
97624 .dst_temps = .{ .mem, .unused },
97625 .clobbers = .{ .eflags = true },
99132 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
9762699133 .each = .{ .once = &.{
97627 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97628 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97629 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97630 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
97631 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
97632 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97633 .{ ._, ._, .bzhi, .tmp5q, .lea(.tmp1q), .tmp3q, ._ },
97634 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
97635 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97636 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
97637 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
99134 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
99135 .{ ._, .v_, .cvttps2dq, .dst0x, .dst0x, ._, ._ },
99136 .{ ._, .vp_w, .ackusd, .dst0x, .dst0x, .dst0x, ._ },
9763899137 } },
9763999138 }, .{
97640 .required_features = .{ .@"64bit", .bmi2, null, null },
97641 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97642 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
99139 .required_features = .{ .f16c, null, null, null },
99140 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
99141 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
9764399142 .patterns = &.{
9764499143 .{ .src = .{ .to_mem, .none, .none } },
9764599144 },
9764699145 .extra_temps = .{
97647 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97648 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97649 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97650 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
97651 .{ .type = .u32, .kind = .{ .reg = .ecx } },
97652 .{ .type = .u64, .kind = .{ .reg = .rax } },
99146 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99147 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
99148 .unused,
99149 .unused,
99150 .unused,
99151 .unused,
9765399152 .unused,
9765499153 .unused,
9765599154 .unused,
......@@ -97657,32 +99156,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9765799156 .unused,
9765899157 },
9765999158 .dst_temps = .{ .mem, .unused },
97660 .clobbers = .{ .eflags = true },
9766199159 .each = .{ .once = &.{
97662 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97663 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97664 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97665 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
97666 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
97667 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97668 .{ ._, ._, .bzhi, .tmp5q, .lea(.tmp1q), .tmp3q, ._ },
97669 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
97670 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97671 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
97672 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
99160 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99161 .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
99162 .{ ._, .v_, .cvttps2dq, .tmp1x, .tmp1x, ._, ._ },
99163 .{ ._, .vp_w, .ackssd, .tmp1x, .tmp1x, .tmp1x, ._ },
99164 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
99165 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
99166 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9767399167 } },
9767499168 }, .{
97675 .required_features = .{ .@"64bit", .slow_incdec, null, null },
97676 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97677 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
99169 .required_features = .{ .f16c, null, null, null },
99170 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
99171 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },
9767899172 .patterns = &.{
9767999173 .{ .src = .{ .to_mem, .none, .none } },
9768099174 },
9768199175 .extra_temps = .{
97682 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97683 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97684 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97685 .{ .type = .u32, .kind = .{ .reg = .ecx } },
99176 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99177 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
99178 .unused,
99179 .unused,
9768699180 .unused,
9768799181 .unused,
9768899182 .unused,
......@@ -97692,34 +99186,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9769299186 .unused,
9769399187 },
9769499188 .dst_temps = .{ .mem, .unused },
97695 .clobbers = .{ .eflags = true },
9769699189 .each = .{ .once = &.{
97697 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97698 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97699 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97700 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
97701 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97702 .{ ._, ._, .mov, .tmp3q, .ua(.dst0, .add_umax), ._, ._ },
97703 .{ ._, ._, .@"and", .tmp3q, .lea(.tmp1q), ._, ._ },
97704 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
97705 .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ },
97706 .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97707 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
97708 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
97709 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
99190 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99191 .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
99192 .{ ._, .v_, .cvttps2dq, .tmp1x, .tmp1x, ._, ._ },
99193 .{ ._, .vp_w, .ackusd, .tmp1x, .tmp1x, .tmp1x, ._ },
99194 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
99195 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
99196 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9771099197 } },
9771199198 }, .{
97712 .required_features = .{ .@"64bit", null, null, null },
97713 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97714 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
99199 .required_features = .{ .avx, null, null, null },
99200 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99201 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
9771599202 .patterns = &.{
9771699203 .{ .src = .{ .to_mem, .none, .none } },
9771799204 },
99205 .call_frame = .{ .alignment = .@"16" },
9771899206 .extra_temps = .{
97719 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97720 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97721 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97722 .{ .type = .u32, .kind = .{ .reg = .ecx } },
99207 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99208 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99209 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
99210 .{ .type = .i32, .kind = .{ .reg = .eax } },
9772399211 .unused,
9772499212 .unused,
9772599213 .unused,
......@@ -97729,35 +99217,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9772999217 .unused,
9773099218 },
9773199219 .dst_temps = .{ .mem, .unused },
97732 .clobbers = .{ .eflags = true },
99220 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9773399221 .each = .{ .once = &.{
97734 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97735 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97736 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97737 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
97738 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97739 .{ ._, ._, .mov, .tmp3q, .ua(.dst0, .add_umax), ._, ._ },
97740 .{ ._, ._, .@"and", .tmp3q, .lea(.tmp1q), ._, ._ },
97741 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
97742 .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ },
97743 .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97744 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
97745 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
97746 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
99222 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99223 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
99224 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
99225 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99226 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
99227 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99228 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9774799229 } },
9774899230 }, .{
97749 .required_features = .{ .@"64bit", .slow_incdec, null, null },
97750 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97751 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
99231 .required_features = .{ .sse2, null, null, null },
99232 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99233 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
9775299234 .patterns = &.{
9775399235 .{ .src = .{ .to_mem, .none, .none } },
9775499236 },
99237 .call_frame = .{ .alignment = .@"16" },
9775599238 .extra_temps = .{
97756 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97757 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97758 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97759 .{ .type = .u64, .kind = .{ .reg = .rax } },
97760 .{ .type = .u32, .kind = .{ .reg = .ecx } },
99239 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99240 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99241 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
99242 .{ .type = .i32, .kind = .{ .reg = .eax } },
99243 .unused,
9776199244 .unused,
9776299245 .unused,
9776399246 .unused,
......@@ -97766,858 +99249,1000 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9776699249 .unused,
9776799250 },
9776899251 .dst_temps = .{ .mem, .unused },
97769 .clobbers = .{ .eflags = true },
99252 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9777099253 .each = .{ .once = &.{
97771 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97772 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97773 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97774 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
97775 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
97776 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97777 .{ ._, ._, .mov, .tmp4q, .ua(.dst0, .add_umax), ._, ._ },
97778 .{ ._, ._, .@"and", .tmp4q, .lea(.tmp1q), ._, ._ },
97779 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
97780 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97781 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
97782 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
99254 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99255 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
99256 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
99257 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99258 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
99259 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99260 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9778399261 } },
9778499262 }, .{
97785 .required_features = .{ .@"64bit", null, null, null },
97786 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97787 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
99263 .required_features = .{ .sse, null, null, null },
99264 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99265 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
9778899266 .patterns = &.{
9778999267 .{ .src = .{ .to_mem, .none, .none } },
9779099268 },
99269 .call_frame = .{ .alignment = .@"16" },
9779199270 .extra_temps = .{
97792 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
97793 .{ .type = .usize, .kind = .{ .reg = .rsi } },
97794 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97795 .{ .type = .u64, .kind = .{ .reg = .rax } },
97796 .{ .type = .u32, .kind = .{ .reg = .ecx } },
97797 .unused,
99271 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99272 .{ .type = .i32, .kind = .{ .reg = .eax } },
99273 .{ .type = .f32, .kind = .mem },
99274 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99275 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
99276 .unused,
9779899277 .unused,
9779999278 .unused,
9780099279 .unused,
9780199280 .unused,
9780299281 .unused,
9780399282 },
97804 .dst_temps = .{ .mem, .unused },
97805 .clobbers = .{ .eflags = true },
97806 .each = .{ .once = &.{
97807 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
97808 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
97809 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
97810 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
97811 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
97812 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
97813 .{ ._, ._, .mov, .tmp4q, .ua(.dst0, .add_umax), ._, ._ },
97814 .{ ._, ._, .@"and", .tmp4q, .lea(.tmp1q), ._, ._ },
97815 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
97816 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97817 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
97818 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
97819 } },
97820 } }) catch |err| switch (err) {
97821 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
97822 @tagName(air_tag),
97823 ty_op.ty.toType().fmt(pt),
97824 cg.typeOf(ty_op.operand).fmt(pt),
97825 ops[0].tracking(cg),
97826 }),
97827 else => |e| return e,
97828 };
97829 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
97830 },
97831 .optional_payload => if (use_old) try cg.airOptionalPayload(inst) else {
97832 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
97833 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
97834 const pl = if (!hack_around_sema_opv_bugs or ty_op.ty.toType().hasRuntimeBitsIgnoreComptime(zcu))
97835 try ops[0].read(ty_op.ty.toType(), .{}, cg)
97836 else
97837 try cg.tempInit(ty_op.ty.toType(), .none);
97838 try pl.finish(inst, &.{ty_op.operand}, &ops, cg);
97839 },
97840 .optional_payload_ptr => if (use_old) try cg.airOptionalPayloadPtr(inst) else {
97841 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
97842 const ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
97843 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
97844 },
97845 .optional_payload_ptr_set => if (use_old) try cg.airOptionalPayloadPtrSet(inst) else {
97846 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
97847 const opt_ty = cg.typeOf(ty_op.operand).childType(zcu);
97848 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
97849 if (!opt_ty.optionalReprIsPayload(zcu)) {
97850 const opt_pl_ty = opt_ty.optionalChild(zcu);
97851 const opt_pl_abi_size: i32 = @intCast(opt_pl_ty.abiSize(zcu));
97852 try ops[0].toOffset(opt_pl_abi_size, cg);
97853 var has_value = try cg.tempInit(.bool, .{ .immediate = 1 });
97854 try ops[0].store(&has_value, .{}, cg);
97855 try has_value.die(cg);
97856 try ops[0].toOffset(-opt_pl_abi_size, cg);
97857 }
97858 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
97859 },
97860 .wrap_optional => if (use_old) try cg.airWrapOptional(inst) else {
97861 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
97862 const opt_ty = ty_op.ty.toType();
97863 const opt_pl_ty = cg.typeOf(ty_op.operand);
97864 const opt_pl_abi_size: u31 = @intCast(opt_pl_ty.abiSize(zcu));
97865 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
97866 var opt = try cg.tempAlloc(opt_ty);
97867 try opt.write(&ops[0], .{}, cg);
97868 if (!opt_ty.optionalReprIsPayload(zcu)) {
97869 var has_value = try cg.tempInit(.bool, .{ .immediate = 1 });
97870 try opt.write(&has_value, .{ .disp = opt_pl_abi_size }, cg);
97871 try has_value.die(cg);
97872 }
97873 try opt.finish(inst, &.{ty_op.operand}, &ops, cg);
97874 },
97875 .unwrap_errunion_payload => if (use_old) try cg.airUnwrapErrUnionPayload(inst) else {
97876 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
97877 const eu_pl_ty = ty_op.ty.toType();
97878 const eu_pl_off: i32 = @intCast(codegen.errUnionPayloadOffset(eu_pl_ty, zcu));
97879 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
97880 const pl = if (!hack_around_sema_opv_bugs or eu_pl_ty.hasRuntimeBitsIgnoreComptime(zcu))
97881 try ops[0].read(eu_pl_ty, .{ .disp = eu_pl_off }, cg)
97882 else
97883 try cg.tempInit(eu_pl_ty, .none);
97884 try pl.finish(inst, &.{ty_op.operand}, &ops, cg);
97885 },
97886 .unwrap_errunion_err => if (use_old) try cg.airUnwrapErrUnionErr(inst) else {
97887 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
97888 const eu_ty = cg.typeOf(ty_op.operand);
97889 const eu_err_ty = ty_op.ty.toType();
97890 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
97891 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
97892 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
97893 const err = try ops[0].read(eu_err_ty, .{ .disp = eu_err_off }, cg);
97894 try err.finish(inst, &.{ty_op.operand}, &ops, cg);
97895 },
97896 .unwrap_errunion_payload_ptr => if (use_old) try cg.airUnwrapErrUnionPayloadPtr(inst) else {
97897 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
97898 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);
97899 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
97900 const eu_pl_off: i32 = @intCast(codegen.errUnionPayloadOffset(eu_pl_ty, zcu));
97901 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
97902 try ops[0].toOffset(eu_pl_off, cg);
97903 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
97904 },
97905 .unwrap_errunion_err_ptr => if (use_old) try cg.airUnwrapErrUnionErrPtr(inst) else {
97906 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
97907 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);
97908 const eu_err_ty = ty_op.ty.toType();
97909 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
97910 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
97911 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
97912 try ops[0].toOffset(eu_err_off, cg);
97913 const err = try ops[0].load(eu_err_ty, .{}, cg);
97914 try err.finish(inst, &.{ty_op.operand}, &ops, cg);
97915 },
97916 .errunion_payload_ptr_set => if (use_old) try cg.airErrUnionPayloadPtrSet(inst) else {
97917 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
97918 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);
97919 const eu_err_ty = eu_ty.errorUnionSet(zcu);
97920 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
97921 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
97922 const eu_pl_off: i32 = @intCast(codegen.errUnionPayloadOffset(eu_pl_ty, zcu));
97923 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
97924 try ops[0].toOffset(eu_err_off, cg);
97925 var err = try cg.tempInit(eu_err_ty, .{ .immediate = 0 });
97926 try ops[0].store(&err, .{}, cg);
97927 try err.die(cg);
97928 try ops[0].toOffset(eu_pl_off - eu_err_off, cg);
97929 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
97930 },
97931 .wrap_errunion_payload => if (use_old) try cg.airWrapErrUnionPayload(inst) else {
97932 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
97933 const eu_ty = ty_op.ty.toType();
97934 const eu_err_ty = eu_ty.errorUnionSet(zcu);
97935 const eu_pl_ty = cg.typeOf(ty_op.operand);
97936 const eu_err_off: u31 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
97937 const eu_pl_off: u31 = @intCast(codegen.errUnionPayloadOffset(eu_pl_ty, zcu));
97938 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
97939 var eu = try cg.tempAlloc(eu_ty);
97940 try eu.write(&ops[0], .{ .disp = eu_pl_off }, cg);
97941 var err = try cg.tempInit(eu_err_ty, .{ .immediate = 0 });
97942 try eu.write(&err, .{ .disp = eu_err_off }, cg);
97943 try err.die(cg);
97944 try eu.finish(inst, &.{ty_op.operand}, &ops, cg);
97945 },
97946 .wrap_errunion_err => if (use_old) try cg.airWrapErrUnionErr(inst) else {
97947 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
97948 const eu_ty = ty_op.ty.toType();
97949 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
97950 const eu_err_off: u31 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
97951 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
97952 var eu = try cg.tempAlloc(eu_ty);
97953 try eu.write(&ops[0], .{ .disp = eu_err_off }, cg);
97954 try eu.finish(inst, &.{ty_op.operand}, &ops, cg);
97955 },
97956 .struct_field_ptr => if (use_old) try cg.airStructFieldPtr(inst) else {
97957 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
97958 const extra = cg.air.extraData(Air.StructField, ty_pl.payload).data;
97959 var ops = try cg.tempsFromOperands(inst, .{extra.struct_operand});
97960 try ops[0].toOffset(cg.fieldOffset(
97961 cg.typeOf(extra.struct_operand),
97962 ty_pl.ty.toType(),
97963 extra.field_index,
97964 ), cg);
97965 try ops[0].finish(inst, &.{extra.struct_operand}, &ops, cg);
97966 },
97967 .struct_field_ptr_index_0,
97968 .struct_field_ptr_index_1,
97969 .struct_field_ptr_index_2,
97970 .struct_field_ptr_index_3,
97971 => |air_tag| if (use_old) try cg.airStructFieldPtrIndex(inst, switch (air_tag) {
97972 else => unreachable,
97973 .struct_field_ptr_index_0 => 0,
97974 .struct_field_ptr_index_1 => 1,
97975 .struct_field_ptr_index_2 => 2,
97976 .struct_field_ptr_index_3 => 3,
97977 }) else {
97978 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
97979 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
97980 try ops[0].toOffset(cg.fieldOffset(
97981 cg.typeOf(ty_op.operand),
97982 ty_op.ty.toType(),
97983 switch (air_tag) {
97984 else => unreachable,
97985 .struct_field_ptr_index_0 => 0,
97986 .struct_field_ptr_index_1 => 1,
97987 .struct_field_ptr_index_2 => 2,
97988 .struct_field_ptr_index_3 => 3,
97989 },
97990 ), cg);
97991 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
97992 },
97993 .struct_field_val => if (use_old) try cg.airStructFieldVal(inst) else fallback: {
97994 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
97995 const extra = cg.air.extraData(Air.StructField, ty_pl.payload).data;
97996 const agg_ty = cg.typeOf(extra.struct_operand);
97997 const field_ty = ty_pl.ty.toType();
97998 const field_off: u31 = switch (agg_ty.containerLayout(zcu)) {
97999 .auto, .@"extern" => @intCast(agg_ty.structFieldOffset(extra.field_index, zcu)),
98000 .@"packed" => break :fallback try cg.airStructFieldVal(inst),
98001 };
98002 var ops = try cg.tempsFromOperands(inst, .{extra.struct_operand});
98003 var res = if (!hack_around_sema_opv_bugs or field_ty.hasRuntimeBitsIgnoreComptime(zcu))
98004 try ops[0].read(field_ty, .{ .disp = field_off }, cg)
98005 else
98006 try cg.tempInit(field_ty, .none);
98007 try res.finish(inst, &.{extra.struct_operand}, &ops, cg);
98008 },
98009 .set_union_tag => if (use_old) try cg.airSetUnionTag(inst) else {
98010 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
98011 const union_ty = cg.typeOf(bin_op.lhs).childType(zcu);
98012 const union_layout = union_ty.unionGetLayout(zcu);
98013 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
98014 if (!hack_around_sema_opv_bugs or union_layout.tag_size > 0) try ops[0].store(&ops[1], .{
98015 .disp = @intCast(union_layout.tagOffset()),
98016 }, cg);
98017 const res = try cg.tempInit(.void, .none);
98018 try res.finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
98019 },
98020 .get_union_tag => if (use_old) try cg.airGetUnionTag(inst) else {
98021 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98022 const union_ty = cg.typeOf(ty_op.operand);
98023 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98024 const union_layout = union_ty.unionGetLayout(zcu);
98025 assert(union_layout.tag_size > 0);
98026 const res = try ops[0].read(ty_op.ty.toType(), .{
98027 .disp = @intCast(union_layout.tagOffset()),
98028 }, cg);
98029 try res.finish(inst, &.{ty_op.operand}, &ops, cg);
98030 },
98031 .slice => if (use_old) try cg.airSlice(inst) else {
98032 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
98033 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
98034 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
98035 try ops[0].toPair(&ops[1], cg);
98036 try ops[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
98037 },
98038 .slice_len => if (use_old) try cg.airSliceLen(inst) else {
98039 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98040 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98041 try ops[0].toSliceLen(cg);
98042 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98043 },
98044 .slice_ptr => if (use_old) try cg.airSlicePtr(inst) else {
98045 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98046 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98047 try ops[0].toSlicePtr(cg);
98048 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98049 },
98050 .ptr_slice_len_ptr => if (use_old) try cg.airPtrSliceLenPtr(inst) else {
98051 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98052 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98053 try ops[0].toOffset(8, cg);
98054 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98055 },
98056 .ptr_slice_ptr_ptr => if (use_old) try cg.airPtrSlicePtrPtr(inst) else {
98057 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98058 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98059 try ops[0].toOffset(0, cg);
98060 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98061 },
98062 .array_elem_val => if (use_old) try cg.airArrayElemVal(inst) else {
98063 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
98064 const array_ty = cg.typeOf(bin_op.lhs);
98065 const res_ty = array_ty.elemType2(zcu);
98066 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
98067 var res: [1]Temp = undefined;
98068 cg.select(&res, &.{res_ty}, &ops, comptime &.{ .{
98069 .src_constraints = .{ .{ .bool_vec = .dword }, .any, .any },
98070 .patterns = &.{
98071 .{ .src = .{ .to_gpr, .imm32, .none } },
98072 },
98073 .dst_temps = .{ .{ .cc = .c }, .unused },
98074 .clobbers = .{ .eflags = true },
98075 .each = .{ .once = &.{
98076 .{ ._, ._, .bt, .src0d, .ua(.none, .add_src1_rem_32), ._, ._ },
98077 } },
98078 }, .{
98079 .src_constraints = .{ .{ .bool_vec = .dword }, .any, .any },
98080 .patterns = &.{
98081 .{ .src = .{ .to_gpr, .to_gpr, .none } },
98082 },
98083 .dst_temps = .{ .{ .cc = .c }, .unused },
98084 .clobbers = .{ .eflags = true },
99283 .dst_temps = .{ .mem, .unused },
99284 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9808599285 .each = .{ .once = &.{
98086 .{ ._, ._, .bt, .src0d, .src1d, ._, ._ },
99286 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99287 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
99288 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
99289 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
99290 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99291 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
99292 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99293 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9808799294 } },
9808899295 }, .{
98089 .required_features = .{ .@"64bit", null, null, null },
98090 .src_constraints = .{ .{ .bool_vec = .qword }, .any, .any },
99296 .required_features = .{ .f16c, null, null, null },
99297 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
99298 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
9809199299 .patterns = &.{
98092 .{ .src = .{ .to_gpr, .imm32, .none } },
99300 .{ .src = .{ .to_mem, .none, .none } },
9809399301 },
98094 .dst_temps = .{ .{ .cc = .c }, .unused },
98095 .clobbers = .{ .eflags = true },
99302 .extra_temps = .{
99303 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99304 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
99305 .unused,
99306 .unused,
99307 .unused,
99308 .unused,
99309 .unused,
99310 .unused,
99311 .unused,
99312 .unused,
99313 .unused,
99314 },
99315 .dst_temps = .{ .mem, .unused },
9809699316 .each = .{ .once = &.{
98097 .{ ._, ._, .bt, .src0q, .ua(.none, .add_src1_rem_64), ._, ._ },
99317 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99318 .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
99319 .{ ._, .v_, .cvttps2dq, .tmp1x, .tmp1x, ._, ._ },
99320 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
99321 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
99322 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9809899323 } },
9809999324 }, .{
98100 .required_features = .{ .@"64bit", null, null, null },
98101 .src_constraints = .{ .{ .bool_vec = .qword }, .any, .any },
99325 .required_features = .{ .f16c, null, null, null },
99326 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99327 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
9810299328 .patterns = &.{
98103 .{ .src = .{ .to_gpr, .to_gpr, .none } },
99329 .{ .src = .{ .to_mem, .none, .none } },
9810499330 },
98105 .dst_temps = .{ .{ .cc = .c }, .unused },
98106 .clobbers = .{ .eflags = true },
99331 .extra_temps = .{
99332 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99333 .{ .type = .f32, .kind = .{ .rc = .sse } },
99334 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
99335 .unused,
99336 .unused,
99337 .unused,
99338 .unused,
99339 .unused,
99340 .unused,
99341 .unused,
99342 .unused,
99343 },
99344 .dst_temps = .{ .mem, .unused },
9810799345 .each = .{ .once = &.{
98108 .{ ._, ._, .bt, .src0q, .src1q, ._, ._ },
99346 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99347 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
99348 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
99349 .{ ._, .v_ps, .cvtph2, .tmp1x, .tmp1q, ._, ._ },
99350 .{ ._, .v_, .cvttss2si, .tmp2q, .tmp1x, ._, ._ },
99351 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
99352 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99353 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9810999354 } },
9811099355 }, .{
98111 .src_constraints = .{ .any_bool_vec, .any, .any },
99356 .required_features = .{ .avx, null, null, null },
99357 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99358 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
9811299359 .patterns = &.{
98113 .{ .src = .{ .to_mem, .imm32, .none } },
99360 .{ .src = .{ .to_mem, .none, .none } },
9811499361 },
98115 .dst_temps = .{ .{ .cc = .c }, .unused },
98116 .clobbers = .{ .eflags = true },
99362 .call_frame = .{ .alignment = .@"16" },
99363 .extra_temps = .{
99364 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99365 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99366 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
99367 .{ .type = .i32, .kind = .{ .reg = .eax } },
99368 .unused,
99369 .unused,
99370 .unused,
99371 .unused,
99372 .unused,
99373 .unused,
99374 .unused,
99375 },
99376 .dst_temps = .{ .mem, .unused },
99377 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9811799378 .each = .{ .once = &.{
98118 .{ ._, ._, .bt, .mema(.src0d, .add_src1_div_8_down_4), .ua(.none, .add_src1_rem_32), ._, ._ },
99379 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99380 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
99381 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
99382 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99383 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
99384 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99385 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9811999386 } },
9812099387 }, .{
98121 .src_constraints = .{ .any_bool_vec, .any, .any },
99388 .required_features = .{ .avx, null, null, null },
99389 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99390 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
9812299391 .patterns = &.{
98123 .{ .src = .{ .to_mem, .to_gpr, .none } },
99392 .{ .src = .{ .to_mem, .none, .none } },
9812499393 },
98125 .dst_temps = .{ .{ .cc = .c }, .unused },
98126 .clobbers = .{ .eflags = true },
99394 .call_frame = .{ .alignment = .@"16" },
99395 .extra_temps = .{
99396 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99397 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99398 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },
99399 .{ .type = .u32, .kind = .{ .reg = .eax } },
99400 .unused,
99401 .unused,
99402 .unused,
99403 .unused,
99404 .unused,
99405 .unused,
99406 .unused,
99407 },
99408 .dst_temps = .{ .mem, .unused },
99409 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9812799410 .each = .{ .once = &.{
98128 .{ ._, ._, .bt, .src0d, .src1d, ._, ._ },
99411 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99412 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
99413 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
99414 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99415 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
99416 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99417 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9812999418 } },
9813099419 }, .{
98131 .dst_constraints = .{ .{ .int = .byte }, .any },
99420 .required_features = .{ .sse2, null, null, null },
99421 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99422 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
9813299423 .patterns = &.{
98133 .{ .src = .{ .to_mem, .simm32, .none } },
99424 .{ .src = .{ .to_mem, .none, .none } },
9813499425 },
98135 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
99426 .call_frame = .{ .alignment = .@"16" },
99427 .extra_temps = .{
99428 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99429 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99430 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
99431 .{ .type = .i32, .kind = .{ .reg = .eax } },
99432 .unused,
99433 .unused,
99434 .unused,
99435 .unused,
99436 .unused,
99437 .unused,
99438 .unused,
99439 },
99440 .dst_temps = .{ .mem, .unused },
99441 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9813699442 .each = .{ .once = &.{
98137 .{ ._, ._, .movzx, .dst0d, .mema(.src0b, .add_src0_elem_size_mul_src1), ._, ._ },
99443 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99444 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
99445 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
99446 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99447 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
99448 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99449 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9813899450 } },
9813999451 }, .{
98140 .dst_constraints = .{ .{ .int = .byte }, .any },
99452 .required_features = .{ .sse2, null, null, null },
99453 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99454 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
9814199455 .patterns = &.{
98142 .{ .src = .{ .to_mem, .to_gpr, .none } },
99456 .{ .src = .{ .to_mem, .none, .none } },
9814399457 },
98144 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
99458 .call_frame = .{ .alignment = .@"16" },
99459 .extra_temps = .{
99460 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99461 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99462 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },
99463 .{ .type = .u32, .kind = .{ .reg = .eax } },
99464 .unused,
99465 .unused,
99466 .unused,
99467 .unused,
99468 .unused,
99469 .unused,
99470 .unused,
99471 },
99472 .dst_temps = .{ .mem, .unused },
99473 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9814599474 .each = .{ .once = &.{
98146 .{ ._, ._, .movzx, .dst0d, .memi(.src0b, .src1), ._, ._ },
99475 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99476 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
99477 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
99478 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99479 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
99480 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99481 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9814799482 } },
9814899483 }, .{
98149 .dst_constraints = .{ .{ .int = .word }, .any },
99484 .required_features = .{ .sse, null, null, null },
99485 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99486 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
9815099487 .patterns = &.{
98151 .{ .src = .{ .to_mem, .simm32, .none } },
99488 .{ .src = .{ .to_mem, .none, .none } },
9815299489 },
98153 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
99490 .call_frame = .{ .alignment = .@"16" },
99491 .extra_temps = .{
99492 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99493 .{ .type = .i32, .kind = .{ .reg = .eax } },
99494 .{ .type = .f32, .kind = .mem },
99495 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99496 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
99497 .unused,
99498 .unused,
99499 .unused,
99500 .unused,
99501 .unused,
99502 .unused,
99503 },
99504 .dst_temps = .{ .mem, .unused },
99505 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9815499506 .each = .{ .once = &.{
98155 .{ ._, ._, .movzx, .dst0d, .mema(.src0w, .add_src0_elem_size_mul_src1), ._, ._ },
99507 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99508 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
99509 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
99510 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
99511 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99512 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
99513 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99514 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9815699515 } },
9815799516 }, .{
98158 .dst_constraints = .{ .{ .int = .word }, .any },
99517 .required_features = .{ .sse, null, null, null },
99518 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99519 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
9815999520 .patterns = &.{
98160 .{ .src = .{ .to_mem, .to_gpr, .none } },
99521 .{ .src = .{ .to_mem, .none, .none } },
9816199522 },
98162 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
99523 .call_frame = .{ .alignment = .@"16" },
99524 .extra_temps = .{
99525 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99526 .{ .type = .u32, .kind = .{ .reg = .eax } },
99527 .{ .type = .f32, .kind = .mem },
99528 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99529 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },
99530 .unused,
99531 .unused,
99532 .unused,
99533 .unused,
99534 .unused,
99535 .unused,
99536 },
99537 .dst_temps = .{ .mem, .unused },
99538 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9816399539 .each = .{ .once = &.{
98164 .{ ._, ._, .movzx, .dst0d, .memsi(.src0w, .@"2", .src1), ._, ._ },
99540 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99541 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
99542 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
99543 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
99544 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99545 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
99546 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99547 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9816599548 } },
9816699549 }, .{
98167 .dst_constraints = .{ .{ .int = .dword }, .any },
99550 .required_features = .{ .@"64bit", .f16c, null, null },
99551 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99552 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
9816899553 .patterns = &.{
98169 .{ .src = .{ .to_mem, .simm32, .none } },
99554 .{ .src = .{ .to_mem, .none, .none } },
9817099555 },
98171 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
99556 .extra_temps = .{
99557 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99558 .{ .type = .f32, .kind = .{ .rc = .sse } },
99559 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
99560 .unused,
99561 .unused,
99562 .unused,
99563 .unused,
99564 .unused,
99565 .unused,
99566 .unused,
99567 .unused,
99568 },
99569 .dst_temps = .{ .mem, .unused },
9817299570 .each = .{ .once = &.{
98173 .{ ._, ._, .mov, .dst0d, .mema(.src0d, .add_src0_elem_size_mul_src1), ._, ._ },
99571 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99572 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
99573 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
99574 .{ ._, .v_ps, .cvtph2, .tmp1x, .tmp1q, ._, ._ },
99575 .{ ._, .v_, .cvttss2si, .tmp2q, .tmp1x, ._, ._ },
99576 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
99577 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99578 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9817499579 } },
9817599580 }, .{
98176 .dst_constraints = .{ .{ .int = .dword }, .any },
99581 .required_features = .{ .avx, null, null, null },
99582 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99583 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
9817799584 .patterns = &.{
98178 .{ .src = .{ .to_mem, .to_gpr, .none } },
99585 .{ .src = .{ .to_mem, .none, .none } },
9817999586 },
98180 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
99587 .call_frame = .{ .alignment = .@"16" },
99588 .extra_temps = .{
99589 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99590 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99591 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
99592 .{ .type = .i64, .kind = .{ .reg = .rax } },
99593 .unused,
99594 .unused,
99595 .unused,
99596 .unused,
99597 .unused,
99598 .unused,
99599 .unused,
99600 },
99601 .dst_temps = .{ .mem, .unused },
99602 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9818199603 .each = .{ .once = &.{
98182 .{ ._, ._, .mov, .dst0d, .memsi(.src0d, .@"4", .src1), ._, ._ },
99604 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99605 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
99606 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
99607 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99608 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99609 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99610 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9818399611 } },
9818499612 }, .{
98185 .dst_constraints = .{ .{ .int = .qword }, .any },
99613 .required_features = .{ .avx, null, null, null },
99614 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99615 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
9818699616 .patterns = &.{
98187 .{ .src = .{ .to_mem, .simm32, .none } },
99617 .{ .src = .{ .to_mem, .none, .none } },
9818899618 },
98189 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
99619 .call_frame = .{ .alignment = .@"16" },
99620 .extra_temps = .{
99621 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99622 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99623 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },
99624 .{ .type = .u64, .kind = .{ .reg = .rax } },
99625 .unused,
99626 .unused,
99627 .unused,
99628 .unused,
99629 .unused,
99630 .unused,
99631 .unused,
99632 },
99633 .dst_temps = .{ .mem, .unused },
99634 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9819099635 .each = .{ .once = &.{
98191 .{ ._, ._, .mov, .dst0q, .mema(.src0q, .add_src0_elem_size_mul_src1), ._, ._ },
99636 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99637 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
99638 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
99639 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99640 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99641 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99642 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9819299643 } },
9819399644 }, .{
98194 .required_features = .{ .@"64bit", null, null, null },
98195 .dst_constraints = .{ .{ .int = .qword }, .any },
99645 .required_features = .{ .sse2, null, null, null },
99646 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99647 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
9819699648 .patterns = &.{
98197 .{ .src = .{ .to_mem, .to_gpr, .none } },
98198 },
98199 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
98200 .each = .{ .once = &.{
98201 .{ ._, ._, .mov, .dst0q, .memsi(.src0q, .@"8", .src1), ._, ._ },
98202 } },
98203 } }) catch |err| switch (err) {
98204 error.SelectFailed => {
98205 const elem_size = res_ty.abiSize(zcu);
98206 const base = try cg.tempAllocReg(.usize, abi.RegisterClass.gp);
98207 while (try ops[0].toBase(false, cg) or
98208 try ops[1].toRegClass(true, .general_purpose, cg))
98209 {}
98210 const base_reg = base.tracking(cg).short.register.to64();
98211 const rhs_reg = ops[1].tracking(cg).short.register.to64();
98212 if (!std.math.isPowerOfTwo(elem_size)) {
98213 try cg.spillEflagsIfOccupied();
98214 try cg.asmRegisterRegisterImmediate(
98215 .{ .i_, .mul },
98216 rhs_reg,
98217 rhs_reg,
98218 .u(elem_size),
98219 );
98220 try cg.asmRegisterMemory(
98221 .{ ._, .lea },
98222 base_reg,
98223 try ops[0].tracking(cg).short.mem(cg, .{ .index = rhs_reg }),
98224 );
98225 } else if (elem_size > 8) {
98226 try cg.spillEflagsIfOccupied();
98227 try cg.asmRegisterImmediate(
98228 .{ ._l, .sh },
98229 rhs_reg,
98230 .u(std.math.log2_int(u64, elem_size)),
98231 );
98232 try cg.asmRegisterMemory(
98233 .{ ._, .lea },
98234 base_reg,
98235 try ops[0].tracking(cg).short.mem(cg, .{ .index = rhs_reg }),
98236 );
98237 } else try cg.asmRegisterMemory(
98238 .{ ._, .lea },
98239 base_reg,
98240 try ops[0].tracking(cg).short.mem(cg, .{
98241 .index = rhs_reg,
98242 .scale = .fromFactor(@intCast(elem_size)),
98243 }),
98244 );
98245 // Hack around Sema insanity: lhs could be an arbitrarily large comptime-known array
98246 // which could easily get spilled by the upcoming `load`, which would infinite recurse
98247 // since spilling an array requires the same operation that triggered the spill.
98248 try ops[0].die(cg);
98249 ops[0] = base;
98250 res[0] = try ops[0].load(res_ty, .{}, cg);
99649 .{ .src = .{ .to_mem, .none, .none } },
9825199650 },
98252 else => |e| return e,
98253 };
98254 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
98255 },
98256 .slice_elem_val, .ptr_elem_val => |air_tag| if (use_old) switch (air_tag) {
98257 else => unreachable,
98258 .slice_elem_val => try cg.airSliceElemVal(inst),
98259 .ptr_elem_val => try cg.airPtrElemVal(inst),
98260 } else {
98261 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
98262 const res_ty = cg.typeOf(bin_op.lhs).elemType2(zcu);
98263 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
98264 try ops[0].toSlicePtr(cg);
98265 var res: [1]Temp = undefined;
98266 if (!hack_around_sema_opv_bugs or res_ty.hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{res_ty}, &ops, comptime &.{ .{
98267 .dst_constraints = .{ .{ .int = .byte }, .any },
98268 .patterns = &.{
98269 .{ .src = .{ .to_gpr, .simm32, .none } },
99651 .call_frame = .{ .alignment = .@"16" },
99652 .extra_temps = .{
99653 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99654 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99655 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
99656 .{ .type = .i64, .kind = .{ .reg = .rax } },
99657 .unused,
99658 .unused,
99659 .unused,
99660 .unused,
99661 .unused,
99662 .unused,
99663 .unused,
9827099664 },
98271 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
99665 .dst_temps = .{ .mem, .unused },
99666 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9827299667 .each = .{ .once = &.{
98273 .{ ._, ._, .movzx, .dst0d, .leaa(.src0b, .add_src0_elem_size_mul_src1), ._, ._ },
99668 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99669 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
99670 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
99671 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99672 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99673 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99674 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9827499675 } },
9827599676 }, .{
98276 .dst_constraints = .{ .{ .int = .byte }, .any },
99677 .required_features = .{ .sse2, null, null, null },
99678 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99679 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
9827799680 .patterns = &.{
98278 .{ .src = .{ .to_gpr, .to_gpr, .none } },
99681 .{ .src = .{ .to_mem, .none, .none } },
9827999682 },
98280 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
99683 .call_frame = .{ .alignment = .@"16" },
99684 .extra_temps = .{
99685 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99686 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99687 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },
99688 .{ .type = .u64, .kind = .{ .reg = .rax } },
99689 .unused,
99690 .unused,
99691 .unused,
99692 .unused,
99693 .unused,
99694 .unused,
99695 .unused,
99696 },
99697 .dst_temps = .{ .mem, .unused },
99698 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9828199699 .each = .{ .once = &.{
98282 .{ ._, ._, .movzx, .dst0d, .leai(.src0b, .src1), ._, ._ },
99700 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99701 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
99702 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
99703 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99704 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99705 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99706 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9828399707 } },
9828499708 }, .{
98285 .dst_constraints = .{ .{ .int = .word }, .any },
99709 .required_features = .{ .sse, null, null, null },
99710 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99711 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
9828699712 .patterns = &.{
98287 .{ .src = .{ .to_gpr, .simm32, .none } },
99713 .{ .src = .{ .to_mem, .none, .none } },
9828899714 },
98289 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
99715 .call_frame = .{ .alignment = .@"16" },
99716 .extra_temps = .{
99717 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99718 .{ .type = .i64, .kind = .{ .reg = .rax } },
99719 .{ .type = .f32, .kind = .mem },
99720 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99721 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
99722 .unused,
99723 .unused,
99724 .unused,
99725 .unused,
99726 .unused,
99727 .unused,
99728 },
99729 .dst_temps = .{ .mem, .unused },
99730 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9829099731 .each = .{ .once = &.{
98291 .{ ._, ._, .movzx, .dst0d, .leaa(.src0w, .add_src0_elem_size_mul_src1), ._, ._ },
99732 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99733 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
99734 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
99735 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
99736 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99737 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
99738 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99739 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9829299740 } },
9829399741 }, .{
98294 .dst_constraints = .{ .{ .int = .word }, .any },
99742 .required_features = .{ .sse, null, null, null },
99743 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99744 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
9829599745 .patterns = &.{
98296 .{ .src = .{ .to_gpr, .to_gpr, .none } },
99746 .{ .src = .{ .to_mem, .none, .none } },
9829799747 },
98298 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
99748 .call_frame = .{ .alignment = .@"16" },
99749 .extra_temps = .{
99750 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99751 .{ .type = .u64, .kind = .{ .reg = .rax } },
99752 .{ .type = .f32, .kind = .mem },
99753 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99754 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },
99755 .unused,
99756 .unused,
99757 .unused,
99758 .unused,
99759 .unused,
99760 .unused,
99761 },
99762 .dst_temps = .{ .mem, .unused },
99763 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9829999764 .each = .{ .once = &.{
98300 .{ ._, ._, .movzx, .dst0d, .leasi(.src0w, .@"2", .src1), ._, ._ },
99765 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99766 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
99767 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
99768 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
99769 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99770 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
99771 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99772 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9830199773 } },
9830299774 }, .{
98303 .dst_constraints = .{ .{ .int = .dword }, .any },
99775 .required_features = .{ .avx, null, null, null },
99776 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99777 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
9830499778 .patterns = &.{
98305 .{ .src = .{ .to_gpr, .simm32, .none } },
99779 .{ .src = .{ .to_mem, .none, .none } },
9830699780 },
98307 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
99781 .call_frame = .{ .alignment = .@"16" },
99782 .extra_temps = .{
99783 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99784 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99785 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } },
99786 .{ .type = .u64, .kind = .{ .reg = .rax } },
99787 .{ .type = .i64, .kind = .{ .reg = .rdx } },
99788 .unused,
99789 .unused,
99790 .unused,
99791 .unused,
99792 .unused,
99793 .unused,
99794 },
99795 .dst_temps = .{ .mem, .unused },
99796 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9830899797 .each = .{ .once = &.{
98309 .{ ._, ._, .mov, .dst0d, .leaa(.src0d, .add_src0_elem_size_mul_src1), ._, ._ },
99798 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99799 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
99800 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
99801 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99802 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99803 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
99804 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99805 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9831099806 } },
9831199807 }, .{
98312 .dst_constraints = .{ .{ .int = .dword }, .any },
99808 .required_features = .{ .avx, null, null, null },
99809 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99810 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
9831399811 .patterns = &.{
98314 .{ .src = .{ .to_gpr, .to_gpr, .none } },
99812 .{ .src = .{ .to_mem, .none, .none } },
9831599813 },
98316 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
99814 .call_frame = .{ .alignment = .@"16" },
99815 .extra_temps = .{
99816 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99817 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99818 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } },
99819 .{ .type = .u64, .kind = .{ .reg = .rax } },
99820 .{ .type = .u64, .kind = .{ .reg = .rdx } },
99821 .unused,
99822 .unused,
99823 .unused,
99824 .unused,
99825 .unused,
99826 .unused,
99827 },
99828 .dst_temps = .{ .mem, .unused },
99829 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9831799830 .each = .{ .once = &.{
98318 .{ ._, ._, .mov, .dst0d, .leasi(.src0d, .@"4", .src1), ._, ._ },
99831 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99832 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
99833 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
99834 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99835 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99836 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
99837 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99838 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9831999839 } },
9832099840 }, .{
98321 .dst_constraints = .{ .{ .int = .qword }, .any },
99841 .required_features = .{ .sse2, null, null, null },
99842 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99843 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
9832299844 .patterns = &.{
98323 .{ .src = .{ .to_gpr, .simm32, .none } },
99845 .{ .src = .{ .to_mem, .none, .none } },
9832499846 },
98325 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
99847 .call_frame = .{ .alignment = .@"16" },
99848 .extra_temps = .{
99849 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99850 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99851 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } },
99852 .{ .type = .u64, .kind = .{ .reg = .rax } },
99853 .{ .type = .i64, .kind = .{ .reg = .rdx } },
99854 .unused,
99855 .unused,
99856 .unused,
99857 .unused,
99858 .unused,
99859 .unused,
99860 },
99861 .dst_temps = .{ .mem, .unused },
99862 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9832699863 .each = .{ .once = &.{
98327 .{ ._, ._, .mov, .dst0q, .leaa(.src0q, .add_src0_elem_size_mul_src1), ._, ._ },
99864 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99865 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
99866 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
99867 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99868 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99869 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
99870 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99871 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9832899872 } },
9832999873 }, .{
98330 .required_features = .{ .@"64bit", null, null, null },
98331 .dst_constraints = .{ .{ .int = .qword }, .any },
99874 .required_features = .{ .sse2, null, null, null },
99875 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99876 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
9833299877 .patterns = &.{
98333 .{ .src = .{ .to_gpr, .to_gpr, .none } },
99878 .{ .src = .{ .to_mem, .none, .none } },
9833499879 },
98335 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
99880 .call_frame = .{ .alignment = .@"16" },
99881 .extra_temps = .{
99882 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99883 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99884 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } },
99885 .{ .type = .u64, .kind = .{ .reg = .rax } },
99886 .{ .type = .u64, .kind = .{ .reg = .rdx } },
99887 .unused,
99888 .unused,
99889 .unused,
99890 .unused,
99891 .unused,
99892 .unused,
99893 },
99894 .dst_temps = .{ .mem, .unused },
99895 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9833699896 .each = .{ .once = &.{
98337 .{ ._, ._, .mov, .dst0q, .leasi(.src0q, .@"8", .src1), ._, ._ },
99897 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99898 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
99899 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
99900 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99901 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99902 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
99903 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99904 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9833899905 } },
98339 } }) catch |err| switch (err) {
98340 error.SelectFailed => {
98341 const elem_size = res_ty.abiSize(zcu);
98342 while (true) for (&ops) |*op| {
98343 if (try op.toRegClass(true, .general_purpose, cg)) break;
98344 } else break;
98345 const lhs_reg = ops[0].tracking(cg).short.register.to64();
98346 const rhs_reg = ops[1].tracking(cg).short.register.to64();
98347 if (!std.math.isPowerOfTwo(elem_size)) {
98348 try cg.spillEflagsIfOccupied();
98349 try cg.asmRegisterRegisterImmediate(
98350 .{ .i_, .mul },
98351 rhs_reg,
98352 rhs_reg,
98353 .u(elem_size),
98354 );
98355 try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
98356 .base = .{ .reg = lhs_reg },
98357 .mod = .{ .rm = .{ .index = rhs_reg } },
98358 });
98359 } else if (elem_size > 8) {
98360 try cg.spillEflagsIfOccupied();
98361 try cg.asmRegisterImmediate(
98362 .{ ._l, .sh },
98363 rhs_reg,
98364 .u(std.math.log2_int(u64, elem_size)),
98365 );
98366 try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
98367 .base = .{ .reg = lhs_reg },
98368 .mod = .{ .rm = .{ .index = rhs_reg } },
98369 });
98370 } else try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
98371 .base = .{ .reg = lhs_reg },
98372 .mod = .{ .rm = .{
98373 .index = rhs_reg,
98374 .scale = .fromFactor(@intCast(elem_size)),
98375 } },
98376 });
98377 res[0] = try ops[0].load(res_ty, .{}, cg);
98378 },
98379 else => |e| return e,
98380 } else res[0] = try cg.tempInit(res_ty, .none);
98381 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
98382 },
98383 .slice_elem_ptr, .ptr_elem_ptr => |air_tag| if (use_old) switch (air_tag) {
98384 else => unreachable,
98385 .slice_elem_ptr => try cg.airSliceElemPtr(inst),
98386 .ptr_elem_ptr => try cg.airPtrElemPtr(inst),
98387 } else {
98388 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
98389 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
98390 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
98391 try ops[0].toSlicePtr(cg);
98392 const dst_ty = ty_pl.ty.toType();
98393 if (dst_ty.ptrInfo(zcu).flags.vector_index == .none) zero_offset: {
98394 const elem_size = dst_ty.childType(zcu).abiSize(zcu);
98395 if (hack_around_sema_opv_bugs and elem_size == 0) break :zero_offset;
98396 while (true) for (&ops) |*op| {
98397 if (try op.toRegClass(true, .general_purpose, cg)) break;
98398 } else break;
98399 const lhs_reg = ops[0].tracking(cg).short.register.to64();
98400 const rhs_reg = ops[1].tracking(cg).short.register.to64();
98401 if (!std.math.isPowerOfTwo(elem_size)) {
98402 try cg.spillEflagsIfOccupied();
98403 try cg.asmRegisterRegisterImmediate(
98404 .{ .i_, .mul },
98405 rhs_reg,
98406 rhs_reg,
98407 .u(elem_size),
98408 );
98409 try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
98410 .base = .{ .reg = lhs_reg },
98411 .mod = .{ .rm = .{ .index = rhs_reg } },
98412 });
98413 } else if (elem_size > 8) {
98414 try cg.spillEflagsIfOccupied();
98415 try cg.asmRegisterImmediate(
98416 .{ ._l, .sh },
98417 rhs_reg,
98418 .u(std.math.log2_int(u64, elem_size)),
98419 );
98420 try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
98421 .base = .{ .reg = lhs_reg },
98422 .mod = .{ .rm = .{ .index = rhs_reg } },
98423 });
98424 } else try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
98425 .base = .{ .reg = lhs_reg },
98426 .mod = .{ .rm = .{
98427 .index = rhs_reg,
98428 .scale = .fromFactor(@intCast(elem_size)),
98429 } },
98430 });
98431 }
98432 try ops[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
98433 },
98434 .array_to_slice => if (use_old) try cg.airArrayToSlice(inst) else {
98435 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98436 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98437 var len = try cg.tempInit(.usize, .{
98438 .immediate = cg.typeOf(ty_op.operand).childType(zcu).arrayLen(zcu),
98439 });
98440 try ops[0].toPair(&len, cg);
98441 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98442 },
98443 .int_from_float, .int_from_float_optimized => |air_tag| if (use_old) try cg.airIntFromFloat(inst) else {
98444 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98445 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98446 var res: [1]Temp = undefined;
98447 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
98448 .required_features = .{ .f16c, null, null, null },
98449 .src_constraints = .{ .{ .float = .word }, .any, .any },
98450 .dst_constraints = .{ .{ .int = .dword }, .any },
99906 }, .{
99907 .required_features = .{ .sse, null, null, null },
99908 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99909 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
9845199910 .patterns = &.{
98452 .{ .src = .{ .to_sse, .none, .none } },
99911 .{ .src = .{ .to_mem, .none, .none } },
9845399912 },
99913 .call_frame = .{ .alignment = .@"16" },
9845499914 .extra_temps = .{
98455 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
99915 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99916 .{ .type = .u64, .kind = .{ .reg = .rax } },
99917 .{ .type = .f32, .kind = .mem },
99918 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99919 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } },
99920 .{ .type = .i64, .kind = .{ .reg = .rdx } },
9845699921 .unused,
9845799922 .unused,
9845899923 .unused,
9845999924 .unused,
9846099925 .unused,
99926 },
99927 .dst_temps = .{ .mem, .unused },
99928 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99929 .each = .{ .once = &.{
99930 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99931 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
99932 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
99933 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
99934 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99935 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
99936 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
99937 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99938 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99939 } },
99940 }, .{
99941 .required_features = .{ .sse, null, null, null },
99942 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99943 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
99944 .patterns = &.{
99945 .{ .src = .{ .to_mem, .none, .none } },
99946 },
99947 .call_frame = .{ .alignment = .@"16" },
99948 .extra_temps = .{
99949 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99950 .{ .type = .u64, .kind = .{ .reg = .rax } },
99951 .{ .type = .f32, .kind = .mem },
99952 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99953 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } },
99954 .{ .type = .u64, .kind = .{ .reg = .rdx } },
9846199955 .unused,
9846299956 .unused,
9846399957 .unused,
9846499958 .unused,
9846599959 .unused,
9846699960 },
98467 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
99961 .dst_temps = .{ .mem, .unused },
99962 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9846899963 .each = .{ .once = &.{
98469 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
98470 .{ ._, .v_, .cvttss2si, .dst0d, .tmp0d, ._, ._ },
99964 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99965 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
99966 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
99967 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
99968 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99969 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
99970 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
99971 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99972 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9847199973 } },
9847299974 }, .{
98473 .required_features = .{ .@"64bit", .f16c, null, null },
98474 .src_constraints = .{ .{ .float = .word }, .any, .any },
98475 .dst_constraints = .{ .{ .signed_int = .qword }, .any },
99975 .required_features = .{ .@"64bit", .avx, null, null },
99976 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99977 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
9847699978 .patterns = &.{
98477 .{ .src = .{ .to_sse, .none, .none } },
99979 .{ .src = .{ .to_mem, .none, .none } },
9847899980 },
99981 .call_frame = .{ .alignment = .@"16" },
9847999982 .extra_temps = .{
98480 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
99983 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99984 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
99985 .{ .type = .usize, .kind = .{ .reg = .rdi } },
99986 .{ .type = .usize, .kind = .{ .reg = .rsi } },
99987 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99988 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfei" } } },
9848199989 .unused,
9848299990 .unused,
9848399991 .unused,
9848499992 .unused,
9848599993 .unused,
99994 },
99995 .dst_temps = .{ .mem, .unused },
99996 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99997 .each = .{ .once = &.{
99998 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99999 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
100000 .{ .@"0:", .v_ps, .xor, .tmp4x, .tmp4x, .tmp4x, ._ },
100001 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100002 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
100003 .{ ._, .vp_w, .insr, .tmp4x, .tmp4x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
100004 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
100005 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
100006 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100007 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100008 } },
100009 }, .{
100010 .required_features = .{ .@"64bit", .avx, null, null },
100011 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100012 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
100013 .patterns = &.{
100014 .{ .src = .{ .to_mem, .none, .none } },
100015 },
100016 .call_frame = .{ .alignment = .@"16" },
100017 .extra_temps = .{
100018 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100019 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100020 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100021 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100022 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100023 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfei" } } },
98486100024 .unused,
98487100025 .unused,
98488100026 .unused,
98489100027 .unused,
98490100028 .unused,
98491100029 },
98492 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
100030 .dst_temps = .{ .mem, .unused },
100031 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98493100032 .each = .{ .once = &.{
98494 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
98495 .{ ._, .v_, .cvttss2si, .dst0q, .tmp0d, ._, ._ },
100033 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100034 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
100035 .{ .@"0:", .v_ps, .xor, .tmp4x, .tmp4x, .tmp4x, ._ },
100036 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100037 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
100038 .{ ._, .vp_w, .insr, .tmp4x, .tmp4x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
100039 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
100040 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
100041 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100042 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98496100043 } },
98497100044 }, .{
98498 .required_features = .{ .@"64bit", .f16c, null, null },
98499 .src_constraints = .{ .{ .float = .word }, .any, .any },
98500 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },
100045 .required_features = .{ .@"64bit", .sse2, null, null },
100046 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100047 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
98501100048 .patterns = &.{
98502 .{ .src = .{ .to_sse, .none, .none } },
100049 .{ .src = .{ .to_mem, .none, .none } },
98503100050 },
100051 .call_frame = .{ .alignment = .@"16" },
98504100052 .extra_temps = .{
98505 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
100053 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100054 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100055 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100056 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100057 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100058 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfei" } } },
98506100059 .unused,
98507100060 .unused,
98508100061 .unused,
98509100062 .unused,
98510100063 .unused,
100064 },
100065 .dst_temps = .{ .mem, .unused },
100066 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100067 .each = .{ .once = &.{
100068 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100069 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
100070 .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ },
100071 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100072 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
100073 .{ ._, .p_w, .insr, .tmp4x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
100074 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
100075 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
100076 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100077 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100078 } },
100079 }, .{
100080 .required_features = .{ .@"64bit", .sse2, null, null },
100081 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100082 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
100083 .patterns = &.{
100084 .{ .src = .{ .to_mem, .none, .none } },
100085 },
100086 .call_frame = .{ .alignment = .@"16" },
100087 .extra_temps = .{
100088 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100089 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100090 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100091 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100092 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100093 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfei" } } },
98511100094 .unused,
98512100095 .unused,
98513100096 .unused,
98514100097 .unused,
98515100098 .unused,
98516100099 },
98517 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
100100 .dst_temps = .{ .mem, .unused },
100101 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98518100102 .each = .{ .once = &.{
98519 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
98520 .{ ._, .v_, .cvttss2si, .dst0d, .tmp0d, ._, ._ },
100103 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100104 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
100105 .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ },
100106 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100107 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
100108 .{ ._, .p_w, .insr, .tmp4x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
100109 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
100110 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
100111 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100112 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98521100113 } },
98522100114 }, .{
98523 .required_features = .{ .@"64bit", .f16c, null, null },
98524 .src_constraints = .{ .{ .float = .word }, .any, .any },
98525 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
100115 .required_features = .{ .@"64bit", .sse, null, null },
100116 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100117 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
98526100118 .patterns = &.{
98527 .{ .src = .{ .to_sse, .none, .none } },
100119 .{ .src = .{ .to_mem, .none, .none } },
98528100120 },
100121 .call_frame = .{ .alignment = .@"16" },
98529100122 .extra_temps = .{
98530 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
98531 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
98532 .unused,
100123 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100124 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100125 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100126 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100127 .{ .type = .f32, .kind = .mem },
100128 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100129 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfei" } } },
98533100130 .unused,
98534100131 .unused,
98535100132 .unused,
98536100133 .unused,
100134 },
100135 .dst_temps = .{ .mem, .unused },
100136 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100137 .each = .{ .once = &.{
100138 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100139 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
100140 .{ .@"0:", ._, .movzx, .tmp3d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
100141 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100142 .{ ._, ._, .mov, .tmp4d, .tmp3d, ._, ._ },
100143 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
100144 .{ ._, ._ss, .mov, .tmp5x, .tmp4d, ._, ._ },
100145 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
100146 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
100147 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100148 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100149 } },
100150 }, .{
100151 .required_features = .{ .@"64bit", .sse, null, null },
100152 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100153 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
100154 .patterns = &.{
100155 .{ .src = .{ .to_mem, .none, .none } },
100156 },
100157 .call_frame = .{ .alignment = .@"16" },
100158 .extra_temps = .{
100159 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100160 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100161 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100162 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100163 .{ .type = .f32, .kind = .mem },
100164 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100165 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfei" } } },
98537100166 .unused,
98538100167 .unused,
98539100168 .unused,
98540100169 .unused,
98541100170 },
98542100171 .dst_temps = .{ .mem, .unused },
98543 .clobbers = .{ .eflags = true },
100172 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98544100173 .each = .{ .once = &.{
98545 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
98546 .{ ._, .v_, .cvttss2si, .tmp1q, .tmp0d, ._, ._ },
98547 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
98548 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
98549 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp1q, ._, ._ },
100174 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100175 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
100176 .{ .@"0:", ._, .movzx, .tmp3d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
100177 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100178 .{ ._, ._, .mov, .tmp4d, .tmp3d, ._, ._ },
100179 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
100180 .{ ._, ._ss, .mov, .tmp5x, .tmp4d, ._, ._ },
100181 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
100182 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
100183 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100184 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98550100185 } },
98551100186 }, .{
98552 .required_features = .{ .@"64bit", .f16c, null, null },
98553 .src_constraints = .{ .{ .float = .word }, .any, .any },
98554 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
100187 .required_features = .{ .avx, null, null, null },
100188 .src_constraints = .{ .{ .float = .dword }, .any, .any },
100189 .dst_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any },
98555100190 .patterns = &.{
100191 .{ .src = .{ .mem, .none, .none } },
98556100192 .{ .src = .{ .to_sse, .none, .none } },
98557100193 },
98558 .extra_temps = .{
98559 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
98560 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
98561 .unused,
98562 .unused,
98563 .unused,
98564 .unused,
98565 .unused,
98566 .unused,
98567 .unused,
98568 .unused,
98569 .unused,
100194 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
100195 .each = .{ .once = &.{
100196 .{ ._, .v_, .cvttss2si, .dst0d, .src0d, ._, ._ },
100197 } },
100198 }, .{
100199 .required_features = .{ .sse, null, null, null },
100200 .src_constraints = .{ .{ .float = .dword }, .any, .any },
100201 .dst_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any },
100202 .patterns = &.{
100203 .{ .src = .{ .mem, .none, .none } },
100204 .{ .src = .{ .to_sse, .none, .none } },
98570100205 },
98571 .dst_temps = .{ .mem, .unused },
100206 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
98572100207 .each = .{ .once = &.{
98573 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
98574 .{ ._, .v_, .cvttss2si, .tmp1q, .tmp0d, ._, ._ },
98575 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
98576 .{ ._, ._, .mov, .memd(.dst0q, 8), .si(0), ._, ._ },
100208 .{ ._, ._, .cvttss2si, .dst0d, .src0d, ._, ._ },
98577100209 } },
98578100210 }, .{
98579 .required_features = .{ .@"64bit", .f16c, null, null },
98580 .src_constraints = .{ .{ .float = .word }, .any, .any },
98581 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
100211 .required_features = .{ .@"64bit", .avx, null, null },
100212 .src_constraints = .{ .{ .float = .dword }, .any, .any },
100213 .dst_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any },
98582100214 .patterns = &.{
100215 .{ .src = .{ .mem, .none, .none } },
98583100216 .{ .src = .{ .to_sse, .none, .none } },
98584100217 },
98585 .extra_temps = .{
98586 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
98587 .{ .type = .i64, .kind = .{ .reg = .rax } },
98588 .{ .type = .usize, .kind = .{ .reg = .rdi } },
98589 .{ .type = .u32, .kind = .{ .reg = .ecx } },
98590 .unused,
98591 .unused,
98592 .unused,
98593 .unused,
98594 .unused,
98595 .unused,
98596 .unused,
100218 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
100219 .each = .{ .once = &.{
100220 .{ ._, .v_, .cvttss2si, .dst0q, .src0d, ._, ._ },
100221 } },
100222 }, .{
100223 .required_features = .{ .@"64bit", .sse, null, null },
100224 .src_constraints = .{ .{ .float = .dword }, .any, .any },
100225 .dst_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any },
100226 .patterns = &.{
100227 .{ .src = .{ .mem, .none, .none } },
100228 .{ .src = .{ .to_sse, .none, .none } },
98597100229 },
98598 .dst_temps = .{ .mem, .unused },
98599 .clobbers = .{ .eflags = true },
100230 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
98600100231 .each = .{ .once = &.{
98601 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
98602 .{ ._, .v_, .cvttss2si, .tmp1q, .tmp0d, ._, ._ },
98603 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
98604 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
98605 .{ ._, ._, .lea, .tmp2p, .memd(.dst0, 8), ._, ._ },
98606 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
98607 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
100232 .{ ._, ._, .cvttss2si, .dst0q, .src0d, ._, ._ },
98608100233 } },
98609100234 }, .{
98610 .required_features = .{ .@"64bit", .f16c, null, null },
98611 .src_constraints = .{ .{ .float = .word }, .any, .any },
98612 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
100235 .required_features = .{ .@"64bit", .avx, null, null },
100236 .src_constraints = .{ .{ .float = .dword }, .any, .any },
100237 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },
98613100238 .patterns = &.{
98614100239 .{ .src = .{ .to_sse, .none, .none } },
98615100240 },
98616100241 .extra_temps = .{
98617100242 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
98618 .{ .type = .i64, .kind = .{ .reg = .rax } },
98619 .{ .type = .usize, .kind = .{ .reg = .rdi } },
98620 .{ .type = .u32, .kind = .{ .reg = .ecx } },
100243 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
100244 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
100245 .{ .type = .f32, .kind = .{ .@"0x1p63_mem" = .{} } },
98621100246 .unused,
98622100247 .unused,
98623100248 .unused,
......@@ -98626,29 +100251,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98626100251 .unused,
98627100252 .unused,
98628100253 },
98629 .dst_temps = .{ .mem, .unused },
100254 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
98630100255 .clobbers = .{ .eflags = true },
98631100256 .each = .{ .once = &.{
98632 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
98633 .{ ._, .v_, .cvttss2si, .tmp1q, .tmp0d, ._, ._ },
98634 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
98635 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
98636 .{ ._, ._, .lea, .tmp2p, .memd(.dst0, 8), ._, ._ },
98637 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
98638 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
100257 .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ },
100258 .{ ._, .v_, .cvttss2si, .tmp2q, .src0d, ._, ._ },
100259 .{ ._, .v_ss, .sub, .tmp0x, .src0x, .lea(.tmp1d), ._ },
100260 .{ ._, .v_, .cvttss2si, .dst0q, .tmp0d, ._, ._ },
100261 .{ ._, ._, .mov, .tmp1q, .tmp2q, ._, ._ },
100262 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },
100263 .{ ._, ._, .@"and", .dst0q, .tmp2q, ._, ._ },
100264 .{ ._, ._, .@"or", .dst0q, .tmp1q, ._, ._ },
98639100265 } },
98640100266 }, .{
98641 .required_features = .{ .sse, null, null, null },
98642 .src_constraints = .{ .{ .float = .word }, .any, .any },
98643 .dst_constraints = .{ .{ .signed_int = .dword }, .any },
100267 .required_features = .{ .@"64bit", .sse, null, null },
100268 .src_constraints = .{ .{ .float = .dword }, .any, .any },
100269 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },
98644100270 .patterns = &.{
98645 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
100271 .{ .src = .{ .to_mut_sse, .none, .none } },
98646100272 },
98647 .call_frame = .{ .alignment = .@"16" },
98648100273 .extra_temps = .{
98649 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
98650 .unused,
98651 .unused,
100274 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
100275 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
100276 .{ .type = .f32, .kind = .{ .@"0x1p63_mem" = .{} } },
98652100277 .unused,
98653100278 .unused,
98654100279 .unused,
......@@ -98658,21 +100283,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98658100283 .unused,
98659100284 .unused,
98660100285 },
98661 .dst_temps = .{ .{ .reg = .eax }, .unused },
98662 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100286 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
100287 .clobbers = .{ .eflags = true },
98663100288 .each = .{ .once = &.{
98664 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
100289 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
100290 .{ ._, ._, .cvttss2si, .tmp1q, .src0d, ._, ._ },
100291 .{ ._, ._ss, .sub, .src0x, .lea(.tmp0d), ._, ._ },
100292 .{ ._, ._, .cvttss2si, .dst0q, .src0d, ._, ._ },
100293 .{ ._, ._, .mov, .tmp0q, .tmp1q, ._, ._ },
100294 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
100295 .{ ._, ._, .@"and", .dst0q, .tmp1q, ._, ._ },
100296 .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ },
98665100297 } },
98666100298 }, .{
98667 .required_features = .{ .sse, null, null, null },
98668 .src_constraints = .{ .{ .float = .word }, .any, .any },
98669 .dst_constraints = .{ .{ .unsigned_int = .dword }, .any },
100299 .required_features = .{ .@"64bit", .sse, null, null },
100300 .src_constraints = .{ .{ .float = .dword }, .any, .any },
100301 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
98670100302 .patterns = &.{
98671100303 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
98672100304 },
98673100305 .call_frame = .{ .alignment = .@"16" },
98674100306 .extra_temps = .{
98675 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },
100307 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } },
98676100308 .unused,
98677100309 .unused,
98678100310 .unused,
......@@ -98684,21 +100316,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98684100316 .unused,
98685100317 .unused,
98686100318 },
98687 .dst_temps = .{ .{ .reg = .eax }, .unused },
100319 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
98688100320 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98689100321 .each = .{ .once = &.{
98690100322 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
98691100323 } },
98692100324 }, .{
98693100325 .required_features = .{ .@"64bit", .sse, null, null },
98694 .src_constraints = .{ .{ .float = .word }, .any, .any },
98695 .dst_constraints = .{ .{ .signed_int = .qword }, .any },
100326 .src_constraints = .{ .{ .float = .dword }, .any, .any },
100327 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
98696100328 .patterns = &.{
98697100329 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
98698100330 },
98699100331 .call_frame = .{ .alignment = .@"16" },
98700100332 .extra_temps = .{
98701 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
100333 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
98702100334 .unused,
98703100335 .unused,
98704100336 .unused,
......@@ -98710,100 +100342,146 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98710100342 .unused,
98711100343 .unused,
98712100344 },
98713 .dst_temps = .{ .{ .reg = .rax }, .unused },
100345 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
98714100346 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98715100347 .each = .{ .once = &.{
98716100348 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
98717100349 } },
98718100350 }, .{
98719 .required_features = .{ .@"64bit", .sse, null, null },
98720 .src_constraints = .{ .{ .float = .word }, .any, .any },
98721 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },
100351 .required_features = .{ .@"64bit", .avx, null, null },
100352 .src_constraints = .{ .{ .float = .dword }, .any, .any },
100353 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
98722100354 .patterns = &.{
98723100355 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
98724100356 },
98725100357 .call_frame = .{ .alignment = .@"16" },
98726100358 .extra_temps = .{
98727 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },
98728 .unused,
98729 .unused,
98730 .unused,
98731 .unused,
98732 .unused,
98733 .unused,
100359 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
100360 .{ .type = .i64, .kind = .{ .reg = .rax } },
100361 .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },
100362 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
100363 .{ .type = .i64, .kind = .{ .reg = .rdx } },
100364 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100365 .{ .type = .u32, .kind = .{ .reg = .ecx } },
98734100366 .unused,
98735100367 .unused,
98736100368 .unused,
98737100369 .unused,
98738100370 },
98739 .dst_temps = .{ .{ .reg = .rax }, .unused },
100371 .dst_temps = .{ .mem, .unused },
98740100372 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98741100373 .each = .{ .once = &.{
98742 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
100374 .{ ._, .v_d, .mov, .tmp0d, .src0x, ._, ._ },
100375 .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ },
100376 .{ ._, ._d, .movsx, .tmp0q, .tmp0d, ._, ._ },
100377 .{ ._, .v_ps, .@"and", .src0x, .src0x, .lea(.tmp1x), ._ },
100378 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
100379 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
100380 .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
100381 .{ ._, ._, .xor, .tmp4q, .tmp0q, ._, ._ },
100382 .{ ._, ._, .sub, .tmp1q, .tmp0q, ._, ._ },
100383 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
100384 .{ ._, ._, .sbb, .tmp4q, .tmp0q, ._, ._ },
100385 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp4q, ._, ._ },
100386 .{ ._, ._, .sbb, .tmp1q, .tmp1q, ._, ._ },
100387 .{ ._, ._, .lea, .tmp5p, .memd(.dst0, 16), ._, ._ },
100388 .{ ._, ._, .mov, .tmp6d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
100389 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
98743100390 } },
98744100391 }, .{
98745 .required_features = .{ .@"64bit", .sse, null, null },
98746 .src_constraints = .{ .{ .float = .word }, .any, .any },
98747 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
100392 .required_features = .{ .@"64bit", .sse2, null, null },
100393 .src_constraints = .{ .{ .float = .dword }, .any, .any },
100394 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
98748100395 .patterns = &.{
98749100396 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
98750100397 },
98751100398 .call_frame = .{ .alignment = .@"16" },
98752100399 .extra_temps = .{
98753 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } },
98754 .unused,
98755 .unused,
98756 .unused,
98757 .unused,
98758 .unused,
98759 .unused,
100400 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
100401 .{ .type = .i64, .kind = .{ .reg = .rax } },
100402 .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },
100403 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
100404 .{ .type = .i64, .kind = .{ .reg = .rdx } },
100405 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100406 .{ .type = .u32, .kind = .{ .reg = .ecx } },
98760100407 .unused,
98761100408 .unused,
98762100409 .unused,
98763100410 .unused,
98764100411 },
98765 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
100412 .dst_temps = .{ .mem, .unused },
98766100413 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98767100414 .each = .{ .once = &.{
98768 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
100415 .{ ._, ._d, .mov, .tmp0d, .src0x, ._, ._ },
100416 .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ },
100417 .{ ._, ._d, .movsx, .tmp0q, .tmp0d, ._, ._ },
100418 .{ ._, ._ps, .@"and", .src0x, .lea(.tmp1x), ._, ._ },
100419 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
100420 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
100421 .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
100422 .{ ._, ._, .xor, .tmp4q, .tmp0q, ._, ._ },
100423 .{ ._, ._, .sub, .tmp1q, .tmp0q, ._, ._ },
100424 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
100425 .{ ._, ._, .sbb, .tmp4q, .tmp0q, ._, ._ },
100426 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp4q, ._, ._ },
100427 .{ ._, ._, .sbb, .tmp1q, .tmp1q, ._, ._ },
100428 .{ ._, ._, .lea, .tmp5p, .memd(.dst0, 16), ._, ._ },
100429 .{ ._, ._, .mov, .tmp6d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
100430 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
98769100431 } },
98770100432 }, .{
98771100433 .required_features = .{ .@"64bit", .sse, null, null },
98772 .src_constraints = .{ .{ .float = .word }, .any, .any },
98773 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
100434 .src_constraints = .{ .{ .float = .dword }, .any, .any },
100435 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
98774100436 .patterns = &.{
98775 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
100437 .{ .src = .{ .to_mem, .none, .none } },
98776100438 },
98777100439 .call_frame = .{ .alignment = .@"16" },
98778100440 .extra_temps = .{
98779 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } },
98780 .unused,
98781 .unused,
98782 .unused,
98783 .unused,
98784 .unused,
98785 .unused,
100441 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
100442 .{ .type = .i64, .kind = .{ .reg = .rax } },
100443 .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },
100444 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
100445 .{ .type = .u32, .kind = .{ .reg = .ecx } },
100446 .{ .type = .i64, .kind = .{ .reg = .rdx } },
100447 .{ .type = .usize, .kind = .{ .reg = .rdi } },
98786100448 .unused,
98787100449 .unused,
98788100450 .unused,
98789100451 .unused,
98790100452 },
98791 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
100453 .dst_temps = .{ .mem, .unused },
98792100454 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98793100455 .each = .{ .once = &.{
98794 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
100456 .{ ._, ._ss, .mov, .tmp0x, .src0d, ._, ._ },
100457 .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ },
100458 .{ ._, ._ps, .@"and", .tmp0x, .lea(.tmp1x), ._, ._ },
100459 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
100460 .{ ._, ._d, .movsx, .tmp4q, .src0d, ._, ._ },
100461 .{ ._, ._r, .sa, .tmp4q, .ui(63), ._, ._ },
100462 .{ ._, ._, .xor, .tmp1q, .tmp4q, ._, ._ },
100463 .{ ._, ._, .xor, .tmp5q, .tmp4q, ._, ._ },
100464 .{ ._, ._, .sub, .tmp1q, .tmp4q, ._, ._ },
100465 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
100466 .{ ._, ._, .sbb, .tmp5q, .tmp4q, ._, ._ },
100467 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp5q, ._, ._ },
100468 .{ ._, ._, .sbb, .tmp1q, .tmp1q, ._, ._ },
100469 .{ ._, ._, .lea, .tmp6p, .memd(.dst0, 16), ._, ._ },
100470 .{ ._, ._, .mov, .tmp4d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
100471 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
98795100472 } },
98796100473 }, .{
98797100474 .required_features = .{ .@"64bit", .sse, null, null },
98798 .src_constraints = .{ .{ .float = .word }, .any, .any },
98799 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
100475 .src_constraints = .{ .{ .float = .dword }, .any, .any },
100476 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
98800100477 .patterns = &.{
98801100478 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
98802100479 },
98803100480 .call_frame = .{ .alignment = .@"16" },
98804100481 .extra_temps = .{
98805 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
100482 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
98806100483 .{ .type = .i64, .kind = .{ .reg = .rax } },
100484 .{ .type = .i64, .kind = .{ .reg = .rdx } },
98807100485 .{ .type = .usize, .kind = .{ .reg = .rdi } },
98808100486 .{ .type = .u32, .kind = .{ .reg = .ecx } },
98809100487 .unused,
......@@ -98812,31 +100490,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98812100490 .unused,
98813100491 .unused,
98814100492 .unused,
98815 .unused,
98816100493 },
98817100494 .dst_temps = .{ .mem, .unused },
98818100495 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98819100496 .each = .{ .once = &.{
98820100497 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
98821100498 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
98822 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
98823 .{ ._, ._, .lea, .tmp2p, .memd(.dst0, 8), ._, ._ },
98824 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
100499 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp2q, ._, ._ },
100500 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
100501 .{ ._, ._, .lea, .tmp3p, .memd(.dst0, 16), ._, ._ },
100502 .{ ._, ._, .mov, .tmp4d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
98825100503 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
98826100504 } },
98827100505 }, .{
98828 .required_features = .{ .@"64bit", .sse, null, null },
98829 .src_constraints = .{ .{ .float = .word }, .any, .any },
98830 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
100506 .required_features = .{ .avx, null, null, null },
100507 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
100508 .dst_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },
98831100509 .patterns = &.{
98832 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
100510 .{ .src = .{ .mem, .none, .none } },
100511 .{ .src = .{ .to_sse, .none, .none } },
98833100512 },
98834 .call_frame = .{ .alignment = .@"16" },
98835100513 .extra_temps = .{
98836 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },
98837 .{ .type = .i64, .kind = .{ .reg = .rax } },
98838 .{ .type = .usize, .kind = .{ .reg = .rdi } },
98839 .{ .type = .u32, .kind = .{ .reg = .ecx } },
100514 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100515 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
100516 .unused,
100517 .unused,
98840100518 .unused,
98841100519 .unused,
98842100520 .unused,
......@@ -98845,19 +100523,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98845100523 .unused,
98846100524 .unused,
98847100525 },
98848 .dst_temps = .{ .mem, .unused },
98849 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100526 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
98850100527 .each = .{ .once = &.{
98851 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
98852 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
98853 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
98854 .{ ._, ._, .lea, .tmp2p, .memd(.dst0, 8), ._, ._ },
98855 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
98856 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
100528 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
100529 .{ ._, .v_, .cvttps2dq, .dst0x, .src0x, ._, ._ },
100530 .{ ._, .vp_b, .shuf, .dst0x, .dst0x, .lea(.tmp0x), ._ },
98857100531 } },
98858100532 }, .{
98859 .required_features = .{ .f16c, null, null, null },
98860 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
100533 .required_features = .{ .ssse3, null, null, null },
100534 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
98861100535 .dst_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },
98862100536 .patterns = &.{
98863100537 .{ .src = .{ .mem, .none, .none } },
......@@ -98879,13 +100553,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98879100553 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
98880100554 .each = .{ .once = &.{
98881100555 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
98882 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
98883 .{ ._, .v_, .cvttps2dq, .dst0x, .dst0x, ._, ._ },
98884 .{ ._, .vp_b, .shuf, .dst0x, .dst0x, .lea(.tmp0x), ._ },
100556 .{ ._, ._, .cvttps2dq, .dst0x, .src0x, ._, ._ },
100557 .{ ._, .p_b, .shuf, .dst0x, .lea(.tmp0x), ._, ._ },
98885100558 } },
98886100559 }, .{
98887 .required_features = .{ .f16c, null, null, null },
98888 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
100560 .required_features = .{ .avx, null, null, null },
100561 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
98889100562 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },
98890100563 .patterns = &.{
98891100564 .{ .src = .{ .to_mem, .none, .none } },
......@@ -98908,26 +100581,55 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98908100581 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
98909100582 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
98910100583 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
98911 .{ .@"0:", .v_ps, .cvtph2, .tmp3x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
98912 .{ ._, .v_, .cvttps2dq, .tmp3x, .tmp3x, ._, ._ },
100584 .{ .@"0:", .v_, .cvttps2dq, .tmp3x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
98913100585 .{ ._, .vp_b, .shuf, .tmp3x, .tmp3x, .tmp2x, ._ },
98914100586 .{ ._, .v_d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
98915100587 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
98916100588 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98917100589 } },
98918100590 }, .{
98919 .required_features = .{ .avx, .slow_incdec, null, null },
98920 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100591 .required_features = .{ .ssse3, null, null, null },
100592 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
100593 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },
100594 .patterns = &.{
100595 .{ .src = .{ .to_mem, .none, .none } },
100596 },
100597 .extra_temps = .{
100598 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100599 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
100600 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
100601 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
100602 .unused,
100603 .unused,
100604 .unused,
100605 .unused,
100606 .unused,
100607 .unused,
100608 .unused,
100609 },
100610 .dst_temps = .{ .mem, .unused },
100611 .each = .{ .once = &.{
100612 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
100613 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
100614 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
100615 .{ .@"0:", ._, .cvttps2dq, .tmp3x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
100616 .{ ._, .p_b, .shuf, .tmp3x, .tmp2x, ._, ._ },
100617 .{ ._, ._d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
100618 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
100619 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100620 } },
100621 }, .{
100622 .required_features = .{ .sse, .slow_incdec, null, null },
100623 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
98921100624 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
98922100625 .patterns = &.{
98923100626 .{ .src = .{ .to_mem, .none, .none } },
98924100627 },
98925 .call_frame = .{ .alignment = .@"16" },
98926100628 .extra_temps = .{
98927100629 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
98928 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
98929 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
98930 .{ .type = .i32, .kind = .{ .reg = .eax } },
100630 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
100631 .unused,
100632 .unused,
98931100633 .unused,
98932100634 .unused,
98933100635 .unused,
......@@ -98937,29 +100639,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98937100639 .unused,
98938100640 },
98939100641 .dst_temps = .{ .mem, .unused },
98940 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98941100642 .each = .{ .once = &.{
98942100643 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
98943 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
98944 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), .ui(0) },
98945 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
98946 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
100644 .{ .@"0:", ._, .cvttss2si, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
100645 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
98947100646 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
98948100647 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98949100648 } },
98950100649 }, .{
98951 .required_features = .{ .avx, null, null, null },
98952 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100650 .required_features = .{ .sse, null, null, null },
100651 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
98953100652 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
98954100653 .patterns = &.{
98955100654 .{ .src = .{ .to_mem, .none, .none } },
98956100655 },
98957 .call_frame = .{ .alignment = .@"16" },
98958100656 .extra_temps = .{
98959100657 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
98960 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
98961 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
98962 .{ .type = .i32, .kind = .{ .reg = .eax } },
100658 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
100659 .unused,
100660 .unused,
98963100661 .unused,
98964100662 .unused,
98965100663 .unused,
......@@ -98969,19 +100667,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98969100667 .unused,
98970100668 },
98971100669 .dst_temps = .{ .mem, .unused },
98972 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98973100670 .each = .{ .once = &.{
98974100671 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
98975 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
98976 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), .ui(0) },
98977 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
98978 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
100672 .{ .@"0:", ._, .cvttss2si, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
100673 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
98979100674 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
98980100675 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
98981100676 } },
98982100677 }, .{
98983 .required_features = .{ .sse2, .slow_incdec, null, null },
98984 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100678 .required_features = .{ .avx, .slow_incdec, null, null },
100679 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
98985100680 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
98986100681 .patterns = &.{
98987100682 .{ .src = .{ .to_mem, .none, .none } },
......@@ -98989,8 +100684,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98989100684 .call_frame = .{ .alignment = .@"16" },
98990100685 .extra_temps = .{
98991100686 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
98992 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
98993 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
100687 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
100688 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
98994100689 .{ .type = .i32, .kind = .{ .reg = .eax } },
98995100690 .unused,
98996100691 .unused,
......@@ -99004,16 +100699,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99004100699 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99005100700 .each = .{ .once = &.{
99006100701 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
99007 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
99008 .{ ._, .p_w, .insr, .tmp1x, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), .ui(0), ._ },
100702 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
99009100703 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99010100704 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
99011100705 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
99012100706 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99013100707 } },
99014100708 }, .{
99015 .required_features = .{ .sse2, null, null, null },
99016 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100709 .required_features = .{ .avx, null, null, null },
100710 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99017100711 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
99018100712 .patterns = &.{
99019100713 .{ .src = .{ .to_mem, .none, .none } },
......@@ -99021,8 +100715,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99021100715 .call_frame = .{ .alignment = .@"16" },
99022100716 .extra_temps = .{
99023100717 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99024 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99025 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
100718 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
100719 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
99026100720 .{ .type = .i32, .kind = .{ .reg = .eax } },
99027100721 .unused,
99028100722 .unused,
......@@ -99036,8 +100730,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99036100730 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99037100731 .each = .{ .once = &.{
99038100732 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
99039 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
99040 .{ ._, .p_w, .insr, .tmp1x, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), .ui(0), ._ },
100733 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
99041100734 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99042100735 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
99043100736 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
......@@ -99045,7 +100738,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99045100738 } },
99046100739 }, .{
99047100740 .required_features = .{ .sse, .slow_incdec, null, null },
99048 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100741 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99049100742 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
99050100743 .patterns = &.{
99051100744 .{ .src = .{ .to_mem, .none, .none } },
......@@ -99053,10 +100746,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99053100746 .call_frame = .{ .alignment = .@"16" },
99054100747 .extra_temps = .{
99055100748 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100749 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
100750 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
99056100751 .{ .type = .i32, .kind = .{ .reg = .eax } },
99057 .{ .type = .f32, .kind = .mem },
99058 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99059 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
100752 .unused,
99060100753 .unused,
99061100754 .unused,
99062100755 .unused,
......@@ -99068,17 +100761,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99068100761 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99069100762 .each = .{ .once = &.{
99070100763 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
99071 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
99072 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
99073 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
99074 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99075 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
100764 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
100765 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100766 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
99076100767 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
99077100768 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99078100769 } },
99079100770 }, .{
99080100771 .required_features = .{ .sse, null, null, null },
99081 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100772 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99082100773 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
99083100774 .patterns = &.{
99084100775 .{ .src = .{ .to_mem, .none, .none } },
......@@ -99086,10 +100777,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99086100777 .call_frame = .{ .alignment = .@"16" },
99087100778 .extra_temps = .{
99088100779 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100780 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
100781 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
99089100782 .{ .type = .i32, .kind = .{ .reg = .eax } },
99090 .{ .type = .f32, .kind = .mem },
99091 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99092 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
100783 .unused,
99093100784 .unused,
99094100785 .unused,
99095100786 .unused,
......@@ -99101,31 +100792,41 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99101100792 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99102100793 .each = .{ .once = &.{
99103100794 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
99104 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
99105 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
99106 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
99107 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99108 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
99109 .{ ._, ._c, .in, .tmp0p, .si(1), ._, ._ },
100795 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
100796 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100797 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
100798 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
99110100799 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
99111100800 } },
99112100801 }, .{
99113 .required_features = .{ .f16c, null, null, null },
99114 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
99115 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
100802 .required_features = .{ .avx, null, null, null },
100803 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
100804 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
99116100805 .patterns = &.{
99117100806 .{ .src = .{ .mem, .none, .none } },
99118100807 .{ .src = .{ .to_sse, .none, .none } },
99119100808 },
99120100809 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
99121100810 .each = .{ .once = &.{
99122 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
99123 .{ ._, .v_, .cvttps2dq, .dst0x, .dst0x, ._, ._ },
100811 .{ ._, .v_, .cvttps2dq, .dst0x, .src0x, ._, ._ },
99124100812 .{ ._, .vp_w, .ackssd, .dst0x, .dst0x, .dst0x, ._ },
99125100813 } },
99126100814 }, .{
99127 .required_features = .{ .f16c, null, null, null },
99128 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
100815 .required_features = .{ .sse2, null, null, null },
100816 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
100817 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
100818 .patterns = &.{
100819 .{ .src = .{ .mem, .none, .none } },
100820 .{ .src = .{ .to_sse, .none, .none } },
100821 },
100822 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
100823 .each = .{ .once = &.{
100824 .{ ._, ._, .cvttps2dq, .dst0x, .src0x, ._, ._ },
100825 .{ ._, .p_w, .ackssd, .dst0x, .dst0x, ._, ._ },
100826 } },
100827 }, .{
100828 .required_features = .{ .avx, null, null, null },
100829 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
99129100830 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },
99130100831 .patterns = &.{
99131100832 .{ .src = .{ .mem, .none, .none } },
......@@ -99133,13 +100834,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99133100834 },
99134100835 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
99135100836 .each = .{ .once = &.{
99136 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
99137 .{ ._, .v_, .cvttps2dq, .dst0x, .dst0x, ._, ._ },
100837 .{ ._, .v_, .cvttps2dq, .dst0x, .src0x, ._, ._ },
99138100838 .{ ._, .vp_w, .ackusd, .dst0x, .dst0x, .dst0x, ._ },
99139100839 } },
99140100840 }, .{
99141 .required_features = .{ .f16c, null, null, null },
99142 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
100841 .required_features = .{ .sse4_1, null, null, null },
100842 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
100843 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },
100844 .patterns = &.{
100845 .{ .src = .{ .mem, .none, .none } },
100846 .{ .src = .{ .to_sse, .none, .none } },
100847 },
100848 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
100849 .each = .{ .once = &.{
100850 .{ ._, ._, .cvttps2dq, .dst0x, .src0x, ._, ._ },
100851 .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ },
100852 } },
100853 }, .{
100854 .required_features = .{ .avx, null, null, null },
100855 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
99143100856 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
99144100857 .patterns = &.{
99145100858 .{ .src = .{ .to_mem, .none, .none } },
......@@ -99159,24 +100872,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99159100872 },
99160100873 .dst_temps = .{ .mem, .unused },
99161100874 .each = .{ .once = &.{
99162 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99163 .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
99164 .{ ._, .v_, .cvttps2dq, .tmp1x, .tmp1x, ._, ._ },
100875 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
100876 .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
99165100877 .{ ._, .vp_w, .ackssd, .tmp1x, .tmp1x, .tmp1x, ._ },
99166100878 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
99167100879 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
99168100880 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99169100881 } },
99170100882 }, .{
99171 .required_features = .{ .f16c, null, null, null },
99172 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
99173 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },
100883 .required_features = .{ .sse2, null, null, null },
100884 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
100885 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
99174100886 .patterns = &.{
99175100887 .{ .src = .{ .to_mem, .none, .none } },
99176100888 },
99177100889 .extra_temps = .{
99178100890 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99179 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
100891 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
99180100892 .unused,
99181100893 .unused,
99182100894 .unused,
......@@ -99189,27 +100901,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99189100901 },
99190100902 .dst_temps = .{ .mem, .unused },
99191100903 .each = .{ .once = &.{
99192 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99193 .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
99194 .{ ._, .v_, .cvttps2dq, .tmp1x, .tmp1x, ._, ._ },
99195 .{ ._, .vp_w, .ackusd, .tmp1x, .tmp1x, .tmp1x, ._ },
99196 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
100904 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
100905 .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
100906 .{ ._, .p_w, .ackssd, .tmp1x, .tmp1x, ._, ._ },
100907 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
99197100908 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
99198100909 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99199100910 } },
99200100911 }, .{
99201100912 .required_features = .{ .avx, null, null, null },
99202 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99203 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
100913 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
100914 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },
99204100915 .patterns = &.{
99205100916 .{ .src = .{ .to_mem, .none, .none } },
99206100917 },
99207 .call_frame = .{ .alignment = .@"16" },
99208100918 .extra_temps = .{
99209100919 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99210 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99211 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
99212 .{ .type = .i32, .kind = .{ .reg = .eax } },
100920 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
100921 .unused,
100922 .unused,
99213100923 .unused,
99214100924 .unused,
99215100925 .unused,
......@@ -99219,29 +100929,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99219100929 .unused,
99220100930 },
99221100931 .dst_temps = .{ .mem, .unused },
99222 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99223100932 .each = .{ .once = &.{
99224 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99225 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
99226 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
99227 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99228 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
99229 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100933 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
100934 .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
100935 .{ ._, .vp_w, .ackusd, .tmp1x, .tmp1x, .tmp1x, ._ },
100936 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
100937 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
99230100938 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99231100939 } },
99232100940 }, .{
99233 .required_features = .{ .sse2, null, null, null },
99234 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99235 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
100941 .required_features = .{ .sse4_1, null, null, null },
100942 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
100943 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },
99236100944 .patterns = &.{
99237100945 .{ .src = .{ .to_mem, .none, .none } },
99238100946 },
99239 .call_frame = .{ .alignment = .@"16" },
99240100947 .extra_temps = .{
99241100948 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99242 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99243 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
99244 .{ .type = .i32, .kind = .{ .reg = .eax } },
100949 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
100950 .unused,
100951 .unused,
99245100952 .unused,
99246100953 .unused,
99247100954 .unused,
......@@ -99251,19 +100958,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99251100958 .unused,
99252100959 },
99253100960 .dst_temps = .{ .mem, .unused },
99254 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99255100961 .each = .{ .once = &.{
99256 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99257 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
99258 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
99259 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99260 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
99261 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100962 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
100963 .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
100964 .{ ._, .p_w, .ackusd, .tmp1x, .tmp1x, ._, ._ },
100965 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
100966 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
99262100967 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99263100968 } },
99264100969 }, .{
99265 .required_features = .{ .sse, null, null, null },
99266 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100970 .required_features = .{ .avx, null, null, null },
100971 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99267100972 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
99268100973 .patterns = &.{
99269100974 .{ .src = .{ .to_mem, .none, .none } },
......@@ -99271,10 +100976,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99271100976 .call_frame = .{ .alignment = .@"16" },
99272100977 .extra_temps = .{
99273100978 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100979 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
100980 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
99274100981 .{ .type = .i32, .kind = .{ .reg = .eax } },
99275 .{ .type = .f32, .kind = .mem },
99276 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99277 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
100982 .unused,
99278100983 .unused,
99279100984 .unused,
99280100985 .unused,
......@@ -99285,27 +100990,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99285100990 .dst_temps = .{ .mem, .unused },
99286100991 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99287100992 .each = .{ .once = &.{
99288 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99289 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
99290 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
99291 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
99292 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99293 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
100993 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
100994 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
100995 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100996 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
99294100997 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99295100998 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99296100999 } },
99297101000 }, .{
99298 .required_features = .{ .f16c, null, null, null },
99299 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
99300 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
101001 .required_features = .{ .sse, null, null, null },
101002 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
101003 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
99301101004 .patterns = &.{
99302101005 .{ .src = .{ .to_mem, .none, .none } },
99303101006 },
101007 .call_frame = .{ .alignment = .@"16" },
99304101008 .extra_temps = .{
99305101009 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99306 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
99307 .unused,
99308 .unused,
101010 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101011 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
101012 .{ .type = .i32, .kind = .{ .reg = .eax } },
99309101013 .unused,
99310101014 .unused,
99311101015 .unused,
......@@ -99315,58 +101019,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99315101019 .unused,
99316101020 },
99317101021 .dst_temps = .{ .mem, .unused },
101022 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99318101023 .each = .{ .once = &.{
99319 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99320 .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
99321 .{ ._, .v_, .cvttps2dq, .tmp1x, .tmp1x, ._, ._ },
99322 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
99323 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101024 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101025 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
101026 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101027 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
101028 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99324101029 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99325101030 } },
99326101031 }, .{
99327 .required_features = .{ .f16c, null, null, null },
99328 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99329 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
101032 .required_features = .{ .avx, null, null, null },
101033 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
101034 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
99330101035 .patterns = &.{
99331 .{ .src = .{ .to_mem, .none, .none } },
101036 .{ .src = .{ .mem, .none, .none } },
101037 .{ .src = .{ .to_sse, .none, .none } },
99332101038 },
99333 .extra_temps = .{
99334 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99335 .{ .type = .f32, .kind = .{ .rc = .sse } },
99336 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
99337 .unused,
99338 .unused,
99339 .unused,
99340 .unused,
99341 .unused,
99342 .unused,
99343 .unused,
99344 .unused,
101039 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
101040 .each = .{ .once = &.{
101041 .{ ._, .v_, .cvttps2dq, .dst0x, .src0x, ._, ._ },
101042 } },
101043 }, .{
101044 .required_features = .{ .sse2, null, null, null },
101045 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
101046 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
101047 .patterns = &.{
101048 .{ .src = .{ .mem, .none, .none } },
101049 .{ .src = .{ .to_sse, .none, .none } },
99345101050 },
99346 .dst_temps = .{ .mem, .unused },
101051 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
99347101052 .each = .{ .once = &.{
99348 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99349 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
99350 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
99351 .{ ._, .v_ps, .cvtph2, .tmp1x, .tmp1q, ._, ._ },
99352 .{ ._, .v_, .cvttss2si, .tmp2q, .tmp1x, ._, ._ },
99353 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
99354 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99355 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101053 .{ ._, ._, .cvttps2dq, .dst0x, .src0x, ._, ._ },
99356101054 } },
99357101055 }, .{
99358101056 .required_features = .{ .avx, null, null, null },
99359 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99360 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
101057 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
101058 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
99361101059 .patterns = &.{
99362101060 .{ .src = .{ .to_mem, .none, .none } },
99363101061 },
99364 .call_frame = .{ .alignment = .@"16" },
99365101062 .extra_temps = .{
99366101063 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99367 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99368 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
99369 .{ .type = .i32, .kind = .{ .reg = .eax } },
101064 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
101065 .unused,
101066 .unused,
99370101067 .unused,
99371101068 .unused,
99372101069 .unused,
......@@ -99376,29 +101073,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99376101073 .unused,
99377101074 },
99378101075 .dst_temps = .{ .mem, .unused },
99379 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99380101076 .each = .{ .once = &.{
99381101077 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99382 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
99383 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
99384 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99385 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
99386 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
101078 .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
101079 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
101080 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
99387101081 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99388101082 } },
99389101083 }, .{
99390 .required_features = .{ .avx, null, null, null },
99391 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99392 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
101084 .required_features = .{ .sse2, null, null, null },
101085 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
101086 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
99393101087 .patterns = &.{
99394101088 .{ .src = .{ .to_mem, .none, .none } },
99395101089 },
99396 .call_frame = .{ .alignment = .@"16" },
99397101090 .extra_temps = .{
99398101091 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99399 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99400 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },
99401 .{ .type = .u32, .kind = .{ .reg = .eax } },
101092 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
101093 .unused,
101094 .unused,
99402101095 .unused,
99403101096 .unused,
99404101097 .unused,
......@@ -99408,19 +101101,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99408101101 .unused,
99409101102 },
99410101103 .dst_temps = .{ .mem, .unused },
99411 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99412101104 .each = .{ .once = &.{
99413101105 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99414 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
99415 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
99416 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99417 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
99418 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
101106 .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
101107 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
101108 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
99419101109 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99420101110 } },
99421101111 }, .{
99422 .required_features = .{ .sse2, null, null, null },
99423 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
101112 .required_features = .{ .avx, null, null, null },
101113 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99424101114 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
99425101115 .patterns = &.{
99426101116 .{ .src = .{ .to_mem, .none, .none } },
......@@ -99428,8 +101118,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99428101118 .call_frame = .{ .alignment = .@"16" },
99429101119 .extra_temps = .{
99430101120 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99431 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99432 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
101121 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101122 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
99433101123 .{ .type = .i32, .kind = .{ .reg = .eax } },
99434101124 .unused,
99435101125 .unused,
......@@ -99443,16 +101133,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99443101133 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99444101134 .each = .{ .once = &.{
99445101135 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99446 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
99447 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
101136 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
99448101137 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99449 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
99450 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
101138 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
101139 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99451101140 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99452101141 } },
99453101142 }, .{
99454 .required_features = .{ .sse2, null, null, null },
99455 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
101143 .required_features = .{ .avx, null, null, null },
101144 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99456101145 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
99457101146 .patterns = &.{
99458101147 .{ .src = .{ .to_mem, .none, .none } },
......@@ -99460,8 +101149,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99460101149 .call_frame = .{ .alignment = .@"16" },
99461101150 .extra_temps = .{
99462101151 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99463 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99464 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },
101152 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101153 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfsi" } } },
99465101154 .{ .type = .u32, .kind = .{ .reg = .eax } },
99466101155 .unused,
99467101156 .unused,
......@@ -99475,16 +101164,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99475101164 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99476101165 .each = .{ .once = &.{
99477101166 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99478 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
99479 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
101167 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
99480101168 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99481 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
99482 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
101169 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
101170 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99483101171 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99484101172 } },
99485101173 }, .{
99486101174 .required_features = .{ .sse, null, null, null },
99487 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
101175 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99488101176 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
99489101177 .patterns = &.{
99490101178 .{ .src = .{ .to_mem, .none, .none } },
......@@ -99492,10 +101180,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99492101180 .call_frame = .{ .alignment = .@"16" },
99493101181 .extra_temps = .{
99494101182 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101183 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101184 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
99495101185 .{ .type = .i32, .kind = .{ .reg = .eax } },
99496 .{ .type = .f32, .kind = .mem },
99497 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99498 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
101186 .unused,
99499101187 .unused,
99500101188 .unused,
99501101189 .unused,
......@@ -99507,17 +101195,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99507101195 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99508101196 .each = .{ .once = &.{
99509101197 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99510 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
99511 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
99512 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
99513 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99514 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
99515 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
101198 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
101199 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101200 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
101201 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99516101202 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99517101203 } },
99518101204 }, .{
99519101205 .required_features = .{ .sse, null, null, null },
99520 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
101206 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99521101207 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
99522101208 .patterns = &.{
99523101209 .{ .src = .{ .to_mem, .none, .none } },
......@@ -99525,10 +101211,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99525101211 .call_frame = .{ .alignment = .@"16" },
99526101212 .extra_temps = .{
99527101213 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101214 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101215 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfsi" } } },
99528101216 .{ .type = .u32, .kind = .{ .reg = .eax } },
99529 .{ .type = .f32, .kind = .mem },
99530 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99531 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },
101217 .unused,
99532101218 .unused,
99533101219 .unused,
99534101220 .unused,
......@@ -99540,24 +101226,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99540101226 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99541101227 .each = .{ .once = &.{
99542101228 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99543 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
99544 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
99545 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
99546 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99547 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
99548 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
101229 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
101230 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101231 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
101232 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99549101233 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99550101234 } },
99551101235 }, .{
99552 .required_features = .{ .@"64bit", .f16c, null, null },
99553 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
101236 .required_features = .{ .@"64bit", .avx, null, null },
101237 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99554101238 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
99555101239 .patterns = &.{
99556101240 .{ .src = .{ .to_mem, .none, .none } },
99557101241 },
99558101242 .extra_temps = .{
99559101243 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99560 .{ .type = .f32, .kind = .{ .rc = .sse } },
99561101244 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
99562101245 .unused,
99563101246 .unused,
......@@ -99567,63 +101250,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99567101250 .unused,
99568101251 .unused,
99569101252 .unused,
101253 .unused,
99570101254 },
99571101255 .dst_temps = .{ .mem, .unused },
99572101256 .each = .{ .once = &.{
99573101257 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99574 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
99575 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
99576 .{ ._, .v_ps, .cvtph2, .tmp1x, .tmp1q, ._, ._ },
99577 .{ ._, .v_, .cvttss2si, .tmp2q, .tmp1x, ._, ._ },
99578 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
99579 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
101258 .{ .@"0:", .v_, .cvttss2si, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
101259 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
101260 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99580101261 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99581101262 } },
99582101263 }, .{
99583 .required_features = .{ .avx, null, null, null },
99584 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
101264 .required_features = .{ .@"64bit", .sse, null, null },
101265 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99585101266 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
99586101267 .patterns = &.{
99587101268 .{ .src = .{ .to_mem, .none, .none } },
99588101269 },
99589 .call_frame = .{ .alignment = .@"16" },
99590101270 .extra_temps = .{
99591101271 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99592 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99593 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
99594 .{ .type = .i64, .kind = .{ .reg = .rax } },
99595 .unused,
99596 .unused,
99597 .unused,
99598 .unused,
99599 .unused,
101272 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
99600101273 .unused,
99601101274 .unused,
99602 },
99603 .dst_temps = .{ .mem, .unused },
99604 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99605 .each = .{ .once = &.{
99606 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99607 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
99608 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
99609 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99610 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99611 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99612 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99613 } },
99614 }, .{
99615 .required_features = .{ .avx, null, null, null },
99616 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99617 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
99618 .patterns = &.{
99619 .{ .src = .{ .to_mem, .none, .none } },
99620 },
99621 .call_frame = .{ .alignment = .@"16" },
99622 .extra_temps = .{
99623 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99624 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99625 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },
99626 .{ .type = .u64, .kind = .{ .reg = .rax } },
99627101275 .unused,
99628101276 .unused,
99629101277 .unused,
......@@ -99633,19 +101281,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99633101281 .unused,
99634101282 },
99635101283 .dst_temps = .{ .mem, .unused },
99636 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99637101284 .each = .{ .once = &.{
99638101285 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99639 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
99640 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
99641 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99642 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99643 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
101286 .{ .@"0:", ._, .cvttss2si, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
101287 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
101288 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99644101289 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99645101290 } },
99646101291 }, .{
99647 .required_features = .{ .sse2, null, null, null },
99648 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
101292 .required_features = .{ .avx, null, null, null },
101293 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99649101294 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
99650101295 .patterns = &.{
99651101296 .{ .src = .{ .to_mem, .none, .none } },
......@@ -99653,8 +101298,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99653101298 .call_frame = .{ .alignment = .@"16" },
99654101299 .extra_temps = .{
99655101300 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99656 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99657 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
101301 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101302 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfdi" } } },
99658101303 .{ .type = .i64, .kind = .{ .reg = .rax } },
99659101304 .unused,
99660101305 .unused,
......@@ -99668,16 +101313,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99668101313 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99669101314 .each = .{ .once = &.{
99670101315 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99671 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
99672 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
101316 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
99673101317 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99674 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99675 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
101318 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101319 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99676101320 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99677101321 } },
99678101322 }, .{
99679 .required_features = .{ .sse2, null, null, null },
99680 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
101323 .required_features = .{ .avx, null, null, null },
101324 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99681101325 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
99682101326 .patterns = &.{
99683101327 .{ .src = .{ .to_mem, .none, .none } },
......@@ -99685,8 +101329,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99685101329 .call_frame = .{ .alignment = .@"16" },
99686101330 .extra_temps = .{
99687101331 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99688 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99689 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },
101332 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101333 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfdi" } } },
99690101334 .{ .type = .u64, .kind = .{ .reg = .rax } },
99691101335 .unused,
99692101336 .unused,
......@@ -99700,16 +101344,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99700101344 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99701101345 .each = .{ .once = &.{
99702101346 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99703 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
99704 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
101347 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
99705101348 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99706 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99707 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
101349 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101350 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99708101351 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99709101352 } },
99710101353 }, .{
99711101354 .required_features = .{ .sse, null, null, null },
99712 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
101355 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99713101356 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
99714101357 .patterns = &.{
99715101358 .{ .src = .{ .to_mem, .none, .none } },
......@@ -99717,10 +101360,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99717101360 .call_frame = .{ .alignment = .@"16" },
99718101361 .extra_temps = .{
99719101362 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101363 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101364 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfdi" } } },
99720101365 .{ .type = .i64, .kind = .{ .reg = .rax } },
99721 .{ .type = .f32, .kind = .mem },
99722 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99723 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
101366 .unused,
99724101367 .unused,
99725101368 .unused,
99726101369 .unused,
......@@ -99732,17 +101375,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99732101375 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99733101376 .each = .{ .once = &.{
99734101377 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99735 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
99736 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
99737 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
99738 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99739 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
99740 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
101378 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
101379 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101380 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101381 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99741101382 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99742101383 } },
99743101384 }, .{
99744101385 .required_features = .{ .sse, null, null, null },
99745 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
101386 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99746101387 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
99747101388 .patterns = &.{
99748101389 .{ .src = .{ .to_mem, .none, .none } },
......@@ -99750,47 +101391,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99750101391 .call_frame = .{ .alignment = .@"16" },
99751101392 .extra_temps = .{
99752101393 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101394 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101395 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfdi" } } },
99753101396 .{ .type = .u64, .kind = .{ .reg = .rax } },
99754 .{ .type = .f32, .kind = .mem },
99755 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99756 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },
99757 .unused,
99758101397 .unused,
99759101398 .unused,
99760101399 .unused,
99761101400 .unused,
99762101401 .unused,
99763 },
99764 .dst_temps = .{ .mem, .unused },
99765 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99766 .each = .{ .once = &.{
99767 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99768 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
99769 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
99770 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
99771 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99772 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
99773 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99774 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99775 } },
99776 }, .{
99777 .required_features = .{ .avx, null, null, null },
99778 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99779 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
99780 .patterns = &.{
99781 .{ .src = .{ .to_mem, .none, .none } },
99782 },
99783 .call_frame = .{ .alignment = .@"16" },
99784 .extra_temps = .{
99785 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99786 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99787 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } },
99788 .{ .type = .u64, .kind = .{ .reg = .rax } },
99789 .{ .type = .i64, .kind = .{ .reg = .rdx } },
99790 .unused,
99791 .unused,
99792 .unused,
99793 .unused,
99794101402 .unused,
99795101403 .unused,
99796101404 },
......@@ -99798,50 +101406,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99798101406 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99799101407 .each = .{ .once = &.{
99800101408 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99801 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
99802 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
101409 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
99803101410 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99804 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99805 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
99806 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
101411 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101412 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99807101413 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99808101414 } },
99809101415 }, .{
99810101416 .required_features = .{ .avx, null, null, null },
99811 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99812 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
99813 .patterns = &.{
99814 .{ .src = .{ .to_mem, .none, .none } },
99815 },
99816 .call_frame = .{ .alignment = .@"16" },
99817 .extra_temps = .{
99818 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99819 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99820 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } },
99821 .{ .type = .u64, .kind = .{ .reg = .rax } },
99822 .{ .type = .u64, .kind = .{ .reg = .rdx } },
99823 .unused,
99824 .unused,
99825 .unused,
99826 .unused,
99827 .unused,
99828 .unused,
99829 },
99830 .dst_temps = .{ .mem, .unused },
99831 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99832 .each = .{ .once = &.{
99833 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99834 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
99835 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
99836 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99837 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99838 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
99839 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99840 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99841 } },
99842 }, .{
99843 .required_features = .{ .sse2, null, null, null },
99844 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
101417 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99845101418 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
99846101419 .patterns = &.{
99847101420 .{ .src = .{ .to_mem, .none, .none } },
......@@ -99849,8 +101422,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99849101422 .call_frame = .{ .alignment = .@"16" },
99850101423 .extra_temps = .{
99851101424 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99852 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99853 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } },
101425 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101426 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } },
99854101427 .{ .type = .u64, .kind = .{ .reg = .rax } },
99855101428 .{ .type = .i64, .kind = .{ .reg = .rdx } },
99856101429 .unused,
......@@ -99864,17 +101437,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99864101437 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99865101438 .each = .{ .once = &.{
99866101439 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99867 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
99868 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
101440 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
99869101441 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99870 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99871 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
99872 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
101442 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101443 .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
101444 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99873101445 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99874101446 } },
99875101447 }, .{
99876 .required_features = .{ .sse2, null, null, null },
99877 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
101448 .required_features = .{ .avx, null, null, null },
101449 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99878101450 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
99879101451 .patterns = &.{
99880101452 .{ .src = .{ .to_mem, .none, .none } },
......@@ -99882,8 +101454,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99882101454 .call_frame = .{ .alignment = .@"16" },
99883101455 .extra_temps = .{
99884101456 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99885 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99886 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } },
101457 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101458 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
99887101459 .{ .type = .u64, .kind = .{ .reg = .rax } },
99888101460 .{ .type = .u64, .kind = .{ .reg = .rdx } },
99889101461 .unused,
......@@ -99897,17 +101469,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99897101469 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99898101470 .each = .{ .once = &.{
99899101471 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99900 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
99901 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
101472 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
99902101473 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99903 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99904 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
99905 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
101474 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101475 .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
101476 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99906101477 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99907101478 } },
99908101479 }, .{
99909101480 .required_features = .{ .sse, null, null, null },
99910 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
101481 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99911101482 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
99912101483 .patterns = &.{
99913101484 .{ .src = .{ .to_mem, .none, .none } },
......@@ -99915,33 +101486,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99915101486 .call_frame = .{ .alignment = .@"16" },
99916101487 .extra_temps = .{
99917101488 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101489 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101490 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } },
99918101491 .{ .type = .u64, .kind = .{ .reg = .rax } },
99919 .{ .type = .f32, .kind = .mem },
99920 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99921 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } },
99922101492 .{ .type = .i64, .kind = .{ .reg = .rdx } },
99923101493 .unused,
99924101494 .unused,
99925101495 .unused,
99926101496 .unused,
99927101497 .unused,
101498 .unused,
99928101499 },
99929101500 .dst_temps = .{ .mem, .unused },
99930101501 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99931101502 .each = .{ .once = &.{
99932101503 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99933 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
99934 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
99935 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
99936 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99937 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
99938 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
99939 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
101504 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
101505 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101506 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101507 .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
101508 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99940101509 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99941101510 } },
99942101511 }, .{
99943101512 .required_features = .{ .sse, null, null, null },
99944 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
101513 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99945101514 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
99946101515 .patterns = &.{
99947101516 .{ .src = .{ .to_mem, .none, .none } },
......@@ -99949,33 +101518,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99949101518 .call_frame = .{ .alignment = .@"16" },
99950101519 .extra_temps = .{
99951101520 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101521 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101522 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
99952101523 .{ .type = .u64, .kind = .{ .reg = .rax } },
99953 .{ .type = .f32, .kind = .mem },
99954 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99955 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } },
99956101524 .{ .type = .u64, .kind = .{ .reg = .rdx } },
99957101525 .unused,
99958101526 .unused,
99959101527 .unused,
99960101528 .unused,
99961101529 .unused,
101530 .unused,
99962101531 },
99963101532 .dst_temps = .{ .mem, .unused },
99964101533 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99965101534 .each = .{ .once = &.{
99966101535 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99967 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
99968 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
99969 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
99970 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99971 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
99972 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
99973 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
101536 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
101537 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101538 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101539 .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
101540 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99974101541 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99975101542 } },
99976101543 }, .{
99977101544 .required_features = .{ .@"64bit", .avx, null, null },
99978 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
101545 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99979101546 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
99980101547 .patterns = &.{
99981101548 .{ .src = .{ .to_mem, .none, .none } },
......@@ -99986,8 +101553,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99986101553 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
99987101554 .{ .type = .usize, .kind = .{ .reg = .rdi } },
99988101555 .{ .type = .usize, .kind = .{ .reg = .rsi } },
99989 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99990 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfei" } } },
101556 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101557 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfei" } } },
99991101558 .unused,
99992101559 .unused,
99993101560 .unused,
......@@ -99999,18 +101566,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99999101566 .each = .{ .once = &.{
100000101567 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100001101568 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
100002 .{ .@"0:", .v_ps, .xor, .tmp4x, .tmp4x, .tmp4x, ._ },
100003 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
101569 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100004101570 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
100005 .{ ._, .vp_w, .insr, .tmp4x, .tmp4x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
101571 .{ ._, .v_ss, .mov, .tmp4x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
100006101572 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
100007101573 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
100008 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
101574 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
100009101575 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100010101576 } },
100011101577 }, .{
100012101578 .required_features = .{ .@"64bit", .avx, null, null },
100013 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
101579 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
100014101580 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
100015101581 .patterns = &.{
100016101582 .{ .src = .{ .to_mem, .none, .none } },
......@@ -100021,8 +101587,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100021101587 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100022101588 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100023101589 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100024 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100025 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfei" } } },
101590 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101591 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfei" } } },
100026101592 .unused,
100027101593 .unused,
100028101594 .unused,
......@@ -100034,18 +101600,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100034101600 .each = .{ .once = &.{
100035101601 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100036101602 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
100037 .{ .@"0:", .v_ps, .xor, .tmp4x, .tmp4x, .tmp4x, ._ },
100038 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
101603 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100039101604 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
100040 .{ ._, .vp_w, .insr, .tmp4x, .tmp4x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
101605 .{ ._, .v_ss, .mov, .tmp4x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
100041101606 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
100042101607 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
100043 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
101608 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
100044101609 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100045101610 } },
100046101611 }, .{
100047 .required_features = .{ .@"64bit", .sse2, null, null },
100048 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
101612 .required_features = .{ .@"64bit", .sse, null, null },
101613 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
100049101614 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
100050101615 .patterns = &.{
100051101616 .{ .src = .{ .to_mem, .none, .none } },
......@@ -100056,8 +101621,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100056101621 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100057101622 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100058101623 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100059 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100060 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfei" } } },
101624 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101625 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfei" } } },
100061101626 .unused,
100062101627 .unused,
100063101628 .unused,
......@@ -100069,18 +101634,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100069101634 .each = .{ .once = &.{
100070101635 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100071101636 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
100072 .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ },
100073 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
101637 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100074101638 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
100075 .{ ._, .p_w, .insr, .tmp4x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
101639 .{ ._, ._ss, .mov, .tmp4x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
100076101640 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
100077101641 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
100078 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
101642 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
100079101643 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100080101644 } },
100081101645 }, .{
100082 .required_features = .{ .@"64bit", .sse2, null, null },
100083 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
101646 .required_features = .{ .@"64bit", .sse, null, null },
101647 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
100084101648 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
100085101649 .patterns = &.{
100086101650 .{ .src = .{ .to_mem, .none, .none } },
......@@ -100091,8 +101655,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100091101655 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100092101656 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100093101657 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100094 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100095 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfei" } } },
101658 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101659 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfei" } } },
100096101660 .unused,
100097101661 .unused,
100098101662 .unused,
......@@ -100104,114 +101668,143 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100104101668 .each = .{ .once = &.{
100105101669 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100106101670 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
100107 .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ },
100108 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
101671 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100109101672 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
100110 .{ ._, .p_w, .insr, .tmp4x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
101673 .{ ._, ._ss, .mov, .tmp4x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
100111101674 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
100112101675 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
100113 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
101676 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
100114101677 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100115101678 } },
100116101679 }, .{
100117 .required_features = .{ .@"64bit", .sse, null, null },
100118 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100119 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
101680 .required_features = .{ .avx, null, null, null },
101681 .src_constraints = .{ .{ .float = .qword }, .any, .any },
101682 .dst_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any },
101683 .patterns = &.{
101684 .{ .src = .{ .mem, .none, .none } },
101685 .{ .src = .{ .to_sse, .none, .none } },
101686 },
101687 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
101688 .each = .{ .once = &.{
101689 .{ ._, .v_, .cvttsd2si, .dst0d, .src0q, ._, ._ },
101690 } },
101691 }, .{
101692 .required_features = .{ .sse2, null, null, null },
101693 .src_constraints = .{ .{ .float = .qword }, .any, .any },
101694 .dst_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any },
101695 .patterns = &.{
101696 .{ .src = .{ .mem, .none, .none } },
101697 .{ .src = .{ .to_sse, .none, .none } },
101698 },
101699 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
101700 .each = .{ .once = &.{
101701 .{ ._, ._, .cvttsd2si, .dst0d, .src0q, ._, ._ },
101702 } },
101703 }, .{
101704 .required_features = .{ .x87, null, null, null },
101705 .src_constraints = .{ .{ .float = .qword }, .any, .any },
101706 .dst_constraints = .{ .{ .signed_int = .byte }, .any },
100120101707 .patterns = &.{
100121101708 .{ .src = .{ .to_mem, .none, .none } },
100122101709 },
100123 .call_frame = .{ .alignment = .@"16" },
100124101710 .extra_temps = .{
100125 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100126 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100127 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100128 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100129 .{ .type = .f32, .kind = .mem },
100130 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100131 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfei" } } },
101711 .{ .type = .f64, .kind = .{ .reg = .st7 } },
101712 .{ .type = .i16, .kind = .mem },
101713 .unused,
101714 .unused,
101715 .unused,
101716 .unused,
101717 .unused,
100132101718 .unused,
100133101719 .unused,
100134101720 .unused,
100135101721 .unused,
100136101722 },
100137 .dst_temps = .{ .mem, .unused },
100138 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101723 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
100139101724 .each = .{ .once = &.{
100140 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100141 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
100142 .{ .@"0:", ._, .movzx, .tmp3d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
100143 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100144 .{ ._, ._, .mov, .tmp4d, .tmp3d, ._, ._ },
100145 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
100146 .{ ._, ._ss, .mov, .tmp5x, .tmp4d, ._, ._ },
100147 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
100148 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
100149 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100150 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101725 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
101726 .{ ._, .fi_p, .stt, .tmp1w, ._, ._, ._ },
101727 .{ ._, ._, .movsx, .dst0d, .tmp1b, ._, ._ },
100151101728 } },
100152101729 }, .{
100153 .required_features = .{ .@"64bit", .sse, null, null },
100154 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100155 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
101730 .required_features = .{ .x87, null, null, null },
101731 .src_constraints = .{ .{ .float = .qword }, .any, .any },
101732 .dst_constraints = .{ .{ .unsigned_int = .byte }, .any },
100156101733 .patterns = &.{
100157101734 .{ .src = .{ .to_mem, .none, .none } },
100158101735 },
100159 .call_frame = .{ .alignment = .@"16" },
100160101736 .extra_temps = .{
100161 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100162 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100163 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100164 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100165 .{ .type = .f32, .kind = .mem },
100166 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100167 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfei" } } },
101737 .{ .type = .f64, .kind = .{ .reg = .st7 } },
101738 .{ .type = .i16, .kind = .mem },
101739 .unused,
101740 .unused,
101741 .unused,
101742 .unused,
101743 .unused,
100168101744 .unused,
100169101745 .unused,
100170101746 .unused,
100171101747 .unused,
100172101748 },
100173 .dst_temps = .{ .mem, .unused },
100174 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101749 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
100175101750 .each = .{ .once = &.{
100176 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100177 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
100178 .{ .@"0:", ._, .movzx, .tmp3d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
100179 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100180 .{ ._, ._, .mov, .tmp4d, .tmp3d, ._, ._ },
100181 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
100182 .{ ._, ._ss, .mov, .tmp5x, .tmp4d, ._, ._ },
100183 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
100184 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
100185 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100186 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101751 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
101752 .{ ._, .fi_p, .stt, .tmp1w, ._, ._, ._ },
101753 .{ ._, ._, .movzx, .dst0d, .tmp1b, ._, ._ },
100187101754 } },
100188101755 }, .{
100189 .required_features = .{ .avx, null, null, null },
100190 .src_constraints = .{ .{ .float = .dword }, .any, .any },
100191 .dst_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any },
101756 .required_features = .{ .x87, null, null, null },
101757 .src_constraints = .{ .{ .float = .qword }, .any, .any },
101758 .dst_constraints = .{ .{ .signed_or_exclusive_int = .word }, .any },
100192101759 .patterns = &.{
100193 .{ .src = .{ .mem, .none, .none } },
100194 .{ .src = .{ .to_sse, .none, .none } },
101760 .{ .src = .{ .to_mem, .none, .none } },
100195101761 },
100196 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
101762 .extra_temps = .{
101763 .{ .type = .f64, .kind = .{ .reg = .st7 } },
101764 .unused,
101765 .unused,
101766 .unused,
101767 .unused,
101768 .unused,
101769 .unused,
101770 .unused,
101771 .unused,
101772 .unused,
101773 .unused,
101774 },
101775 .dst_temps = .{ .mem, .unused },
100197101776 .each = .{ .once = &.{
100198 .{ ._, .v_, .cvttss2si, .dst0d, .src0d, ._, ._ },
101777 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
101778 .{ ._, .fi_p, .stt, .dst0w, ._, ._, ._ },
100199101779 } },
100200101780 }, .{
100201 .required_features = .{ .sse, null, null, null },
100202 .src_constraints = .{ .{ .float = .dword }, .any, .any },
101781 .required_features = .{ .x87, null, null, null },
101782 .src_constraints = .{ .{ .float = .qword }, .any, .any },
100203101783 .dst_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any },
100204101784 .patterns = &.{
100205 .{ .src = .{ .mem, .none, .none } },
100206 .{ .src = .{ .to_sse, .none, .none } },
101785 .{ .src = .{ .to_mem, .none, .none } },
100207101786 },
100208 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
101787 .extra_temps = .{
101788 .{ .type = .f64, .kind = .{ .reg = .st7 } },
101789 .unused,
101790 .unused,
101791 .unused,
101792 .unused,
101793 .unused,
101794 .unused,
101795 .unused,
101796 .unused,
101797 .unused,
101798 .unused,
101799 },
101800 .dst_temps = .{ .mem, .unused },
100209101801 .each = .{ .once = &.{
100210 .{ ._, ._, .cvttss2si, .dst0d, .src0d, ._, ._ },
101802 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
101803 .{ ._, .fi_p, .stt, .dst0d, ._, ._, ._ },
100211101804 } },
100212101805 }, .{
100213101806 .required_features = .{ .@"64bit", .avx, null, null },
100214 .src_constraints = .{ .{ .float = .dword }, .any, .any },
101807 .src_constraints = .{ .{ .float = .qword }, .any, .any },
100215101808 .dst_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any },
100216101809 .patterns = &.{
100217101810 .{ .src = .{ .mem, .none, .none } },
......@@ -100219,11 +101812,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100219101812 },
100220101813 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
100221101814 .each = .{ .once = &.{
100222 .{ ._, .v_, .cvttss2si, .dst0q, .src0d, ._, ._ },
101815 .{ ._, .v_, .cvttsd2si, .dst0q, .src0q, ._, ._ },
100223101816 } },
100224101817 }, .{
100225 .required_features = .{ .@"64bit", .sse, null, null },
100226 .src_constraints = .{ .{ .float = .dword }, .any, .any },
101818 .required_features = .{ .@"64bit", .sse2, null, null },
101819 .src_constraints = .{ .{ .float = .qword }, .any, .any },
100227101820 .dst_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any },
100228101821 .patterns = &.{
100229101822 .{ .src = .{ .mem, .none, .none } },
......@@ -100231,20 +101824,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100231101824 },
100232101825 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
100233101826 .each = .{ .once = &.{
100234 .{ ._, ._, .cvttss2si, .dst0q, .src0d, ._, ._ },
101827 .{ ._, ._, .cvttsd2si, .dst0q, .src0q, ._, ._ },
101828 } },
101829 }, .{
101830 .required_features = .{ .x87, null, null, null },
101831 .src_constraints = .{ .{ .float = .qword }, .any, .any },
101832 .dst_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any },
101833 .patterns = &.{
101834 .{ .src = .{ .to_mem, .none, .none } },
101835 },
101836 .extra_temps = .{
101837 .{ .type = .f64, .kind = .{ .reg = .st7 } },
101838 .unused,
101839 .unused,
101840 .unused,
101841 .unused,
101842 .unused,
101843 .unused,
101844 .unused,
101845 .unused,
101846 .unused,
101847 .unused,
101848 },
101849 .dst_temps = .{ .mem, .unused },
101850 .each = .{ .once = &.{
101851 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
101852 .{ ._, .fi_p, .stt, .dst0q, ._, ._, ._ },
100235101853 } },
100236101854 }, .{
100237101855 .required_features = .{ .@"64bit", .avx, null, null },
100238 .src_constraints = .{ .{ .float = .dword }, .any, .any },
101856 .src_constraints = .{ .{ .float = .qword }, .any, .any },
100239101857 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },
100240101858 .patterns = &.{
100241101859 .{ .src = .{ .to_sse, .none, .none } },
100242101860 },
100243101861 .extra_temps = .{
100244 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
101862 .{ .type = .f64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
100245101863 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
100246101864 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
100247 .{ .type = .f32, .kind = .{ .@"0x1p63_mem" = .{} } },
101865 .{ .type = .f64, .kind = .{ .@"0x1p63_mem" = .{} } },
100248101866 .unused,
100249101867 .unused,
100250101868 .unused,
......@@ -100257,17 +101875,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100257101875 .clobbers = .{ .eflags = true },
100258101876 .each = .{ .once = &.{
100259101877 .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ },
100260 .{ ._, .v_, .cvttss2si, .tmp2q, .src0d, ._, ._ },
100261 .{ ._, .v_ss, .sub, .tmp0x, .src0x, .lea(.tmp1d), ._ },
100262 .{ ._, .v_, .cvttss2si, .dst0q, .tmp0d, ._, ._ },
101878 .{ ._, .v_, .cvttsd2si, .tmp2q, .src0d, ._, ._ },
101879 .{ ._, .v_sd, .sub, .tmp0x, .src0x, .lea(.tmp1q), ._ },
101880 .{ ._, .v_, .cvttsd2si, .dst0q, .tmp0d, ._, ._ },
100263101881 .{ ._, ._, .mov, .tmp1q, .tmp2q, ._, ._ },
100264101882 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },
100265101883 .{ ._, ._, .@"and", .dst0q, .tmp2q, ._, ._ },
100266101884 .{ ._, ._, .@"or", .dst0q, .tmp1q, ._, ._ },
100267101885 } },
100268101886 }, .{
100269 .required_features = .{ .@"64bit", .sse, null, null },
100270 .src_constraints = .{ .{ .float = .dword }, .any, .any },
101887 .required_features = .{ .@"64bit", .sse2, null, null },
101888 .src_constraints = .{ .{ .float = .qword }, .any, .any },
100271101889 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },
100272101890 .patterns = &.{
100273101891 .{ .src = .{ .to_mut_sse, .none, .none } },
......@@ -100275,7 +101893,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100275101893 .extra_temps = .{
100276101894 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
100277101895 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
100278 .{ .type = .f32, .kind = .{ .@"0x1p63_mem" = .{} } },
101896 .{ .type = .f64, .kind = .{ .@"0x1p63_mem" = .{} } },
100279101897 .unused,
100280101898 .unused,
100281101899 .unused,
......@@ -100289,24 +101907,59 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100289101907 .clobbers = .{ .eflags = true },
100290101908 .each = .{ .once = &.{
100291101909 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
100292 .{ ._, ._, .cvttss2si, .tmp1q, .src0d, ._, ._ },
100293 .{ ._, ._ss, .sub, .src0x, .lea(.tmp0d), ._, ._ },
100294 .{ ._, ._, .cvttss2si, .dst0q, .src0d, ._, ._ },
101910 .{ ._, ._, .cvttsd2si, .tmp1q, .src0d, ._, ._ },
101911 .{ ._, ._sd, .sub, .src0x, .lea(.tmp0q), ._, ._ },
101912 .{ ._, ._, .cvttsd2si, .dst0q, .src0d, ._, ._ },
100295101913 .{ ._, ._, .mov, .tmp0q, .tmp1q, ._, ._ },
100296101914 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
100297101915 .{ ._, ._, .@"and", .dst0q, .tmp1q, ._, ._ },
100298101916 .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ },
100299101917 } },
101918 }, .{
101919 .required_features = .{ .@"64bit", .x87, null, null },
101920 .src_constraints = .{ .{ .float = .qword }, .any, .any },
101921 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },
101922 .patterns = &.{
101923 .{ .src = .{ .to_mem, .none, .none } },
101924 },
101925 .extra_temps = .{
101926 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
101927 .{ .type = .f32, .kind = .{ .@"0x1p63_mem" = .{} } },
101928 .{ .type = .f64, .kind = .{ .reg = .st6 } },
101929 .{ .type = .f64, .kind = .{ .reg = .st7 } },
101930 .{ .type = .i64, .kind = .mem },
101931 .unused,
101932 .unused,
101933 .unused,
101934 .unused,
101935 .unused,
101936 .unused,
101937 },
101938 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
101939 .clobbers = .{ .eflags = true },
101940 .each = .{ .once = &.{
101941 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
101942 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
101943 .{ ._, .f_, .ld, .tmp3t, ._, ._, ._ },
101944 .{ ._, .fi_p, .stt, .tmp4q, ._, ._, ._ },
101945 .{ ._, ._, .mov, .dst0q, .tmp4q, ._, ._ },
101946 .{ ._, .f_, .sub, .lea(.tmp0d), ._, ._, ._ },
101947 .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ },
101948 .{ ._, .fi_p, .stt, .tmp4q, ._, ._, ._ },
101949 .{ ._, ._r, .sa, .dst0q, .ui(63), ._, ._ },
101950 .{ ._, ._, .@"and", .dst0q, .tmp4q, ._, ._ },
101951 .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ },
101952 } },
100300101953 }, .{
100301101954 .required_features = .{ .@"64bit", .sse, null, null },
100302 .src_constraints = .{ .{ .float = .dword }, .any, .any },
101955 .src_constraints = .{ .{ .float = .qword }, .any, .any },
100303101956 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
100304101957 .patterns = &.{
100305101958 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
100306101959 },
100307101960 .call_frame = .{ .alignment = .@"16" },
100308101961 .extra_temps = .{
100309 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } },
101962 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },
100310101963 .unused,
100311101964 .unused,
100312101965 .unused,
......@@ -100325,14 +101978,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100325101978 } },
100326101979 }, .{
100327101980 .required_features = .{ .@"64bit", .sse, null, null },
100328 .src_constraints = .{ .{ .float = .dword }, .any, .any },
101981 .src_constraints = .{ .{ .float = .qword }, .any, .any },
100329101982 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
100330101983 .patterns = &.{
100331101984 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
100332101985 },
100333101986 .call_frame = .{ .alignment = .@"16" },
100334101987 .extra_temps = .{
100335 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
101988 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },
100336101989 .unused,
100337101990 .unused,
100338101991 .unused,
......@@ -100350,62 +102003,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100350102003 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
100351102004 } },
100352102005 }, .{
100353 .required_features = .{ .@"64bit", .avx, null, null },
100354 .src_constraints = .{ .{ .float = .dword }, .any, .any },
100355 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
102006 .required_features = .{ .@"64bit", .sse, null, null },
102007 .src_constraints = .{ .{ .float = .qword }, .any, .any },
102008 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
100356102009 .patterns = &.{
100357102010 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
100358102011 },
100359102012 .call_frame = .{ .alignment = .@"16" },
100360102013 .extra_temps = .{
100361 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
100362 .{ .type = .i64, .kind = .{ .reg = .rax } },
100363 .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },
100364 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
100365 .{ .type = .i64, .kind = .{ .reg = .rdx } },
100366102014 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100367 .{ .type = .u32, .kind = .{ .reg = .ecx } },
102015 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102016 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },
100368102017 .unused,
100369102018 .unused,
100370102019 .unused,
100371102020 .unused,
100372 },
100373 .dst_temps = .{ .mem, .unused },
100374 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100375 .each = .{ .once = &.{
100376 .{ ._, .v_d, .mov, .tmp0d, .src0x, ._, ._ },
100377 .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ },
100378 .{ ._, ._d, .movsx, .tmp0q, .tmp0d, ._, ._ },
100379 .{ ._, .v_ps, .@"and", .src0x, .src0x, .lea(.tmp1x), ._ },
100380 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
100381 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
100382 .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
100383 .{ ._, ._, .xor, .tmp4q, .tmp0q, ._, ._ },
100384 .{ ._, ._, .sub, .tmp1q, .tmp0q, ._, ._ },
100385 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
100386 .{ ._, ._, .sbb, .tmp4q, .tmp0q, ._, ._ },
100387 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp4q, ._, ._ },
100388 .{ ._, ._, .sbb, .tmp1q, .tmp1q, ._, ._ },
100389 .{ ._, ._, .lea, .tmp5p, .memd(.dst0, 16), ._, ._ },
100390 .{ ._, ._, .mov, .tmp6d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
100391 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
100392 } },
100393 }, .{
100394 .required_features = .{ .@"64bit", .sse2, null, null },
100395 .src_constraints = .{ .{ .float = .dword }, .any, .any },
100396 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
100397 .patterns = &.{
100398 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
100399 },
100400 .call_frame = .{ .alignment = .@"16" },
100401 .extra_temps = .{
100402 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
100403 .{ .type = .i64, .kind = .{ .reg = .rax } },
100404 .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },
100405 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
100406 .{ .type = .i64, .kind = .{ .reg = .rdx } },
100407 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100408 .{ .type = .u32, .kind = .{ .reg = .ecx } },
100409102021 .unused,
100410102022 .unused,
100411102023 .unused,
......@@ -100414,39 +102026,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100414102026 .dst_temps = .{ .mem, .unused },
100415102027 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100416102028 .each = .{ .once = &.{
100417 .{ ._, ._d, .mov, .tmp0d, .src0x, ._, ._ },
100418 .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ },
100419 .{ ._, ._d, .movsx, .tmp0q, .tmp0d, ._, ._ },
100420 .{ ._, ._ps, .@"and", .src0x, .lea(.tmp1x), ._, ._ },
100421 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
100422 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
100423 .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
100424 .{ ._, ._, .xor, .tmp4q, .tmp0q, ._, ._ },
100425 .{ ._, ._, .sub, .tmp1q, .tmp0q, ._, ._ },
100426 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
100427 .{ ._, ._, .sbb, .tmp4q, .tmp0q, ._, ._ },
100428 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp4q, ._, ._ },
100429 .{ ._, ._, .sbb, .tmp1q, .tmp1q, ._, ._ },
100430 .{ ._, ._, .lea, .tmp5p, .memd(.dst0, 16), ._, ._ },
100431 .{ ._, ._, .mov, .tmp6d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
100432 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
102029 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
102030 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
102031 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100433102032 } },
100434102033 }, .{
100435102034 .required_features = .{ .@"64bit", .sse, null, null },
100436 .src_constraints = .{ .{ .float = .dword }, .any, .any },
100437 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
102035 .src_constraints = .{ .{ .float = .qword }, .any, .any },
102036 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
100438102037 .patterns = &.{
100439 .{ .src = .{ .to_mem, .none, .none } },
102038 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
100440102039 },
100441102040 .call_frame = .{ .alignment = .@"16" },
100442102041 .extra_temps = .{
100443 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
100444 .{ .type = .i64, .kind = .{ .reg = .rax } },
100445 .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },
100446 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
100447 .{ .type = .u32, .kind = .{ .reg = .ecx } },
100448 .{ .type = .i64, .kind = .{ .reg = .rdx } },
100449102042 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102043 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102044 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },
102045 .unused,
102046 .unused,
102047 .unused,
102048 .unused,
100450102049 .unused,
100451102050 .unused,
100452102051 .unused,
......@@ -100455,37 +102054,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100455102054 .dst_temps = .{ .mem, .unused },
100456102055 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100457102056 .each = .{ .once = &.{
100458 .{ ._, ._ss, .mov, .tmp0x, .src0d, ._, ._ },
100459 .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ },
100460 .{ ._, ._ps, .@"and", .tmp0x, .lea(.tmp1x), ._, ._ },
100461 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
100462 .{ ._, ._d, .movsx, .tmp4q, .src0d, ._, ._ },
100463 .{ ._, ._r, .sa, .tmp4q, .ui(63), ._, ._ },
100464 .{ ._, ._, .xor, .tmp1q, .tmp4q, ._, ._ },
100465 .{ ._, ._, .xor, .tmp5q, .tmp4q, ._, ._ },
100466 .{ ._, ._, .sub, .tmp1q, .tmp4q, ._, ._ },
100467 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
100468 .{ ._, ._, .sbb, .tmp5q, .tmp4q, ._, ._ },
100469 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp5q, ._, ._ },
100470 .{ ._, ._, .sbb, .tmp1q, .tmp1q, ._, ._ },
100471 .{ ._, ._, .lea, .tmp6p, .memd(.dst0, 16), ._, ._ },
100472 .{ ._, ._, .mov, .tmp4d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
100473 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
102057 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
102058 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
102059 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100474102060 } },
100475102061 }, .{
100476 .required_features = .{ .@"64bit", .sse, null, null },
100477 .src_constraints = .{ .{ .float = .dword }, .any, .any },
100478 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
102062 .required_features = .{ .avx, null, null, null },
102063 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102064 .dst_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any },
100479102065 .patterns = &.{
100480 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
102066 .{ .src = .{ .mem, .none, .none } },
102067 .{ .src = .{ .to_sse, .none, .none } },
100481102068 },
100482 .call_frame = .{ .alignment = .@"16" },
100483102069 .extra_temps = .{
100484 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
100485 .{ .type = .i64, .kind = .{ .reg = .rax } },
100486 .{ .type = .i64, .kind = .{ .reg = .rdx } },
100487 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100488 .{ .type = .u32, .kind = .{ .reg = .ecx } },
102070 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
102071 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
102072 .unused,
102073 .unused,
102074 .unused,
100489102075 .unused,
100490102076 .unused,
100491102077 .unused,
......@@ -100493,21 +102079,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100493102079 .unused,
100494102080 .unused,
100495102081 },
100496 .dst_temps = .{ .mem, .unused },
100497 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102082 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
100498102083 .each = .{ .once = &.{
100499 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
100500 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
100501 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp2q, ._, ._ },
100502 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
100503 .{ ._, ._, .lea, .tmp3p, .memd(.dst0, 16), ._, ._ },
100504 .{ ._, ._, .mov, .tmp4d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
100505 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
102084 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
102085 .{ ._, .v_, .cvttpd2dq, .dst0x, .src0x, ._, ._ },
102086 .{ ._, .vp_b, .shuf, .dst0x, .dst0x, .lea(.tmp0x), ._ },
100506102087 } },
100507102088 }, .{
100508 .required_features = .{ .avx, null, null, null },
100509 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
100510 .dst_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },
102089 .required_features = .{ .ssse3, null, null, null },
102090 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102091 .dst_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any },
100511102092 .patterns = &.{
100512102093 .{ .src = .{ .mem, .none, .none } },
100513102094 .{ .src = .{ .to_sse, .none, .none } },
......@@ -100528,12 +102109,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100528102109 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
100529102110 .each = .{ .once = &.{
100530102111 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
100531 .{ ._, .v_, .cvttps2dq, .dst0x, .src0x, ._, ._ },
100532 .{ ._, .vp_b, .shuf, .dst0x, .dst0x, .lea(.tmp0x), ._ },
102112 .{ ._, ._, .cvttpd2dq, .dst0x, .src0x, ._, ._ },
102113 .{ ._, .p_b, .shuf, .dst0x, .lea(.tmp0x), ._, ._ },
100533102114 } },
100534102115 }, .{
100535 .required_features = .{ .ssse3, null, null, null },
100536 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
102116 .required_features = .{ .avx, null, null, null },
102117 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
100537102118 .dst_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },
100538102119 .patterns = &.{
100539102120 .{ .src = .{ .mem, .none, .none } },
......@@ -100555,12 +102136,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100555102136 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
100556102137 .each = .{ .once = &.{
100557102138 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
100558 .{ ._, ._, .cvttps2dq, .dst0x, .src0x, ._, ._ },
100559 .{ ._, .p_b, .shuf, .dst0x, .lea(.tmp0x), ._, ._ },
102139 .{ ._, .v_, .cvttpd2dq, .dst0x, .src0y, ._, ._ },
102140 .{ ._, .vp_b, .shuf, .dst0x, .dst0x, .lea(.tmp0x), ._ },
100560102141 } },
100561102142 }, .{
100562102143 .required_features = .{ .avx, null, null, null },
100563 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
102144 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
100564102145 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },
100565102146 .patterns = &.{
100566102147 .{ .src = .{ .to_mem, .none, .none } },
......@@ -100579,11 +102160,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100579102160 .unused,
100580102161 },
100581102162 .dst_temps = .{ .mem, .unused },
102163 .clobbers = .{ .eflags = true },
100582102164 .each = .{ .once = &.{
100583102165 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
100584102166 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
100585102167 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
100586 .{ .@"0:", .v_, .cvttps2dq, .tmp3x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
102168 .{ .@"0:", .v_, .cvttpd2dq, .tmp3x, .memsia(.src0y, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
100587102169 .{ ._, .vp_b, .shuf, .tmp3x, .tmp3x, .tmp2x, ._ },
100588102170 .{ ._, .v_d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
100589102171 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
......@@ -100591,8 +102173,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100591102173 } },
100592102174 }, .{
100593102175 .required_features = .{ .ssse3, null, null, null },
100594 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
100595 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },
102176 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102177 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any },
100596102178 .patterns = &.{
100597102179 .{ .src = .{ .to_mem, .none, .none } },
100598102180 },
......@@ -100610,19 +102192,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100610102192 .unused,
100611102193 },
100612102194 .dst_temps = .{ .mem, .unused },
102195 .clobbers = .{ .eflags = true },
100613102196 .each = .{ .once = &.{
100614102197 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
100615102198 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
100616102199 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
100617 .{ .@"0:", ._, .cvttps2dq, .tmp3x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
102200 .{ .@"0:", ._, .cvttpd2dq, .tmp3x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
100618102201 .{ ._, .p_b, .shuf, .tmp3x, .tmp2x, ._, ._ },
100619102202 .{ ._, ._d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
100620 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
102203 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100621102204 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100622102205 } },
100623102206 }, .{
100624 .required_features = .{ .sse, .slow_incdec, null, null },
100625 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
102207 .required_features = .{ .sse2, .slow_incdec, null, null },
102208 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
100626102209 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
100627102210 .patterns = &.{
100628102211 .{ .src = .{ .to_mem, .none, .none } },
......@@ -100641,16 +102224,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100641102224 .unused,
100642102225 },
100643102226 .dst_temps = .{ .mem, .unused },
102227 .clobbers = .{ .eflags = true },
100644102228 .each = .{ .once = &.{
100645102229 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
100646 .{ .@"0:", ._, .cvttss2si, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
102230 .{ .@"0:", ._, .cvttsd2si, .tmp1d, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
100647102231 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
100648102232 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
100649102233 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100650102234 } },
100651102235 }, .{
100652 .required_features = .{ .sse, null, null, null },
100653 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
102236 .required_features = .{ .sse2, null, null, null },
102237 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
100654102238 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
100655102239 .patterns = &.{
100656102240 .{ .src = .{ .to_mem, .none, .none } },
......@@ -100669,26 +102253,529 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100669102253 .unused,
100670102254 },
100671102255 .dst_temps = .{ .mem, .unused },
102256 .clobbers = .{ .eflags = true },
100672102257 .each = .{ .once = &.{
100673102258 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
100674 .{ .@"0:", ._, .cvttss2si, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
102259 .{ .@"0:", ._, .cvttsd2si, .tmp1d, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
100675102260 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
100676102261 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
102262 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102263 } },
102264 }, .{
102265 .required_features = .{ .x87, .slow_incdec, null, null },
102266 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102267 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
102268 .patterns = &.{
102269 .{ .src = .{ .to_mem, .none, .none } },
102270 },
102271 .extra_temps = .{
102272 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102273 .{ .type = .f64, .kind = .{ .reg = .st7 } },
102274 .{ .type = .i16, .kind = .mem },
102275 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
102276 .unused,
102277 .unused,
102278 .unused,
102279 .unused,
102280 .unused,
102281 .unused,
102282 .unused,
102283 },
102284 .dst_temps = .{ .mem, .unused },
102285 .each = .{ .once = &.{
102286 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102287 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
102288 .{ ._, .fi_p, .stt, .tmp2w, ._, ._, ._ },
102289 .{ ._, ._, .movzx, .tmp3d, .tmp2b, ._, ._ },
102290 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
102291 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
102292 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102293 } },
102294 }, .{
102295 .required_features = .{ .x87, null, null, null },
102296 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102297 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
102298 .patterns = &.{
102299 .{ .src = .{ .to_mem, .none, .none } },
102300 },
102301 .extra_temps = .{
102302 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102303 .{ .type = .f64, .kind = .{ .reg = .st7 } },
102304 .{ .type = .i16, .kind = .mem },
102305 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
102306 .unused,
102307 .unused,
102308 .unused,
102309 .unused,
102310 .unused,
102311 .unused,
102312 .unused,
102313 },
102314 .dst_temps = .{ .mem, .unused },
102315 .each = .{ .once = &.{
102316 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102317 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
102318 .{ ._, .fi_p, .stt, .tmp2w, ._, ._, ._ },
102319 .{ ._, ._, .movzx, .tmp3d, .tmp2b, ._, ._ },
102320 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
102321 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
100677102322 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
100678102323 } },
100679102324 }, .{
100680102325 .required_features = .{ .avx, .slow_incdec, null, null },
100681 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
102326 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102327 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
102328 .patterns = &.{
102329 .{ .src = .{ .to_mem, .none, .none } },
102330 },
102331 .call_frame = .{ .alignment = .@"16" },
102332 .extra_temps = .{
102333 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102334 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
102335 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
102336 .{ .type = .i32, .kind = .{ .reg = .eax } },
102337 .unused,
102338 .unused,
102339 .unused,
102340 .unused,
102341 .unused,
102342 .unused,
102343 .unused,
102344 },
102345 .dst_temps = .{ .mem, .unused },
102346 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102347 .each = .{ .once = &.{
102348 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102349 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
102350 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102351 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
102352 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
102353 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102354 } },
102355 }, .{
102356 .required_features = .{ .avx, null, null, null },
102357 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102358 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
102359 .patterns = &.{
102360 .{ .src = .{ .to_mem, .none, .none } },
102361 },
102362 .call_frame = .{ .alignment = .@"16" },
102363 .extra_temps = .{
102364 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102365 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
102366 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
102367 .{ .type = .i32, .kind = .{ .reg = .eax } },
102368 .unused,
102369 .unused,
102370 .unused,
102371 .unused,
102372 .unused,
102373 .unused,
102374 .unused,
102375 },
102376 .dst_temps = .{ .mem, .unused },
102377 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102378 .each = .{ .once = &.{
102379 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102380 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
102381 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102382 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
102383 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
102384 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
102385 } },
102386 }, .{
102387 .required_features = .{ .sse2, .slow_incdec, null, null },
102388 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102389 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
102390 .patterns = &.{
102391 .{ .src = .{ .to_mem, .none, .none } },
102392 },
102393 .call_frame = .{ .alignment = .@"16" },
102394 .extra_temps = .{
102395 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102396 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
102397 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
102398 .{ .type = .i32, .kind = .{ .reg = .eax } },
102399 .unused,
102400 .unused,
102401 .unused,
102402 .unused,
102403 .unused,
102404 .unused,
102405 .unused,
102406 },
102407 .dst_temps = .{ .mem, .unused },
102408 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102409 .each = .{ .once = &.{
102410 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102411 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
102412 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102413 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
102414 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
102415 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102416 } },
102417 }, .{
102418 .required_features = .{ .sse2, null, null, null },
102419 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102420 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
102421 .patterns = &.{
102422 .{ .src = .{ .to_mem, .none, .none } },
102423 },
102424 .call_frame = .{ .alignment = .@"16" },
102425 .extra_temps = .{
102426 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102427 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
102428 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
102429 .{ .type = .i32, .kind = .{ .reg = .eax } },
102430 .unused,
102431 .unused,
102432 .unused,
102433 .unused,
102434 .unused,
102435 .unused,
102436 .unused,
102437 },
102438 .dst_temps = .{ .mem, .unused },
102439 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102440 .each = .{ .once = &.{
102441 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102442 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
102443 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102444 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
102445 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
102446 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
102447 } },
102448 }, .{
102449 .required_features = .{ .sse, .slow_incdec, null, null },
102450 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102451 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
102452 .patterns = &.{
102453 .{ .src = .{ .to_mem, .none, .none } },
102454 },
102455 .call_frame = .{ .alignment = .@"16" },
102456 .extra_temps = .{
102457 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102458 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
102459 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
102460 .{ .type = .i32, .kind = .{ .reg = .eax } },
102461 .unused,
102462 .unused,
102463 .unused,
102464 .unused,
102465 .unused,
102466 .unused,
102467 .unused,
102468 },
102469 .dst_temps = .{ .mem, .unused },
102470 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102471 .each = .{ .once = &.{
102472 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102473 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
102474 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
102475 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102476 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
102477 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
102478 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102479 } },
102480 }, .{
102481 .required_features = .{ .sse, null, null, null },
102482 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
100682102483 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
100683102484 .patterns = &.{
100684102485 .{ .src = .{ .to_mem, .none, .none } },
100685102486 },
100686 .call_frame = .{ .alignment = .@"16" },
102487 .call_frame = .{ .alignment = .@"16" },
102488 .extra_temps = .{
102489 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102490 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
102491 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
102492 .{ .type = .i32, .kind = .{ .reg = .eax } },
102493 .unused,
102494 .unused,
102495 .unused,
102496 .unused,
102497 .unused,
102498 .unused,
102499 .unused,
102500 },
102501 .dst_temps = .{ .mem, .unused },
102502 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102503 .each = .{ .once = &.{
102504 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102505 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
102506 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
102507 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102508 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
102509 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
102510 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
102511 } },
102512 }, .{
102513 .required_features = .{ .avx, null, null, null },
102514 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102515 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
102516 .patterns = &.{
102517 .{ .src = .{ .mem, .none, .none } },
102518 .{ .src = .{ .to_sse, .none, .none } },
102519 },
102520 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
102521 .each = .{ .once = &.{
102522 .{ ._, .v_, .cvttpd2dq, .dst0x, .src0x, ._, ._ },
102523 .{ ._, .vp_w, .ackssd, .dst0x, .dst0x, .dst0x, ._ },
102524 } },
102525 }, .{
102526 .required_features = .{ .sse2, null, null, null },
102527 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102528 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
102529 .patterns = &.{
102530 .{ .src = .{ .mem, .none, .none } },
102531 .{ .src = .{ .to_sse, .none, .none } },
102532 },
102533 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
102534 .each = .{ .once = &.{
102535 .{ ._, ._, .cvttpd2dq, .dst0x, .src0x, ._, ._ },
102536 .{ ._, .p_w, .ackssd, .dst0x, .dst0x, ._, ._ },
102537 } },
102538 }, .{
102539 .required_features = .{ .avx, null, null, null },
102540 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
102541 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
102542 .patterns = &.{
102543 .{ .src = .{ .mem, .none, .none } },
102544 .{ .src = .{ .to_sse, .none, .none } },
102545 },
102546 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
102547 .each = .{ .once = &.{
102548 .{ ._, .v_, .cvttpd2dq, .dst0x, .src0y, ._, ._ },
102549 .{ ._, .vp_w, .ackssd, .dst0x, .dst0x, .dst0x, ._ },
102550 } },
102551 }, .{
102552 .required_features = .{ .avx, null, null, null },
102553 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102554 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any },
102555 .patterns = &.{
102556 .{ .src = .{ .mem, .none, .none } },
102557 .{ .src = .{ .to_sse, .none, .none } },
102558 },
102559 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
102560 .each = .{ .once = &.{
102561 .{ ._, .v_, .cvttpd2dq, .dst0x, .src0x, ._, ._ },
102562 .{ ._, .vp_w, .ackusd, .dst0x, .dst0x, .dst0x, ._ },
102563 } },
102564 }, .{
102565 .required_features = .{ .sse4_1, null, null, null },
102566 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102567 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any },
102568 .patterns = &.{
102569 .{ .src = .{ .mem, .none, .none } },
102570 .{ .src = .{ .to_sse, .none, .none } },
102571 },
102572 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
102573 .each = .{ .once = &.{
102574 .{ ._, ._, .cvttpd2dq, .dst0x, .src0x, ._, ._ },
102575 .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ },
102576 } },
102577 }, .{
102578 .required_features = .{ .avx, null, null, null },
102579 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
102580 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },
102581 .patterns = &.{
102582 .{ .src = .{ .mem, .none, .none } },
102583 .{ .src = .{ .to_sse, .none, .none } },
102584 },
102585 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
102586 .each = .{ .once = &.{
102587 .{ ._, .v_, .cvttpd2dq, .dst0x, .src0y, ._, ._ },
102588 .{ ._, .vp_w, .ackusd, .dst0x, .dst0x, .dst0x, ._ },
102589 } },
102590 }, .{
102591 .required_features = .{ .avx, null, null, null },
102592 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
102593 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
102594 .patterns = &.{
102595 .{ .src = .{ .to_mem, .none, .none } },
102596 },
102597 .extra_temps = .{
102598 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102599 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
102600 .unused,
102601 .unused,
102602 .unused,
102603 .unused,
102604 .unused,
102605 .unused,
102606 .unused,
102607 .unused,
102608 .unused,
102609 },
102610 .dst_temps = .{ .mem, .unused },
102611 .clobbers = .{ .eflags = true },
102612 .each = .{ .once = &.{
102613 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102614 .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsia(.src0y, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
102615 .{ ._, .vp_w, .ackssd, .tmp1x, .tmp1x, .tmp1x, ._ },
102616 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
102617 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
102618 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102619 } },
102620 }, .{
102621 .required_features = .{ .sse2, null, null, null },
102622 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102623 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
102624 .patterns = &.{
102625 .{ .src = .{ .to_mem, .none, .none } },
102626 },
102627 .extra_temps = .{
102628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102629 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
102630 .unused,
102631 .unused,
102632 .unused,
102633 .unused,
102634 .unused,
102635 .unused,
102636 .unused,
102637 .unused,
102638 .unused,
102639 },
102640 .dst_temps = .{ .mem, .unused },
102641 .clobbers = .{ .eflags = true },
102642 .each = .{ .once = &.{
102643 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102644 .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
102645 .{ ._, .p_w, .ackssd, .tmp1x, .tmp1x, ._, ._ },
102646 .{ ._, ._d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
102647 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
102648 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102649 } },
102650 }, .{
102651 .required_features = .{ .avx, null, null, null },
102652 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
102653 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },
102654 .patterns = &.{
102655 .{ .src = .{ .to_mem, .none, .none } },
102656 },
102657 .extra_temps = .{
102658 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102659 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
102660 .unused,
102661 .unused,
102662 .unused,
102663 .unused,
102664 .unused,
102665 .unused,
102666 .unused,
102667 .unused,
102668 .unused,
102669 },
102670 .dst_temps = .{ .mem, .unused },
102671 .clobbers = .{ .eflags = true },
102672 .each = .{ .once = &.{
102673 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102674 .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsia(.src0y, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
102675 .{ ._, .vp_w, .ackusd, .tmp1x, .tmp1x, .tmp1x, ._ },
102676 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
102677 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
102678 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102679 } },
102680 }, .{
102681 .required_features = .{ .sse4_1, null, null, null },
102682 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102683 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any },
102684 .patterns = &.{
102685 .{ .src = .{ .to_mem, .none, .none } },
102686 },
102687 .extra_temps = .{
102688 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102689 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
102690 .unused,
102691 .unused,
102692 .unused,
102693 .unused,
102694 .unused,
102695 .unused,
102696 .unused,
102697 .unused,
102698 .unused,
102699 },
102700 .dst_temps = .{ .mem, .unused },
102701 .clobbers = .{ .eflags = true },
102702 .each = .{ .once = &.{
102703 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102704 .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
102705 .{ ._, .p_w, .ackusd, .tmp1x, .tmp1x, ._, ._ },
102706 .{ ._, ._d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
102707 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
102708 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102709 } },
102710 }, .{
102711 .required_features = .{ .sse2, null, null, null },
102712 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102713 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
102714 .patterns = &.{
102715 .{ .src = .{ .to_mem, .none, .none } },
102716 },
102717 .extra_temps = .{
102718 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102719 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
102720 .unused,
102721 .unused,
102722 .unused,
102723 .unused,
102724 .unused,
102725 .unused,
102726 .unused,
102727 .unused,
102728 .unused,
102729 },
102730 .dst_temps = .{ .mem, .unused },
102731 .clobbers = .{ .eflags = true },
102732 .each = .{ .once = &.{
102733 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102734 .{ .@"0:", ._, .cvttsd2si, .tmp1d, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
102735 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
102736 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
102737 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102738 } },
102739 }, .{
102740 .required_features = .{ .x87, null, null, null },
102741 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102742 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
102743 .patterns = &.{
102744 .{ .src = .{ .to_mem, .none, .none } },
102745 },
102746 .extra_temps = .{
102747 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102748 .{ .type = .f64, .kind = .{ .reg = .st7 } },
102749 .unused,
102750 .unused,
102751 .unused,
102752 .unused,
102753 .unused,
102754 .unused,
102755 .unused,
102756 .unused,
102757 .unused,
102758 },
102759 .dst_temps = .{ .mem, .unused },
102760 .each = .{ .once = &.{
102761 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102762 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
102763 .{ ._, .fi_p, .stt, .memia(.dst0w, .tmp0, .add_unaligned_size), ._, ._, ._ },
102764 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
102765 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102766 } },
102767 }, .{
102768 .required_features = .{ .x87, null, null, null },
102769 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102770 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
102771 .patterns = &.{
102772 .{ .src = .{ .to_mem, .none, .none } },
102773 },
100687102774 .extra_temps = .{
100688102775 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100689 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
100690 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
100691 .{ .type = .i32, .kind = .{ .reg = .eax } },
102776 .{ .type = .f64, .kind = .{ .reg = .st7 } },
102777 .{ .type = .i32, .kind = .mem },
102778 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
100692102779 .unused,
100693102780 .unused,
100694102781 .unused,
......@@ -100698,27 +102785,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100698102785 .unused,
100699102786 },
100700102787 .dst_temps = .{ .mem, .unused },
100701 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100702102788 .each = .{ .once = &.{
100703102789 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
100704 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
100705 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100706 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
100707 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
102790 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
102791 .{ ._, .fi_p, .stt, .tmp2d, ._, ._, ._ },
102792 .{ ._, ._, .mov, .tmp3d, .tmp2d, ._, ._ },
102793 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
102794 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100708102795 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100709102796 } },
100710102797 }, .{
100711102798 .required_features = .{ .avx, null, null, null },
100712 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
100713 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
102799 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102800 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
100714102801 .patterns = &.{
100715102802 .{ .src = .{ .to_mem, .none, .none } },
100716102803 },
100717102804 .call_frame = .{ .alignment = .@"16" },
100718102805 .extra_temps = .{
100719102806 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100720 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
100721 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
102807 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
102808 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
100722102809 .{ .type = .i32, .kind = .{ .reg = .eax } },
100723102810 .unused,
100724102811 .unused,
......@@ -100732,24 +102819,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100732102819 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100733102820 .each = .{ .once = &.{
100734102821 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
100735 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
102822 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
100736102823 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100737 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
100738 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
100739 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
102824 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
102825 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
102826 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100740102827 } },
100741102828 }, .{
100742 .required_features = .{ .sse, .slow_incdec, null, null },
100743 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
100744 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
102829 .required_features = .{ .sse2, null, null, null },
102830 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102831 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
100745102832 .patterns = &.{
100746102833 .{ .src = .{ .to_mem, .none, .none } },
100747102834 },
100748102835 .call_frame = .{ .alignment = .@"16" },
100749102836 .extra_temps = .{
100750102837 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100751 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
100752 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
102838 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
102839 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
100753102840 .{ .type = .i32, .kind = .{ .reg = .eax } },
100754102841 .unused,
100755102842 .unused,
......@@ -100763,24 +102850,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100763102850 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100764102851 .each = .{ .once = &.{
100765102852 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
100766 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
102853 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
100767102854 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100768 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
100769 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
102855 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
102856 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100770102857 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100771102858 } },
100772102859 }, .{
100773102860 .required_features = .{ .sse, null, null, null },
100774 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
100775 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
102861 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102862 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
100776102863 .patterns = &.{
100777102864 .{ .src = .{ .to_mem, .none, .none } },
100778102865 },
100779102866 .call_frame = .{ .alignment = .@"16" },
100780102867 .extra_temps = .{
100781102868 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100782 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
100783 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
102869 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
102870 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
100784102871 .{ .type = .i32, .kind = .{ .reg = .eax } },
100785102872 .unused,
100786102873 .unused,
......@@ -100794,74 +102881,59 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100794102881 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100795102882 .each = .{ .once = &.{
100796102883 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
100797 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
102884 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
102885 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
100798102886 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100799 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
100800 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
100801 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
102887 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
102888 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
102889 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100802102890 } },
100803102891 }, .{
100804102892 .required_features = .{ .avx, null, null, null },
100805 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
100806 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
102893 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102894 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },
100807102895 .patterns = &.{
100808102896 .{ .src = .{ .mem, .none, .none } },
100809102897 .{ .src = .{ .to_sse, .none, .none } },
100810102898 },
100811102899 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
100812102900 .each = .{ .once = &.{
100813 .{ ._, .v_, .cvttps2dq, .dst0x, .src0x, ._, ._ },
100814 .{ ._, .vp_w, .ackssd, .dst0x, .dst0x, .dst0x, ._ },
102901 .{ ._, .v_, .cvttpd2dq, .dst0x, .src0x, ._, ._ },
100815102902 } },
100816102903 }, .{
100817102904 .required_features = .{ .sse2, null, null, null },
100818 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
100819 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
102905 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102906 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },
100820102907 .patterns = &.{
100821102908 .{ .src = .{ .mem, .none, .none } },
100822102909 .{ .src = .{ .to_sse, .none, .none } },
100823102910 },
100824102911 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
100825102912 .each = .{ .once = &.{
100826 .{ ._, ._, .cvttps2dq, .dst0x, .src0x, ._, ._ },
100827 .{ ._, .p_w, .ackssd, .dst0x, .dst0x, ._, ._ },
102913 .{ ._, ._, .cvttpd2dq, .dst0x, .src0x, ._, ._ },
100828102914 } },
100829102915 }, .{
100830102916 .required_features = .{ .avx, null, null, null },
100831 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
100832 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },
100833 .patterns = &.{
100834 .{ .src = .{ .mem, .none, .none } },
100835 .{ .src = .{ .to_sse, .none, .none } },
100836 },
100837 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
100838 .each = .{ .once = &.{
100839 .{ ._, .v_, .cvttps2dq, .dst0x, .src0x, ._, ._ },
100840 .{ ._, .vp_w, .ackusd, .dst0x, .dst0x, .dst0x, ._ },
100841 } },
100842 }, .{
100843 .required_features = .{ .sse4_1, null, null, null },
100844 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
100845 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },
102917 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
102918 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
100846102919 .patterns = &.{
100847102920 .{ .src = .{ .mem, .none, .none } },
100848102921 .{ .src = .{ .to_sse, .none, .none } },
100849102922 },
100850102923 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
100851102924 .each = .{ .once = &.{
100852 .{ ._, ._, .cvttps2dq, .dst0x, .src0x, ._, ._ },
100853 .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ },
102925 .{ ._, .v_, .cvttpd2dq, .dst0x, .src0y, ._, ._ },
100854102926 } },
100855102927 }, .{
100856102928 .required_features = .{ .avx, null, null, null },
100857 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
100858 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
102929 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
102930 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
100859102931 .patterns = &.{
100860102932 .{ .src = .{ .to_mem, .none, .none } },
100861102933 },
100862102934 .extra_temps = .{
100863102935 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100864 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
102936 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
100865102937 .unused,
100866102938 .unused,
100867102939 .unused,
......@@ -100873,24 +102945,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100873102945 .unused,
100874102946 },
100875102947 .dst_temps = .{ .mem, .unused },
102948 .clobbers = .{ .eflags = true },
100876102949 .each = .{ .once = &.{
100877102950 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
100878 .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
100879 .{ ._, .vp_w, .ackssd, .tmp1x, .tmp1x, .tmp1x, ._ },
100880 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
100881 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
102951 .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
102952 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
102953 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
100882102954 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100883102955 } },
100884102956 }, .{
100885102957 .required_features = .{ .sse2, null, null, null },
100886 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
100887 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
102958 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102959 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },
100888102960 .patterns = &.{
100889102961 .{ .src = .{ .to_mem, .none, .none } },
100890102962 },
100891102963 .extra_temps = .{
100892102964 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100893 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
102965 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
100894102966 .unused,
100895102967 .unused,
100896102968 .unused,
......@@ -100902,24 +102974,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100902102974 .unused,
100903102975 },
100904102976 .dst_temps = .{ .mem, .unused },
102977 .clobbers = .{ .eflags = true },
100905102978 .each = .{ .once = &.{
100906102979 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
100907 .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
100908 .{ ._, .p_w, .ackssd, .tmp1x, .tmp1x, ._, ._ },
100909 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
102980 .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
102981 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
100910102982 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
100911102983 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100912102984 } },
100913102985 }, .{
100914 .required_features = .{ .avx, null, null, null },
100915 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
100916 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },
102986 .required_features = .{ .x87, null, null, null },
102987 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102988 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
100917102989 .patterns = &.{
100918102990 .{ .src = .{ .to_mem, .none, .none } },
100919102991 },
100920102992 .extra_temps = .{
100921102993 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100922 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
102994 .{ .type = .f64, .kind = .{ .reg = .st7 } },
100923102995 .unused,
100924102996 .unused,
100925102997 .unused,
......@@ -100933,24 +103005,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100933103005 .dst_temps = .{ .mem, .unused },
100934103006 .each = .{ .once = &.{
100935103007 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
100936 .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
100937 .{ ._, .vp_w, .ackusd, .tmp1x, .tmp1x, .tmp1x, ._ },
100938 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
100939 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103008 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
103009 .{ ._, .fi_p, .stt, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
103010 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
100940103011 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100941103012 } },
100942103013 }, .{
100943 .required_features = .{ .sse4_1, null, null, null },
100944 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
100945 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },
103014 .required_features = .{ .x87, null, null, null },
103015 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103016 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
100946103017 .patterns = &.{
100947103018 .{ .src = .{ .to_mem, .none, .none } },
100948103019 },
100949103020 .extra_temps = .{
100950103021 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100951 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
100952 .unused,
100953 .unused,
103022 .{ .type = .f64, .kind = .{ .reg = .st7 } },
103023 .{ .type = .i64, .kind = .mem },
103024 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100954103025 .unused,
100955103026 .unused,
100956103027 .unused,
......@@ -100962,24 +103033,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100962103033 .dst_temps = .{ .mem, .unused },
100963103034 .each = .{ .once = &.{
100964103035 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
100965 .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
100966 .{ ._, .p_w, .ackusd, .tmp1x, .tmp1x, ._, ._ },
100967 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
100968 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103036 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
103037 .{ ._, .fi_p, .stt, .tmp2q, ._, ._, ._ },
103038 .{ ._, ._, .mov, .tmp3d, .tmp2d, ._, ._ },
103039 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103040 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
100969103041 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100970103042 } },
100971103043 }, .{
100972103044 .required_features = .{ .avx, null, null, null },
100973 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
100974 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
103045 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103046 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
100975103047 .patterns = &.{
100976103048 .{ .src = .{ .to_mem, .none, .none } },
100977103049 },
100978103050 .call_frame = .{ .alignment = .@"16" },
100979103051 .extra_temps = .{
100980103052 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100981 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
100982 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
103053 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103054 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
100983103055 .{ .type = .i32, .kind = .{ .reg = .eax } },
100984103056 .unused,
100985103057 .unused,
......@@ -100993,25 +103065,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100993103065 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100994103066 .each = .{ .once = &.{
100995103067 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
100996 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
103068 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
100997103069 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100998 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
100999 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
103070 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103071 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
101000103072 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101001103073 } },
101002103074 }, .{
101003 .required_features = .{ .sse, null, null, null },
101004 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
101005 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
103075 .required_features = .{ .avx, null, null, null },
103076 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103077 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
101006103078 .patterns = &.{
101007103079 .{ .src = .{ .to_mem, .none, .none } },
101008103080 },
101009103081 .call_frame = .{ .alignment = .@"16" },
101010103082 .extra_temps = .{
101011103083 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101012 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101013 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
101014 .{ .type = .i32, .kind = .{ .reg = .eax } },
103084 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103085 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfsi" } } },
103086 .{ .type = .u32, .kind = .{ .reg = .eax } },
101015103087 .unused,
101016103088 .unused,
101017103089 .unused,
......@@ -101024,48 +103096,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101024103096 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101025103097 .each = .{ .once = &.{
101026103098 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101027 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
103099 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
101028103100 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101029 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
101030 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
103101 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103102 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
101031103103 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101032103104 } },
101033 }, .{
101034 .required_features = .{ .avx, null, null, null },
101035 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
101036 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
101037 .patterns = &.{
101038 .{ .src = .{ .mem, .none, .none } },
101039 .{ .src = .{ .to_sse, .none, .none } },
101040 },
101041 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
101042 .each = .{ .once = &.{
101043 .{ ._, .v_, .cvttps2dq, .dst0x, .src0x, ._, ._ },
101044 } },
101045103105 }, .{
101046103106 .required_features = .{ .sse2, null, null, null },
101047 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
101048 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
101049 .patterns = &.{
101050 .{ .src = .{ .mem, .none, .none } },
101051 .{ .src = .{ .to_sse, .none, .none } },
101052 },
101053 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
101054 .each = .{ .once = &.{
101055 .{ ._, ._, .cvttps2dq, .dst0x, .src0x, ._, ._ },
101056 } },
101057 }, .{
101058 .required_features = .{ .avx, null, null, null },
101059 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
101060 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
103107 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103108 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
101061103109 .patterns = &.{
101062103110 .{ .src = .{ .to_mem, .none, .none } },
101063103111 },
103112 .call_frame = .{ .alignment = .@"16" },
101064103113 .extra_temps = .{
101065103114 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101066 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
101067 .unused,
101068 .unused,
103115 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103116 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
103117 .{ .type = .i32, .kind = .{ .reg = .eax } },
101069103118 .unused,
101070103119 .unused,
101071103120 .unused,
......@@ -101075,25 +103124,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101075103124 .unused,
101076103125 },
101077103126 .dst_temps = .{ .mem, .unused },
103127 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101078103128 .each = .{ .once = &.{
101079 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101080 .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
101081 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
101082 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
103129 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103130 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
103131 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103132 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103133 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
101083103134 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101084103135 } },
101085103136 }, .{
101086103137 .required_features = .{ .sse2, null, null, null },
101087 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
101088 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
103138 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103139 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
101089103140 .patterns = &.{
101090103141 .{ .src = .{ .to_mem, .none, .none } },
101091103142 },
103143 .call_frame = .{ .alignment = .@"16" },
101092103144 .extra_temps = .{
101093103145 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101094 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
101095 .unused,
101096 .unused,
103146 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103147 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfsi" } } },
103148 .{ .type = .u32, .kind = .{ .reg = .eax } },
101097103149 .unused,
101098103150 .unused,
101099103151 .unused,
......@@ -101103,16 +103155,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101103103155 .unused,
101104103156 },
101105103157 .dst_temps = .{ .mem, .unused },
103158 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101106103159 .each = .{ .once = &.{
101107 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101108 .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
101109 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
101110 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
103160 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103161 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
103162 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103163 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103164 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
101111103165 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101112103166 } },
101113103167 }, .{
101114 .required_features = .{ .avx, null, null, null },
101115 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
103168 .required_features = .{ .sse, null, null, null },
103169 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101116103170 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
101117103171 .patterns = &.{
101118103172 .{ .src = .{ .to_mem, .none, .none } },
......@@ -101120,8 +103174,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101120103174 .call_frame = .{ .alignment = .@"16" },
101121103175 .extra_temps = .{
101122103176 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101123 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101124 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
103177 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103178 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
101125103179 .{ .type = .i32, .kind = .{ .reg = .eax } },
101126103180 .unused,
101127103181 .unused,
......@@ -101134,16 +103188,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101134103188 .dst_temps = .{ .mem, .unused },
101135103189 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101136103190 .each = .{ .once = &.{
101137 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101138 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
103191 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103192 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
103193 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
101139103194 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101140103195 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
101141103196 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
101142103197 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101143103198 } },
101144103199 }, .{
101145 .required_features = .{ .avx, null, null, null },
101146 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
103200 .required_features = .{ .sse, null, null, null },
103201 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101147103202 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
101148103203 .patterns = &.{
101149103204 .{ .src = .{ .to_mem, .none, .none } },
......@@ -101151,8 +103206,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101151103206 .call_frame = .{ .alignment = .@"16" },
101152103207 .extra_temps = .{
101153103208 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101154 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101155 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfsi" } } },
103209 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103210 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfsi" } } },
101156103211 .{ .type = .u32, .kind = .{ .reg = .eax } },
101157103212 .unused,
101158103213 .unused,
......@@ -101165,26 +103220,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101165103220 .dst_temps = .{ .mem, .unused },
101166103221 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101167103222 .each = .{ .once = &.{
101168 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101169 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
103223 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103224 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
103225 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
101170103226 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101171103227 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
101172103228 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
101173103229 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101174103230 } },
101175103231 }, .{
101176 .required_features = .{ .sse, null, null, null },
101177 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
101178 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
103232 .required_features = .{ .@"64bit", .avx, null, null },
103233 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103234 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
101179103235 .patterns = &.{
101180103236 .{ .src = .{ .to_mem, .none, .none } },
101181103237 },
101182 .call_frame = .{ .alignment = .@"16" },
101183103238 .extra_temps = .{
101184103239 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101185 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101186 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
101187 .{ .type = .i32, .kind = .{ .reg = .eax } },
103240 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
103241 .unused,
103242 .unused,
101188103243 .unused,
101189103244 .unused,
101190103245 .unused,
......@@ -101194,28 +103249,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101194103249 .unused,
101195103250 },
101196103251 .dst_temps = .{ .mem, .unused },
101197 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103252 .clobbers = .{ .eflags = true },
101198103253 .each = .{ .once = &.{
101199103254 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101200 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
101201 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101202 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
101203 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103255 .{ .@"0:", .v_, .cvttsd2si, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103256 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
103257 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101204103258 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101205103259 } },
101206103260 }, .{
101207 .required_features = .{ .sse, null, null, null },
101208 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
101209 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
103261 .required_features = .{ .@"64bit", .sse2, null, null },
103262 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103263 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
101210103264 .patterns = &.{
101211103265 .{ .src = .{ .to_mem, .none, .none } },
101212103266 },
101213 .call_frame = .{ .alignment = .@"16" },
101214103267 .extra_temps = .{
101215103268 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101216 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101217 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfsi" } } },
101218 .{ .type = .u32, .kind = .{ .reg = .eax } },
103269 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
103270 .unused,
103271 .unused,
101219103272 .unused,
101220103273 .unused,
101221103274 .unused,
......@@ -101225,25 +103278,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101225103278 .unused,
101226103279 },
101227103280 .dst_temps = .{ .mem, .unused },
101228 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103281 .clobbers = .{ .eflags = true },
101229103282 .each = .{ .once = &.{
101230103283 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101231 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
101232 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101233 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
101234 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103284 .{ .@"0:", ._, .cvttsd2si, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103285 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
103286 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101235103287 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101236103288 } },
101237103289 }, .{
101238 .required_features = .{ .@"64bit", .avx, null, null },
101239 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
103290 .required_features = .{ .x87, null, null, null },
103291 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101240103292 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
101241103293 .patterns = &.{
101242103294 .{ .src = .{ .to_mem, .none, .none } },
101243103295 },
101244103296 .extra_temps = .{
101245103297 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101246 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
103298 .{ .type = .f64, .kind = .{ .reg = .st7 } },
101247103299 .unused,
101248103300 .unused,
101249103301 .unused,
......@@ -101257,21 +103309,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101257103309 .dst_temps = .{ .mem, .unused },
101258103310 .each = .{ .once = &.{
101259103311 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101260 .{ .@"0:", .v_, .cvttss2si, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
101261 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
101262 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103312 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
103313 .{ ._, .fi_p, .stt, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
103314 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101263103315 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101264103316 } },
101265103317 }, .{
101266 .required_features = .{ .@"64bit", .sse, null, null },
101267 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
103318 .required_features = .{ .avx, null, null, null },
103319 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101268103320 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
101269103321 .patterns = &.{
101270103322 .{ .src = .{ .to_mem, .none, .none } },
101271103323 },
103324 .call_frame = .{ .alignment = .@"16" },
101272103325 .extra_temps = .{
101273103326 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101274 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
103327 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103328 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfdi" } } },
103329 .{ .type = .i64, .kind = .{ .reg = .rax } },
101275103330 .unused,
101276103331 .unused,
101277103332 .unused,
......@@ -101279,20 +103334,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101279103334 .unused,
101280103335 .unused,
101281103336 .unused,
103337 },
103338 .dst_temps = .{ .mem, .unused },
103339 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103340 .each = .{ .once = &.{
103341 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103342 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103343 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103344 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103345 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103346 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103347 } },
103348 }, .{
103349 .required_features = .{ .avx, null, null, null },
103350 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103351 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
103352 .patterns = &.{
103353 .{ .src = .{ .to_mem, .none, .none } },
103354 },
103355 .call_frame = .{ .alignment = .@"16" },
103356 .extra_temps = .{
103357 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103358 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103359 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfdi" } } },
103360 .{ .type = .u64, .kind = .{ .reg = .rax } },
103361 .unused,
103362 .unused,
103363 .unused,
103364 .unused,
103365 .unused,
101282103366 .unused,
101283103367 .unused,
101284103368 },
101285103369 .dst_temps = .{ .mem, .unused },
103370 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101286103371 .each = .{ .once = &.{
101287103372 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101288 .{ .@"0:", ._, .cvttss2si, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
101289 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
101290 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103373 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103374 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103375 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103376 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101291103377 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101292103378 } },
101293103379 }, .{
101294 .required_features = .{ .avx, null, null, null },
101295 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
103380 .required_features = .{ .sse2, null, null, null },
103381 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101296103382 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
101297103383 .patterns = &.{
101298103384 .{ .src = .{ .to_mem, .none, .none } },
......@@ -101300,8 +103386,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101300103386 .call_frame = .{ .alignment = .@"16" },
101301103387 .extra_temps = .{
101302103388 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101303 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101304 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfdi" } } },
103389 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103390 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfdi" } } },
101305103391 .{ .type = .i64, .kind = .{ .reg = .rax } },
101306103392 .unused,
101307103393 .unused,
......@@ -101315,15 +103401,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101315103401 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101316103402 .each = .{ .once = &.{
101317103403 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101318 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
103404 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
101319103405 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101320 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101321 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103406 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103407 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101322103408 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101323103409 } },
101324103410 }, .{
101325 .required_features = .{ .avx, null, null, null },
101326 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
103411 .required_features = .{ .sse2, null, null, null },
103412 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101327103413 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
101328103414 .patterns = &.{
101329103415 .{ .src = .{ .to_mem, .none, .none } },
......@@ -101331,8 +103417,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101331103417 .call_frame = .{ .alignment = .@"16" },
101332103418 .extra_temps = .{
101333103419 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101334 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101335 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfdi" } } },
103420 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103421 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfdi" } } },
101336103422 .{ .type = .u64, .kind = .{ .reg = .rax } },
101337103423 .unused,
101338103424 .unused,
......@@ -101346,15 +103432,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101346103432 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101347103433 .each = .{ .once = &.{
101348103434 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101349 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
103435 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
101350103436 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101351 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101352 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103437 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103438 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101353103439 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101354103440 } },
101355103441 }, .{
101356103442 .required_features = .{ .sse, null, null, null },
101357 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
103443 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101358103444 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
101359103445 .patterns = &.{
101360103446 .{ .src = .{ .to_mem, .none, .none } },
......@@ -101362,8 +103448,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101362103448 .call_frame = .{ .alignment = .@"16" },
101363103449 .extra_temps = .{
101364103450 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101365 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101366 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfdi" } } },
103451 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103452 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfdi" } } },
101367103453 .{ .type = .i64, .kind = .{ .reg = .rax } },
101368103454 .unused,
101369103455 .unused,
......@@ -101377,15 +103463,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101377103463 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101378103464 .each = .{ .once = &.{
101379103465 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101380 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
103466 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
103467 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
101381103468 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101382 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101383 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103469 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103470 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101384103471 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101385103472 } },
101386103473 }, .{
101387103474 .required_features = .{ .sse, null, null, null },
101388 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
103475 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101389103476 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
101390103477 .patterns = &.{
101391103478 .{ .src = .{ .to_mem, .none, .none } },
......@@ -101393,8 +103480,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101393103480 .call_frame = .{ .alignment = .@"16" },
101394103481 .extra_temps = .{
101395103482 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101396 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101397 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfdi" } } },
103483 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103484 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfdi" } } },
101398103485 .{ .type = .u64, .kind = .{ .reg = .rax } },
101399103486 .unused,
101400103487 .unused,
......@@ -101408,15 +103495,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101408103495 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101409103496 .each = .{ .once = &.{
101410103497 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101411 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
103498 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
103499 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
101412103500 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101413 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101414 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103501 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103502 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101415103503 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101416103504 } },
101417103505 }, .{
101418103506 .required_features = .{ .avx, null, null, null },
101419 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
103507 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101420103508 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
101421103509 .patterns = &.{
101422103510 .{ .src = .{ .to_mem, .none, .none } },
......@@ -101424,8 +103512,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101424103512 .call_frame = .{ .alignment = .@"16" },
101425103513 .extra_temps = .{
101426103514 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101427 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101428 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } },
103515 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103516 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },
101429103517 .{ .type = .u64, .kind = .{ .reg = .rax } },
101430103518 .{ .type = .i64, .kind = .{ .reg = .rdx } },
101431103519 .unused,
......@@ -101439,16 +103527,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101439103527 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101440103528 .each = .{ .once = &.{
101441103529 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101442 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
103530 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
101443103531 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101444 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101445 .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
101446 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103532 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103533 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
103534 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101447103535 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101448103536 } },
101449103537 }, .{
101450103538 .required_features = .{ .avx, null, null, null },
101451 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
103539 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101452103540 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
101453103541 .patterns = &.{
101454103542 .{ .src = .{ .to_mem, .none, .none } },
......@@ -101456,8 +103544,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101456103544 .call_frame = .{ .alignment = .@"16" },
101457103545 .extra_temps = .{
101458103546 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101459 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101460 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
103547 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103548 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },
101461103549 .{ .type = .u64, .kind = .{ .reg = .rax } },
101462103550 .{ .type = .u64, .kind = .{ .reg = .rdx } },
101463103551 .unused,
......@@ -101471,16 +103559,80 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101471103559 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101472103560 .each = .{ .once = &.{
101473103561 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101474 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
103562 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
101475103563 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101476 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101477 .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
101478 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103564 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103565 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
103566 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103567 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103568 } },
103569 }, .{
103570 .required_features = .{ .sse2, null, null, null },
103571 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103572 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
103573 .patterns = &.{
103574 .{ .src = .{ .to_mem, .none, .none } },
103575 },
103576 .call_frame = .{ .alignment = .@"16" },
103577 .extra_temps = .{
103578 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103579 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103580 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },
103581 .{ .type = .u64, .kind = .{ .reg = .rax } },
103582 .{ .type = .i64, .kind = .{ .reg = .rdx } },
103583 .unused,
103584 .unused,
103585 .unused,
103586 .unused,
103587 .unused,
103588 .unused,
103589 },
103590 .dst_temps = .{ .mem, .unused },
103591 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103592 .each = .{ .once = &.{
103593 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103594 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103595 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103596 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103597 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
103598 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103599 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103600 } },
103601 }, .{
103602 .required_features = .{ .sse2, null, null, null },
103603 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103604 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
103605 .patterns = &.{
103606 .{ .src = .{ .to_mem, .none, .none } },
103607 },
103608 .call_frame = .{ .alignment = .@"16" },
103609 .extra_temps = .{
103610 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103611 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103612 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },
103613 .{ .type = .u64, .kind = .{ .reg = .rax } },
103614 .{ .type = .u64, .kind = .{ .reg = .rdx } },
103615 .unused,
103616 .unused,
103617 .unused,
103618 .unused,
103619 .unused,
103620 .unused,
103621 },
103622 .dst_temps = .{ .mem, .unused },
103623 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103624 .each = .{ .once = &.{
103625 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103626 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103627 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103628 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103629 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
103630 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101479103631 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101480103632 } },
101481103633 }, .{
101482103634 .required_features = .{ .sse, null, null, null },
101483 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
103635 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101484103636 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
101485103637 .patterns = &.{
101486103638 .{ .src = .{ .to_mem, .none, .none } },
......@@ -101488,8 +103640,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101488103640 .call_frame = .{ .alignment = .@"16" },
101489103641 .extra_temps = .{
101490103642 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101491 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101492 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } },
103643 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103644 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },
101493103645 .{ .type = .u64, .kind = .{ .reg = .rax } },
101494103646 .{ .type = .i64, .kind = .{ .reg = .rdx } },
101495103647 .unused,
......@@ -101503,16 +103655,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101503103655 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101504103656 .each = .{ .once = &.{
101505103657 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101506 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
103658 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
103659 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
101507103660 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101508 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101509 .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
101510 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103661 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103662 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
103663 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101511103664 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101512103665 } },
101513103666 }, .{
101514103667 .required_features = .{ .sse, null, null, null },
101515 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
103668 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101516103669 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
101517103670 .patterns = &.{
101518103671 .{ .src = .{ .to_mem, .none, .none } },
......@@ -101520,8 +103673,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101520103673 .call_frame = .{ .alignment = .@"16" },
101521103674 .extra_temps = .{
101522103675 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101523 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101524 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
103676 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103677 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },
101525103678 .{ .type = .u64, .kind = .{ .reg = .rax } },
101526103679 .{ .type = .u64, .kind = .{ .reg = .rdx } },
101527103680 .unused,
......@@ -101535,16 +103688,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101535103688 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101536103689 .each = .{ .once = &.{
101537103690 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101538 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
103691 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
103692 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
101539103693 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101540 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101541 .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
101542 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103694 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103695 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
103696 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101543103697 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101544103698 } },
101545103699 }, .{
101546103700 .required_features = .{ .@"64bit", .avx, null, null },
101547 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
103701 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101548103702 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
101549103703 .patterns = &.{
101550103704 .{ .src = .{ .to_mem, .none, .none } },
......@@ -101555,8 +103709,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101555103709 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
101556103710 .{ .type = .usize, .kind = .{ .reg = .rdi } },
101557103711 .{ .type = .usize, .kind = .{ .reg = .rsi } },
101558 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101559 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfei" } } },
103712 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103713 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },
101560103714 .unused,
101561103715 .unused,
101562103716 .unused,
......@@ -101570,15 +103724,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101570103724 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
101571103725 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
101572103726 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
101573 .{ ._, .v_ss, .mov, .tmp4x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
103727 .{ ._, .v_sd, .mov, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
101574103728 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
101575103729 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
101576 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103730 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101577103731 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101578103732 } },
101579103733 }, .{
101580103734 .required_features = .{ .@"64bit", .avx, null, null },
101581 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
103735 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101582103736 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
101583103737 .patterns = &.{
101584103738 .{ .src = .{ .to_mem, .none, .none } },
......@@ -101589,8 +103743,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101589103743 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
101590103744 .{ .type = .usize, .kind = .{ .reg = .rdi } },
101591103745 .{ .type = .usize, .kind = .{ .reg = .rsi } },
101592 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101593 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfei" } } },
103746 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103747 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },
101594103748 .unused,
101595103749 .unused,
101596103750 .unused,
......@@ -101604,15 +103758,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101604103758 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
101605103759 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
101606103760 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
101607 .{ ._, .v_ss, .mov, .tmp4x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
103761 .{ ._, .v_sd, .mov, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
101608103762 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
101609103763 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
101610 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103764 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101611103765 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101612103766 } },
101613103767 }, .{
101614 .required_features = .{ .@"64bit", .sse, null, null },
101615 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
103768 .required_features = .{ .@"64bit", .sse2, null, null },
103769 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101616103770 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
101617103771 .patterns = &.{
101618103772 .{ .src = .{ .to_mem, .none, .none } },
......@@ -101623,8 +103777,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101623103777 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
101624103778 .{ .type = .usize, .kind = .{ .reg = .rdi } },
101625103779 .{ .type = .usize, .kind = .{ .reg = .rsi } },
101626 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101627 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfei" } } },
103780 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103781 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },
101628103782 .unused,
101629103783 .unused,
101630103784 .unused,
......@@ -101638,15 +103792,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101638103792 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
101639103793 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
101640103794 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
101641 .{ ._, ._ss, .mov, .tmp4x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
103795 .{ ._, ._sd, .mov, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
101642103796 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
101643103797 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
101644 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103798 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101645103799 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101646103800 } },
101647103801 }, .{
101648 .required_features = .{ .@"64bit", .sse, null, null },
101649 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
103802 .required_features = .{ .@"64bit", .sse2, null, null },
103803 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101650103804 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
101651103805 .patterns = &.{
101652103806 .{ .src = .{ .to_mem, .none, .none } },
......@@ -101657,8 +103811,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101657103811 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
101658103812 .{ .type = .usize, .kind = .{ .reg = .rdi } },
101659103813 .{ .type = .usize, .kind = .{ .reg = .rsi } },
101660 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101661 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfei" } } },
103814 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103815 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },
101662103816 .unused,
101663103817 .unused,
101664103818 .unused,
......@@ -101672,98 +103826,93 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101672103826 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
101673103827 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
101674103828 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
101675 .{ ._, ._ss, .mov, .tmp4x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
103829 .{ ._, ._sd, .mov, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
101676103830 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
101677103831 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
101678 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103832 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101679103833 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101680103834 } },
101681103835 }, .{
101682 .required_features = .{ .avx, null, null, null },
101683 .src_constraints = .{ .{ .float = .qword }, .any, .any },
101684 .dst_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any },
101685 .patterns = &.{
101686 .{ .src = .{ .mem, .none, .none } },
101687 .{ .src = .{ .to_sse, .none, .none } },
101688 },
101689 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
101690 .each = .{ .once = &.{
101691 .{ ._, .v_, .cvttsd2si, .dst0d, .src0q, ._, ._ },
101692 } },
101693 }, .{
101694 .required_features = .{ .sse2, null, null, null },
101695 .src_constraints = .{ .{ .float = .qword }, .any, .any },
101696 .dst_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any },
101697 .patterns = &.{
101698 .{ .src = .{ .mem, .none, .none } },
101699 .{ .src = .{ .to_sse, .none, .none } },
101700 },
101701 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
101702 .each = .{ .once = &.{
101703 .{ ._, ._, .cvttsd2si, .dst0d, .src0q, ._, ._ },
101704 } },
101705 }, .{
101706 .required_features = .{ .x87, null, null, null },
101707 .src_constraints = .{ .{ .float = .qword }, .any, .any },
101708 .dst_constraints = .{ .{ .signed_int = .byte }, .any },
103836 .required_features = .{ .@"64bit", .sse, null, null },
103837 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103838 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
101709103839 .patterns = &.{
101710103840 .{ .src = .{ .to_mem, .none, .none } },
101711103841 },
103842 .call_frame = .{ .alignment = .@"16" },
101712103843 .extra_temps = .{
101713 .{ .type = .f64, .kind = .{ .reg = .st7 } },
101714 .{ .type = .i16, .kind = .mem },
101715 .unused,
101716 .unused,
101717 .unused,
101718 .unused,
103844 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103845 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103846 .{ .type = .usize, .kind = .{ .reg = .rdi } },
103847 .{ .type = .usize, .kind = .{ .reg = .rsi } },
103848 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103849 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },
101719103850 .unused,
101720103851 .unused,
101721103852 .unused,
101722103853 .unused,
101723103854 .unused,
101724103855 },
101725 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
103856 .dst_temps = .{ .mem, .unused },
103857 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101726103858 .each = .{ .once = &.{
101727 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
101728 .{ ._, .fi_p, .stt, .tmp1w, ._, ._, ._ },
101729 .{ ._, ._, .movsx, .dst0d, .tmp1b, ._, ._ },
103859 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103860 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
103861 .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ },
103862 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
103863 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
103864 .{ ._, ._ps, .movl, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103865 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
103866 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
103867 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103868 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101730103869 } },
101731103870 }, .{
101732 .required_features = .{ .x87, null, null, null },
101733 .src_constraints = .{ .{ .float = .qword }, .any, .any },
101734 .dst_constraints = .{ .{ .unsigned_int = .byte }, .any },
103871 .required_features = .{ .@"64bit", .sse, null, null },
103872 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103873 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
101735103874 .patterns = &.{
101736103875 .{ .src = .{ .to_mem, .none, .none } },
101737103876 },
103877 .call_frame = .{ .alignment = .@"16" },
101738103878 .extra_temps = .{
101739 .{ .type = .f64, .kind = .{ .reg = .st7 } },
101740 .{ .type = .i16, .kind = .mem },
101741 .unused,
101742 .unused,
101743 .unused,
101744 .unused,
103879 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103880 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103881 .{ .type = .usize, .kind = .{ .reg = .rdi } },
103882 .{ .type = .usize, .kind = .{ .reg = .rsi } },
103883 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103884 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },
101745103885 .unused,
101746103886 .unused,
101747103887 .unused,
101748103888 .unused,
101749103889 .unused,
101750103890 },
101751 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
103891 .dst_temps = .{ .mem, .unused },
103892 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101752103893 .each = .{ .once = &.{
101753 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
101754 .{ ._, .fi_p, .stt, .tmp1w, ._, ._, ._ },
101755 .{ ._, ._, .movzx, .dst0d, .tmp1b, ._, ._ },
103894 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103895 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
103896 .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ },
103897 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
103898 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
103899 .{ ._, ._ps, .movl, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103900 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
103901 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
103902 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103903 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101756103904 } },
101757103905 }, .{
101758103906 .required_features = .{ .x87, null, null, null },
101759 .src_constraints = .{ .{ .float = .qword }, .any, .any },
101760 .dst_constraints = .{ .{ .signed_or_exclusive_int = .word }, .any },
103907 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
103908 .dst_constraints = .{ .{ .signed_int = .byte }, .any },
101761103909 .patterns = &.{
101762 .{ .src = .{ .to_mem, .none, .none } },
103910 .{ .src = .{ .mem, .none, .none } },
103911 .{ .src = .{ .to_x87, .none, .none } },
101763103912 },
101764103913 .extra_temps = .{
101765103914 .{ .type = .f64, .kind = .{ .reg = .st7 } },
101766 .unused,
103915 .{ .type = .i16, .kind = .mem },
101767103916 .unused,
101768103917 .unused,
101769103918 .unused,
......@@ -101774,20 +103923,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101774103923 .unused,
101775103924 .unused,
101776103925 },
101777 .dst_temps = .{ .mem, .unused },
103926 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
101778103927 .each = .{ .once = &.{
101779 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
101780 .{ ._, .fi_p, .stt, .dst0w, ._, ._, ._ },
103928 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
103929 .{ ._, .fi_p, .stt, .tmp1w, ._, ._, ._ },
103930 .{ ._, ._, .movsx, .dst0d, .tmp1b, ._, ._ },
101781103931 } },
101782103932 }, .{
101783103933 .required_features = .{ .x87, null, null, null },
101784 .src_constraints = .{ .{ .float = .qword }, .any, .any },
101785 .dst_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any },
103934 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
103935 .dst_constraints = .{ .{ .unsigned_int = .byte }, .any },
101786103936 .patterns = &.{
101787 .{ .src = .{ .to_mem, .none, .none } },
103937 .{ .src = .{ .mem, .none, .none } },
103938 .{ .src = .{ .to_x87, .none, .none } },
101788103939 },
101789103940 .extra_temps = .{
101790103941 .{ .type = .f64, .kind = .{ .reg = .st7 } },
103942 .{ .type = .i16, .kind = .mem },
101791103943 .unused,
101792103944 .unused,
101793103945 .unused,
......@@ -101797,50 +103949,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101797103949 .unused,
101798103950 .unused,
101799103951 .unused,
101800 .unused,
101801 },
101802 .dst_temps = .{ .mem, .unused },
101803 .each = .{ .once = &.{
101804 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
101805 .{ ._, .fi_p, .stt, .dst0d, ._, ._, ._ },
101806 } },
101807 }, .{
101808 .required_features = .{ .@"64bit", .avx, null, null },
101809 .src_constraints = .{ .{ .float = .qword }, .any, .any },
101810 .dst_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any },
101811 .patterns = &.{
101812 .{ .src = .{ .mem, .none, .none } },
101813 .{ .src = .{ .to_sse, .none, .none } },
101814 },
101815 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
101816 .each = .{ .once = &.{
101817 .{ ._, .v_, .cvttsd2si, .dst0q, .src0q, ._, ._ },
101818 } },
101819 }, .{
101820 .required_features = .{ .@"64bit", .sse2, null, null },
101821 .src_constraints = .{ .{ .float = .qword }, .any, .any },
101822 .dst_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any },
101823 .patterns = &.{
101824 .{ .src = .{ .mem, .none, .none } },
101825 .{ .src = .{ .to_sse, .none, .none } },
101826103952 },
101827103953 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
101828103954 .each = .{ .once = &.{
101829 .{ ._, ._, .cvttsd2si, .dst0q, .src0q, ._, ._ },
103955 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
103956 .{ ._, .fi_p, .stt, .tmp1w, ._, ._, ._ },
103957 .{ ._, ._, .movzx, .dst0d, .tmp1b, ._, ._ },
101830103958 } },
101831103959 }, .{
101832 .required_features = .{ .x87, null, null, null },
101833 .src_constraints = .{ .{ .float = .qword }, .any, .any },
101834 .dst_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any },
103960 .required_features = .{ .x87, .slow_incdec, null, null },
103961 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
103962 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
101835103963 .patterns = &.{
101836103964 .{ .src = .{ .to_mem, .none, .none } },
101837103965 },
101838103966 .extra_temps = .{
101839 .{ .type = .f64, .kind = .{ .reg = .st7 } },
101840 .unused,
101841 .unused,
101842 .unused,
101843 .unused,
103967 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103968 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103969 .{ .type = .f80, .kind = .{ .reg = .st7 } },
103970 .{ .type = .i16, .kind = .mem },
103971 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
101844103972 .unused,
101845103973 .unused,
101846103974 .unused,
......@@ -101849,55 +103977,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101849103977 .unused,
101850103978 },
101851103979 .dst_temps = .{ .mem, .unused },
101852 .each = .{ .once = &.{
101853 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
101854 .{ ._, .fi_p, .stt, .dst0q, ._, ._, ._ },
101855 } },
101856 }, .{
101857 .required_features = .{ .@"64bit", .avx, null, null },
101858 .src_constraints = .{ .{ .float = .qword }, .any, .any },
101859 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },
101860 .patterns = &.{
101861 .{ .src = .{ .to_sse, .none, .none } },
101862 },
101863 .extra_temps = .{
101864 .{ .type = .f64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
101865 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
101866 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
101867 .{ .type = .f64, .kind = .{ .@"0x1p63_mem" = .{} } },
101868 .unused,
101869 .unused,
101870 .unused,
101871 .unused,
101872 .unused,
101873 .unused,
101874 .unused,
101875 },
101876 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
101877103980 .clobbers = .{ .eflags = true },
101878103981 .each = .{ .once = &.{
101879 .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ },
101880 .{ ._, .v_, .cvttsd2si, .tmp2q, .src0d, ._, ._ },
101881 .{ ._, .v_sd, .sub, .tmp0x, .src0x, .lea(.tmp1q), ._ },
101882 .{ ._, .v_, .cvttsd2si, .dst0q, .tmp0d, ._, ._ },
101883 .{ ._, ._, .mov, .tmp1q, .tmp2q, ._, ._ },
101884 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },
101885 .{ ._, ._, .@"and", .dst0q, .tmp2q, ._, ._ },
101886 .{ ._, ._, .@"or", .dst0q, .tmp1q, ._, ._ },
103982 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
103983 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103984 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
103985 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },
103986 .{ ._, ._, .movsx, .tmp4d, .tmp3b, ._, ._ },
103987 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
103988 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
103989 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
103990 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101887103991 } },
101888103992 }, .{
101889 .required_features = .{ .@"64bit", .sse2, null, null },
101890 .src_constraints = .{ .{ .float = .qword }, .any, .any },
101891 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },
103993 .required_features = .{ .x87, null, null, null },
103994 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
103995 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
101892103996 .patterns = &.{
101893 .{ .src = .{ .to_mut_sse, .none, .none } },
103997 .{ .src = .{ .to_mem, .none, .none } },
101894103998 },
101895103999 .extra_temps = .{
101896 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
101897 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
101898 .{ .type = .f64, .kind = .{ .@"0x1p63_mem" = .{} } },
101899 .unused,
101900 .unused,
104000 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104001 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104002 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104003 .{ .type = .i16, .kind = .mem },
104004 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
101901104005 .unused,
101902104006 .unused,
101903104007 .unused,
......@@ -101905,31 +104009,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101905104009 .unused,
101906104010 .unused,
101907104011 },
101908 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
104012 .dst_temps = .{ .mem, .unused },
101909104013 .clobbers = .{ .eflags = true },
101910104014 .each = .{ .once = &.{
101911 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
101912 .{ ._, ._, .cvttsd2si, .tmp1q, .src0d, ._, ._ },
101913 .{ ._, ._sd, .sub, .src0x, .lea(.tmp0q), ._, ._ },
101914 .{ ._, ._, .cvttsd2si, .dst0q, .src0d, ._, ._ },
101915 .{ ._, ._, .mov, .tmp0q, .tmp1q, ._, ._ },
101916 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
101917 .{ ._, ._, .@"and", .dst0q, .tmp1q, ._, ._ },
101918 .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ },
104015 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
104016 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104017 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
104018 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },
104019 .{ ._, ._, .movsx, .tmp4d, .tmp3b, ._, ._ },
104020 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
104021 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
104022 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
104023 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
101919104024 } },
101920104025 }, .{
101921 .required_features = .{ .@"64bit", .x87, null, null },
101922 .src_constraints = .{ .{ .float = .qword }, .any, .any },
101923 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },
104026 .required_features = .{ .x87, .slow_incdec, null, null },
104027 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104028 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
101924104029 .patterns = &.{
101925104030 .{ .src = .{ .to_mem, .none, .none } },
101926104031 },
101927104032 .extra_temps = .{
101928 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
101929 .{ .type = .f32, .kind = .{ .@"0x1p63_mem" = .{} } },
101930 .{ .type = .f64, .kind = .{ .reg = .st6 } },
101931 .{ .type = .f64, .kind = .{ .reg = .st7 } },
101932 .{ .type = .i64, .kind = .mem },
104033 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104034 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104035 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104036 .{ .type = .i16, .kind = .mem },
104037 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
101933104038 .unused,
101934104039 .unused,
101935104040 .unused,
......@@ -101937,61 +104042,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101937104042 .unused,
101938104043 .unused,
101939104044 },
101940 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
104045 .dst_temps = .{ .mem, .unused },
101941104046 .clobbers = .{ .eflags = true },
101942104047 .each = .{ .once = &.{
101943 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
101944 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
101945 .{ ._, .f_, .ld, .tmp3t, ._, ._, ._ },
101946 .{ ._, .fi_p, .stt, .tmp4q, ._, ._, ._ },
101947 .{ ._, ._, .mov, .dst0q, .tmp4q, ._, ._ },
101948 .{ ._, .f_, .sub, .lea(.tmp0d), ._, ._, ._ },
101949 .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ },
101950 .{ ._, .fi_p, .stt, .tmp4q, ._, ._, ._ },
101951 .{ ._, ._r, .sa, .dst0q, .ui(63), ._, ._ },
101952 .{ ._, ._, .@"and", .dst0q, .tmp4q, ._, ._ },
101953 .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ },
101954 } },
101955 }, .{
101956 .required_features = .{ .@"64bit", .sse, null, null },
101957 .src_constraints = .{ .{ .float = .qword }, .any, .any },
101958 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
101959 .patterns = &.{
101960 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
101961 },
101962 .call_frame = .{ .alignment = .@"16" },
101963 .extra_temps = .{
101964 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },
101965 .unused,
101966 .unused,
101967 .unused,
101968 .unused,
101969 .unused,
101970 .unused,
101971 .unused,
101972 .unused,
101973 .unused,
101974 .unused,
101975 },
101976 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
101977 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101978 .each = .{ .once = &.{
101979 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
104048 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
104049 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104050 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
104051 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },
104052 .{ ._, ._, .movzx, .tmp4d, .tmp3b, ._, ._ },
104053 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
104054 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
104055 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
104056 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101980104057 } },
101981104058 }, .{
101982 .required_features = .{ .@"64bit", .sse, null, null },
101983 .src_constraints = .{ .{ .float = .qword }, .any, .any },
101984 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
104059 .required_features = .{ .x87, null, null, null },
104060 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104061 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
101985104062 .patterns = &.{
101986 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
104063 .{ .src = .{ .to_mem, .none, .none } },
101987104064 },
101988 .call_frame = .{ .alignment = .@"16" },
101989104065 .extra_temps = .{
101990 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },
101991 .unused,
101992 .unused,
101993 .unused,
101994 .unused,
104066 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104067 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104068 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104069 .{ .type = .i16, .kind = .mem },
104070 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
101995104071 .unused,
101996104072 .unused,
101997104073 .unused,
......@@ -101999,51 +104075,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101999104075 .unused,
102000104076 .unused,
102001104077 },
102002 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
102003 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104078 .dst_temps = .{ .mem, .unused },
104079 .clobbers = .{ .eflags = true },
102004104080 .each = .{ .once = &.{
102005 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
104081 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
104082 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104083 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
104084 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },
104085 .{ ._, ._, .movzx, .tmp4d, .tmp3b, ._, ._ },
104086 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
104087 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
104088 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
104089 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
102006104090 } },
102007104091 }, .{
102008 .required_features = .{ .@"64bit", .sse, null, null },
102009 .src_constraints = .{ .{ .float = .qword }, .any, .any },
102010 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
104092 .required_features = .{ .x87, null, null, null },
104093 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104094 .dst_constraints = .{ .{ .signed_or_exclusive_int = .word }, .any },
102011104095 .patterns = &.{
102012 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
104096 .{ .src = .{ .mem, .none, .none } },
104097 .{ .src = .{ .to_x87, .none, .none } },
102013104098 },
102014 .call_frame = .{ .alignment = .@"16" },
102015104099 .extra_temps = .{
102016 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102017 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102018 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },
102019 .unused,
102020 .unused,
102021 .unused,
102022 .unused,
102023 .unused,
102024 .unused,
104100 .{ .type = .f80, .kind = .{ .reg = .st7 } },
102025104101 .unused,
102026104102 .unused,
102027 },
102028 .dst_temps = .{ .mem, .unused },
102029 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102030 .each = .{ .once = &.{
102031 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
102032 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
102033 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102034 } },
102035 }, .{
102036 .required_features = .{ .@"64bit", .sse, null, null },
102037 .src_constraints = .{ .{ .float = .qword }, .any, .any },
102038 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
102039 .patterns = &.{
102040 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
102041 },
102042 .call_frame = .{ .alignment = .@"16" },
102043 .extra_temps = .{
102044 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102045 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102046 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },
102047104103 .unused,
102048104104 .unused,
102049104105 .unused,
......@@ -102054,23 +104110,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102054104110 .unused,
102055104111 },
102056104112 .dst_temps = .{ .mem, .unused },
102057 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102058104113 .each = .{ .once = &.{
102059 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
102060 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
102061 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104114 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
104115 .{ ._, .fi_p, .stt, .dst0w, ._, ._, ._ },
102062104116 } },
102063104117 }, .{
102064 .required_features = .{ .avx, null, null, null },
102065 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102066 .dst_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any },
104118 .required_features = .{ .x87, null, null, null },
104119 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104120 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
102067104121 .patterns = &.{
102068 .{ .src = .{ .mem, .none, .none } },
102069 .{ .src = .{ .to_sse, .none, .none } },
104122 .{ .src = .{ .to_mem, .none, .none } },
102070104123 },
102071104124 .extra_temps = .{
102072 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
102073 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
104125 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104126 .{ .type = .f80, .kind = .{ .reg = .st7 } },
102074104127 .unused,
102075104128 .unused,
102076104129 .unused,
......@@ -102081,25 +104134,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102081104134 .unused,
102082104135 .unused,
102083104136 },
102084 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
104137 .dst_temps = .{ .mem, .unused },
104138 .clobbers = .{ .eflags = true },
102085104139 .each = .{ .once = &.{
102086 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
102087 .{ ._, .v_, .cvttpd2dq, .dst0x, .src0x, ._, ._ },
102088 .{ ._, .vp_b, .shuf, .dst0x, .dst0x, .lea(.tmp0x), ._ },
104140 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104141 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
104142 .{ ._, .fi_p, .stt, .memia(.dst0w, .tmp0, .add_unaligned_size), ._, ._, ._ },
104143 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
104144 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102089104145 } },
102090104146 }, .{
102091 .required_features = .{ .ssse3, null, null, null },
102092 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102093 .dst_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any },
104147 .required_features = .{ .x87, null, null, null },
104148 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104149 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
102094104150 .patterns = &.{
102095 .{ .src = .{ .mem, .none, .none } },
102096 .{ .src = .{ .to_sse, .none, .none } },
104151 .{ .src = .{ .to_mem, .none, .none } },
102097104152 },
102098104153 .extra_temps = .{
102099 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
102100 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
102101 .unused,
102102 .unused,
104154 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104155 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104156 .{ .type = .i32, .kind = .mem },
104157 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
102103104158 .unused,
102104104159 .unused,
102105104160 .unused,
......@@ -102108,23 +104163,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102108104163 .unused,
102109104164 .unused,
102110104165 },
102111 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
104166 .dst_temps = .{ .mem, .unused },
104167 .clobbers = .{ .eflags = true },
102112104168 .each = .{ .once = &.{
102113 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
102114 .{ ._, ._, .cvttpd2dq, .dst0x, .src0x, ._, ._ },
102115 .{ ._, .p_b, .shuf, .dst0x, .lea(.tmp0x), ._, ._ },
104169 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104170 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
104171 .{ ._, .fi_p, .stt, .tmp2d, ._, ._, ._ },
104172 .{ ._, ._, .mov, .tmp3d, .tmp2d, ._, ._ },
104173 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
104174 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
104175 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102116104176 } },
102117104177 }, .{
102118 .required_features = .{ .avx, null, null, null },
102119 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
102120 .dst_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },
104178 .required_features = .{ .x87, null, null, null },
104179 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104180 .dst_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any },
102121104181 .patterns = &.{
102122104182 .{ .src = .{ .mem, .none, .none } },
102123 .{ .src = .{ .to_sse, .none, .none } },
104183 .{ .src = .{ .to_x87, .none, .none } },
102124104184 },
102125104185 .extra_temps = .{
102126 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
102127 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
104186 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104187 .unused,
102128104188 .unused,
102129104189 .unused,
102130104190 .unused,
......@@ -102135,24 +104195,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102135104195 .unused,
102136104196 .unused,
102137104197 },
102138 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
104198 .dst_temps = .{ .mem, .unused },
102139104199 .each = .{ .once = &.{
102140 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
102141 .{ ._, .v_, .cvttpd2dq, .dst0x, .src0y, ._, ._ },
102142 .{ ._, .vp_b, .shuf, .dst0x, .dst0x, .lea(.tmp0x), ._ },
104200 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
104201 .{ ._, .fi_p, .stt, .dst0d, ._, ._, ._ },
102143104202 } },
102144104203 }, .{
102145 .required_features = .{ .avx, null, null, null },
102146 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
102147 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },
104204 .required_features = .{ .x87, null, null, null },
104205 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104206 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
102148104207 .patterns = &.{
102149104208 .{ .src = .{ .to_mem, .none, .none } },
102150104209 },
102151104210 .extra_temps = .{
102152104211 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102153 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
102154 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
102155 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
104212 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104213 .unused,
104214 .unused,
102156104215 .unused,
102157104216 .unused,
102158104217 .unused,
......@@ -102164,27 +104223,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102164104223 .dst_temps = .{ .mem, .unused },
102165104224 .clobbers = .{ .eflags = true },
102166104225 .each = .{ .once = &.{
102167 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
102168 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
102169104226 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102170 .{ .@"0:", .v_, .cvttpd2dq, .tmp3x, .memsia(.src0y, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
102171 .{ ._, .vp_b, .shuf, .tmp3x, .tmp3x, .tmp2x, ._ },
102172 .{ ._, .v_d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
104227 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
104228 .{ ._, .fi_p, .stt, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
102173104229 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
102174104230 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102175104231 } },
102176104232 }, .{
102177 .required_features = .{ .ssse3, null, null, null },
102178 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102179 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any },
104233 .required_features = .{ .x87, null, null, null },
104234 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104235 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
102180104236 .patterns = &.{
102181104237 .{ .src = .{ .to_mem, .none, .none } },
102182104238 },
102183104239 .extra_temps = .{
102184104240 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102185 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
102186 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
102187 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
104241 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104242 .{ .type = .i64, .kind = .mem },
104243 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102188104244 .unused,
102189104245 .unused,
102190104246 .unused,
......@@ -102196,25 +104252,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102196104252 .dst_temps = .{ .mem, .unused },
102197104253 .clobbers = .{ .eflags = true },
102198104254 .each = .{ .once = &.{
102199 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
102200 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
102201104255 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102202 .{ .@"0:", ._, .cvttpd2dq, .tmp3x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
102203 .{ ._, .p_b, .shuf, .tmp3x, .tmp2x, ._, ._ },
102204 .{ ._, ._d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
102205 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
104256 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
104257 .{ ._, .fi_p, .stt, .tmp2q, ._, ._, ._ },
104258 .{ ._, ._, .mov, .tmp3d, .tmp2d, ._, ._ },
104259 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
104260 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
102206104261 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102207104262 } },
102208104263 }, .{
102209 .required_features = .{ .sse2, .slow_incdec, null, null },
102210 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102211 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
104264 .required_features = .{ .x87, null, null, null },
104265 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104266 .dst_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any },
102212104267 .patterns = &.{
102213 .{ .src = .{ .to_mem, .none, .none } },
104268 .{ .src = .{ .mem, .none, .none } },
104269 .{ .src = .{ .to_x87, .none, .none } },
102214104270 },
102215104271 .extra_temps = .{
102216 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102217 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
104272 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104273 .unused,
102218104274 .unused,
102219104275 .unused,
102220104276 .unused,
......@@ -102226,24 +104282,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102226104282 .unused,
102227104283 },
102228104284 .dst_temps = .{ .mem, .unused },
104285 .each = .{ .once = &.{
104286 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
104287 .{ ._, .fi_p, .stt, .dst0q, ._, ._, ._ },
104288 } },
104289 }, .{
104290 .required_features = .{ .@"64bit", .x87, null, null },
104291 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104292 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },
104293 .patterns = &.{
104294 .{ .src = .{ .mem, .none, .none } },
104295 .{ .src = .{ .to_x87, .none, .none } },
104296 },
104297 .extra_temps = .{
104298 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
104299 .{ .type = .f32, .kind = .{ .@"0x1p63_mem" = .{} } },
104300 .{ .type = .f64, .kind = .{ .reg = .st6 } },
104301 .{ .type = .f64, .kind = .{ .reg = .st7 } },
104302 .{ .type = .i64, .kind = .mem },
104303 .unused,
104304 .unused,
104305 .unused,
104306 .unused,
104307 .unused,
104308 .unused,
104309 },
104310 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
102229104311 .clobbers = .{ .eflags = true },
102230104312 .each = .{ .once = &.{
102231 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102232 .{ .@"0:", ._, .cvttsd2si, .tmp1d, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
102233 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
102234 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
102235 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104313 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
104314 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
104315 .{ ._, .f_, .ld, .tmp3t, ._, ._, ._ },
104316 .{ ._, .fi_p, .stt, .tmp4q, ._, ._, ._ },
104317 .{ ._, ._, .mov, .dst0q, .tmp4q, ._, ._ },
104318 .{ ._, .f_, .sub, .lea(.tmp0d), ._, ._, ._ },
104319 .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ },
104320 .{ ._, .fi_p, .stt, .tmp4q, ._, ._, ._ },
104321 .{ ._, ._r, .sa, .dst0q, .ui(63), ._, ._ },
104322 .{ ._, ._, .@"and", .dst0q, .tmp4q, ._, ._ },
104323 .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ },
102236104324 } },
102237104325 }, .{
102238 .required_features = .{ .sse2, null, null, null },
102239 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102240 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
104326 .required_features = .{ .x87, null, null, null },
104327 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104328 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
102241104329 .patterns = &.{
102242104330 .{ .src = .{ .to_mem, .none, .none } },
102243104331 },
102244104332 .extra_temps = .{
102245104333 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102246 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
104334 .{ .type = .f80, .kind = .{ .reg = .st7 } },
102247104335 .unused,
102248104336 .unused,
102249104337 .unused,
......@@ -102258,24 +104346,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102258104346 .clobbers = .{ .eflags = true },
102259104347 .each = .{ .once = &.{
102260104348 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102261 .{ .@"0:", ._, .cvttsd2si, .tmp1d, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
102262 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
102263 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
104349 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
104350 .{ ._, .fi_p, .stt, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
104351 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
102264104352 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102265104353 } },
102266104354 }, .{
102267 .required_features = .{ .x87, .slow_incdec, null, null },
102268 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102269 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
104355 .required_features = .{ .@"64bit", .avx, null, null },
104356 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104357 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
102270104358 .patterns = &.{
102271104359 .{ .src = .{ .to_mem, .none, .none } },
102272104360 },
104361 .call_frame = .{ .size = 16, .alignment = .@"16" },
102273104362 .extra_temps = .{
102274104363 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102275 .{ .type = .f64, .kind = .{ .reg = .st7 } },
102276 .{ .type = .i16, .kind = .mem },
102277 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
102278 .unused,
104364 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104365 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104366 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
104367 .{ .type = .u64, .kind = .{ .reg = .rax } },
102279104368 .unused,
102280104369 .unused,
102281104370 .unused,
......@@ -102284,28 +104373,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102284104373 .unused,
102285104374 },
102286104375 .dst_temps = .{ .mem, .unused },
104376 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102287104377 .each = .{ .once = &.{
102288104378 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102289 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
102290 .{ ._, .fi_p, .stt, .tmp2w, ._, ._, ._ },
102291 .{ ._, ._, .movzx, .tmp3d, .tmp2b, ._, ._ },
102292 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
102293 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
104379 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
104380 .{ ._, .v_dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
104381 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
104382 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
104383 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
102294104384 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102295104385 } },
102296104386 }, .{
102297 .required_features = .{ .x87, null, null, null },
102298 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102299 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
104387 .required_features = .{ .@"64bit", .sse2, null, null },
104388 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104389 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
102300104390 .patterns = &.{
102301104391 .{ .src = .{ .to_mem, .none, .none } },
102302104392 },
104393 .call_frame = .{ .size = 16, .alignment = .@"16" },
102303104394 .extra_temps = .{
102304104395 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102305 .{ .type = .f64, .kind = .{ .reg = .st7 } },
102306 .{ .type = .i16, .kind = .mem },
102307 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
102308 .unused,
104396 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104397 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104398 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
104399 .{ .type = .u64, .kind = .{ .reg = .rax } },
102309104400 .unused,
102310104401 .unused,
102311104402 .unused,
......@@ -102314,29 +104405,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102314104405 .unused,
102315104406 },
102316104407 .dst_temps = .{ .mem, .unused },
104408 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102317104409 .each = .{ .once = &.{
102318104410 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102319 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
102320 .{ ._, .fi_p, .stt, .tmp2w, ._, ._, ._ },
102321 .{ ._, ._, .movzx, .tmp3d, .tmp2b, ._, ._ },
102322 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
102323 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
102324 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
104411 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
104412 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
104413 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
104414 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
104415 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
104416 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102325104417 } },
102326104418 }, .{
102327 .required_features = .{ .avx, .slow_incdec, null, null },
102328 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102329 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
104419 .required_features = .{ .@"64bit", .sse, null, null },
104420 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104421 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
102330104422 .patterns = &.{
102331104423 .{ .src = .{ .to_mem, .none, .none } },
102332104424 },
102333 .call_frame = .{ .alignment = .@"16" },
104425 .call_frame = .{ .size = 16, .alignment = .@"16" },
102334104426 .extra_temps = .{
102335104427 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102336 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
102337 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
102338 .{ .type = .i32, .kind = .{ .reg = .eax } },
102339 .unused,
104428 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104429 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104430 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
104431 .{ .type = .u64, .kind = .{ .reg = .rax } },
102340104432 .unused,
102341104433 .unused,
102342104434 .unused,
......@@ -102348,25 +104440,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102348104440 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102349104441 .each = .{ .once = &.{
102350104442 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102351 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
102352 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102353 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
102354 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
104443 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
104444 .{ ._, ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
104445 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
104446 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
104447 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
102355104448 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102356104449 } },
102357104450 }, .{
102358 .required_features = .{ .avx, null, null, null },
102359 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102360 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
104451 .required_features = .{ .@"64bit", .avx, null, null },
104452 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104453 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
102361104454 .patterns = &.{
102362104455 .{ .src = .{ .to_mem, .none, .none } },
102363104456 },
102364 .call_frame = .{ .alignment = .@"16" },
104457 .call_frame = .{ .size = 16, .alignment = .@"16" },
102365104458 .extra_temps = .{
102366 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102367 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
102368 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
102369 .{ .type = .i32, .kind = .{ .reg = .eax } },
104459 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104460 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104461 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
104462 .unused,
102370104463 .unused,
102371104464 .unused,
102372104465 .unused,
......@@ -102375,29 +104468,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102375104468 .unused,
102376104469 .unused,
102377104470 },
102378 .dst_temps = .{ .mem, .unused },
104471 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
102379104472 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102380104473 .each = .{ .once = &.{
102381 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102382 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
104474 .{ ._, .v_dqa, .mov, .tmp0x, .src0x, ._, ._ },
104475 .{ ._, .v_dqa, .mov, .tmp1x, .tmp0x, ._, ._ },
102383104476 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102384 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
102385 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
102386 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
102387104477 } },
102388104478 }, .{
102389 .required_features = .{ .sse2, .slow_incdec, null, null },
102390 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102391 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
104479 .required_features = .{ .@"64bit", .avx, null, null },
104480 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104481 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
102392104482 .patterns = &.{
102393104483 .{ .src = .{ .to_mem, .none, .none } },
102394104484 },
102395 .call_frame = .{ .alignment = .@"16" },
104485 .call_frame = .{ .size = 16, .alignment = .@"16" },
102396104486 .extra_temps = .{
102397 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102398 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
102399 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
102400 .{ .type = .i32, .kind = .{ .reg = .eax } },
104487 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104488 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104489 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
104490 .unused,
102401104491 .unused,
102402104492 .unused,
102403104493 .unused,
......@@ -102406,29 +104496,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102406104496 .unused,
102407104497 .unused,
102408104498 },
102409 .dst_temps = .{ .mem, .unused },
104499 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
102410104500 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102411104501 .each = .{ .once = &.{
102412 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102413 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
104502 .{ ._, .v_dqa, .mov, .tmp0x, .src0x, ._, ._ },
104503 .{ ._, .v_dqa, .mov, .tmp1x, .tmp0x, ._, ._ },
102414104504 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102415 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
102416 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
102417 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102418104505 } },
102419104506 }, .{
102420 .required_features = .{ .sse2, null, null, null },
102421 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102422 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
104507 .required_features = .{ .@"64bit", .sse2, null, null },
104508 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104509 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
102423104510 .patterns = &.{
102424104511 .{ .src = .{ .to_mem, .none, .none } },
102425104512 },
102426 .call_frame = .{ .alignment = .@"16" },
104513 .call_frame = .{ .size = 16, .alignment = .@"16" },
102427104514 .extra_temps = .{
102428 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102429 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
102430 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
102431 .{ .type = .i32, .kind = .{ .reg = .eax } },
104515 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104516 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104517 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
104518 .unused,
102432104519 .unused,
102433104520 .unused,
102434104521 .unused,
......@@ -102437,29 +104524,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102437104524 .unused,
102438104525 .unused,
102439104526 },
102440 .dst_temps = .{ .mem, .unused },
104527 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
102441104528 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102442104529 .each = .{ .once = &.{
102443 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102444 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
104530 .{ ._, ._dqa, .mov, .tmp0x, .src0x, ._, ._ },
104531 .{ ._, ._dqa, .mov, .tmp1x, .tmp0x, ._, ._ },
102445104532 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102446 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
102447 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
102448 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
102449104533 } },
102450104534 }, .{
102451 .required_features = .{ .sse, .slow_incdec, null, null },
102452 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102453 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
104535 .required_features = .{ .@"64bit", .sse2, null, null },
104536 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104537 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
102454104538 .patterns = &.{
102455104539 .{ .src = .{ .to_mem, .none, .none } },
102456104540 },
102457 .call_frame = .{ .alignment = .@"16" },
104541 .call_frame = .{ .size = 16, .alignment = .@"16" },
102458104542 .extra_temps = .{
102459 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102460 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
102461 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
102462 .{ .type = .i32, .kind = .{ .reg = .eax } },
104543 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104544 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104545 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
104546 .unused,
102463104547 .unused,
102464104548 .unused,
102465104549 .unused,
......@@ -102468,30 +104552,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102468104552 .unused,
102469104553 .unused,
102470104554 },
102471 .dst_temps = .{ .mem, .unused },
104555 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
102472104556 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102473104557 .each = .{ .once = &.{
102474 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102475 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
102476 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
104558 .{ ._, ._dqa, .mov, .tmp0x, .src0x, ._, ._ },
104559 .{ ._, ._dqa, .mov, .tmp1x, .tmp0x, ._, ._ },
102477104560 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102478 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
102479 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
102480 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102481104561 } },
102482104562 }, .{
102483 .required_features = .{ .sse, null, null, null },
102484 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102485 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
104563 .required_features = .{ .@"64bit", .sse, null, null },
104564 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104565 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
102486104566 .patterns = &.{
102487104567 .{ .src = .{ .to_mem, .none, .none } },
102488104568 },
102489 .call_frame = .{ .alignment = .@"16" },
104569 .call_frame = .{ .size = 16, .alignment = .@"16" },
102490104570 .extra_temps = .{
102491 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102492 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
102493 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
102494 .{ .type = .i32, .kind = .{ .reg = .eax } },
104571 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104572 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104573 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
104574 .unused,
102495104575 .unused,
102496104576 .unused,
102497104577 .unused,
......@@ -102500,109 +104580,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102500104580 .unused,
102501104581 .unused,
102502104582 },
102503 .dst_temps = .{ .mem, .unused },
104583 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
102504104584 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102505104585 .each = .{ .once = &.{
102506 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102507 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
102508 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
104586 .{ ._, ._ps, .mova, .tmp0x, .src0x, ._, ._ },
104587 .{ ._, ._ps, .mova, .tmp1x, .tmp0x, ._, ._ },
102509104588 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102510 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
102511 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
102512 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
102513 } },
102514 }, .{
102515 .required_features = .{ .avx, null, null, null },
102516 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102517 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
102518 .patterns = &.{
102519 .{ .src = .{ .mem, .none, .none } },
102520 .{ .src = .{ .to_sse, .none, .none } },
102521 },
102522 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
102523 .each = .{ .once = &.{
102524 .{ ._, .v_, .cvttpd2dq, .dst0x, .src0x, ._, ._ },
102525 .{ ._, .vp_w, .ackssd, .dst0x, .dst0x, .dst0x, ._ },
102526 } },
102527 }, .{
102528 .required_features = .{ .sse2, null, null, null },
102529 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102530 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
102531 .patterns = &.{
102532 .{ .src = .{ .mem, .none, .none } },
102533 .{ .src = .{ .to_sse, .none, .none } },
102534 },
102535 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
102536 .each = .{ .once = &.{
102537 .{ ._, ._, .cvttpd2dq, .dst0x, .src0x, ._, ._ },
102538 .{ ._, .p_w, .ackssd, .dst0x, .dst0x, ._, ._ },
102539 } },
102540 }, .{
102541 .required_features = .{ .avx, null, null, null },
102542 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
102543 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
102544 .patterns = &.{
102545 .{ .src = .{ .mem, .none, .none } },
102546 .{ .src = .{ .to_sse, .none, .none } },
102547 },
102548 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
102549 .each = .{ .once = &.{
102550 .{ ._, .v_, .cvttpd2dq, .dst0x, .src0y, ._, ._ },
102551 .{ ._, .vp_w, .ackssd, .dst0x, .dst0x, .dst0x, ._ },
102552104589 } },
102553104590 }, .{
102554 .required_features = .{ .avx, null, null, null },
102555 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102556 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any },
102557 .patterns = &.{
102558 .{ .src = .{ .mem, .none, .none } },
102559 .{ .src = .{ .to_sse, .none, .none } },
102560 },
102561 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
102562 .each = .{ .once = &.{
102563 .{ ._, .v_, .cvttpd2dq, .dst0x, .src0x, ._, ._ },
102564 .{ ._, .vp_w, .ackusd, .dst0x, .dst0x, .dst0x, ._ },
102565 } },
102566 }, .{
102567 .required_features = .{ .sse4_1, null, null, null },
102568 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102569 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any },
104591 .required_features = .{ .@"64bit", .sse, null, null },
104592 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104593 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
102570104594 .patterns = &.{
102571 .{ .src = .{ .mem, .none, .none } },
102572 .{ .src = .{ .to_sse, .none, .none } },
104595 .{ .src = .{ .to_mem, .none, .none } },
102573104596 },
102574 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
102575 .each = .{ .once = &.{
102576 .{ ._, ._, .cvttpd2dq, .dst0x, .src0x, ._, ._ },
102577 .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ },
102578 } },
102579 }, .{
102580 .required_features = .{ .avx, null, null, null },
102581 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
102582 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },
102583 .patterns = &.{
102584 .{ .src = .{ .mem, .none, .none } },
102585 .{ .src = .{ .to_sse, .none, .none } },
104597 .call_frame = .{ .size = 16, .alignment = .@"16" },
104598 .extra_temps = .{
104599 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104600 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104601 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
104602 .unused,
104603 .unused,
104604 .unused,
104605 .unused,
104606 .unused,
104607 .unused,
104608 .unused,
104609 .unused,
102586104610 },
102587 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
104611 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
104612 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102588104613 .each = .{ .once = &.{
102589 .{ ._, .v_, .cvttpd2dq, .dst0x, .src0y, ._, ._ },
102590 .{ ._, .vp_w, .ackusd, .dst0x, .dst0x, .dst0x, ._ },
104614 .{ ._, ._ps, .mova, .tmp0x, .src0x, ._, ._ },
104615 .{ ._, ._ps, .mova, .tmp1x, .tmp0x, ._, ._ },
104616 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102591104617 } },
102592104618 }, .{
102593 .required_features = .{ .avx, null, null, null },
102594 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
102595 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
104619 .required_features = .{ .@"64bit", .avx, null, null },
104620 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104621 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
102596104622 .patterns = &.{
102597104623 .{ .src = .{ .to_mem, .none, .none } },
102598104624 },
104625 .call_frame = .{ .size = 16, .alignment = .@"16" },
102599104626 .extra_temps = .{
102600104627 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102601 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
102602 .unused,
102603 .unused,
102604 .unused,
102605 .unused,
104628 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104629 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104630 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
104631 .{ .type = .u64, .kind = .{ .reg = .rax } },
104632 .{ .type = .i64, .kind = .{ .reg = .rdx } },
102606104633 .unused,
102607104634 .unused,
102608104635 .unused,
......@@ -102610,29 +104637,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102610104637 .unused,
102611104638 },
102612104639 .dst_temps = .{ .mem, .unused },
102613 .clobbers = .{ .eflags = true },
104640 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102614104641 .each = .{ .once = &.{
102615 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102616 .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsia(.src0y, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
102617 .{ ._, .vp_w, .ackssd, .tmp1x, .tmp1x, .tmp1x, ._ },
102618 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
102619 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
104642 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104643 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
104644 .{ ._, .v_dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
104645 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
104646 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
104647 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
104648 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
102620104649 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102621104650 } },
102622104651 }, .{
102623 .required_features = .{ .sse2, null, null, null },
102624 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102625 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
104652 .required_features = .{ .@"64bit", .avx, null, null },
104653 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104654 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
102626104655 .patterns = &.{
102627104656 .{ .src = .{ .to_mem, .none, .none } },
102628104657 },
104658 .call_frame = .{ .size = 16, .alignment = .@"16" },
102629104659 .extra_temps = .{
102630104660 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102631 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
102632 .unused,
102633 .unused,
102634 .unused,
102635 .unused,
104661 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104662 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104663 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
104664 .{ .type = .u64, .kind = .{ .reg = .rax } },
104665 .{ .type = .u64, .kind = .{ .reg = .rdx } },
102636104666 .unused,
102637104667 .unused,
102638104668 .unused,
......@@ -102640,29 +104670,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102640104670 .unused,
102641104671 },
102642104672 .dst_temps = .{ .mem, .unused },
102643 .clobbers = .{ .eflags = true },
104673 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102644104674 .each = .{ .once = &.{
102645 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102646 .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
102647 .{ ._, .p_w, .ackssd, .tmp1x, .tmp1x, ._, ._ },
102648 .{ ._, ._d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
102649 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
104675 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104676 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
104677 .{ ._, .v_dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
104678 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
104679 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
104680 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
104681 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
102650104682 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102651104683 } },
102652104684 }, .{
102653 .required_features = .{ .avx, null, null, null },
102654 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
102655 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },
104685 .required_features = .{ .@"64bit", .sse2, null, null },
104686 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104687 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
102656104688 .patterns = &.{
102657104689 .{ .src = .{ .to_mem, .none, .none } },
102658104690 },
104691 .call_frame = .{ .size = 16, .alignment = .@"16" },
102659104692 .extra_temps = .{
102660104693 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102661 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
102662 .unused,
102663 .unused,
102664 .unused,
102665 .unused,
104694 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104695 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104696 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
104697 .{ .type = .u64, .kind = .{ .reg = .rax } },
104698 .{ .type = .i64, .kind = .{ .reg = .rdx } },
102666104699 .unused,
102667104700 .unused,
102668104701 .unused,
......@@ -102670,29 +104703,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102670104703 .unused,
102671104704 },
102672104705 .dst_temps = .{ .mem, .unused },
102673 .clobbers = .{ .eflags = true },
104706 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102674104707 .each = .{ .once = &.{
102675 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102676 .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsia(.src0y, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
102677 .{ ._, .vp_w, .ackusd, .tmp1x, .tmp1x, .tmp1x, ._ },
102678 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
102679 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
104708 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104709 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
104710 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
104711 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
104712 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
104713 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
104714 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
102680104715 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102681104716 } },
102682104717 }, .{
102683 .required_features = .{ .sse4_1, null, null, null },
102684 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102685 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any },
104718 .required_features = .{ .@"64bit", .sse2, null, null },
104719 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104720 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
102686104721 .patterns = &.{
102687104722 .{ .src = .{ .to_mem, .none, .none } },
102688104723 },
104724 .call_frame = .{ .size = 16, .alignment = .@"16" },
102689104725 .extra_temps = .{
102690104726 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102691 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
102692 .unused,
102693 .unused,
102694 .unused,
102695 .unused,
104727 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104728 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104729 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
104730 .{ .type = .u64, .kind = .{ .reg = .rax } },
104731 .{ .type = .u64, .kind = .{ .reg = .rdx } },
102696104732 .unused,
102697104733 .unused,
102698104734 .unused,
......@@ -102700,29 +104736,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102700104736 .unused,
102701104737 },
102702104738 .dst_temps = .{ .mem, .unused },
102703 .clobbers = .{ .eflags = true },
104739 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102704104740 .each = .{ .once = &.{
102705 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102706 .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
102707 .{ ._, .p_w, .ackusd, .tmp1x, .tmp1x, ._, ._ },
102708 .{ ._, ._d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
102709 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
104741 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104742 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
104743 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
104744 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
104745 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
104746 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
104747 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
102710104748 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102711104749 } },
102712104750 }, .{
102713 .required_features = .{ .sse2, null, null, null },
102714 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102715 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
104751 .required_features = .{ .@"64bit", .sse, null, null },
104752 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104753 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
102716104754 .patterns = &.{
102717104755 .{ .src = .{ .to_mem, .none, .none } },
102718104756 },
104757 .call_frame = .{ .size = 16, .alignment = .@"16" },
102719104758 .extra_temps = .{
102720104759 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102721 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
102722 .unused,
102723 .unused,
102724 .unused,
102725 .unused,
104760 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104761 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104762 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
104763 .{ .type = .u64, .kind = .{ .reg = .rax } },
104764 .{ .type = .i64, .kind = .{ .reg = .rdx } },
102726104765 .unused,
102727104766 .unused,
102728104767 .unused,
......@@ -102730,28 +104769,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102730104769 .unused,
102731104770 },
102732104771 .dst_temps = .{ .mem, .unused },
102733 .clobbers = .{ .eflags = true },
104772 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102734104773 .each = .{ .once = &.{
102735 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102736 .{ .@"0:", ._, .cvttsd2si, .tmp1d, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
102737 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
102738 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
104774 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104775 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
104776 .{ ._, ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
104777 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
104778 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
104779 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
104780 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
102739104781 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102740104782 } },
102741104783 }, .{
102742 .required_features = .{ .x87, null, null, null },
102743 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102744 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
104784 .required_features = .{ .@"64bit", .sse, null, null },
104785 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104786 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
102745104787 .patterns = &.{
102746104788 .{ .src = .{ .to_mem, .none, .none } },
102747104789 },
104790 .call_frame = .{ .size = 16, .alignment = .@"16" },
102748104791 .extra_temps = .{
102749104792 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102750 .{ .type = .f64, .kind = .{ .reg = .st7 } },
102751 .unused,
102752 .unused,
102753 .unused,
102754 .unused,
104793 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104794 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104795 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
104796 .{ .type = .u64, .kind = .{ .reg = .rax } },
104797 .{ .type = .u64, .kind = .{ .reg = .rdx } },
102755104798 .unused,
102756104799 .unused,
102757104800 .unused,
......@@ -102759,26 +104802,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102759104802 .unused,
102760104803 },
102761104804 .dst_temps = .{ .mem, .unused },
104805 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102762104806 .each = .{ .once = &.{
102763 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102764 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
102765 .{ ._, .fi_p, .stt, .memia(.dst0w, .tmp0, .add_unaligned_size), ._, ._, ._ },
102766 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
104807 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104808 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
104809 .{ ._, ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
104810 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
104811 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
104812 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
104813 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
102767104814 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102768104815 } },
102769104816 }, .{
102770 .required_features = .{ .x87, null, null, null },
102771 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102772 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
104817 .required_features = .{ .@"64bit", .avx, null, null },
104818 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104819 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
102773104820 .patterns = &.{
102774104821 .{ .src = .{ .to_mem, .none, .none } },
102775104822 },
104823 .call_frame = .{ .size = 16, .alignment = .@"16" },
102776104824 .extra_temps = .{
102777 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102778 .{ .type = .f64, .kind = .{ .reg = .st7 } },
102779 .{ .type = .i32, .kind = .mem },
102780 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
102781 .unused,
104825 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104826 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104827 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104828 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104829 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
102782104830 .unused,
102783104831 .unused,
102784104832 .unused,
......@@ -102787,29 +104835,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102787104835 .unused,
102788104836 },
102789104837 .dst_temps = .{ .mem, .unused },
104838 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102790104839 .each = .{ .once = &.{
102791 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102792 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
102793 .{ ._, .fi_p, .stt, .tmp2d, ._, ._, ._ },
102794 .{ ._, ._, .mov, .tmp3d, .tmp2d, ._, ._ },
102795 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
102796 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
102797 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104840 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
104841 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
104842 .{ ._, .v_dqa, .mov, .tmp2x, .src0x, ._, ._ },
104843 .{ ._, .v_dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
104844 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
102798104845 } },
102799104846 }, .{
102800 .required_features = .{ .avx, null, null, null },
102801 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102802 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
104847 .required_features = .{ .@"64bit", .avx, null, null },
104848 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104849 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
102803104850 .patterns = &.{
102804104851 .{ .src = .{ .to_mem, .none, .none } },
102805104852 },
102806 .call_frame = .{ .alignment = .@"16" },
104853 .call_frame = .{ .size = 16, .alignment = .@"16" },
102807104854 .extra_temps = .{
102808 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102809 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
102810 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
102811 .{ .type = .i32, .kind = .{ .reg = .eax } },
102812 .unused,
104855 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104856 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104857 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104858 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104859 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
102813104860 .unused,
102814104861 .unused,
102815104862 .unused,
......@@ -102820,27 +104867,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102820104867 .dst_temps = .{ .mem, .unused },
102821104868 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102822104869 .each = .{ .once = &.{
102823 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102824 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
102825 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102826 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
102827 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
102828 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104870 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
104871 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
104872 .{ ._, .v_dqa, .mov, .tmp2x, .src0x, ._, ._ },
104873 .{ ._, .v_dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
104874 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
102829104875 } },
102830104876 }, .{
102831 .required_features = .{ .sse2, null, null, null },
102832 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102833 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
104877 .required_features = .{ .@"64bit", .sse2, null, null },
104878 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104879 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
102834104880 .patterns = &.{
102835104881 .{ .src = .{ .to_mem, .none, .none } },
102836104882 },
102837 .call_frame = .{ .alignment = .@"16" },
104883 .call_frame = .{ .size = 16, .alignment = .@"16" },
102838104884 .extra_temps = .{
102839 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102840 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
102841 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
102842 .{ .type = .i32, .kind = .{ .reg = .eax } },
102843 .unused,
104885 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104886 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104887 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104888 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104889 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
102844104890 .unused,
102845104891 .unused,
102846104892 .unused,
......@@ -102851,27 +104897,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102851104897 .dst_temps = .{ .mem, .unused },
102852104898 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102853104899 .each = .{ .once = &.{
102854 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102855 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
102856 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102857 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
102858 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
102859 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104900 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
104901 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
104902 .{ ._, ._dqa, .mov, .tmp2x, .src0x, ._, ._ },
104903 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
104904 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
102860104905 } },
102861104906 }, .{
102862 .required_features = .{ .sse, null, null, null },
102863 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102864 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
104907 .required_features = .{ .@"64bit", .sse2, null, null },
104908 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104909 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
102865104910 .patterns = &.{
102866104911 .{ .src = .{ .to_mem, .none, .none } },
102867104912 },
102868 .call_frame = .{ .alignment = .@"16" },
104913 .call_frame = .{ .size = 16, .alignment = .@"16" },
102869104914 .extra_temps = .{
102870 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102871 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
102872 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
102873 .{ .type = .i32, .kind = .{ .reg = .eax } },
102874 .unused,
104915 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104916 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104917 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104918 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104919 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
102875104920 .unused,
102876104921 .unused,
102877104922 .unused,
......@@ -102882,182 +104927,228 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102882104927 .dst_temps = .{ .mem, .unused },
102883104928 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102884104929 .each = .{ .once = &.{
102885 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102886 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
102887 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
102888 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102889 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
102890 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
102891 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104930 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
104931 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
104932 .{ ._, ._dqa, .mov, .tmp2x, .src0x, ._, ._ },
104933 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
104934 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
102892104935 } },
102893104936 }, .{
102894 .required_features = .{ .avx, null, null, null },
102895 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102896 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },
104937 .required_features = .{ .@"64bit", .sse, null, null },
104938 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104939 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
102897104940 .patterns = &.{
102898 .{ .src = .{ .mem, .none, .none } },
102899 .{ .src = .{ .to_sse, .none, .none } },
104941 .{ .src = .{ .to_mem, .none, .none } },
102900104942 },
102901 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
102902 .each = .{ .once = &.{
102903 .{ ._, .v_, .cvttpd2dq, .dst0x, .src0x, ._, ._ },
102904 } },
102905 }, .{
102906 .required_features = .{ .sse2, null, null, null },
102907 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102908 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },
102909 .patterns = &.{
102910 .{ .src = .{ .mem, .none, .none } },
102911 .{ .src = .{ .to_sse, .none, .none } },
104943 .call_frame = .{ .size = 16, .alignment = .@"16" },
104944 .extra_temps = .{
104945 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104946 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104947 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104948 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104949 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
104950 .unused,
104951 .unused,
104952 .unused,
104953 .unused,
104954 .unused,
104955 .unused,
102912104956 },
102913 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
104957 .dst_temps = .{ .mem, .unused },
104958 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102914104959 .each = .{ .once = &.{
102915 .{ ._, ._, .cvttpd2dq, .dst0x, .src0x, ._, ._ },
104960 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
104961 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
104962 .{ ._, ._ps, .mova, .tmp2x, .src0x, ._, ._ },
104963 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
104964 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
102916104965 } },
102917104966 }, .{
102918 .required_features = .{ .avx, null, null, null },
102919 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
102920 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
104967 .required_features = .{ .@"64bit", .sse, null, null },
104968 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104969 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
102921104970 .patterns = &.{
102922 .{ .src = .{ .mem, .none, .none } },
102923 .{ .src = .{ .to_sse, .none, .none } },
104971 .{ .src = .{ .to_mem, .none, .none } },
102924104972 },
102925 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
104973 .call_frame = .{ .size = 16, .alignment = .@"16" },
104974 .extra_temps = .{
104975 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104976 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104977 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104978 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104979 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
104980 .unused,
104981 .unused,
104982 .unused,
104983 .unused,
104984 .unused,
104985 .unused,
104986 },
104987 .dst_temps = .{ .mem, .unused },
104988 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102926104989 .each = .{ .once = &.{
102927 .{ ._, .v_, .cvttpd2dq, .dst0x, .src0y, ._, ._ },
104990 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
104991 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
104992 .{ ._, ._ps, .mova, .tmp2x, .src0x, ._, ._ },
104993 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
104994 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
102928104995 } },
102929104996 }, .{
102930 .required_features = .{ .avx, null, null, null },
102931 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
102932 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
104997 .required_features = .{ .@"64bit", .avx, null, null },
104998 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104999 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
102933105000 .patterns = &.{
102934105001 .{ .src = .{ .to_mem, .none, .none } },
102935105002 },
105003 .call_frame = .{ .size = 16, .alignment = .@"16" },
102936105004 .extra_temps = .{
102937105005 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102938 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
102939 .unused,
102940 .unused,
102941 .unused,
102942 .unused,
102943 .unused,
105006 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105007 .{ .type = .usize, .kind = .{ .reg = .rdi } },
105008 .{ .type = .usize, .kind = .{ .reg = .rsi } },
105009 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105010 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105011 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
102944105012 .unused,
102945105013 .unused,
102946105014 .unused,
102947105015 .unused,
102948105016 },
102949105017 .dst_temps = .{ .mem, .unused },
102950 .clobbers = .{ .eflags = true },
105018 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102951105019 .each = .{ .once = &.{
102952 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102953 .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
102954 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
105020 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105021 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
105022 .{ .@"0:", .v_dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
105023 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
105024 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
105025 .{ ._, .v_dqa, .mov, .tmp5x, .tmp4x, ._, ._ },
105026 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
105027 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
102955105028 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
102956105029 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102957105030 } },
102958105031 }, .{
102959 .required_features = .{ .sse2, null, null, null },
102960 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102961 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },
105032 .required_features = .{ .@"64bit", .avx, null, null },
105033 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
105034 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
102962105035 .patterns = &.{
102963105036 .{ .src = .{ .to_mem, .none, .none } },
102964105037 },
105038 .call_frame = .{ .size = 16, .alignment = .@"16" },
102965105039 .extra_temps = .{
102966105040 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102967 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
102968 .unused,
102969 .unused,
102970 .unused,
102971 .unused,
102972 .unused,
105041 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105042 .{ .type = .usize, .kind = .{ .reg = .rdi } },
105043 .{ .type = .usize, .kind = .{ .reg = .rsi } },
105044 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105045 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105046 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
102973105047 .unused,
102974105048 .unused,
102975105049 .unused,
102976105050 .unused,
102977105051 },
102978105052 .dst_temps = .{ .mem, .unused },
102979 .clobbers = .{ .eflags = true },
105053 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102980105054 .each = .{ .once = &.{
102981 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102982 .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
102983 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
102984 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
105055 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105056 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
105057 .{ .@"0:", .v_dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
105058 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
105059 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
105060 .{ ._, .v_dqa, .mov, .tmp5x, .tmp4x, ._, ._ },
105061 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
105062 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
105063 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
102985105064 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102986105065 } },
102987105066 }, .{
102988 .required_features = .{ .x87, null, null, null },
102989 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
102990 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
105067 .required_features = .{ .@"64bit", .sse2, null, null },
105068 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
105069 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
102991105070 .patterns = &.{
102992105071 .{ .src = .{ .to_mem, .none, .none } },
102993105072 },
105073 .call_frame = .{ .size = 16, .alignment = .@"16" },
102994105074 .extra_temps = .{
102995105075 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102996 .{ .type = .f64, .kind = .{ .reg = .st7 } },
102997 .unused,
102998 .unused,
102999 .unused,
103000 .unused,
103001 .unused,
105076 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105077 .{ .type = .usize, .kind = .{ .reg = .rdi } },
105078 .{ .type = .usize, .kind = .{ .reg = .rsi } },
105079 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105080 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105081 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
103002105082 .unused,
103003105083 .unused,
103004105084 .unused,
103005105085 .unused,
103006105086 },
103007105087 .dst_temps = .{ .mem, .unused },
105088 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103008105089 .each = .{ .once = &.{
103009 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103010 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
103011 .{ ._, .fi_p, .stt, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
103012 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
105090 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105091 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
105092 .{ .@"0:", ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
105093 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
105094 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
105095 .{ ._, ._dqa, .mov, .tmp5x, .tmp4x, ._, ._ },
105096 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
105097 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
105098 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
103013105099 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103014105100 } },
103015105101 }, .{
103016 .required_features = .{ .x87, null, null, null },
103017 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103018 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
105102 .required_features = .{ .@"64bit", .sse2, null, null },
105103 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
105104 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
103019105105 .patterns = &.{
103020105106 .{ .src = .{ .to_mem, .none, .none } },
103021105107 },
105108 .call_frame = .{ .size = 16, .alignment = .@"16" },
103022105109 .extra_temps = .{
103023105110 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103024 .{ .type = .f64, .kind = .{ .reg = .st7 } },
103025 .{ .type = .i64, .kind = .mem },
103026 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103027 .unused,
103028 .unused,
103029 .unused,
105111 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105112 .{ .type = .usize, .kind = .{ .reg = .rdi } },
105113 .{ .type = .usize, .kind = .{ .reg = .rsi } },
105114 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105115 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105116 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
103030105117 .unused,
103031105118 .unused,
103032105119 .unused,
103033105120 .unused,
103034105121 },
103035105122 .dst_temps = .{ .mem, .unused },
105123 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103036105124 .each = .{ .once = &.{
103037 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103038 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
103039 .{ ._, .fi_p, .stt, .tmp2q, ._, ._, ._ },
103040 .{ ._, ._, .mov, .tmp3d, .tmp2d, ._, ._ },
103041 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103042 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
105125 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105126 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
105127 .{ .@"0:", ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
105128 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
105129 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
105130 .{ ._, ._dqa, .mov, .tmp5x, .tmp4x, ._, ._ },
105131 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
105132 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
105133 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
103043105134 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103044105135 } },
103045105136 }, .{
103046 .required_features = .{ .avx, null, null, null },
103047 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103048 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
105137 .required_features = .{ .@"64bit", .sse, null, null },
105138 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
105139 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
103049105140 .patterns = &.{
103050105141 .{ .src = .{ .to_mem, .none, .none } },
103051105142 },
103052 .call_frame = .{ .alignment = .@"16" },
105143 .call_frame = .{ .size = 16, .alignment = .@"16" },
103053105144 .extra_temps = .{
103054105145 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103055 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103056 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
103057 .{ .type = .i32, .kind = .{ .reg = .eax } },
103058 .unused,
103059 .unused,
103060 .unused,
105146 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105147 .{ .type = .usize, .kind = .{ .reg = .rdi } },
105148 .{ .type = .usize, .kind = .{ .reg = .rsi } },
105149 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105150 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105151 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
103061105152 .unused,
103062105153 .unused,
103063105154 .unused,
......@@ -103066,29 +105157,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103066105157 .dst_temps = .{ .mem, .unused },
103067105158 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103068105159 .each = .{ .once = &.{
103069 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103070 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
103071 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103072 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103073 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
105160 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105161 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
105162 .{ .@"0:", ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
105163 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
105164 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
105165 .{ ._, ._ps, .mova, .tmp5x, .tmp4x, ._, ._ },
105166 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
105167 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
105168 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
103074105169 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103075105170 } },
103076105171 }, .{
103077 .required_features = .{ .avx, null, null, null },
103078 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103079 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
105172 .required_features = .{ .@"64bit", .sse, null, null },
105173 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
105174 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
103080105175 .patterns = &.{
103081105176 .{ .src = .{ .to_mem, .none, .none } },
103082105177 },
103083 .call_frame = .{ .alignment = .@"16" },
105178 .call_frame = .{ .size = 16, .alignment = .@"16" },
103084105179 .extra_temps = .{
103085105180 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103086 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103087 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfsi" } } },
103088 .{ .type = .u32, .kind = .{ .reg = .eax } },
103089 .unused,
103090 .unused,
103091 .unused,
105181 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105182 .{ .type = .usize, .kind = .{ .reg = .rdi } },
105183 .{ .type = .usize, .kind = .{ .reg = .rsi } },
105184 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105185 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105186 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
103092105187 .unused,
103093105188 .unused,
103094105189 .unused,
......@@ -103097,25 +105192,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103097105192 .dst_temps = .{ .mem, .unused },
103098105193 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103099105194 .each = .{ .once = &.{
103100 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103101 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
103102 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103103 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103104 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
105195 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105196 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
105197 .{ .@"0:", ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
105198 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
105199 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
105200 .{ ._, ._ps, .mova, .tmp5x, .tmp4x, ._, ._ },
105201 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
105202 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
105203 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
103105105204 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103106105205 } },
103107105206 }, .{
103108 .required_features = .{ .sse2, null, null, null },
103109 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103110 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
105207 .required_features = .{ .avx, .slow_incdec, null, null },
105208 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105209 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
103111105210 .patterns = &.{
103112105211 .{ .src = .{ .to_mem, .none, .none } },
103113105212 },
103114105213 .call_frame = .{ .alignment = .@"16" },
103115105214 .extra_temps = .{
105215 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103116105216 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103117 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103118 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
105217 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105218 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
103119105219 .{ .type = .i32, .kind = .{ .reg = .eax } },
103120105220 .unused,
103121105221 .unused,
......@@ -103123,32 +105223,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103123105223 .unused,
103124105224 .unused,
103125105225 .unused,
103126 .unused,
103127105226 },
103128105227 .dst_temps = .{ .mem, .unused },
103129105228 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103130105229 .each = .{ .once = &.{
103131 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103132 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
103133 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103134 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103135 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
105230 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
105231 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105232 .{ .@"0:", .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
105233 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105234 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
105235 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
105236 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
103136105237 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103137105238 } },
103138105239 }, .{
103139 .required_features = .{ .sse2, null, null, null },
103140 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103141 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
105240 .required_features = .{ .avx, null, null, null },
105241 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105242 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
103142105243 .patterns = &.{
103143105244 .{ .src = .{ .to_mem, .none, .none } },
103144105245 },
103145105246 .call_frame = .{ .alignment = .@"16" },
103146105247 .extra_temps = .{
105248 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103147105249 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103148 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103149 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfsi" } } },
103150 .{ .type = .u32, .kind = .{ .reg = .eax } },
103151 .unused,
105250 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105251 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
105252 .{ .type = .i32, .kind = .{ .reg = .eax } },
103152105253 .unused,
103153105254 .unused,
103154105255 .unused,
......@@ -103159,25 +105260,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103159105260 .dst_temps = .{ .mem, .unused },
103160105261 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103161105262 .each = .{ .once = &.{
103162 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103163 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
103164 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103165 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103166 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103167 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105263 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
105264 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105265 .{ .@"0:", .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
105266 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105267 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
105268 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
105269 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
105270 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
103168105271 } },
103169105272 }, .{
103170 .required_features = .{ .sse, null, null, null },
103171 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103172 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
105273 .required_features = .{ .sse2, .slow_incdec, null, null },
105274 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105275 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
103173105276 .patterns = &.{
103174105277 .{ .src = .{ .to_mem, .none, .none } },
103175105278 },
103176105279 .call_frame = .{ .alignment = .@"16" },
103177105280 .extra_temps = .{
105281 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103178105282 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103179 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103180 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
105283 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105284 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
103181105285 .{ .type = .i32, .kind = .{ .reg = .eax } },
103182105286 .unused,
103183105287 .unused,
......@@ -103185,33 +105289,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103185105289 .unused,
103186105290 .unused,
103187105291 .unused,
103188 .unused,
103189105292 },
103190105293 .dst_temps = .{ .mem, .unused },
103191105294 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103192105295 .each = .{ .once = &.{
103193 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103194 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
103195 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
103196 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103197 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103198 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
105296 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
105297 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105298 .{ .@"0:", ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
105299 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105300 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
105301 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
105302 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
103199105303 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103200105304 } },
103201105305 }, .{
103202 .required_features = .{ .sse, null, null, null },
103203 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103204 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
105306 .required_features = .{ .sse2, null, null, null },
105307 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105308 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
103205105309 .patterns = &.{
103206105310 .{ .src = .{ .to_mem, .none, .none } },
103207105311 },
103208105312 .call_frame = .{ .alignment = .@"16" },
103209105313 .extra_temps = .{
105314 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103210105315 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103211 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103212 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfsi" } } },
103213 .{ .type = .u32, .kind = .{ .reg = .eax } },
103214 .unused,
105316 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105317 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
105318 .{ .type = .i32, .kind = .{ .reg = .eax } },
103215105319 .unused,
103216105320 .unused,
103217105321 .unused,
......@@ -103222,27 +105326,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103222105326 .dst_temps = .{ .mem, .unused },
103223105327 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103224105328 .each = .{ .once = &.{
103225 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103226 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
103227 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
103228 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103229 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103230 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103231 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105329 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
105330 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105331 .{ .@"0:", ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
105332 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105333 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
105334 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
105335 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
105336 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
103232105337 } },
103233105338 }, .{
103234 .required_features = .{ .@"64bit", .avx, null, null },
103235 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103236 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
105339 .required_features = .{ .sse, .slow_incdec, null, null },
105340 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105341 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
103237105342 .patterns = &.{
103238105343 .{ .src = .{ .to_mem, .none, .none } },
103239105344 },
105345 .call_frame = .{ .alignment = .@"16" },
103240105346 .extra_temps = .{
105347 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103241105348 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103242 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
103243 .unused,
103244 .unused,
103245 .unused,
105349 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105350 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
105351 .{ .type = .i32, .kind = .{ .reg = .eax } },
103246105352 .unused,
103247105353 .unused,
103248105354 .unused,
......@@ -103251,27 +105357,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103251105357 .unused,
103252105358 },
103253105359 .dst_temps = .{ .mem, .unused },
103254 .clobbers = .{ .eflags = true },
105360 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103255105361 .each = .{ .once = &.{
103256 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103257 .{ .@"0:", .v_, .cvttsd2si, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103258 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
103259 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
105362 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
105363 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105364 .{ .@"0:", ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
105365 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105366 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
105367 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
105368 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
103260105369 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103261105370 } },
103262105371 }, .{
103263 .required_features = .{ .@"64bit", .sse2, null, null },
103264 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103265 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
105372 .required_features = .{ .sse, null, null, null },
105373 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105374 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
103266105375 .patterns = &.{
103267105376 .{ .src = .{ .to_mem, .none, .none } },
103268105377 },
105378 .call_frame = .{ .alignment = .@"16" },
103269105379 .extra_temps = .{
105380 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103270105381 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103271 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
103272 .unused,
103273 .unused,
103274 .unused,
105382 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105383 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
105384 .{ .type = .i32, .kind = .{ .reg = .eax } },
103275105385 .unused,
103276105386 .unused,
103277105387 .unused,
......@@ -103280,26 +105390,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103280105390 .unused,
103281105391 },
103282105392 .dst_temps = .{ .mem, .unused },
103283 .clobbers = .{ .eflags = true },
105393 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103284105394 .each = .{ .once = &.{
103285 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103286 .{ .@"0:", ._, .cvttsd2si, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103287 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
103288 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103289 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105395 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
105396 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105397 .{ .@"0:", ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
105398 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105399 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
105400 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
105401 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
105402 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
103290105403 } },
103291105404 }, .{
103292 .required_features = .{ .x87, null, null, null },
103293 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103294 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
105405 .required_features = .{ .avx, null, null, null },
105406 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105407 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
103295105408 .patterns = &.{
103296105409 .{ .src = .{ .to_mem, .none, .none } },
103297105410 },
105411 .call_frame = .{ .alignment = .@"16" },
103298105412 .extra_temps = .{
103299105413 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103300 .{ .type = .f64, .kind = .{ .reg = .st7 } },
103301 .unused,
103302 .unused,
105414 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105415 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
105416 .{ .type = .i32, .kind = .{ .reg = .eax } },
103303105417 .unused,
103304105418 .unused,
103305105419 .unused,
......@@ -103309,26 +105423,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103309105423 .unused,
103310105424 },
103311105425 .dst_temps = .{ .mem, .unused },
105426 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103312105427 .each = .{ .once = &.{
103313 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103314 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
103315 .{ ._, .fi_p, .stt, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
103316 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
105428 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105429 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
105430 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105431 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
105432 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
103317105433 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103318105434 } },
103319105435 }, .{
103320 .required_features = .{ .avx, null, null, null },
103321 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103322 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
105436 .required_features = .{ .sse2, null, null, null },
105437 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105438 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
103323105439 .patterns = &.{
103324105440 .{ .src = .{ .to_mem, .none, .none } },
103325105441 },
103326105442 .call_frame = .{ .alignment = .@"16" },
103327105443 .extra_temps = .{
103328105444 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103329 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103330 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfdi" } } },
103331 .{ .type = .i64, .kind = .{ .reg = .rax } },
105445 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105446 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
105447 .{ .type = .i32, .kind = .{ .reg = .eax } },
103332105448 .unused,
103333105449 .unused,
103334105450 .unused,
......@@ -103340,26 +105456,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103340105456 .dst_temps = .{ .mem, .unused },
103341105457 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103342105458 .each = .{ .once = &.{
103343 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103344 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
105459 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105460 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
103345105461 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103346 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103347 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
105462 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
105463 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
103348105464 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103349105465 } },
103350105466 }, .{
103351 .required_features = .{ .avx, null, null, null },
103352 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103353 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
105467 .required_features = .{ .sse, null, null, null },
105468 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105469 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
103354105470 .patterns = &.{
103355105471 .{ .src = .{ .to_mem, .none, .none } },
103356105472 },
103357105473 .call_frame = .{ .alignment = .@"16" },
103358105474 .extra_temps = .{
103359105475 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103360 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103361 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfdi" } } },
103362 .{ .type = .u64, .kind = .{ .reg = .rax } },
105476 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105477 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
105478 .{ .type = .i32, .kind = .{ .reg = .eax } },
103363105479 .unused,
103364105480 .unused,
103365105481 .unused,
......@@ -103371,26 +105487,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103371105487 .dst_temps = .{ .mem, .unused },
103372105488 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103373105489 .each = .{ .once = &.{
103374 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103375 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
105490 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105491 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
103376105492 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103377 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103378 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
105493 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
105494 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
103379105495 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103380105496 } },
103381105497 }, .{
103382 .required_features = .{ .sse2, null, null, null },
103383 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103384 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
105498 .required_features = .{ .sse, null, null, null },
105499 .src_constraints = .{ .{ .float = .xword }, .any, .any },
105500 .dst_constraints = .{ .{ .signed_int = .dword }, .any },
103385105501 .patterns = &.{
103386 .{ .src = .{ .to_mem, .none, .none } },
105502 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
103387105503 },
103388105504 .call_frame = .{ .alignment = .@"16" },
103389105505 .extra_temps = .{
103390 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103391 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103392 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfdi" } } },
103393 .{ .type = .i64, .kind = .{ .reg = .rax } },
105506 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
105507 .unused,
105508 .unused,
105509 .unused,
103394105510 .unused,
103395105511 .unused,
103396105512 .unused,
......@@ -103399,29 +105515,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103399105515 .unused,
103400105516 .unused,
103401105517 },
103402 .dst_temps = .{ .mem, .unused },
105518 .dst_temps = .{ .{ .reg = .eax }, .unused },
103403105519 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103404105520 .each = .{ .once = &.{
103405 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103406 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103407 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103408 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103409 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103410 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105521 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
103411105522 } },
103412105523 }, .{
103413 .required_features = .{ .sse2, null, null, null },
103414 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103415 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
105524 .required_features = .{ .sse, null, null, null },
105525 .src_constraints = .{ .{ .float = .xword }, .any, .any },
105526 .dst_constraints = .{ .{ .unsigned_int = .dword }, .any },
103416105527 .patterns = &.{
103417 .{ .src = .{ .to_mem, .none, .none } },
105528 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
103418105529 },
103419105530 .call_frame = .{ .alignment = .@"16" },
103420105531 .extra_temps = .{
103421 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103422 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103423 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfdi" } } },
103424 .{ .type = .u64, .kind = .{ .reg = .rax } },
105532 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },
105533 .unused,
105534 .unused,
105535 .unused,
103425105536 .unused,
103426105537 .unused,
103427105538 .unused,
......@@ -103430,29 +105541,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103430105541 .unused,
103431105542 .unused,
103432105543 },
103433 .dst_temps = .{ .mem, .unused },
105544 .dst_temps = .{ .{ .reg = .eax }, .unused },
103434105545 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103435105546 .each = .{ .once = &.{
103436 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103437 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103438 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103439 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103440 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103441 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105547 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
103442105548 } },
103443105549 }, .{
103444 .required_features = .{ .sse, null, null, null },
103445 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103446 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
105550 .required_features = .{ .avx, null, null, null },
105551 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105552 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
103447105553 .patterns = &.{
103448105554 .{ .src = .{ .to_mem, .none, .none } },
103449105555 },
103450105556 .call_frame = .{ .alignment = .@"16" },
103451105557 .extra_temps = .{
103452105558 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103453 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103454 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfdi" } } },
103455 .{ .type = .i64, .kind = .{ .reg = .rax } },
105559 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105560 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
105561 .{ .type = .i32, .kind = .{ .reg = .eax } },
103456105562 .unused,
103457105563 .unused,
103458105564 .unused,
......@@ -103464,27 +105570,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103464105570 .dst_temps = .{ .mem, .unused },
103465105571 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103466105572 .each = .{ .once = &.{
103467 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103468 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
103469 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
105573 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105574 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
103470105575 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103471 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103472 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
105576 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
105577 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103473105578 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103474105579 } },
103475105580 }, .{
103476 .required_features = .{ .sse, null, null, null },
103477 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103478 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
105581 .required_features = .{ .avx, null, null, null },
105582 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105583 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
103479105584 .patterns = &.{
103480105585 .{ .src = .{ .to_mem, .none, .none } },
103481105586 },
103482105587 .call_frame = .{ .alignment = .@"16" },
103483105588 .extra_temps = .{
103484105589 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103485 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103486 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfdi" } } },
103487 .{ .type = .u64, .kind = .{ .reg = .rax } },
105590 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105591 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },
105592 .{ .type = .u32, .kind = .{ .reg = .eax } },
103488105593 .unused,
103489105594 .unused,
103490105595 .unused,
......@@ -103496,28 +105601,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103496105601 .dst_temps = .{ .mem, .unused },
103497105602 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103498105603 .each = .{ .once = &.{
103499 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103500 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
103501 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
105604 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105605 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
103502105606 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103503 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103504 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
105607 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
105608 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103505105609 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103506105610 } },
103507105611 }, .{
103508 .required_features = .{ .avx, null, null, null },
103509 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103510 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
105612 .required_features = .{ .sse2, null, null, null },
105613 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105614 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
103511105615 .patterns = &.{
103512105616 .{ .src = .{ .to_mem, .none, .none } },
103513105617 },
103514105618 .call_frame = .{ .alignment = .@"16" },
103515105619 .extra_temps = .{
103516105620 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103517 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103518 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },
103519 .{ .type = .u64, .kind = .{ .reg = .rax } },
103520 .{ .type = .i64, .kind = .{ .reg = .rdx } },
105621 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105622 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
105623 .{ .type = .i32, .kind = .{ .reg = .eax } },
105624 .unused,
103521105625 .unused,
103522105626 .unused,
103523105627 .unused,
......@@ -103528,28 +105632,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103528105632 .dst_temps = .{ .mem, .unused },
103529105633 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103530105634 .each = .{ .once = &.{
103531 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103532 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
105635 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105636 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
103533105637 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103534 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103535 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
103536 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
105638 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
105639 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103537105640 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103538105641 } },
103539105642 }, .{
103540 .required_features = .{ .avx, null, null, null },
103541 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103542 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
105643 .required_features = .{ .sse2, null, null, null },
105644 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105645 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
103543105646 .patterns = &.{
103544105647 .{ .src = .{ .to_mem, .none, .none } },
103545105648 },
103546105649 .call_frame = .{ .alignment = .@"16" },
103547105650 .extra_temps = .{
103548105651 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103549 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103550 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },
103551 .{ .type = .u64, .kind = .{ .reg = .rax } },
103552 .{ .type = .u64, .kind = .{ .reg = .rdx } },
105652 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105653 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },
105654 .{ .type = .u32, .kind = .{ .reg = .eax } },
105655 .unused,
103553105656 .unused,
103554105657 .unused,
103555105658 .unused,
......@@ -103560,28 +105663,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103560105663 .dst_temps = .{ .mem, .unused },
103561105664 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103562105665 .each = .{ .once = &.{
103563 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103564 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
105666 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105667 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
103565105668 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103566 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103567 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
103568 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
105669 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
105670 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103569105671 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103570105672 } },
103571105673 }, .{
103572 .required_features = .{ .sse2, null, null, null },
103573 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103574 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
105674 .required_features = .{ .sse, null, null, null },
105675 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105676 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
103575105677 .patterns = &.{
103576105678 .{ .src = .{ .to_mem, .none, .none } },
103577105679 },
103578105680 .call_frame = .{ .alignment = .@"16" },
103579105681 .extra_temps = .{
103580105682 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103581 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103582 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },
103583 .{ .type = .u64, .kind = .{ .reg = .rax } },
103584 .{ .type = .i64, .kind = .{ .reg = .rdx } },
105683 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105684 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
105685 .{ .type = .i32, .kind = .{ .reg = .eax } },
105686 .unused,
103585105687 .unused,
103586105688 .unused,
103587105689 .unused,
......@@ -103592,28 +105694,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103592105694 .dst_temps = .{ .mem, .unused },
103593105695 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103594105696 .each = .{ .once = &.{
103595 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103596 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
105697 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105698 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
103597105699 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103598 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103599 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
103600 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
105700 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
105701 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103601105702 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103602105703 } },
103603105704 }, .{
103604 .required_features = .{ .sse2, null, null, null },
103605 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103606 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
105705 .required_features = .{ .sse, null, null, null },
105706 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105707 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
103607105708 .patterns = &.{
103608105709 .{ .src = .{ .to_mem, .none, .none } },
103609105710 },
103610105711 .call_frame = .{ .alignment = .@"16" },
103611105712 .extra_temps = .{
103612105713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103613 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103614 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },
103615 .{ .type = .u64, .kind = .{ .reg = .rax } },
103616 .{ .type = .u64, .kind = .{ .reg = .rdx } },
105714 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105715 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },
105716 .{ .type = .u32, .kind = .{ .reg = .eax } },
105717 .unused,
103617105718 .unused,
103618105719 .unused,
103619105720 .unused,
......@@ -103624,28 +105725,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103624105725 .dst_temps = .{ .mem, .unused },
103625105726 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103626105727 .each = .{ .once = &.{
103627 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103628 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
105728 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105729 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
103629105730 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103630 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103631 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
103632 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
105731 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
105732 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103633105733 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103634105734 } },
103635105735 }, .{
103636 .required_features = .{ .sse, null, null, null },
103637 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103638 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
105736 .required_features = .{ .@"64bit", .sse, null, null },
105737 .src_constraints = .{ .{ .float = .xword }, .any, .any },
105738 .dst_constraints = .{ .{ .signed_int = .qword }, .any },
103639105739 .patterns = &.{
103640 .{ .src = .{ .to_mem, .none, .none } },
105740 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
103641105741 },
103642105742 .call_frame = .{ .alignment = .@"16" },
103643105743 .extra_temps = .{
103644 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103645 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103646 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },
103647 .{ .type = .u64, .kind = .{ .reg = .rax } },
103648 .{ .type = .i64, .kind = .{ .reg = .rdx } },
105744 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },
105745 .unused,
105746 .unused,
105747 .unused,
105748 .unused,
103649105749 .unused,
103650105750 .unused,
103651105751 .unused,
......@@ -103653,32 +105753,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103653105753 .unused,
103654105754 .unused,
103655105755 },
103656 .dst_temps = .{ .mem, .unused },
105756 .dst_temps = .{ .{ .reg = .rax }, .unused },
103657105757 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103658105758 .each = .{ .once = &.{
103659 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103660 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
103661 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103662 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103663 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103664 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
103665 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103666 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105759 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
103667105760 } },
103668105761 }, .{
103669 .required_features = .{ .sse, null, null, null },
103670 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103671 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
105762 .required_features = .{ .@"64bit", .sse, null, null },
105763 .src_constraints = .{ .{ .float = .xword }, .any, .any },
105764 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },
103672105765 .patterns = &.{
103673 .{ .src = .{ .to_mem, .none, .none } },
105766 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
103674105767 },
103675105768 .call_frame = .{ .alignment = .@"16" },
103676105769 .extra_temps = .{
103677 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103678 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103679 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },
103680 .{ .type = .u64, .kind = .{ .reg = .rax } },
103681 .{ .type = .u64, .kind = .{ .reg = .rdx } },
105770 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },
105771 .unused,
105772 .unused,
105773 .unused,
105774 .unused,
103682105775 .unused,
103683105776 .unused,
103684105777 .unused,
......@@ -103686,33 +105779,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103686105779 .unused,
103687105780 .unused,
103688105781 },
103689 .dst_temps = .{ .mem, .unused },
105782 .dst_temps = .{ .{ .reg = .rax }, .unused },
103690105783 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103691105784 .each = .{ .once = &.{
103692 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103693 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
103694 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103695 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103696 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103697 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
103698 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103699 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105785 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
103700105786 } },
103701105787 }, .{
103702105788 .required_features = .{ .@"64bit", .avx, null, null },
103703 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103704 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
105789 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105790 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
103705105791 .patterns = &.{
103706105792 .{ .src = .{ .to_mem, .none, .none } },
103707105793 },
103708105794 .call_frame = .{ .alignment = .@"16" },
103709105795 .extra_temps = .{
103710105796 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103711 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103712 .{ .type = .usize, .kind = .{ .reg = .rdi } },
103713 .{ .type = .usize, .kind = .{ .reg = .rsi } },
103714 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103715 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },
105797 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105798 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },
105799 .{ .type = .i64, .kind = .{ .reg = .rax } },
105800 .unused,
105801 .unused,
103716105802 .unused,
103717105803 .unused,
103718105804 .unused,
......@@ -103722,31 +105808,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103722105808 .dst_temps = .{ .mem, .unused },
103723105809 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103724105810 .each = .{ .once = &.{
103725 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103726 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
103727 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
103728 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
103729 .{ ._, .v_sd, .mov, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103730 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
103731 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
105811 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105812 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
105813 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105814 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103732105815 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103733105816 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103734105817 } },
103735105818 }, .{
103736105819 .required_features = .{ .@"64bit", .avx, null, null },
103737 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103738 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
105820 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105821 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
103739105822 .patterns = &.{
103740105823 .{ .src = .{ .to_mem, .none, .none } },
103741105824 },
103742105825 .call_frame = .{ .alignment = .@"16" },
103743105826 .extra_temps = .{
103744105827 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103745 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103746 .{ .type = .usize, .kind = .{ .reg = .rdi } },
103747 .{ .type = .usize, .kind = .{ .reg = .rsi } },
103748 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103749 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },
105828 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105829 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },
105830 .{ .type = .u64, .kind = .{ .reg = .rax } },
105831 .unused,
105832 .unused,
103750105833 .unused,
103751105834 .unused,
103752105835 .unused,
......@@ -103756,31 +105839,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103756105839 .dst_temps = .{ .mem, .unused },
103757105840 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103758105841 .each = .{ .once = &.{
103759 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103760 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
103761 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
103762 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
103763 .{ ._, .v_sd, .mov, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103764 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
103765 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
105842 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105843 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
105844 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105845 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103766105846 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103767105847 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103768105848 } },
103769105849 }, .{
103770105850 .required_features = .{ .@"64bit", .sse2, null, null },
103771 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103772 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
105851 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105852 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
103773105853 .patterns = &.{
103774105854 .{ .src = .{ .to_mem, .none, .none } },
103775105855 },
103776105856 .call_frame = .{ .alignment = .@"16" },
103777105857 .extra_temps = .{
103778105858 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103779 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103780 .{ .type = .usize, .kind = .{ .reg = .rdi } },
103781 .{ .type = .usize, .kind = .{ .reg = .rsi } },
103782 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103783 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },
105859 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105860 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },
105861 .{ .type = .i64, .kind = .{ .reg = .rax } },
105862 .unused,
105863 .unused,
103784105864 .unused,
103785105865 .unused,
103786105866 .unused,
......@@ -103790,31 +105870,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103790105870 .dst_temps = .{ .mem, .unused },
103791105871 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103792105872 .each = .{ .once = &.{
103793 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103794 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
103795 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
103796 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
103797 .{ ._, ._sd, .mov, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103798 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
103799 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
105873 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105874 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
105875 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105876 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103800105877 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103801105878 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103802105879 } },
103803105880 }, .{
103804105881 .required_features = .{ .@"64bit", .sse2, null, null },
103805 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103806 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
105882 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105883 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
103807105884 .patterns = &.{
103808105885 .{ .src = .{ .to_mem, .none, .none } },
103809105886 },
103810105887 .call_frame = .{ .alignment = .@"16" },
103811105888 .extra_temps = .{
103812105889 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103813 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103814 .{ .type = .usize, .kind = .{ .reg = .rdi } },
103815 .{ .type = .usize, .kind = .{ .reg = .rsi } },
103816 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103817 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },
105890 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105891 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },
105892 .{ .type = .u64, .kind = .{ .reg = .rax } },
105893 .unused,
105894 .unused,
103818105895 .unused,
103819105896 .unused,
103820105897 .unused,
......@@ -103824,31 +105901,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103824105901 .dst_temps = .{ .mem, .unused },
103825105902 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103826105903 .each = .{ .once = &.{
103827 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103828 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
103829 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
103830 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
103831 .{ ._, ._sd, .mov, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103832 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
103833 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
105904 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105905 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
105906 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105907 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103834105908 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103835105909 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103836105910 } },
103837105911 }, .{
103838105912 .required_features = .{ .@"64bit", .sse, null, null },
103839 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103840 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
105913 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105914 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
103841105915 .patterns = &.{
103842105916 .{ .src = .{ .to_mem, .none, .none } },
103843105917 },
103844105918 .call_frame = .{ .alignment = .@"16" },
103845105919 .extra_temps = .{
103846105920 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103847 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103848 .{ .type = .usize, .kind = .{ .reg = .rdi } },
103849 .{ .type = .usize, .kind = .{ .reg = .rsi } },
103850 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103851 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },
105921 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105922 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },
105923 .{ .type = .i64, .kind = .{ .reg = .rax } },
105924 .unused,
105925 .unused,
103852105926 .unused,
103853105927 .unused,
103854105928 .unused,
......@@ -103858,32 +105932,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103858105932 .dst_temps = .{ .mem, .unused },
103859105933 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103860105934 .each = .{ .once = &.{
103861 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103862 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
103863 .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ },
103864 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
103865 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
103866 .{ ._, ._ps, .movl, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103867 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
103868 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
105935 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105936 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
105937 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105938 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103869105939 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103870105940 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103871105941 } },
103872105942 }, .{
103873105943 .required_features = .{ .@"64bit", .sse, null, null },
103874 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
103875 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
105944 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105945 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
103876105946 .patterns = &.{
103877105947 .{ .src = .{ .to_mem, .none, .none } },
103878105948 },
103879105949 .call_frame = .{ .alignment = .@"16" },
103880105950 .extra_temps = .{
103881105951 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103882 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103883 .{ .type = .usize, .kind = .{ .reg = .rdi } },
103884 .{ .type = .usize, .kind = .{ .reg = .rsi } },
103885 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103886 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },
105952 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105953 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },
105954 .{ .type = .u64, .kind = .{ .reg = .rax } },
105955 .unused,
105956 .unused,
103887105957 .unused,
103888105958 .unused,
103889105959 .unused,
......@@ -103893,28 +105963,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103893105963 .dst_temps = .{ .mem, .unused },
103894105964 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103895105965 .each = .{ .once = &.{
103896 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103897 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
103898 .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ },
103899 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
103900 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
103901 .{ ._, ._ps, .movl, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103902 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
103903 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
105966 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105967 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
105968 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105969 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103904105970 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103905105971 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103906105972 } },
103907105973 }, .{
103908 .required_features = .{ .x87, null, null, null },
103909 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
103910 .dst_constraints = .{ .{ .signed_int = .byte }, .any },
105974 .required_features = .{ .@"64bit", .sse, null, null },
105975 .src_constraints = .{ .{ .float = .xword }, .any, .any },
105976 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
103911105977 .patterns = &.{
103912 .{ .src = .{ .mem, .none, .none } },
103913 .{ .src = .{ .to_x87, .none, .none } },
105978 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
103914105979 },
105980 .call_frame = .{ .alignment = .@"16" },
103915105981 .extra_temps = .{
103916 .{ .type = .f64, .kind = .{ .reg = .st7 } },
103917 .{ .type = .i16, .kind = .mem },
105982 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },
105983 .unused,
103918105984 .unused,
103919105985 .unused,
103920105986 .unused,
......@@ -103925,23 +105991,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103925105991 .unused,
103926105992 .unused,
103927105993 },
103928 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
105994 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
105995 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103929105996 .each = .{ .once = &.{
103930 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
103931 .{ ._, .fi_p, .stt, .tmp1w, ._, ._, ._ },
103932 .{ ._, ._, .movsx, .dst0d, .tmp1b, ._, ._ },
105997 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
103933105998 } },
103934105999 }, .{
103935 .required_features = .{ .x87, null, null, null },
103936 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
103937 .dst_constraints = .{ .{ .unsigned_int = .byte }, .any },
106000 .required_features = .{ .@"64bit", .sse, null, null },
106001 .src_constraints = .{ .{ .float = .xword }, .any, .any },
106002 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
103938106003 .patterns = &.{
103939 .{ .src = .{ .mem, .none, .none } },
103940 .{ .src = .{ .to_x87, .none, .none } },
106004 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
103941106005 },
106006 .call_frame = .{ .alignment = .@"16" },
103942106007 .extra_temps = .{
103943 .{ .type = .f64, .kind = .{ .reg = .st7 } },
103944 .{ .type = .i16, .kind = .mem },
106008 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },
106009 .unused,
103945106010 .unused,
103946106011 .unused,
103947106012 .unused,
......@@ -103952,25 +106017,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103952106017 .unused,
103953106018 .unused,
103954106019 },
103955 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
106020 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
106021 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103956106022 .each = .{ .once = &.{
103957 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
103958 .{ ._, .fi_p, .stt, .tmp1w, ._, ._, ._ },
103959 .{ ._, ._, .movzx, .dst0d, .tmp1b, ._, ._ },
106023 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
103960106024 } },
103961106025 }, .{
103962 .required_features = .{ .x87, .slow_incdec, null, null },
103963 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
103964 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
106026 .required_features = .{ .@"64bit", .avx, null, null },
106027 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
106028 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
103965106029 .patterns = &.{
103966106030 .{ .src = .{ .to_mem, .none, .none } },
103967106031 },
106032 .call_frame = .{ .alignment = .@"16" },
103968106033 .extra_temps = .{
103969 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103970106034 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103971 .{ .type = .f80, .kind = .{ .reg = .st7 } },
103972 .{ .type = .i16, .kind = .mem },
103973 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
106035 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106036 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },
106037 .{ .type = .u64, .kind = .{ .reg = .rax } },
106038 .{ .type = .i64, .kind = .{ .reg = .rdx } },
103974106039 .unused,
103975106040 .unused,
103976106041 .unused,
......@@ -103979,31 +106044,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103979106044 .unused,
103980106045 },
103981106046 .dst_temps = .{ .mem, .unused },
103982 .clobbers = .{ .eflags = true },
106047 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103983106048 .each = .{ .once = &.{
103984 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
103985 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103986 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
103987 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },
103988 .{ ._, ._, .movsx, .tmp4d, .tmp3b, ._, ._ },
103989 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
103990 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
103991 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
106049 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106050 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
106051 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106052 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
106053 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
106054 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
103992106055 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103993106056 } },
103994106057 }, .{
103995 .required_features = .{ .x87, null, null, null },
103996 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
103997 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
106058 .required_features = .{ .@"64bit", .avx, null, null },
106059 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
106060 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
103998106061 .patterns = &.{
103999106062 .{ .src = .{ .to_mem, .none, .none } },
104000106063 },
106064 .call_frame = .{ .alignment = .@"16" },
104001106065 .extra_temps = .{
104002 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104003106066 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104004 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104005 .{ .type = .i16, .kind = .mem },
104006 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
106067 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106068 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },
106069 .{ .type = .u64, .kind = .{ .reg = .rax } },
106070 .{ .type = .u64, .kind = .{ .reg = .rdx } },
104007106071 .unused,
104008106072 .unused,
104009106073 .unused,
......@@ -104012,31 +106076,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104012106076 .unused,
104013106077 },
104014106078 .dst_temps = .{ .mem, .unused },
104015 .clobbers = .{ .eflags = true },
106079 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104016106080 .each = .{ .once = &.{
104017 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
104018 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104019 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
104020 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },
104021 .{ ._, ._, .movsx, .tmp4d, .tmp3b, ._, ._ },
104022 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
104023 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
104024 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
104025 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
106081 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106082 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
106083 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106084 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
106085 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
106086 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
106087 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104026106088 } },
104027106089 }, .{
104028 .required_features = .{ .x87, .slow_incdec, null, null },
104029 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104030 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
106090 .required_features = .{ .@"64bit", .sse2, null, null },
106091 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
106092 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
104031106093 .patterns = &.{
104032106094 .{ .src = .{ .to_mem, .none, .none } },
104033106095 },
106096 .call_frame = .{ .alignment = .@"16" },
104034106097 .extra_temps = .{
104035 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104036106098 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104037 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104038 .{ .type = .i16, .kind = .mem },
104039 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
106099 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106100 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },
106101 .{ .type = .u64, .kind = .{ .reg = .rax } },
106102 .{ .type = .i64, .kind = .{ .reg = .rdx } },
104040106103 .unused,
104041106104 .unused,
104042106105 .unused,
......@@ -104045,65 +106108,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104045106108 .unused,
104046106109 },
104047106110 .dst_temps = .{ .mem, .unused },
104048 .clobbers = .{ .eflags = true },
106111 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104049106112 .each = .{ .once = &.{
104050 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
104051 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104052 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
104053 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },
104054 .{ ._, ._, .movzx, .tmp4d, .tmp3b, ._, ._ },
104055 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
104056 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
104057 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
106113 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106114 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
106115 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106116 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
106117 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
106118 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
104058106119 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104059106120 } },
104060106121 }, .{
104061 .required_features = .{ .x87, null, null, null },
104062 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104063 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
106122 .required_features = .{ .@"64bit", .sse2, null, null },
106123 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
106124 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
104064106125 .patterns = &.{
104065106126 .{ .src = .{ .to_mem, .none, .none } },
104066106127 },
106128 .call_frame = .{ .alignment = .@"16" },
104067106129 .extra_temps = .{
104068 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104069106130 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104070 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104071 .{ .type = .i16, .kind = .mem },
104072 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
104073 .unused,
104074 .unused,
104075 .unused,
104076 .unused,
104077 .unused,
104078 .unused,
104079 },
104080 .dst_temps = .{ .mem, .unused },
104081 .clobbers = .{ .eflags = true },
104082 .each = .{ .once = &.{
104083 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
104084 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104085 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
104086 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },
104087 .{ ._, ._, .movzx, .tmp4d, .tmp3b, ._, ._ },
104088 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
104089 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
104090 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
104091 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
104092 } },
104093 }, .{
104094 .required_features = .{ .x87, null, null, null },
104095 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104096 .dst_constraints = .{ .{ .signed_or_exclusive_int = .word }, .any },
104097 .patterns = &.{
104098 .{ .src = .{ .mem, .none, .none } },
104099 .{ .src = .{ .to_x87, .none, .none } },
104100 },
104101 .extra_temps = .{
104102 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104103 .unused,
104104 .unused,
104105 .unused,
104106 .unused,
106131 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106132 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },
106133 .{ .type = .u64, .kind = .{ .reg = .rax } },
106134 .{ .type = .u64, .kind = .{ .reg = .rdx } },
104107106135 .unused,
104108106136 .unused,
104109106137 .unused,
......@@ -104112,23 +106140,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104112106140 .unused,
104113106141 },
104114106142 .dst_temps = .{ .mem, .unused },
106143 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104115106144 .each = .{ .once = &.{
104116 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
104117 .{ ._, .fi_p, .stt, .dst0w, ._, ._, ._ },
106145 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106146 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
106147 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106148 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
106149 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
106150 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
106151 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104118106152 } },
104119106153 }, .{
104120 .required_features = .{ .x87, null, null, null },
104121 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104122 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
106154 .required_features = .{ .@"64bit", .sse, null, null },
106155 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
106156 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
104123106157 .patterns = &.{
104124106158 .{ .src = .{ .to_mem, .none, .none } },
104125106159 },
106160 .call_frame = .{ .alignment = .@"16" },
104126106161 .extra_temps = .{
104127106162 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104128 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104129 .unused,
104130 .unused,
104131 .unused,
106163 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106164 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },
106165 .{ .type = .u64, .kind = .{ .reg = .rax } },
106166 .{ .type = .i64, .kind = .{ .reg = .rdx } },
104132106167 .unused,
104133106168 .unused,
104134106169 .unused,
......@@ -104137,27 +106172,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104137106172 .unused,
104138106173 },
104139106174 .dst_temps = .{ .mem, .unused },
104140 .clobbers = .{ .eflags = true },
106175 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104141106176 .each = .{ .once = &.{
104142 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104143 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
104144 .{ ._, .fi_p, .stt, .memia(.dst0w, .tmp0, .add_unaligned_size), ._, ._, ._ },
104145 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106177 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106178 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
106179 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106180 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
106181 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
106182 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
104146106183 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104147106184 } },
104148106185 }, .{
104149 .required_features = .{ .x87, null, null, null },
104150 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104151 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
106186 .required_features = .{ .@"64bit", .sse, null, null },
106187 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
106188 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
104152106189 .patterns = &.{
104153106190 .{ .src = .{ .to_mem, .none, .none } },
104154106191 },
106192 .call_frame = .{ .alignment = .@"16" },
104155106193 .extra_temps = .{
104156106194 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104157 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104158 .{ .type = .i32, .kind = .mem },
104159 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
104160 .unused,
106195 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106196 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },
106197 .{ .type = .u64, .kind = .{ .reg = .rax } },
106198 .{ .type = .u64, .kind = .{ .reg = .rdx } },
104161106199 .unused,
104162106200 .unused,
104163106201 .unused,
......@@ -104166,28 +106204,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104166106204 .unused,
104167106205 },
104168106206 .dst_temps = .{ .mem, .unused },
104169 .clobbers = .{ .eflags = true },
106207 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104170106208 .each = .{ .once = &.{
104171 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104172 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
104173 .{ ._, .fi_p, .stt, .tmp2d, ._, ._, ._ },
104174 .{ ._, ._, .mov, .tmp3d, .tmp2d, ._, ._ },
104175 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
104176 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106209 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106210 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
106211 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106212 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
106213 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
106214 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
104177106215 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104178106216 } },
104179106217 }, .{
104180 .required_features = .{ .x87, null, null, null },
104181 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104182 .dst_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any },
106218 .required_features = .{ .@"64bit", .sse, null, null },
106219 .src_constraints = .{ .{ .float = .xword }, .any, .any },
106220 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
104183106221 .patterns = &.{
104184 .{ .src = .{ .mem, .none, .none } },
104185 .{ .src = .{ .to_x87, .none, .none } },
106222 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
104186106223 },
106224 .call_frame = .{ .alignment = .@"16" },
104187106225 .extra_temps = .{
104188 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104189 .unused,
104190 .unused,
106226 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106227 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106228 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },
104191106229 .unused,
104192106230 .unused,
104193106231 .unused,
......@@ -104198,21 +106236,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104198106236 .unused,
104199106237 },
104200106238 .dst_temps = .{ .mem, .unused },
106239 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104201106240 .each = .{ .once = &.{
104202 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
104203 .{ ._, .fi_p, .stt, .dst0d, ._, ._, ._ },
106241 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
106242 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
106243 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104204106244 } },
104205106245 }, .{
104206 .required_features = .{ .x87, null, null, null },
104207 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104208 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
106246 .required_features = .{ .@"64bit", .sse, null, null },
106247 .src_constraints = .{ .{ .float = .xword }, .any, .any },
106248 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
104209106249 .patterns = &.{
104210 .{ .src = .{ .to_mem, .none, .none } },
106250 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
104211106251 },
106252 .call_frame = .{ .alignment = .@"16" },
104212106253 .extra_temps = .{
104213 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104214 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104215 .unused,
106254 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106255 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106256 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },
104216106257 .unused,
104217106258 .unused,
104218106259 .unused,
......@@ -104223,60 +106264,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104223106264 .unused,
104224106265 },
104225106266 .dst_temps = .{ .mem, .unused },
104226 .clobbers = .{ .eflags = true },
106267 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104227106268 .each = .{ .once = &.{
104228 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104229 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
104230 .{ ._, .fi_p, .stt, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
104231 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
104232 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106269 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
106270 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
106271 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104233106272 } },
104234106273 }, .{
104235 .required_features = .{ .x87, null, null, null },
104236 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104237 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
106274 .required_features = .{ .@"64bit", .avx, null, null },
106275 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
106276 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
104238106277 .patterns = &.{
104239106278 .{ .src = .{ .to_mem, .none, .none } },
104240106279 },
106280 .call_frame = .{ .alignment = .@"16" },
104241106281 .extra_temps = .{
104242106282 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104243 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104244 .{ .type = .i64, .kind = .mem },
104245 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104246 .unused,
104247 .unused,
104248 .unused,
104249 .unused,
104250 .unused,
104251 .unused,
104252 .unused,
104253 },
104254 .dst_temps = .{ .mem, .unused },
104255 .clobbers = .{ .eflags = true },
104256 .each = .{ .once = &.{
104257 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104258 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
104259 .{ ._, .fi_p, .stt, .tmp2q, ._, ._, ._ },
104260 .{ ._, ._, .mov, .tmp3d, .tmp2d, ._, ._ },
104261 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
104262 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
104263 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104264 } },
104265 }, .{
104266 .required_features = .{ .x87, null, null, null },
104267 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104268 .dst_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any },
104269 .patterns = &.{
104270 .{ .src = .{ .mem, .none, .none } },
104271 .{ .src = .{ .to_x87, .none, .none } },
104272 },
104273 .extra_temps = .{
104274 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104275 .unused,
104276 .unused,
104277 .unused,
104278 .unused,
104279 .unused,
106283 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106284 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106285 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106286 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106287 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },
104280106288 .unused,
104281106289 .unused,
104282106290 .unused,
......@@ -104284,60 +106292,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104284106292 .unused,
104285106293 },
104286106294 .dst_temps = .{ .mem, .unused },
106295 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104287106296 .each = .{ .once = &.{
104288 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
104289 .{ ._, .fi_p, .stt, .dst0q, ._, ._, ._ },
104290 } },
104291 }, .{
104292 .required_features = .{ .@"64bit", .x87, null, null },
104293 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104294 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },
104295 .patterns = &.{
104296 .{ .src = .{ .mem, .none, .none } },
104297 .{ .src = .{ .to_x87, .none, .none } },
104298 },
104299 .extra_temps = .{
104300 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
104301 .{ .type = .f32, .kind = .{ .@"0x1p63_mem" = .{} } },
104302 .{ .type = .f64, .kind = .{ .reg = .st6 } },
104303 .{ .type = .f64, .kind = .{ .reg = .st7 } },
104304 .{ .type = .i64, .kind = .mem },
104305 .unused,
104306 .unused,
104307 .unused,
104308 .unused,
104309 .unused,
104310 .unused,
104311 },
104312 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
104313 .clobbers = .{ .eflags = true },
104314 .each = .{ .once = &.{
104315 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
104316 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
104317 .{ ._, .f_, .ld, .tmp3t, ._, ._, ._ },
104318 .{ ._, .fi_p, .stt, .tmp4q, ._, ._, ._ },
104319 .{ ._, ._, .mov, .dst0q, .tmp4q, ._, ._ },
104320 .{ ._, .f_, .sub, .lea(.tmp0d), ._, ._, ._ },
104321 .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ },
104322 .{ ._, .fi_p, .stt, .tmp4q, ._, ._, ._ },
104323 .{ ._, ._r, .sa, .dst0q, .ui(63), ._, ._ },
104324 .{ ._, ._, .@"and", .dst0q, .tmp4q, ._, ._ },
104325 .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ },
106297 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106298 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
106299 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
106300 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
106301 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
106302 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
106303 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106304 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
106305 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104326106306 } },
104327106307 }, .{
104328 .required_features = .{ .x87, null, null, null },
104329 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104330 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
106308 .required_features = .{ .@"64bit", .avx, null, null },
106309 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
106310 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
104331106311 .patterns = &.{
104332106312 .{ .src = .{ .to_mem, .none, .none } },
104333106313 },
106314 .call_frame = .{ .alignment = .@"16" },
104334106315 .extra_temps = .{
104335106316 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104336 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104337 .unused,
104338 .unused,
104339 .unused,
104340 .unused,
106317 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106318 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106319 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106320 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106321 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },
104341106322 .unused,
104342106323 .unused,
104343106324 .unused,
......@@ -104345,29 +106326,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104345106326 .unused,
104346106327 },
104347106328 .dst_temps = .{ .mem, .unused },
104348 .clobbers = .{ .eflags = true },
106329 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104349106330 .each = .{ .once = &.{
104350 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104351 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
104352 .{ ._, .fi_p, .stt, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
104353 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
106331 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106332 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
106333 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
106334 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
106335 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
106336 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
106337 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106338 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
104354106339 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104355106340 } },
104356106341 }, .{
104357 .required_features = .{ .@"64bit", .avx, null, null },
104358 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104359 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
106342 .required_features = .{ .@"64bit", .sse2, null, null },
106343 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
106344 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
104360106345 .patterns = &.{
104361106346 .{ .src = .{ .to_mem, .none, .none } },
104362106347 },
104363 .call_frame = .{ .size = 16, .alignment = .@"16" },
106348 .call_frame = .{ .alignment = .@"16" },
104364106349 .extra_temps = .{
104365106350 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104366 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104367 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104368 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
104369 .{ .type = .u64, .kind = .{ .reg = .rax } },
104370 .unused,
106351 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106352 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106353 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106354 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106355 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },
104371106356 .unused,
104372106357 .unused,
104373106358 .unused,
......@@ -104377,29 +106362,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104377106362 .dst_temps = .{ .mem, .unused },
104378106363 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104379106364 .each = .{ .once = &.{
104380 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104381 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
104382 .{ ._, .v_dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
104383 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
104384 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
104385 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
106365 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106366 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
106367 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
106368 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
106369 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
106370 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
106371 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106372 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
104386106373 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104387106374 } },
104388106375 }, .{
104389106376 .required_features = .{ .@"64bit", .sse2, null, null },
104390 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104391 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
106377 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
106378 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
104392106379 .patterns = &.{
104393106380 .{ .src = .{ .to_mem, .none, .none } },
104394106381 },
104395 .call_frame = .{ .size = 16, .alignment = .@"16" },
106382 .call_frame = .{ .alignment = .@"16" },
104396106383 .extra_temps = .{
104397106384 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104398 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104399 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104400 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
104401 .{ .type = .u64, .kind = .{ .reg = .rax } },
104402 .unused,
106385 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106386 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106387 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106388 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106389 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },
104403106390 .unused,
104404106391 .unused,
104405106392 .unused,
......@@ -104409,29 +106396,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104409106396 .dst_temps = .{ .mem, .unused },
104410106397 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104411106398 .each = .{ .once = &.{
104412 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104413 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
104414 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
104415 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
104416 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
104417 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
106399 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106400 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
106401 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
106402 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
106403 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
106404 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
106405 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106406 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
104418106407 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104419106408 } },
104420106409 }, .{
104421106410 .required_features = .{ .@"64bit", .sse, null, null },
104422 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104423 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
106411 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
106412 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
104424106413 .patterns = &.{
104425106414 .{ .src = .{ .to_mem, .none, .none } },
104426106415 },
104427 .call_frame = .{ .size = 16, .alignment = .@"16" },
106416 .call_frame = .{ .alignment = .@"16" },
104428106417 .extra_temps = .{
104429106418 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104430 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104431 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104432 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
104433 .{ .type = .u64, .kind = .{ .reg = .rax } },
104434 .unused,
106419 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106420 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106421 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106422 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106423 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },
104435106424 .unused,
104436106425 .unused,
104437106426 .unused,
......@@ -104441,54 +106430,77 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104441106430 .dst_temps = .{ .mem, .unused },
104442106431 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104443106432 .each = .{ .once = &.{
104444 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104445 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
104446 .{ ._, ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
104447 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
104448 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
104449 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
106433 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106434 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
106435 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
106436 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
106437 .{ ._, ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
106438 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
106439 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106440 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
104450106441 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104451106442 } },
104452106443 }, .{
104453 .required_features = .{ .@"64bit", .avx, null, null },
104454 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104455 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
106444 .required_features = .{ .@"64bit", .sse, null, null },
106445 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
106446 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
104456106447 .patterns = &.{
104457106448 .{ .src = .{ .to_mem, .none, .none } },
104458106449 },
104459 .call_frame = .{ .size = 16, .alignment = .@"16" },
106450 .call_frame = .{ .alignment = .@"16" },
104460106451 .extra_temps = .{
104461 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104462 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104463 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
104464 .unused,
104465 .unused,
104466 .unused,
106452 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106453 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106454 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106455 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106456 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106457 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },
104467106458 .unused,
104468106459 .unused,
104469106460 .unused,
104470106461 .unused,
104471106462 .unused,
104472106463 },
104473 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
106464 .dst_temps = .{ .mem, .unused },
104474106465 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104475106466 .each = .{ .once = &.{
104476 .{ ._, .v_dqa, .mov, .tmp0x, .src0x, ._, ._ },
104477 .{ ._, .v_dqa, .mov, .tmp1x, .tmp0x, ._, ._ },
104478 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106467 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106468 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
106469 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
106470 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
106471 .{ ._, ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
106472 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
106473 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106474 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
106475 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104479106476 } },
104480 }, .{
104481 .required_features = .{ .@"64bit", .avx, null, null },
104482 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104483 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
106477 } }) catch |err| switch (err) {
106478 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
106479 @tagName(air_tag),
106480 ty_op.ty.toType().fmt(pt),
106481 cg.typeOf(ty_op.operand).fmt(pt),
106482 ops[0].tracking(cg),
106483 }),
106484 else => |e| return e,
106485 };
106486 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
106487 },
106488 .float_from_int => |air_tag| if (use_old) try cg.airFloatFromInt(inst) else {
106489 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
106490 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
106491 var res: [1]Temp = undefined;
106492 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
106493 .required_features = .{ .f16c, null, null, null },
106494 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
106495 .dst_constraints = .{ .{ .float = .word }, .any },
104484106496 .patterns = &.{
104485 .{ .src = .{ .to_mem, .none, .none } },
106497 .{ .src = .{ .mem, .none, .none } },
106498 .{ .src = .{ .to_gpr, .none, .none } },
104486106499 },
104487 .call_frame = .{ .size = 16, .alignment = .@"16" },
104488106500 .extra_temps = .{
104489 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104490 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104491 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
106501 .{ .type = .i8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
106502 .unused,
106503 .unused,
104492106504 .unused,
104493106505 .unused,
104494106506 .unused,
......@@ -104498,25 +106510,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104498106510 .unused,
104499106511 .unused,
104500106512 },
104501 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
104502 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106513 .dst_temps = .{ .{ .rc = .sse }, .unused },
104503106514 .each = .{ .once = &.{
104504 .{ ._, .v_dqa, .mov, .tmp0x, .src0x, ._, ._ },
104505 .{ ._, .v_dqa, .mov, .tmp1x, .tmp0x, ._, ._ },
104506 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106515 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
106516 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
106517 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
106518 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
104507106519 } },
104508106520 }, .{
104509 .required_features = .{ .@"64bit", .sse2, null, null },
104510 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104511 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
106521 .required_features = .{ .f16c, null, null, null },
106522 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
106523 .dst_constraints = .{ .{ .float = .word }, .any },
104512106524 .patterns = &.{
104513 .{ .src = .{ .to_mem, .none, .none } },
106525 .{ .src = .{ .mem, .none, .none } },
106526 .{ .src = .{ .to_gpr, .none, .none } },
104514106527 },
104515 .call_frame = .{ .size = 16, .alignment = .@"16" },
104516106528 .extra_temps = .{
104517 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104518 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104519 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
106529 .{ .type = .u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
106530 .unused,
106531 .unused,
104520106532 .unused,
104521106533 .unused,
104522106534 .unused,
......@@ -104526,25 +106538,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104526106538 .unused,
104527106539 .unused,
104528106540 },
104529 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
104530 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106541 .dst_temps = .{ .{ .rc = .sse }, .unused },
104531106542 .each = .{ .once = &.{
104532 .{ ._, ._dqa, .mov, .tmp0x, .src0x, ._, ._ },
104533 .{ ._, ._dqa, .mov, .tmp1x, .tmp0x, ._, ._ },
104534 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106543 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
106544 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
106545 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
106546 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
104535106547 } },
104536106548 }, .{
104537 .required_features = .{ .@"64bit", .sse2, null, null },
104538 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104539 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
106549 .required_features = .{ .f16c, null, null, null },
106550 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
106551 .dst_constraints = .{ .{ .float = .word }, .any },
104540106552 .patterns = &.{
104541 .{ .src = .{ .to_mem, .none, .none } },
106553 .{ .src = .{ .mem, .none, .none } },
106554 .{ .src = .{ .to_gpr, .none, .none } },
104542106555 },
104543 .call_frame = .{ .size = 16, .alignment = .@"16" },
104544106556 .extra_temps = .{
104545 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104546 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104547 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
106557 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
106558 .unused,
106559 .unused,
104548106560 .unused,
104549106561 .unused,
104550106562 .unused,
......@@ -104554,25 +106566,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104554106566 .unused,
104555106567 .unused,
104556106568 },
104557 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
104558 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106569 .dst_temps = .{ .{ .rc = .sse }, .unused },
104559106570 .each = .{ .once = &.{
104560 .{ ._, ._dqa, .mov, .tmp0x, .src0x, ._, ._ },
104561 .{ ._, ._dqa, .mov, .tmp1x, .tmp0x, ._, ._ },
104562 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106571 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
106572 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
106573 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
106574 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
104563106575 } },
104564106576 }, .{
104565 .required_features = .{ .@"64bit", .sse, null, null },
104566 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104567 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
106577 .required_features = .{ .f16c, null, null, null },
106578 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
106579 .dst_constraints = .{ .{ .float = .word }, .any },
104568106580 .patterns = &.{
104569 .{ .src = .{ .to_mem, .none, .none } },
106581 .{ .src = .{ .mem, .none, .none } },
106582 .{ .src = .{ .to_gpr, .none, .none } },
104570106583 },
104571 .call_frame = .{ .size = 16, .alignment = .@"16" },
104572106584 .extra_temps = .{
104573 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104574 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104575 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
106585 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
106586 .unused,
106587 .unused,
104576106588 .unused,
104577106589 .unused,
104578106590 .unused,
......@@ -104582,25 +106594,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104582106594 .unused,
104583106595 .unused,
104584106596 },
104585 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
104586 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106597 .dst_temps = .{ .{ .rc = .sse }, .unused },
104587106598 .each = .{ .once = &.{
104588 .{ ._, ._ps, .mova, .tmp0x, .src0x, ._, ._ },
104589 .{ ._, ._ps, .mova, .tmp1x, .tmp0x, ._, ._ },
104590 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106599 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
106600 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
106601 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
106602 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
104591106603 } },
104592106604 }, .{
104593 .required_features = .{ .@"64bit", .sse, null, null },
104594 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104595 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
106605 .required_features = .{ .f16c, null, null, null },
106606 .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any },
106607 .dst_constraints = .{ .{ .float = .word }, .any },
104596106608 .patterns = &.{
104597 .{ .src = .{ .to_mem, .none, .none } },
106609 .{ .src = .{ .mem, .none, .none } },
106610 .{ .src = .{ .to_gpr, .none, .none } },
106611 },
106612 .dst_temps = .{ .{ .rc = .sse }, .unused },
106613 .each = .{ .once = &.{
106614 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
106615 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0d, ._ },
106616 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
106617 } },
106618 }, .{
106619 .required_features = .{ .@"64bit", .f16c, null, null },
106620 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any },
106621 .dst_constraints = .{ .{ .float = .word }, .any },
106622 .patterns = &.{
106623 .{ .src = .{ .mem, .none, .none } },
106624 .{ .src = .{ .to_gpr, .none, .none } },
104598106625 },
104599 .call_frame = .{ .size = 16, .alignment = .@"16" },
104600106626 .extra_temps = .{
104601 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104602 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104603 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
106627 .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
106628 .unused,
106629 .unused,
104604106630 .unused,
104605106631 .unused,
104606106632 .unused,
......@@ -104610,225 +106636,185 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104610106636 .unused,
104611106637 .unused,
104612106638 },
104613 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
104614 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106639 .dst_temps = .{ .{ .rc = .sse }, .unused },
104615106640 .each = .{ .once = &.{
104616 .{ ._, ._ps, .mova, .tmp0x, .src0x, ._, ._ },
104617 .{ ._, ._ps, .mova, .tmp1x, .tmp0x, ._, ._ },
104618 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106641 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
106642 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
106643 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0q, ._ },
106644 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
104619106645 } },
104620106646 }, .{
104621 .required_features = .{ .@"64bit", .avx, null, null },
104622 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104623 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
106647 .required_features = .{ .@"64bit", .f16c, null, null },
106648 .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any },
106649 .dst_constraints = .{ .{ .float = .word }, .any },
104624106650 .patterns = &.{
104625 .{ .src = .{ .to_mem, .none, .none } },
104626 },
104627 .call_frame = .{ .size = 16, .alignment = .@"16" },
104628 .extra_temps = .{
104629 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104630 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104631 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104632 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
104633 .{ .type = .u64, .kind = .{ .reg = .rax } },
104634 .{ .type = .i64, .kind = .{ .reg = .rdx } },
104635 .unused,
104636 .unused,
104637 .unused,
104638 .unused,
104639 .unused,
106651 .{ .src = .{ .mem, .none, .none } },
106652 .{ .src = .{ .to_gpr, .none, .none } },
104640106653 },
104641 .dst_temps = .{ .mem, .unused },
104642 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106654 .dst_temps = .{ .{ .rc = .sse }, .unused },
104643106655 .each = .{ .once = &.{
104644 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104645 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
104646 .{ ._, .v_dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
104647 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
104648 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
104649 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
104650 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
104651 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106656 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
106657 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ },
106658 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
104652106659 } },
104653106660 }, .{
104654 .required_features = .{ .@"64bit", .avx, null, null },
104655 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104656 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
106661 .required_features = .{ .@"64bit", .f16c, null, null },
106662 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },
106663 .dst_constraints = .{ .{ .float = .word }, .any },
104657106664 .patterns = &.{
104658 .{ .src = .{ .to_mem, .none, .none } },
106665 .{ .src = .{ .to_mut_gpr, .none, .none } },
104659106666 },
104660 .call_frame = .{ .size = 16, .alignment = .@"16" },
104661106667 .extra_temps = .{
104662 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104663 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104664 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104665 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
104666 .{ .type = .u64, .kind = .{ .reg = .rax } },
104667 .{ .type = .u64, .kind = .{ .reg = .rdx } },
106668 .{ .type = .u1, .kind = .{ .rc = .general_purpose } },
106669 .unused,
106670 .unused,
106671 .unused,
106672 .unused,
106673 .unused,
104668106674 .unused,
104669106675 .unused,
104670106676 .unused,
104671106677 .unused,
104672106678 .unused,
104673106679 },
104674 .dst_temps = .{ .mem, .unused },
104675 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106680 .dst_temps = .{ .{ .rc = .sse }, .unused },
106681 .clobbers = .{ .eflags = true },
104676106682 .each = .{ .once = &.{
104677 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104678 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
104679 .{ ._, .v_dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
104680 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
104681 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
104682 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
104683 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
104684 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106683 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
106684 .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ },
106685 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
106686 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
106687 .{ ._, ._r, .sh, .src0q, .ui(1), ._, ._ },
106688 .{ ._, ._, .@"and", .tmp0d, .si(1), ._, ._ },
106689 .{ ._, ._, .@"or", .src0q, .tmp0q, ._, ._ },
106690 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ },
106691 .{ ._, .v_ss, .add, .dst0x, .dst0x, .dst0d, ._ },
106692 .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
106693 .{ .@"1:", .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ },
106694 .{ .@"0:", .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
104685106695 } },
104686106696 }, .{
104687 .required_features = .{ .@"64bit", .sse2, null, null },
104688 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104689 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
106697 .required_features = .{ .sse, null, null, null },
106698 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
106699 .dst_constraints = .{ .{ .float = .word }, .any },
104690106700 .patterns = &.{
104691 .{ .src = .{ .to_mem, .none, .none } },
106701 .{ .src = .{ .{ .to_reg = .dil }, .none, .none } },
104692106702 },
104693 .call_frame = .{ .size = 16, .alignment = .@"16" },
106703 .call_frame = .{ .alignment = .@"16" },
104694106704 .extra_temps = .{
104695 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104696 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104697 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104698 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
104699 .{ .type = .u64, .kind = .{ .reg = .rax } },
104700 .{ .type = .i64, .kind = .{ .reg = .rdx } },
106705 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
106706 .unused,
106707 .unused,
106708 .unused,
106709 .unused,
106710 .unused,
104701106711 .unused,
104702106712 .unused,
104703106713 .unused,
104704106714 .unused,
104705106715 .unused,
104706106716 },
104707 .dst_temps = .{ .mem, .unused },
106717 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
104708106718 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104709106719 .each = .{ .once = &.{
104710 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104711 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
104712 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
104713 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
104714 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
104715 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
104716 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
104717 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106720 .{ ._, ._, .movsx, .src0d, .src0b, ._, ._ },
106721 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
104718106722 } },
104719106723 }, .{
104720 .required_features = .{ .@"64bit", .sse2, null, null },
104721 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104722 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
106724 .required_features = .{ .sse, null, null, null },
106725 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
106726 .dst_constraints = .{ .{ .float = .word }, .any },
104723106727 .patterns = &.{
104724 .{ .src = .{ .to_mem, .none, .none } },
106728 .{ .src = .{ .{ .to_reg = .dil }, .none, .none } },
104725106729 },
104726 .call_frame = .{ .size = 16, .alignment = .@"16" },
106730 .call_frame = .{ .alignment = .@"16" },
104727106731 .extra_temps = .{
104728 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104729 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104730 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104731 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
104732 .{ .type = .u64, .kind = .{ .reg = .rax } },
104733 .{ .type = .u64, .kind = .{ .reg = .rdx } },
106732 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
106733 .unused,
106734 .unused,
106735 .unused,
106736 .unused,
106737 .unused,
104734106738 .unused,
104735106739 .unused,
104736106740 .unused,
104737106741 .unused,
104738106742 .unused,
104739106743 },
104740 .dst_temps = .{ .mem, .unused },
106744 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
104741106745 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104742106746 .each = .{ .once = &.{
104743 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104744 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
104745 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
104746 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
104747 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
104748 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
104749 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
104750 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106747 .{ ._, ._, .movzx, .src0d, .src0b, ._, ._ },
106748 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
104751106749 } },
104752106750 }, .{
104753 .required_features = .{ .@"64bit", .sse, null, null },
104754 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104755 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
106751 .required_features = .{ .sse, null, null, null },
106752 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
106753 .dst_constraints = .{ .{ .float = .word }, .any },
104756106754 .patterns = &.{
104757 .{ .src = .{ .to_mem, .none, .none } },
106755 .{ .src = .{ .{ .to_reg = .di }, .none, .none } },
104758106756 },
104759 .call_frame = .{ .size = 16, .alignment = .@"16" },
106757 .call_frame = .{ .alignment = .@"16" },
104760106758 .extra_temps = .{
104761 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104762 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104763 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104764 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
104765 .{ .type = .u64, .kind = .{ .reg = .rax } },
104766 .{ .type = .i64, .kind = .{ .reg = .rdx } },
106759 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
106760 .unused,
106761 .unused,
106762 .unused,
106763 .unused,
106764 .unused,
104767106765 .unused,
104768106766 .unused,
104769106767 .unused,
104770106768 .unused,
104771106769 .unused,
104772106770 },
104773 .dst_temps = .{ .mem, .unused },
106771 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
104774106772 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104775106773 .each = .{ .once = &.{
104776 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104777 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
104778 .{ ._, ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
104779 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
104780 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
104781 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
104782 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
104783 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106774 .{ ._, ._, .movsx, .src0d, .src0w, ._, ._ },
106775 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
104784106776 } },
104785106777 }, .{
104786 .required_features = .{ .@"64bit", .sse, null, null },
104787 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
104788 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
106778 .required_features = .{ .sse, null, null, null },
106779 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
106780 .dst_constraints = .{ .{ .float = .word }, .any },
104789106781 .patterns = &.{
104790 .{ .src = .{ .to_mem, .none, .none } },
106782 .{ .src = .{ .{ .to_reg = .di }, .none, .none } },
104791106783 },
104792 .call_frame = .{ .size = 16, .alignment = .@"16" },
106784 .call_frame = .{ .alignment = .@"16" },
104793106785 .extra_temps = .{
104794 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104795 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104796 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104797 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
104798 .{ .type = .u64, .kind = .{ .reg = .rax } },
104799 .{ .type = .u64, .kind = .{ .reg = .rdx } },
106786 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
106787 .unused,
106788 .unused,
106789 .unused,
106790 .unused,
106791 .unused,
104800106792 .unused,
104801106793 .unused,
104802106794 .unused,
104803106795 .unused,
104804106796 .unused,
104805106797 },
104806 .dst_temps = .{ .mem, .unused },
106798 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
104807106799 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104808106800 .each = .{ .once = &.{
104809 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104810 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
104811 .{ ._, ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
104812 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
104813 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
104814 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
104815 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
104816 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106801 .{ ._, ._, .movzx, .src0d, .src0w, ._, ._ },
106802 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
104817106803 } },
104818106804 }, .{
104819 .required_features = .{ .@"64bit", .avx, null, null },
104820 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104821 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
106805 .required_features = .{ .sse, null, null, null },
106806 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
106807 .dst_constraints = .{ .{ .float = .word }, .any },
104822106808 .patterns = &.{
104823 .{ .src = .{ .to_mem, .none, .none } },
106809 .{ .src = .{ .{ .to_reg = .edi }, .none, .none } },
104824106810 },
104825 .call_frame = .{ .size = 16, .alignment = .@"16" },
106811 .call_frame = .{ .alignment = .@"16" },
104826106812 .extra_temps = .{
104827 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104828 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104829 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104830 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104831 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
106813 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
106814 .unused,
106815 .unused,
106816 .unused,
106817 .unused,
104832106818 .unused,
104833106819 .unused,
104834106820 .unused,
......@@ -104836,29 +106822,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104836106822 .unused,
104837106823 .unused,
104838106824 },
104839 .dst_temps = .{ .mem, .unused },
106825 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
104840106826 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104841106827 .each = .{ .once = &.{
104842 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
104843 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
104844 .{ ._, .v_dqa, .mov, .tmp2x, .src0x, ._, ._ },
104845 .{ ._, .v_dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
104846 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
106828 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
104847106829 } },
104848106830 }, .{
104849 .required_features = .{ .@"64bit", .avx, null, null },
104850 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104851 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
106831 .required_features = .{ .sse, null, null, null },
106832 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
106833 .dst_constraints = .{ .{ .float = .word }, .any },
104852106834 .patterns = &.{
104853 .{ .src = .{ .to_mem, .none, .none } },
106835 .{ .src = .{ .{ .to_reg = .edi }, .none, .none } },
104854106836 },
104855 .call_frame = .{ .size = 16, .alignment = .@"16" },
106837 .call_frame = .{ .alignment = .@"16" },
104856106838 .extra_temps = .{
104857 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104858 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104859 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104860 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104861 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
106839 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
106840 .unused,
106841 .unused,
106842 .unused,
106843 .unused,
104862106844 .unused,
104863106845 .unused,
104864106846 .unused,
......@@ -104866,29 +106848,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104866106848 .unused,
104867106849 .unused,
104868106850 },
104869 .dst_temps = .{ .mem, .unused },
106851 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
104870106852 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104871106853 .each = .{ .once = &.{
104872 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
104873 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
104874 .{ ._, .v_dqa, .mov, .tmp2x, .src0x, ._, ._ },
104875 .{ ._, .v_dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
104876 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
106854 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
104877106855 } },
104878106856 }, .{
104879 .required_features = .{ .@"64bit", .sse2, null, null },
104880 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104881 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
106857 .required_features = .{ .@"64bit", .sse, null, null },
106858 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
106859 .dst_constraints = .{ .{ .float = .word }, .any },
104882106860 .patterns = &.{
104883 .{ .src = .{ .to_mem, .none, .none } },
106861 .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } },
104884106862 },
104885 .call_frame = .{ .size = 16, .alignment = .@"16" },
106863 .call_frame = .{ .alignment = .@"16" },
104886106864 .extra_temps = .{
104887 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104888 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104889 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104890 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104891 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
106865 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
106866 .unused,
106867 .unused,
106868 .unused,
106869 .unused,
104892106870 .unused,
104893106871 .unused,
104894106872 .unused,
......@@ -104896,29 +106874,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104896106874 .unused,
104897106875 .unused,
104898106876 },
104899 .dst_temps = .{ .mem, .unused },
106877 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
104900106878 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104901106879 .each = .{ .once = &.{
104902 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
104903 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
104904 .{ ._, ._dqa, .mov, .tmp2x, .src0x, ._, ._ },
104905 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
104906 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
106880 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
104907106881 } },
104908106882 }, .{
104909 .required_features = .{ .@"64bit", .sse2, null, null },
104910 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104911 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
106883 .required_features = .{ .@"64bit", .sse, null, null },
106884 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
106885 .dst_constraints = .{ .{ .float = .word }, .any },
104912106886 .patterns = &.{
104913 .{ .src = .{ .to_mem, .none, .none } },
106887 .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } },
104914106888 },
104915 .call_frame = .{ .size = 16, .alignment = .@"16" },
106889 .call_frame = .{ .alignment = .@"16" },
104916106890 .extra_temps = .{
104917 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104918 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104919 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104920 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104921 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
106891 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
106892 .unused,
106893 .unused,
106894 .unused,
106895 .unused,
104922106896 .unused,
104923106897 .unused,
104924106898 .unused,
......@@ -104926,29 +106900,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104926106900 .unused,
104927106901 .unused,
104928106902 },
104929 .dst_temps = .{ .mem, .unused },
106903 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
104930106904 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104931106905 .each = .{ .once = &.{
104932 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
104933 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
104934 .{ ._, ._dqa, .mov, .tmp2x, .src0x, ._, ._ },
104935 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
104936 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
106906 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
104937106907 } },
104938106908 }, .{
104939106909 .required_features = .{ .@"64bit", .sse, null, null },
104940 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104941 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
106910 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
106911 .dst_constraints = .{ .{ .float = .word }, .any },
104942106912 .patterns = &.{
104943 .{ .src = .{ .to_mem, .none, .none } },
106913 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
104944106914 },
104945 .call_frame = .{ .size = 16, .alignment = .@"16" },
106915 .call_frame = .{ .alignment = .@"16" },
104946106916 .extra_temps = .{
104947 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104948 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104949 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104950 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104951 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
106917 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },
106918 .unused,
106919 .unused,
106920 .unused,
106921 .unused,
104952106922 .unused,
104953106923 .unused,
104954106924 .unused,
......@@ -104956,29 +106926,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104956106926 .unused,
104957106927 .unused,
104958106928 },
104959 .dst_temps = .{ .mem, .unused },
106929 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
104960106930 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104961106931 .each = .{ .once = &.{
104962 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
104963 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
104964 .{ ._, ._ps, .mova, .tmp2x, .src0x, ._, ._ },
104965 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
104966 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
106932 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
104967106933 } },
104968106934 }, .{
104969106935 .required_features = .{ .@"64bit", .sse, null, null },
104970 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
104971 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
106936 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
106937 .dst_constraints = .{ .{ .float = .word }, .any },
104972106938 .patterns = &.{
104973 .{ .src = .{ .to_mem, .none, .none } },
106939 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
104974106940 },
104975 .call_frame = .{ .size = 16, .alignment = .@"16" },
106941 .call_frame = .{ .alignment = .@"16" },
104976106942 .extra_temps = .{
104977 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104978 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104979 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
104980 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
104981 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
106943 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },
106944 .unused,
106945 .unused,
106946 .unused,
106947 .unused,
104982106948 .unused,
104983106949 .unused,
104984106950 .unused,
......@@ -104986,239 +106952,196 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104986106952 .unused,
104987106953 .unused,
104988106954 },
104989 .dst_temps = .{ .mem, .unused },
106955 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
104990106956 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104991106957 .each = .{ .once = &.{
104992 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
104993 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
104994 .{ ._, ._ps, .mova, .tmp2x, .src0x, ._, ._ },
104995 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
104996 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
106958 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
104997106959 } },
104998106960 }, .{
104999 .required_features = .{ .@"64bit", .avx, null, null },
105000 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
105001 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
106961 .required_features = .{ .@"64bit", .sse, null, null },
106962 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
106963 .dst_constraints = .{ .{ .float = .word }, .any },
105002106964 .patterns = &.{
105003106965 .{ .src = .{ .to_mem, .none, .none } },
105004106966 },
105005 .call_frame = .{ .size = 16, .alignment = .@"16" },
106967 .call_frame = .{ .alignment = .@"16" },
105006106968 .extra_temps = .{
105007 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105008 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105009106969 .{ .type = .usize, .kind = .{ .reg = .rdi } },
105010106970 .{ .type = .usize, .kind = .{ .reg = .rsi } },
105011 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105012 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105013 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
106971 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },
106972 .unused,
106973 .unused,
106974 .unused,
106975 .unused,
105014106976 .unused,
105015106977 .unused,
105016106978 .unused,
105017106979 .unused,
105018106980 },
105019 .dst_temps = .{ .mem, .unused },
106981 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
105020106982 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105021106983 .each = .{ .once = &.{
105022 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105023 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
105024 .{ .@"0:", .v_dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
105025 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
105026 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
105027 .{ ._, .v_dqa, .mov, .tmp5x, .tmp4x, ._, ._ },
105028 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
105029 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
105030 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
105031 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106984 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
106985 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
106986 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105032106987 } },
105033106988 }, .{
105034 .required_features = .{ .@"64bit", .avx, null, null },
105035 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
105036 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
106989 .required_features = .{ .@"64bit", .sse, null, null },
106990 .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
106991 .dst_constraints = .{ .{ .float = .word }, .any },
105037106992 .patterns = &.{
105038106993 .{ .src = .{ .to_mem, .none, .none } },
105039106994 },
105040 .call_frame = .{ .size = 16, .alignment = .@"16" },
106995 .call_frame = .{ .alignment = .@"16" },
105041106996 .extra_temps = .{
105042 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105043 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105044106997 .{ .type = .usize, .kind = .{ .reg = .rdi } },
105045106998 .{ .type = .usize, .kind = .{ .reg = .rsi } },
105046 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105047 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105048 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
106999 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
107000 .unused,
107001 .unused,
107002 .unused,
107003 .unused,
105049107004 .unused,
105050107005 .unused,
105051107006 .unused,
105052107007 .unused,
105053107008 },
105054 .dst_temps = .{ .mem, .unused },
107009 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
105055107010 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105056107011 .each = .{ .once = &.{
105057 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105058 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
105059 .{ .@"0:", .v_dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
105060 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
105061 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
105062 .{ ._, .v_dqa, .mov, .tmp5x, .tmp4x, ._, ._ },
105063 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
105064 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
105065 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
105066 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107012 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
107013 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
107014 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105067107015 } },
105068107016 }, .{
105069 .required_features = .{ .@"64bit", .sse2, null, null },
105070 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
105071 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
107017 .required_features = .{ .f16c, null, null, null },
107018 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
107019 .dst_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },
105072107020 .patterns = &.{
105073 .{ .src = .{ .to_mem, .none, .none } },
107021 .{ .src = .{ .mem, .none, .none } },
107022 .{ .src = .{ .to_sse, .none, .none } },
105074107023 },
105075 .call_frame = .{ .size = 16, .alignment = .@"16" },
105076 .extra_temps = .{
105077 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105078 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105079 .{ .type = .usize, .kind = .{ .reg = .rdi } },
105080 .{ .type = .usize, .kind = .{ .reg = .rsi } },
105081 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105082 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105083 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
105084 .unused,
105085 .unused,
105086 .unused,
105087 .unused,
107024 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
107025 .each = .{ .once = &.{
107026 .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ },
107027 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
107028 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
107029 } },
107030 }, .{
107031 .required_features = .{ .f16c, .avx2, null, null },
107032 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
107033 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },
107034 .patterns = &.{
107035 .{ .src = .{ .mem, .none, .none } },
107036 .{ .src = .{ .to_sse, .none, .none } },
105088107037 },
105089 .dst_temps = .{ .mem, .unused },
105090 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107038 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
105091107039 .each = .{ .once = &.{
105092 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105093 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
105094 .{ .@"0:", ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
105095 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
105096 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
105097 .{ ._, ._dqa, .mov, .tmp5x, .tmp4x, ._, ._ },
105098 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
105099 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
105100 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
105101 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107040 .{ ._, .vp_d, .movsxb, .dst0y, .src0q, ._, ._ },
107041 .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ },
107042 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
105102107043 } },
105103107044 }, .{
105104 .required_features = .{ .@"64bit", .sse2, null, null },
105105 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
105106 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
107045 .required_features = .{ .f16c, null, null, null },
107046 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },
107047 .dst_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },
105107107048 .patterns = &.{
105108 .{ .src = .{ .to_mem, .none, .none } },
107049 .{ .src = .{ .mem, .none, .none } },
107050 .{ .src = .{ .to_sse, .none, .none } },
105109107051 },
105110 .call_frame = .{ .size = 16, .alignment = .@"16" },
105111 .extra_temps = .{
105112 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105113 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105114 .{ .type = .usize, .kind = .{ .reg = .rdi } },
105115 .{ .type = .usize, .kind = .{ .reg = .rsi } },
105116 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105117 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105118 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
105119 .unused,
105120 .unused,
105121 .unused,
105122 .unused,
107052 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
107053 .each = .{ .once = &.{
107054 .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ },
107055 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
107056 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
107057 } },
107058 }, .{
107059 .required_features = .{ .f16c, .avx2, null, null },
107060 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, .any, .any },
107061 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },
107062 .patterns = &.{
107063 .{ .src = .{ .mem, .none, .none } },
107064 .{ .src = .{ .to_sse, .none, .none } },
105123107065 },
105124 .dst_temps = .{ .mem, .unused },
105125 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107066 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
105126107067 .each = .{ .once = &.{
105127 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105128 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
105129 .{ .@"0:", ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
105130 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
105131 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
105132 .{ ._, ._dqa, .mov, .tmp5x, .tmp4x, ._, ._ },
105133 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
105134 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
105135 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
105136 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107068 .{ ._, .vp_d, .movzxb, .dst0y, .src0q, ._, ._ },
107069 .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ },
107070 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
105137107071 } },
105138107072 }, .{
105139 .required_features = .{ .@"64bit", .sse, null, null },
105140 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
105141 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
107073 .required_features = .{ .f16c, .avx2, null, null },
107074 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
107075 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },
105142107076 .patterns = &.{
105143107077 .{ .src = .{ .to_mem, .none, .none } },
105144107078 },
105145 .call_frame = .{ .size = 16, .alignment = .@"16" },
105146107079 .extra_temps = .{
105147107080 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105148 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105149 .{ .type = .usize, .kind = .{ .reg = .rdi } },
105150 .{ .type = .usize, .kind = .{ .reg = .rsi } },
105151 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105152 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105153 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
107081 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
107082 .unused,
107083 .unused,
107084 .unused,
107085 .unused,
107086 .unused,
105154107087 .unused,
105155107088 .unused,
105156107089 .unused,
105157107090 .unused,
105158107091 },
105159107092 .dst_temps = .{ .mem, .unused },
105160 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107093 .clobbers = .{ .eflags = true },
105161107094 .each = .{ .once = &.{
105162107095 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105163 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
105164 .{ .@"0:", ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
105165 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
105166 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
105167 .{ ._, ._ps, .mova, .tmp5x, .tmp4x, ._, ._ },
105168 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
105169 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
105170 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
107096 .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107097 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
107098 .{ ._, .v_, .cvtps2ph, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
107099 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
105171107100 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105172107101 } },
105173107102 }, .{
105174 .required_features = .{ .@"64bit", .sse, null, null },
105175 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
105176 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
107103 .required_features = .{ .f16c, null, null, null },
107104 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
107105 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any },
105177107106 .patterns = &.{
105178107107 .{ .src = .{ .to_mem, .none, .none } },
105179107108 },
105180 .call_frame = .{ .size = 16, .alignment = .@"16" },
105181107109 .extra_temps = .{
105182107110 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105183 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105184 .{ .type = .usize, .kind = .{ .reg = .rdi } },
105185 .{ .type = .usize, .kind = .{ .reg = .rsi } },
105186 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105187 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105188 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
107111 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
107112 .unused,
107113 .unused,
107114 .unused,
107115 .unused,
107116 .unused,
105189107117 .unused,
105190107118 .unused,
105191107119 .unused,
105192107120 .unused,
105193107121 },
105194107122 .dst_temps = .{ .mem, .unused },
105195 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107123 .clobbers = .{ .eflags = true },
105196107124 .each = .{ .once = &.{
105197107125 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105198 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
105199 .{ .@"0:", ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
105200 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
105201 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
105202 .{ ._, ._ps, .mova, .tmp5x, .tmp4x, ._, ._ },
105203 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
105204 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
105205 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
107126 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
107127 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
107128 .{ ._, .v_, .cvtps2ph, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },
107129 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
105206107130 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105207107131 } },
105208107132 }, .{
105209 .required_features = .{ .avx, .slow_incdec, null, null },
105210 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105211 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
107133 .required_features = .{ .f16c, .avx2, null, null },
107134 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, .any, .any },
107135 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },
105212107136 .patterns = &.{
105213107137 .{ .src = .{ .to_mem, .none, .none } },
105214107138 },
105215 .call_frame = .{ .alignment = .@"16" },
105216107139 .extra_temps = .{
105217 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105218107140 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105219 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105220 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
105221 .{ .type = .i32, .kind = .{ .reg = .eax } },
107141 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
107142 .unused,
107143 .unused,
107144 .unused,
105222107145 .unused,
105223107146 .unused,
105224107147 .unused,
......@@ -105227,31 +107150,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105227107150 .unused,
105228107151 },
105229107152 .dst_temps = .{ .mem, .unused },
105230 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107153 .clobbers = .{ .eflags = true },
105231107154 .each = .{ .once = &.{
105232 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
105233 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105234 .{ .@"0:", .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
105235 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105236 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
105237 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
105238 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
107155 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107156 .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107157 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
107158 .{ ._, .v_, .cvtps2ph, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
107159 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
105239107160 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105240107161 } },
105241107162 }, .{
105242 .required_features = .{ .avx, null, null, null },
105243 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105244 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
107163 .required_features = .{ .f16c, null, null, null },
107164 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },
107165 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any },
105245107166 .patterns = &.{
105246107167 .{ .src = .{ .to_mem, .none, .none } },
105247107168 },
105248 .call_frame = .{ .alignment = .@"16" },
105249107169 .extra_temps = .{
105250 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105251107170 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105252 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105253 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
105254 .{ .type = .i32, .kind = .{ .reg = .eax } },
107171 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
107172 .unused,
107173 .unused,
107174 .unused,
105255107175 .unused,
105256107176 .unused,
105257107177 .unused,
......@@ -105260,31 +107180,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105260107180 .unused,
105261107181 },
105262107182 .dst_temps = .{ .mem, .unused },
105263 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107183 .clobbers = .{ .eflags = true },
105264107184 .each = .{ .once = &.{
105265 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
105266 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105267 .{ .@"0:", .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
105268 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105269 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
105270 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
105271 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
105272 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
107185 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107186 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
107187 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
107188 .{ ._, .v_, .cvtps2ph, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },
107189 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
107190 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105273107191 } },
105274107192 }, .{
105275 .required_features = .{ .sse2, .slow_incdec, null, null },
105276 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105277 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
107193 .required_features = .{ .avx, .slow_incdec, null, null },
107194 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107195 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105278107196 .patterns = &.{
105279107197 .{ .src = .{ .to_mem, .none, .none } },
105280107198 },
105281107199 .call_frame = .{ .alignment = .@"16" },
105282107200 .extra_temps = .{
105283 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105284107201 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105285 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105286 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
105287 .{ .type = .i32, .kind = .{ .reg = .eax } },
107202 .{ .type = .i32, .kind = .{ .reg = .edi } },
107203 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
107204 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107205 .unused,
105288107206 .unused,
105289107207 .unused,
105290107208 .unused,
......@@ -105295,29 +107213,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105295107213 .dst_temps = .{ .mem, .unused },
105296107214 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105297107215 .each = .{ .once = &.{
105298 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
105299 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105300 .{ .@"0:", ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
105301 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105302 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
105303 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
105304 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
107216 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107217 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107218 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107219 .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107220 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
105305107221 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105306107222 } },
105307107223 }, .{
105308 .required_features = .{ .sse2, null, null, null },
105309 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105310 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
107224 .required_features = .{ .avx, null, null, null },
107225 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107226 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105311107227 .patterns = &.{
105312107228 .{ .src = .{ .to_mem, .none, .none } },
105313107229 },
105314107230 .call_frame = .{ .alignment = .@"16" },
105315107231 .extra_temps = .{
105316 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105317107232 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105318 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105319 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
105320 .{ .type = .i32, .kind = .{ .reg = .eax } },
107233 .{ .type = .i32, .kind = .{ .reg = .edi } },
107234 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
107235 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107236 .unused,
105321107237 .unused,
105322107238 .unused,
105323107239 .unused,
......@@ -105328,29 +107244,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105328107244 .dst_temps = .{ .mem, .unused },
105329107245 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105330107246 .each = .{ .once = &.{
105331 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
105332 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105333 .{ .@"0:", ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
105334 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105335 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
105336 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
105337 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
107247 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107248 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107249 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107250 .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107251 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
105338107252 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
105339107253 } },
105340107254 }, .{
105341 .required_features = .{ .sse, .slow_incdec, null, null },
105342 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105343 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
107255 .required_features = .{ .sse4_1, .slow_incdec, null, null },
107256 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107257 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105344107258 .patterns = &.{
105345107259 .{ .src = .{ .to_mem, .none, .none } },
105346107260 },
105347107261 .call_frame = .{ .alignment = .@"16" },
105348107262 .extra_temps = .{
105349 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105350107263 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105351 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105352 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
105353 .{ .type = .i32, .kind = .{ .reg = .eax } },
107264 .{ .type = .i32, .kind = .{ .reg = .edi } },
107265 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
107266 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107267 .unused,
105354107268 .unused,
105355107269 .unused,
105356107270 .unused,
......@@ -105361,29 +107275,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105361107275 .dst_temps = .{ .mem, .unused },
105362107276 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105363107277 .each = .{ .once = &.{
105364 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
105365 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105366 .{ .@"0:", ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
105367 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105368 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
105369 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
105370 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
107278 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107279 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107280 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107281 .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107282 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
105371107283 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105372107284 } },
105373107285 }, .{
105374 .required_features = .{ .sse, null, null, null },
105375 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105376 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
107286 .required_features = .{ .sse4_1, null, null, null },
107287 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107288 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105377107289 .patterns = &.{
105378107290 .{ .src = .{ .to_mem, .none, .none } },
105379107291 },
105380107292 .call_frame = .{ .alignment = .@"16" },
105381107293 .extra_temps = .{
105382 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105383107294 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105384 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105385 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
105386 .{ .type = .i32, .kind = .{ .reg = .eax } },
107295 .{ .type = .i32, .kind = .{ .reg = .edi } },
107296 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
107297 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107298 .unused,
105387107299 .unused,
105388107300 .unused,
105389107301 .unused,
......@@ -105394,28 +107306,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105394107306 .dst_temps = .{ .mem, .unused },
105395107307 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105396107308 .each = .{ .once = &.{
105397 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
105398 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105399 .{ .@"0:", ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
105400 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105401 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
105402 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
105403 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
107309 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107310 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107311 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107312 .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107313 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
105404107314 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
105405107315 } },
105406107316 }, .{
105407 .required_features = .{ .avx, null, null, null },
105408 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105409 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
107317 .required_features = .{ .sse2, .slow_incdec, null, null },
107318 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107319 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105410107320 .patterns = &.{
105411107321 .{ .src = .{ .to_mem, .none, .none } },
105412107322 },
105413107323 .call_frame = .{ .alignment = .@"16" },
105414107324 .extra_temps = .{
105415107325 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105416 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105417 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
105418 .{ .type = .i32, .kind = .{ .reg = .eax } },
107326 .{ .type = .i32, .kind = .{ .reg = .edi } },
107327 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
107328 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105419107329 .unused,
105420107330 .unused,
105421107331 .unused,
......@@ -105427,26 +107337,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105427107337 .dst_temps = .{ .mem, .unused },
105428107338 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105429107339 .each = .{ .once = &.{
105430 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105431 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
107340 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107341 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
105432107342 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105433 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
105434 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
107343 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
107344 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
107345 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
105435107346 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105436107347 } },
105437107348 }, .{
105438107349 .required_features = .{ .sse2, null, null, null },
105439 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105440 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
107350 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107351 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105441107352 .patterns = &.{
105442107353 .{ .src = .{ .to_mem, .none, .none } },
105443107354 },
105444107355 .call_frame = .{ .alignment = .@"16" },
105445107356 .extra_temps = .{
105446107357 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105447 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105448 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
105449 .{ .type = .i32, .kind = .{ .reg = .eax } },
107358 .{ .type = .i32, .kind = .{ .reg = .edi } },
107359 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
107360 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105450107361 .unused,
105451107362 .unused,
105452107363 .unused,
......@@ -105458,27 +107369,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105458107369 .dst_temps = .{ .mem, .unused },
105459107370 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105460107371 .each = .{ .once = &.{
105461 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105462 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
107372 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107373 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
105463107374 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105464 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
105465 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
105466 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107375 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
107376 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
107377 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
107378 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
105467107379 } },
105468107380 }, .{
105469 .required_features = .{ .sse, null, null, null },
105470 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105471 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
107381 .required_features = .{ .sse, .slow_incdec, null, null },
107382 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107383 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105472107384 .patterns = &.{
105473107385 .{ .src = .{ .to_mem, .none, .none } },
105474107386 },
105475107387 .call_frame = .{ .alignment = .@"16" },
105476107388 .extra_temps = .{
105477107389 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105478 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105479 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
105480 .{ .type = .i32, .kind = .{ .reg = .eax } },
105481 .unused,
107390 .{ .type = .i32, .kind = .{ .reg = .edi } },
107391 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
107392 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107393 .{ .type = .f32, .kind = .mem },
105482107394 .unused,
105483107395 .unused,
105484107396 .unused,
......@@ -105489,27 +107401,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105489107401 .dst_temps = .{ .mem, .unused },
105490107402 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105491107403 .each = .{ .once = &.{
105492 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105493 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
107404 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107405 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
105494107406 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105495 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
105496 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
107407 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
107408 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
107409 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
107410 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
105497107411 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105498107412 } },
105499107413 }, .{
105500107414 .required_features = .{ .sse, null, null, null },
105501 .src_constraints = .{ .{ .float = .xword }, .any, .any },
105502 .dst_constraints = .{ .{ .signed_int = .dword }, .any },
107415 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107416 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105503107417 .patterns = &.{
105504 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
107418 .{ .src = .{ .to_mem, .none, .none } },
105505107419 },
105506107420 .call_frame = .{ .alignment = .@"16" },
105507107421 .extra_temps = .{
105508 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
105509 .unused,
105510 .unused,
105511 .unused,
105512 .unused,
107422 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107423 .{ .type = .i32, .kind = .{ .reg = .edi } },
107424 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
107425 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107426 .{ .type = .f32, .kind = .mem },
105513107427 .unused,
105514107428 .unused,
105515107429 .unused,
......@@ -105517,24 +107431,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105517107431 .unused,
105518107432 .unused,
105519107433 },
105520 .dst_temps = .{ .{ .reg = .eax }, .unused },
107434 .dst_temps = .{ .mem, .unused },
105521107435 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105522107436 .each = .{ .once = &.{
105523 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
107437 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107438 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107439 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107440 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
107441 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
107442 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
107443 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
107444 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
105524107445 } },
105525107446 }, .{
105526 .required_features = .{ .sse, null, null, null },
105527 .src_constraints = .{ .{ .float = .xword }, .any, .any },
105528 .dst_constraints = .{ .{ .unsigned_int = .dword }, .any },
107447 .required_features = .{ .avx, .slow_incdec, null, null },
107448 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107449 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105529107450 .patterns = &.{
105530 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
107451 .{ .src = .{ .to_mem, .none, .none } },
105531107452 },
105532107453 .call_frame = .{ .alignment = .@"16" },
105533107454 .extra_temps = .{
105534 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },
105535 .unused,
105536 .unused,
105537 .unused,
107455 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107456 .{ .type = .u32, .kind = .{ .reg = .edi } },
107457 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
107458 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105538107459 .unused,
105539107460 .unused,
105540107461 .unused,
......@@ -105543,24 +107464,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105543107464 .unused,
105544107465 .unused,
105545107466 },
105546 .dst_temps = .{ .{ .reg = .eax }, .unused },
107467 .dst_temps = .{ .mem, .unused },
105547107468 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105548107469 .each = .{ .once = &.{
105549 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
107470 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107471 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107472 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107473 .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107474 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
107475 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105550107476 } },
105551107477 }, .{
105552107478 .required_features = .{ .avx, null, null, null },
105553 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105554 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
107479 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107480 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105555107481 .patterns = &.{
105556107482 .{ .src = .{ .to_mem, .none, .none } },
105557107483 },
105558107484 .call_frame = .{ .alignment = .@"16" },
105559107485 .extra_temps = .{
105560107486 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105561 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105562 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
105563 .{ .type = .i32, .kind = .{ .reg = .eax } },
107487 .{ .type = .u32, .kind = .{ .reg = .edi } },
107488 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
107489 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105564107490 .unused,
105565107491 .unused,
105566107492 .unused,
......@@ -105572,26 +107498,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105572107498 .dst_temps = .{ .mem, .unused },
105573107499 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105574107500 .each = .{ .once = &.{
105575 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105576 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
107501 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107502 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
105577107503 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105578 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
105579 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
105580 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107504 .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107505 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
107506 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
105581107507 } },
105582107508 }, .{
105583 .required_features = .{ .avx, null, null, null },
105584 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105585 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
107509 .required_features = .{ .sse4_1, .slow_incdec, null, null },
107510 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107511 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105586107512 .patterns = &.{
105587107513 .{ .src = .{ .to_mem, .none, .none } },
105588107514 },
105589107515 .call_frame = .{ .alignment = .@"16" },
105590107516 .extra_temps = .{
105591107517 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105592 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105593 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },
105594 .{ .type = .u32, .kind = .{ .reg = .eax } },
107518 .{ .type = .u32, .kind = .{ .reg = .edi } },
107519 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
107520 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105595107521 .unused,
105596107522 .unused,
105597107523 .unused,
......@@ -105603,26 +107529,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105603107529 .dst_temps = .{ .mem, .unused },
105604107530 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105605107531 .each = .{ .once = &.{
105606 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105607 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
107532 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107533 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
105608107534 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105609 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
105610 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
107535 .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107536 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
105611107537 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105612107538 } },
105613107539 }, .{
105614 .required_features = .{ .sse2, null, null, null },
105615 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105616 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
107540 .required_features = .{ .sse4_1, null, null, null },
107541 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107542 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105617107543 .patterns = &.{
105618107544 .{ .src = .{ .to_mem, .none, .none } },
105619107545 },
105620107546 .call_frame = .{ .alignment = .@"16" },
105621107547 .extra_temps = .{
105622107548 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105623 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105624 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
105625 .{ .type = .i32, .kind = .{ .reg = .eax } },
107549 .{ .type = .u32, .kind = .{ .reg = .edi } },
107550 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
107551 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105626107552 .unused,
105627107553 .unused,
105628107554 .unused,
......@@ -105634,26 +107560,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105634107560 .dst_temps = .{ .mem, .unused },
105635107561 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105636107562 .each = .{ .once = &.{
105637 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105638 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
107563 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107564 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
105639107565 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105640 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
105641 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
105642 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107566 .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107567 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
107568 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
105643107569 } },
105644107570 }, .{
105645 .required_features = .{ .sse2, null, null, null },
105646 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105647 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
107571 .required_features = .{ .sse2, .slow_incdec, null, null },
107572 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107573 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105648107574 .patterns = &.{
105649107575 .{ .src = .{ .to_mem, .none, .none } },
105650107576 },
105651107577 .call_frame = .{ .alignment = .@"16" },
105652107578 .extra_temps = .{
105653107579 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105654 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105655 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },
105656 .{ .type = .u32, .kind = .{ .reg = .eax } },
107580 .{ .type = .u32, .kind = .{ .reg = .edi } },
107581 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
107582 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105657107583 .unused,
105658107584 .unused,
105659107585 .unused,
......@@ -105665,26 +107591,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105665107591 .dst_temps = .{ .mem, .unused },
105666107592 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105667107593 .each = .{ .once = &.{
105668 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105669 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
107594 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107595 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
105670107596 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105671 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
105672 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
107597 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
107598 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
107599 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
105673107600 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105674107601 } },
105675107602 }, .{
105676 .required_features = .{ .sse, null, null, null },
105677 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105678 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
107603 .required_features = .{ .sse2, null, null, null },
107604 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107605 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105679107606 .patterns = &.{
105680107607 .{ .src = .{ .to_mem, .none, .none } },
105681107608 },
105682107609 .call_frame = .{ .alignment = .@"16" },
105683107610 .extra_temps = .{
105684107611 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105685 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105686 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
105687 .{ .type = .i32, .kind = .{ .reg = .eax } },
107612 .{ .type = .u32, .kind = .{ .reg = .edi } },
107613 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
107614 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105688107615 .unused,
105689107616 .unused,
105690107617 .unused,
......@@ -105696,27 +107623,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105696107623 .dst_temps = .{ .mem, .unused },
105697107624 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105698107625 .each = .{ .once = &.{
105699 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105700 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
107626 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107627 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
105701107628 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105702 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
105703 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
105704 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107629 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
107630 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
107631 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
107632 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
105705107633 } },
105706107634 }, .{
105707 .required_features = .{ .sse, null, null, null },
105708 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105709 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
107635 .required_features = .{ .sse, .slow_incdec, null, null },
107636 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107637 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105710107638 .patterns = &.{
105711107639 .{ .src = .{ .to_mem, .none, .none } },
105712107640 },
105713107641 .call_frame = .{ .alignment = .@"16" },
105714107642 .extra_temps = .{
105715107643 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105716 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105717 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },
105718 .{ .type = .u32, .kind = .{ .reg = .eax } },
105719 .unused,
107644 .{ .type = .u32, .kind = .{ .reg = .edi } },
107645 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
107646 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107647 .{ .type = .f32, .kind = .mem },
105720107648 .unused,
105721107649 .unused,
105722107650 .unused,
......@@ -105727,27 +107655,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105727107655 .dst_temps = .{ .mem, .unused },
105728107656 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105729107657 .each = .{ .once = &.{
105730 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105731 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
107658 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107659 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
105732107660 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105733 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
105734 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
107661 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
107662 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
107663 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
107664 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
105735107665 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105736107666 } },
105737107667 }, .{
105738 .required_features = .{ .@"64bit", .sse, null, null },
105739 .src_constraints = .{ .{ .float = .xword }, .any, .any },
105740 .dst_constraints = .{ .{ .signed_int = .qword }, .any },
107668 .required_features = .{ .sse, null, null, null },
107669 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107670 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105741107671 .patterns = &.{
105742 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
107672 .{ .src = .{ .to_mem, .none, .none } },
105743107673 },
105744107674 .call_frame = .{ .alignment = .@"16" },
105745107675 .extra_temps = .{
105746 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },
105747 .unused,
105748 .unused,
105749 .unused,
105750 .unused,
107676 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107677 .{ .type = .u32, .kind = .{ .reg = .edi } },
107678 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
107679 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107680 .{ .type = .f32, .kind = .mem },
105751107681 .unused,
105752107682 .unused,
105753107683 .unused,
......@@ -105755,50 +107685,86 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105755107685 .unused,
105756107686 .unused,
105757107687 },
105758 .dst_temps = .{ .{ .reg = .rax }, .unused },
107688 .dst_temps = .{ .mem, .unused },
105759107689 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105760107690 .each = .{ .once = &.{
105761 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
107691 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107692 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107693 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107694 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
107695 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
107696 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
107697 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
107698 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
105762107699 } },
105763107700 }, .{
105764 .required_features = .{ .@"64bit", .sse, null, null },
105765 .src_constraints = .{ .{ .float = .xword }, .any, .any },
105766 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },
107701 .required_features = .{ .f16c, null, null, null },
107702 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
107703 .dst_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },
105767107704 .patterns = &.{
105768 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
107705 .{ .src = .{ .mem, .none, .none } },
107706 .{ .src = .{ .to_sse, .none, .none } },
105769107707 },
105770 .call_frame = .{ .alignment = .@"16" },
105771 .extra_temps = .{
105772 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },
105773 .unused,
105774 .unused,
105775 .unused,
105776 .unused,
105777 .unused,
105778 .unused,
105779 .unused,
105780 .unused,
105781 .unused,
105782 .unused,
107708 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
107709 .each = .{ .once = &.{
107710 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },
107711 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
107712 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
107713 } },
107714 }, .{
107715 .required_features = .{ .f16c, .avx2, null, null },
107716 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
107717 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },
107718 .patterns = &.{
107719 .{ .src = .{ .mem, .none, .none } },
107720 .{ .src = .{ .to_sse, .none, .none } },
105783107721 },
105784 .dst_temps = .{ .{ .reg = .rax }, .unused },
105785 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107722 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
105786107723 .each = .{ .once = &.{
105787 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
107724 .{ ._, .vp_d, .movsxw, .dst0y, .src0x, ._, ._ },
107725 .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ },
107726 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
105788107727 } },
105789107728 }, .{
105790 .required_features = .{ .@"64bit", .avx, null, null },
105791 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105792 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
107729 .required_features = .{ .f16c, null, null, null },
107730 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },
107731 .dst_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },
107732 .patterns = &.{
107733 .{ .src = .{ .mem, .none, .none } },
107734 .{ .src = .{ .to_sse, .none, .none } },
107735 },
107736 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
107737 .each = .{ .once = &.{
107738 .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ },
107739 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
107740 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
107741 } },
107742 }, .{
107743 .required_features = .{ .f16c, .avx2, null, null },
107744 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
107745 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },
107746 .patterns = &.{
107747 .{ .src = .{ .mem, .none, .none } },
107748 .{ .src = .{ .to_sse, .none, .none } },
107749 },
107750 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
107751 .each = .{ .once = &.{
107752 .{ ._, .vp_d, .movzxw, .dst0y, .src0x, ._, ._ },
107753 .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ },
107754 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
107755 } },
107756 }, .{
107757 .required_features = .{ .f16c, .avx2, null, null },
107758 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
107759 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },
105793107760 .patterns = &.{
105794107761 .{ .src = .{ .to_mem, .none, .none } },
105795107762 },
105796 .call_frame = .{ .alignment = .@"16" },
105797107763 .extra_temps = .{
105798107764 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105799 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105800 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },
105801 .{ .type = .i64, .kind = .{ .reg = .rax } },
107765 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
107766 .unused,
107767 .unused,
105802107768 .unused,
105803107769 .unused,
105804107770 .unused,
......@@ -105808,28 +107774,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105808107774 .unused,
105809107775 },
105810107776 .dst_temps = .{ .mem, .unused },
105811 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107777 .clobbers = .{ .eflags = true },
105812107778 .each = .{ .once = &.{
105813 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105814 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
105815 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105816 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
105817 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
107779 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107780 .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
107781 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
107782 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
107783 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
105818107784 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105819107785 } },
105820107786 }, .{
105821 .required_features = .{ .@"64bit", .avx, null, null },
105822 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105823 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
107787 .required_features = .{ .f16c, null, null, null },
107788 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
107789 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any },
105824107790 .patterns = &.{
105825107791 .{ .src = .{ .to_mem, .none, .none } },
105826107792 },
105827 .call_frame = .{ .alignment = .@"16" },
105828107793 .extra_temps = .{
105829107794 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105830 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105831 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },
105832 .{ .type = .u64, .kind = .{ .reg = .rax } },
107795 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
107796 .unused,
107797 .unused,
105833107798 .unused,
105834107799 .unused,
105835107800 .unused,
......@@ -105839,28 +107804,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105839107804 .unused,
105840107805 },
105841107806 .dst_temps = .{ .mem, .unused },
105842 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107807 .clobbers = .{ .eflags = true },
105843107808 .each = .{ .once = &.{
105844 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105845 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
105846 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105847 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
107809 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107810 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107811 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
107812 .{ ._, .v_, .cvtps2ph, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },
105848107813 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
105849107814 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105850107815 } },
105851107816 }, .{
105852 .required_features = .{ .@"64bit", .sse2, null, null },
105853 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105854 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
107817 .required_features = .{ .f16c, .avx2, null, null },
107818 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
107819 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },
105855107820 .patterns = &.{
105856107821 .{ .src = .{ .to_mem, .none, .none } },
105857107822 },
105858 .call_frame = .{ .alignment = .@"16" },
105859107823 .extra_temps = .{
105860107824 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105861 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105862 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },
105863 .{ .type = .i64, .kind = .{ .reg = .rax } },
107825 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
107826 .unused,
107827 .unused,
105864107828 .unused,
105865107829 .unused,
105866107830 .unused,
......@@ -105870,28 +107834,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105870107834 .unused,
105871107835 },
105872107836 .dst_temps = .{ .mem, .unused },
105873 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107837 .clobbers = .{ .eflags = true },
105874107838 .each = .{ .once = &.{
105875 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105876 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
105877 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105878 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
105879 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
107839 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107840 .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
107841 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
107842 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
107843 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
105880107844 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105881107845 } },
105882107846 }, .{
105883 .required_features = .{ .@"64bit", .sse2, null, null },
105884 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105885 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
107847 .required_features = .{ .f16c, null, null, null },
107848 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },
107849 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any },
105886107850 .patterns = &.{
105887107851 .{ .src = .{ .to_mem, .none, .none } },
105888107852 },
105889 .call_frame = .{ .alignment = .@"16" },
105890107853 .extra_temps = .{
105891107854 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105892 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105893 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },
105894 .{ .type = .u64, .kind = .{ .reg = .rax } },
107855 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
107856 .unused,
107857 .unused,
105895107858 .unused,
105896107859 .unused,
105897107860 .unused,
......@@ -105901,28 +107864,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105901107864 .unused,
105902107865 },
105903107866 .dst_temps = .{ .mem, .unused },
105904 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107867 .clobbers = .{ .eflags = true },
105905107868 .each = .{ .once = &.{
105906 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105907 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
105908 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105909 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
107869 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107870 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107871 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
107872 .{ ._, .v_, .cvtps2ph, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },
105910107873 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
105911107874 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105912107875 } },
105913107876 }, .{
105914 .required_features = .{ .@"64bit", .sse, null, null },
105915 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105916 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
107877 .required_features = .{ .avx, null, null, null },
107878 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
107879 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105917107880 .patterns = &.{
105918107881 .{ .src = .{ .to_mem, .none, .none } },
105919107882 },
105920107883 .call_frame = .{ .alignment = .@"16" },
105921107884 .extra_temps = .{
105922107885 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105923 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105924 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },
105925 .{ .type = .i64, .kind = .{ .reg = .rax } },
107886 .{ .type = .i32, .kind = .{ .reg = .edi } },
107887 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
107888 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105926107889 .unused,
105927107890 .unused,
105928107891 .unused,
......@@ -105934,26 +107897,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105934107897 .dst_temps = .{ .mem, .unused },
105935107898 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105936107899 .each = .{ .once = &.{
105937 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105938 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
107900 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107901 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
105939107902 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105940 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
105941 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
107903 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107904 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
105942107905 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105943107906 } },
105944107907 }, .{
105945 .required_features = .{ .@"64bit", .sse, null, null },
105946 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
105947 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
107908 .required_features = .{ .sse4_1, null, null, null },
107909 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
107910 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105948107911 .patterns = &.{
105949107912 .{ .src = .{ .to_mem, .none, .none } },
105950107913 },
105951107914 .call_frame = .{ .alignment = .@"16" },
105952107915 .extra_temps = .{
105953107916 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105954 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
105955 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },
105956 .{ .type = .u64, .kind = .{ .reg = .rax } },
107917 .{ .type = .i32, .kind = .{ .reg = .edi } },
107918 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
107919 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105957107920 .unused,
105958107921 .unused,
105959107922 .unused,
......@@ -105965,26 +107928,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105965107928 .dst_temps = .{ .mem, .unused },
105966107929 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105967107930 .each = .{ .once = &.{
105968 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105969 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
107931 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107932 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
105970107933 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105971 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
105972 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
107934 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107935 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
105973107936 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105974107937 } },
105975107938 }, .{
105976 .required_features = .{ .@"64bit", .sse, null, null },
105977 .src_constraints = .{ .{ .float = .xword }, .any, .any },
105978 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
107939 .required_features = .{ .sse2, null, null, null },
107940 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
107941 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105979107942 .patterns = &.{
105980 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
107943 .{ .src = .{ .to_mem, .none, .none } },
105981107944 },
105982107945 .call_frame = .{ .alignment = .@"16" },
105983107946 .extra_temps = .{
105984 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },
105985 .unused,
105986 .unused,
105987 .unused,
107947 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107948 .{ .type = .i32, .kind = .{ .reg = .edi } },
107949 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
107950 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105988107951 .unused,
105989107952 .unused,
105990107953 .unused,
......@@ -105993,25 +107956,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105993107956 .unused,
105994107957 .unused,
105995107958 },
105996 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
107959 .dst_temps = .{ .mem, .unused },
105997107960 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105998107961 .each = .{ .once = &.{
105999 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
107962 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107963 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
107964 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107965 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
107966 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
107967 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
107968 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106000107969 } },
106001107970 }, .{
106002 .required_features = .{ .@"64bit", .sse, null, null },
106003 .src_constraints = .{ .{ .float = .xword }, .any, .any },
106004 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
107971 .required_features = .{ .sse, null, null, null },
107972 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
107973 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106005107974 .patterns = &.{
106006 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
107975 .{ .src = .{ .to_mem, .none, .none } },
106007107976 },
106008107977 .call_frame = .{ .alignment = .@"16" },
106009107978 .extra_temps = .{
106010 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },
106011 .unused,
106012 .unused,
106013 .unused,
106014 .unused,
107979 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107980 .{ .type = .i32, .kind = .{ .reg = .edi } },
107981 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
107982 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107983 .{ .type = .f32, .kind = .mem },
106015107984 .unused,
106016107985 .unused,
106017107986 .unused,
......@@ -106019,25 +107988,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106019107988 .unused,
106020107989 .unused,
106021107990 },
106022 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
107991 .dst_temps = .{ .mem, .unused },
106023107992 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106024107993 .each = .{ .once = &.{
106025 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
107994 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107995 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
107996 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107997 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
107998 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
107999 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108000 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108001 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106026108002 } },
106027108003 }, .{
106028 .required_features = .{ .@"64bit", .avx, null, null },
106029 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
106030 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
108004 .required_features = .{ .avx, null, null, null },
108005 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
108006 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106031108007 .patterns = &.{
106032108008 .{ .src = .{ .to_mem, .none, .none } },
106033108009 },
106034108010 .call_frame = .{ .alignment = .@"16" },
106035108011 .extra_temps = .{
106036108012 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106037 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106038 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },
106039 .{ .type = .u64, .kind = .{ .reg = .rax } },
106040 .{ .type = .i64, .kind = .{ .reg = .rdx } },
108013 .{ .type = .u32, .kind = .{ .reg = .edi } },
108014 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108015 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108016 .unused,
106041108017 .unused,
106042108018 .unused,
106043108019 .unused,
......@@ -106049,27 +108025,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106049108025 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106050108026 .each = .{ .once = &.{
106051108027 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106052 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
108028 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
106053108029 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106054 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
106055 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
106056 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
108030 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108031 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106057108032 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106058108033 } },
106059108034 }, .{
106060 .required_features = .{ .@"64bit", .avx, null, null },
106061 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
106062 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
108035 .required_features = .{ .sse4_1, null, null, null },
108036 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
108037 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106063108038 .patterns = &.{
106064108039 .{ .src = .{ .to_mem, .none, .none } },
106065108040 },
106066108041 .call_frame = .{ .alignment = .@"16" },
106067108042 .extra_temps = .{
106068108043 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106069 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106070 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },
106071 .{ .type = .u64, .kind = .{ .reg = .rax } },
106072 .{ .type = .u64, .kind = .{ .reg = .rdx } },
108044 .{ .type = .u32, .kind = .{ .reg = .edi } },
108045 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108046 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108047 .unused,
106073108048 .unused,
106074108049 .unused,
106075108050 .unused,
......@@ -106081,27 +108056,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106081108056 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106082108057 .each = .{ .once = &.{
106083108058 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106084 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
108059 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
106085108060 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106086 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
106087 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
106088 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
108061 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108062 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106089108063 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106090108064 } },
106091108065 }, .{
106092 .required_features = .{ .@"64bit", .sse2, null, null },
106093 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
106094 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
108066 .required_features = .{ .sse2, null, null, null },
108067 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
108068 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106095108069 .patterns = &.{
106096108070 .{ .src = .{ .to_mem, .none, .none } },
106097108071 },
106098108072 .call_frame = .{ .alignment = .@"16" },
106099108073 .extra_temps = .{
106100108074 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106101 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106102 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },
106103 .{ .type = .u64, .kind = .{ .reg = .rax } },
106104 .{ .type = .i64, .kind = .{ .reg = .rdx } },
108075 .{ .type = .u32, .kind = .{ .reg = .edi } },
108076 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108077 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108078 .unused,
106105108079 .unused,
106106108080 .unused,
106107108081 .unused,
......@@ -106113,27 +108087,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106113108087 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106114108088 .each = .{ .once = &.{
106115108089 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106116 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
108090 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
106117108091 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106118 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
106119 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
106120 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
108092 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
108093 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108094 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106121108095 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106122108096 } },
106123108097 }, .{
106124 .required_features = .{ .@"64bit", .sse2, null, null },
106125 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
106126 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
108098 .required_features = .{ .sse, null, null, null },
108099 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
108100 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106127108101 .patterns = &.{
106128108102 .{ .src = .{ .to_mem, .none, .none } },
106129108103 },
106130108104 .call_frame = .{ .alignment = .@"16" },
106131108105 .extra_temps = .{
106132108106 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106133 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106134 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },
106135 .{ .type = .u64, .kind = .{ .reg = .rax } },
106136 .{ .type = .u64, .kind = .{ .reg = .rdx } },
108107 .{ .type = .u32, .kind = .{ .reg = .edi } },
108108 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108109 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108110 .{ .type = .f32, .kind = .mem },
106137108111 .unused,
106138108112 .unused,
106139108113 .unused,
......@@ -106145,27 +108119,53 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106145108119 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106146108120 .each = .{ .once = &.{
106147108121 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106148 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
108122 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
106149108123 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106150 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
106151 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
106152 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
108124 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
108125 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
108126 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108127 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106153108128 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106154108129 } },
106155108130 }, .{
106156 .required_features = .{ .@"64bit", .sse, null, null },
106157 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
106158 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
108131 .required_features = .{ .f16c, null, null, null },
108132 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
108133 .dst_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },
108134 .patterns = &.{
108135 .{ .src = .{ .mem, .none, .none } },
108136 .{ .src = .{ .to_sse, .none, .none } },
108137 },
108138 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
108139 .each = .{ .once = &.{
108140 .{ ._, .v_ps, .cvtdq2, .dst0x, .src0x, ._, ._ },
108141 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
108142 } },
108143 }, .{
108144 .required_features = .{ .f16c, .avx2, null, null },
108145 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },
108146 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },
108147 .patterns = &.{
108148 .{ .src = .{ .mem, .none, .none } },
108149 .{ .src = .{ .to_sse, .none, .none } },
108150 },
108151 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
108152 .each = .{ .once = &.{
108153 .{ ._, .v_ps, .cvtdq2, .dst0y, .src0y, ._, ._ },
108154 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
108155 } },
108156 }, .{
108157 .required_features = .{ .f16c, .avx2, null, null },
108158 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },
108159 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },
106159108160 .patterns = &.{
106160108161 .{ .src = .{ .to_mem, .none, .none } },
106161108162 },
106162 .call_frame = .{ .alignment = .@"16" },
106163108163 .extra_temps = .{
106164108164 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106165 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106166 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },
106167 .{ .type = .u64, .kind = .{ .reg = .rax } },
106168 .{ .type = .i64, .kind = .{ .reg = .rdx } },
108165 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
108166 .unused,
108167 .unused,
108168 .unused,
106169108169 .unused,
106170108170 .unused,
106171108171 .unused,
......@@ -106174,30 +108174,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106174108174 .unused,
106175108175 },
106176108176 .dst_temps = .{ .mem, .unused },
106177 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108177 .clobbers = .{ .eflags = true },
106178108178 .each = .{ .once = &.{
106179 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106180 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
106181 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106182 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
106183 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
108179 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108180 .{ .@"0:", .v_ps, .cvtdq2, .tmp1y, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
108181 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
106184108182 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
106185108183 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106186108184 } },
106187108185 }, .{
106188 .required_features = .{ .@"64bit", .sse, null, null },
106189 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
106190 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
108186 .required_features = .{ .f16c, null, null, null },
108187 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
108188 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any },
106191108189 .patterns = &.{
106192108190 .{ .src = .{ .to_mem, .none, .none } },
106193108191 },
106194 .call_frame = .{ .alignment = .@"16" },
106195108192 .extra_temps = .{
106196108193 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106197 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106198 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },
106199 .{ .type = .u64, .kind = .{ .reg = .rax } },
106200 .{ .type = .u64, .kind = .{ .reg = .rdx } },
108194 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
108195 .unused,
108196 .unused,
108197 .unused,
106201108198 .unused,
106202108199 .unused,
106203108200 .unused,
......@@ -106206,29 +108203,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106206108203 .unused,
106207108204 },
106208108205 .dst_temps = .{ .mem, .unused },
106209 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108206 .clobbers = .{ .eflags = true },
106210108207 .each = .{ .once = &.{
106211 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106212 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
106213 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106214 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
106215 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
106216 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
108208 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108209 .{ .@"0:", .v_ps, .cvtdq2, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
108210 .{ ._, .v_, .cvtps2ph, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },
108211 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
106217108212 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106218108213 } },
106219108214 }, .{
106220 .required_features = .{ .@"64bit", .sse, null, null },
106221 .src_constraints = .{ .{ .float = .xword }, .any, .any },
106222 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
108215 .required_features = .{ .avx, null, null, null },
108216 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
108217 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106223108218 .patterns = &.{
106224 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
108219 .{ .src = .{ .to_mem, .none, .none } },
106225108220 },
106226108221 .call_frame = .{ .alignment = .@"16" },
106227108222 .extra_temps = .{
106228 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106229 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106230 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },
106231 .unused,
108223 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108224 .{ .type = .i32, .kind = .{ .reg = .edi } },
108225 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
108226 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106232108227 .unused,
106233108228 .unused,
106234108229 .unused,
......@@ -106240,23 +108235,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106240108235 .dst_temps = .{ .mem, .unused },
106241108236 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106242108237 .each = .{ .once = &.{
106243 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
106244 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
108238 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108239 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
106245108240 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108241 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108242 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108243 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106246108244 } },
106247108245 }, .{
106248 .required_features = .{ .@"64bit", .sse, null, null },
106249 .src_constraints = .{ .{ .float = .xword }, .any, .any },
106250 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
108246 .required_features = .{ .sse4_1, null, null, null },
108247 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
108248 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106251108249 .patterns = &.{
106252 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
108250 .{ .src = .{ .to_mem, .none, .none } },
106253108251 },
106254108252 .call_frame = .{ .alignment = .@"16" },
106255108253 .extra_temps = .{
106256 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106257 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106258 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },
106259 .unused,
108254 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108255 .{ .type = .i32, .kind = .{ .reg = .edi } },
108256 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
108257 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106260108258 .unused,
106261108259 .unused,
106262108260 .unused,
......@@ -106268,25 +108266,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106268108266 .dst_temps = .{ .mem, .unused },
106269108267 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106270108268 .each = .{ .once = &.{
106271 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
106272 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
108269 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108270 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
106273108271 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108272 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108273 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108274 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106274108275 } },
106275108276 }, .{
106276 .required_features = .{ .@"64bit", .avx, null, null },
106277 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
106278 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
108277 .required_features = .{ .sse2, null, null, null },
108278 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
108279 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106279108280 .patterns = &.{
106280108281 .{ .src = .{ .to_mem, .none, .none } },
106281108282 },
106282108283 .call_frame = .{ .alignment = .@"16" },
106283108284 .extra_temps = .{
106284108285 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106285 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106286 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106287 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106288 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106289 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },
108286 .{ .type = .i32, .kind = .{ .reg = .edi } },
108287 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
108288 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108289 .unused,
108290 .unused,
106290108291 .unused,
106291108292 .unused,
106292108293 .unused,
......@@ -106296,31 +108297,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106296108297 .dst_temps = .{ .mem, .unused },
106297108298 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106298108299 .each = .{ .once = &.{
106299 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106300 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
106301 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
106302 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
106303 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
106304 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
106305 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106306 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
108300 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108301 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
108302 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108303 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
108304 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108305 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106307108306 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106308108307 } },
106309108308 }, .{
106310 .required_features = .{ .@"64bit", .avx, null, null },
106311 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
106312 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
108309 .required_features = .{ .sse, null, null, null },
108310 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
108311 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106313108312 .patterns = &.{
106314108313 .{ .src = .{ .to_mem, .none, .none } },
106315108314 },
106316108315 .call_frame = .{ .alignment = .@"16" },
106317108316 .extra_temps = .{
106318108317 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106319 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106320 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106321 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106322 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106323 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },
108318 .{ .type = .i32, .kind = .{ .reg = .edi } },
108319 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
108320 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108321 .{ .type = .f32, .kind = .mem },
108322 .unused,
106324108323 .unused,
106325108324 .unused,
106326108325 .unused,
......@@ -106330,31 +108329,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106330108329 .dst_temps = .{ .mem, .unused },
106331108330 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106332108331 .each = .{ .once = &.{
106333 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106334 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
106335 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
106336 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
106337 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
106338 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
106339 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106340 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
108332 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108333 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
108334 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108335 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
108336 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
108337 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108338 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106341108339 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106342108340 } },
106343108341 }, .{
106344 .required_features = .{ .@"64bit", .sse2, null, null },
106345 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
106346 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
108342 .required_features = .{ .avx, null, null, null },
108343 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
108344 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106347108345 .patterns = &.{
106348108346 .{ .src = .{ .to_mem, .none, .none } },
106349108347 },
106350108348 .call_frame = .{ .alignment = .@"16" },
106351108349 .extra_temps = .{
106352108350 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106353 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106354 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106355 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106356 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106357 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },
108351 .{ .type = .u32, .kind = .{ .reg = .edi } },
108352 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108353 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108354 .unused,
108355 .unused,
106358108356 .unused,
106359108357 .unused,
106360108358 .unused,
......@@ -106364,31 +108362,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106364108362 .dst_temps = .{ .mem, .unused },
106365108363 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106366108364 .each = .{ .once = &.{
106367 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106368 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
106369 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
106370 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
106371 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
106372 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
106373 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106374 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
108365 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108366 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
108367 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108368 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108369 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106375108370 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106376108371 } },
106377108372 }, .{
106378 .required_features = .{ .@"64bit", .sse2, null, null },
106379 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
106380 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
108373 .required_features = .{ .sse4_1, null, null, null },
108374 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
108375 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106381108376 .patterns = &.{
106382108377 .{ .src = .{ .to_mem, .none, .none } },
106383108378 },
106384108379 .call_frame = .{ .alignment = .@"16" },
106385108380 .extra_temps = .{
106386108381 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106387 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106388 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106389 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106390 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106391 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },
108382 .{ .type = .u32, .kind = .{ .reg = .edi } },
108383 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108384 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108385 .unused,
108386 .unused,
106392108387 .unused,
106393108388 .unused,
106394108389 .unused,
......@@ -106398,31 +108393,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106398108393 .dst_temps = .{ .mem, .unused },
106399108394 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106400108395 .each = .{ .once = &.{
106401 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106402 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
106403 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
106404 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
106405 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
106406 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
106407 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106408 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
108396 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108397 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
108398 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108399 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108400 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106409108401 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106410108402 } },
106411108403 }, .{
106412 .required_features = .{ .@"64bit", .sse, null, null },
106413 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
106414 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
108404 .required_features = .{ .sse2, null, null, null },
108405 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
108406 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106415108407 .patterns = &.{
106416108408 .{ .src = .{ .to_mem, .none, .none } },
106417108409 },
106418108410 .call_frame = .{ .alignment = .@"16" },
106419108411 .extra_temps = .{
106420108412 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106421 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106422 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106423 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106424 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106425 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },
108413 .{ .type = .u32, .kind = .{ .reg = .edi } },
108414 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108415 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108416 .unused,
108417 .unused,
106426108418 .unused,
106427108419 .unused,
106428108420 .unused,
......@@ -106432,31 +108424,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106432108424 .dst_temps = .{ .mem, .unused },
106433108425 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106434108426 .each = .{ .once = &.{
106435 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106436 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
106437 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
106438 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
106439 .{ ._, ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
106440 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
106441 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106442 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
108427 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108428 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
108429 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108430 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
108431 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108432 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106443108433 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106444108434 } },
106445108435 }, .{
106446 .required_features = .{ .@"64bit", .sse, null, null },
106447 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
106448 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
108436 .required_features = .{ .sse, null, null, null },
108437 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
108438 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106449108439 .patterns = &.{
106450108440 .{ .src = .{ .to_mem, .none, .none } },
106451108441 },
106452108442 .call_frame = .{ .alignment = .@"16" },
106453108443 .extra_temps = .{
106454108444 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106455 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106456 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106457 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106458 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106459 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },
108445 .{ .type = .u32, .kind = .{ .reg = .edi } },
108446 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108447 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108448 .{ .type = .f32, .kind = .mem },
108449 .unused,
106460108450 .unused,
106461108451 .unused,
106462108452 .unused,
......@@ -106466,42 +108456,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106466108456 .dst_temps = .{ .mem, .unused },
106467108457 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106468108458 .each = .{ .once = &.{
106469 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106470 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
106471 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
106472 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
106473 .{ ._, ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
106474 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
106475 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106476 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
108459 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108460 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
108461 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108462 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
108463 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
108464 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108465 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106477108466 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106478108467 } },
106479 } }) catch |err| switch (err) {
106480 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
106481 @tagName(air_tag),
106482 ty_op.ty.toType().fmt(pt),
106483 cg.typeOf(ty_op.operand).fmt(pt),
106484 ops[0].tracking(cg),
106485 }),
106486 else => |e| return e,
106487 };
106488 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
106489 },
106490 .float_from_int => |air_tag| if (use_old) try cg.airFloatFromInt(inst) else {
106491 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
106492 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
106493 var res: [1]Temp = undefined;
106494 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
106495 .required_features = .{ .f16c, null, null, null },
106496 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
106497 .dst_constraints = .{ .{ .float = .word }, .any },
108468 }, .{
108469 .required_features = .{ .@"64bit", .f16c, null, null },
108470 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
108471 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106498108472 .patterns = &.{
106499 .{ .src = .{ .mem, .none, .none } },
106500 .{ .src = .{ .to_gpr, .none, .none } },
108473 .{ .src = .{ .to_mem, .none, .none } },
106501108474 },
106502108475 .extra_temps = .{
106503 .{ .type = .i8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
106504 .unused,
108476 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108477 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
106505108478 .unused,
106506108479 .unused,
106507108480 .unused,
......@@ -106512,26 +108485,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106512108485 .unused,
106513108486 .unused,
106514108487 },
106515 .dst_temps = .{ .{ .rc = .sse }, .unused },
108488 .dst_temps = .{ .mem, .unused },
108489 .clobbers = .{ .eflags = true },
106516108490 .each = .{ .once = &.{
106517 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
106518 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
106519 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
106520 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
108491 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108492 .{ .@"0:", .v_ps, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
108493 .{ ._, .v_ss, .cvtsi2, .tmp1x, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._ },
108494 .{ ._, .v_, .cvtps2ph, .tmp1q, .tmp1x, .rm(.{}), ._ },
108495 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
108496 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108497 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106521108498 } },
106522108499 }, .{
106523 .required_features = .{ .f16c, null, null, null },
106524 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
106525 .dst_constraints = .{ .{ .float = .word }, .any },
108500 .required_features = .{ .@"64bit", .avx, null, null },
108501 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
108502 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106526108503 .patterns = &.{
106527 .{ .src = .{ .mem, .none, .none } },
106528 .{ .src = .{ .to_gpr, .none, .none } },
108504 .{ .src = .{ .to_mem, .none, .none } },
106529108505 },
108506 .call_frame = .{ .alignment = .@"16" },
106530108507 .extra_temps = .{
106531 .{ .type = .u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
106532 .unused,
106533 .unused,
106534 .unused,
108508 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108509 .{ .type = .i64, .kind = .{ .reg = .rdi } },
108510 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
108511 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106535108512 .unused,
106536108513 .unused,
106537108514 .unused,
......@@ -106540,26 +108517,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106540108517 .unused,
106541108518 .unused,
106542108519 },
106543 .dst_temps = .{ .{ .rc = .sse }, .unused },
108520 .dst_temps = .{ .mem, .unused },
108521 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106544108522 .each = .{ .once = &.{
106545 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
106546 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
106547 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
106548 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
108523 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108524 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
108525 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108526 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108527 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108528 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106549108529 } },
106550108530 }, .{
106551 .required_features = .{ .f16c, null, null, null },
106552 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
106553 .dst_constraints = .{ .{ .float = .word }, .any },
108531 .required_features = .{ .@"64bit", .sse4_1, null, null },
108532 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
108533 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106554108534 .patterns = &.{
106555 .{ .src = .{ .mem, .none, .none } },
106556 .{ .src = .{ .to_gpr, .none, .none } },
108535 .{ .src = .{ .to_mem, .none, .none } },
106557108536 },
108537 .call_frame = .{ .alignment = .@"16" },
106558108538 .extra_temps = .{
106559 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
106560 .unused,
106561 .unused,
106562 .unused,
108539 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108540 .{ .type = .i64, .kind = .{ .reg = .rdi } },
108541 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
108542 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106563108543 .unused,
106564108544 .unused,
106565108545 .unused,
......@@ -106568,26 +108548,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106568108548 .unused,
106569108549 .unused,
106570108550 },
106571 .dst_temps = .{ .{ .rc = .sse }, .unused },
108551 .dst_temps = .{ .mem, .unused },
108552 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106572108553 .each = .{ .once = &.{
106573 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
106574 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
106575 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
106576 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
108554 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108555 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
108556 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108557 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108558 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108559 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106577108560 } },
106578108561 }, .{
106579 .required_features = .{ .f16c, null, null, null },
106580 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
106581 .dst_constraints = .{ .{ .float = .word }, .any },
108562 .required_features = .{ .@"64bit", .sse2, null, null },
108563 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
108564 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106582108565 .patterns = &.{
106583 .{ .src = .{ .mem, .none, .none } },
106584 .{ .src = .{ .to_gpr, .none, .none } },
108566 .{ .src = .{ .to_mem, .none, .none } },
106585108567 },
108568 .call_frame = .{ .alignment = .@"16" },
106586108569 .extra_temps = .{
106587 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
106588 .unused,
106589 .unused,
106590 .unused,
108570 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108571 .{ .type = .i64, .kind = .{ .reg = .rdi } },
108572 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
108573 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106591108574 .unused,
106592108575 .unused,
106593108576 .unused,
......@@ -106596,41 +108579,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106596108579 .unused,
106597108580 .unused,
106598108581 },
106599 .dst_temps = .{ .{ .rc = .sse }, .unused },
106600 .each = .{ .once = &.{
106601 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
106602 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
106603 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
106604 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
106605 } },
106606 }, .{
106607 .required_features = .{ .f16c, null, null, null },
106608 .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any },
106609 .dst_constraints = .{ .{ .float = .word }, .any },
106610 .patterns = &.{
106611 .{ .src = .{ .mem, .none, .none } },
106612 .{ .src = .{ .to_gpr, .none, .none } },
106613 },
106614 .dst_temps = .{ .{ .rc = .sse }, .unused },
108582 .dst_temps = .{ .mem, .unused },
108583 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106615108584 .each = .{ .once = &.{
106616 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
106617 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0d, ._ },
106618 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
108585 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108586 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
108587 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108588 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
108589 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108590 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108591 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106619108592 } },
106620108593 }, .{
106621 .required_features = .{ .@"64bit", .f16c, null, null },
106622 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any },
106623 .dst_constraints = .{ .{ .float = .word }, .any },
108594 .required_features = .{ .@"64bit", .sse, null, null },
108595 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
108596 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106624108597 .patterns = &.{
106625 .{ .src = .{ .mem, .none, .none } },
106626 .{ .src = .{ .to_gpr, .none, .none } },
108598 .{ .src = .{ .to_mem, .none, .none } },
106627108599 },
108600 .call_frame = .{ .alignment = .@"16" },
106628108601 .extra_temps = .{
106629 .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
106630 .unused,
106631 .unused,
106632 .unused,
106633 .unused,
108602 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108603 .{ .type = .i64, .kind = .{ .reg = .rdi } },
108604 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
108605 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108606 .{ .type = .f32, .kind = .mem },
106634108607 .unused,
106635108608 .unused,
106636108609 .unused,
......@@ -106638,39 +108611,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106638108611 .unused,
106639108612 .unused,
106640108613 },
106641 .dst_temps = .{ .{ .rc = .sse }, .unused },
106642 .each = .{ .once = &.{
106643 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
106644 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
106645 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0q, ._ },
106646 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
106647 } },
106648 }, .{
106649 .required_features = .{ .@"64bit", .f16c, null, null },
106650 .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any },
106651 .dst_constraints = .{ .{ .float = .word }, .any },
106652 .patterns = &.{
106653 .{ .src = .{ .mem, .none, .none } },
106654 .{ .src = .{ .to_gpr, .none, .none } },
106655 },
106656 .dst_temps = .{ .{ .rc = .sse }, .unused },
108614 .dst_temps = .{ .mem, .unused },
108615 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106657108616 .each = .{ .once = &.{
106658 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
106659 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ },
106660 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
108617 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108618 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
108619 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108620 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
108621 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
108622 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108623 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108624 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106661108625 } },
106662108626 }, .{
106663 .required_features = .{ .@"64bit", .f16c, null, null },
106664 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },
106665 .dst_constraints = .{ .{ .float = .word }, .any },
108627 .required_features = .{ .@"64bit", .avx, null, null },
108628 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
108629 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106666108630 .patterns = &.{
106667 .{ .src = .{ .to_mut_gpr, .none, .none } },
108631 .{ .src = .{ .to_mem, .none, .none } },
106668108632 },
108633 .call_frame = .{ .alignment = .@"16" },
106669108634 .extra_temps = .{
106670 .{ .type = .u1, .kind = .{ .rc = .general_purpose } },
106671 .unused,
106672 .unused,
106673 .unused,
108635 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108636 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108637 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
108638 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106674108639 .unused,
106675108640 .unused,
106676108641 .unused,
......@@ -106679,35 +108644,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106679108644 .unused,
106680108645 .unused,
106681108646 },
106682 .dst_temps = .{ .{ .rc = .sse }, .unused },
106683 .clobbers = .{ .eflags = true },
108647 .dst_temps = .{ .mem, .unused },
108648 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106684108649 .each = .{ .once = &.{
106685 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
106686 .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ },
106687 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
106688 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
106689 .{ ._, ._r, .sh, .src0q, .ui(1), ._, ._ },
106690 .{ ._, ._, .@"and", .tmp0d, .si(1), ._, ._ },
106691 .{ ._, ._, .@"or", .src0q, .tmp0q, ._, ._ },
106692 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ },
106693 .{ ._, .v_ss, .add, .dst0x, .dst0x, .dst0d, ._ },
106694 .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
106695 .{ .@"1:", .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ },
106696 .{ .@"0:", .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
108650 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108651 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
108652 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108653 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108654 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108655 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106697108656 } },
106698108657 }, .{
106699 .required_features = .{ .sse, null, null, null },
106700 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
106701 .dst_constraints = .{ .{ .float = .word }, .any },
108658 .required_features = .{ .@"64bit", .sse4_1, null, null },
108659 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
108660 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106702108661 .patterns = &.{
106703 .{ .src = .{ .{ .to_reg = .dil }, .none, .none } },
108662 .{ .src = .{ .to_mem, .none, .none } },
106704108663 },
106705108664 .call_frame = .{ .alignment = .@"16" },
106706108665 .extra_temps = .{
106707 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
106708 .unused,
106709 .unused,
106710 .unused,
108666 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108667 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108668 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
108669 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106711108670 .unused,
106712108671 .unused,
106713108672 .unused,
......@@ -106716,25 +108675,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106716108675 .unused,
106717108676 .unused,
106718108677 },
106719 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
108678 .dst_temps = .{ .mem, .unused },
106720108679 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106721108680 .each = .{ .once = &.{
106722 .{ ._, ._, .movsx, .src0d, .src0b, ._, ._ },
106723 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
108681 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108682 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
108683 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108684 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108685 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108686 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106724108687 } },
106725108688 }, .{
106726 .required_features = .{ .sse, null, null, null },
106727 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
106728 .dst_constraints = .{ .{ .float = .word }, .any },
108689 .required_features = .{ .@"64bit", .sse2, null, null },
108690 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
108691 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106729108692 .patterns = &.{
106730 .{ .src = .{ .{ .to_reg = .dil }, .none, .none } },
108693 .{ .src = .{ .to_mem, .none, .none } },
106731108694 },
106732108695 .call_frame = .{ .alignment = .@"16" },
106733108696 .extra_temps = .{
106734 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
106735 .unused,
106736 .unused,
106737 .unused,
108697 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108698 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108699 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
108700 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106738108701 .unused,
106739108702 .unused,
106740108703 .unused,
......@@ -106743,26 +108706,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106743108706 .unused,
106744108707 .unused,
106745108708 },
106746 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
108709 .dst_temps = .{ .mem, .unused },
106747108710 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106748108711 .each = .{ .once = &.{
106749 .{ ._, ._, .movzx, .src0d, .src0b, ._, ._ },
106750 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
108712 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108713 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
108714 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108715 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
108716 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108717 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108718 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106751108719 } },
106752108720 }, .{
106753 .required_features = .{ .sse, null, null, null },
106754 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
106755 .dst_constraints = .{ .{ .float = .word }, .any },
108721 .required_features = .{ .@"64bit", .sse, null, null },
108722 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
108723 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106756108724 .patterns = &.{
106757 .{ .src = .{ .{ .to_reg = .di }, .none, .none } },
108725 .{ .src = .{ .to_mem, .none, .none } },
106758108726 },
106759108727 .call_frame = .{ .alignment = .@"16" },
106760108728 .extra_temps = .{
106761 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
106762 .unused,
106763 .unused,
106764 .unused,
106765 .unused,
108729 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108730 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108731 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
108732 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108733 .{ .type = .f32, .kind = .mem },
106766108734 .unused,
106767108735 .unused,
106768108736 .unused,
......@@ -106770,26 +108738,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106770108738 .unused,
106771108739 .unused,
106772108740 },
106773 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
108741 .dst_temps = .{ .mem, .unused },
106774108742 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106775108743 .each = .{ .once = &.{
106776 .{ ._, ._, .movsx, .src0d, .src0w, ._, ._ },
106777 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
108744 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108745 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
108746 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108747 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
108748 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
108749 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108750 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108751 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106778108752 } },
106779108753 }, .{
106780 .required_features = .{ .sse, null, null, null },
106781 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
106782 .dst_constraints = .{ .{ .float = .word }, .any },
108754 .required_features = .{ .@"64bit", .avx, null, null },
108755 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
108756 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106783108757 .patterns = &.{
106784 .{ .src = .{ .{ .to_reg = .di }, .none, .none } },
108758 .{ .src = .{ .to_mem, .none, .none } },
106785108759 },
106786108760 .call_frame = .{ .alignment = .@"16" },
106787108761 .extra_temps = .{
106788 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
106789 .unused,
106790 .unused,
106791 .unused,
106792 .unused,
108762 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108763 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108764 .{ .type = .i64, .kind = .{ .reg = .rsi } },
108765 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },
108766 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106793108767 .unused,
106794108768 .unused,
106795108769 .unused,
......@@ -106797,26 +108771,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106797108771 .unused,
106798108772 .unused,
106799108773 },
106800 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
108774 .dst_temps = .{ .mem, .unused },
106801108775 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106802108776 .each = .{ .once = &.{
106803 .{ ._, ._, .movzx, .src0d, .src0w, ._, ._ },
106804 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
108777 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108778 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
108779 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },
108780 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
108781 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4x, .ui(0), ._ },
108782 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108783 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106805108784 } },
106806108785 }, .{
106807 .required_features = .{ .sse, null, null, null },
106808 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
106809 .dst_constraints = .{ .{ .float = .word }, .any },
108786 .required_features = .{ .@"64bit", .sse4_1, null, null },
108787 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
108788 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106810108789 .patterns = &.{
106811 .{ .src = .{ .{ .to_reg = .edi }, .none, .none } },
108790 .{ .src = .{ .to_mem, .none, .none } },
106812108791 },
106813108792 .call_frame = .{ .alignment = .@"16" },
106814108793 .extra_temps = .{
106815 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
106816 .unused,
106817 .unused,
106818 .unused,
106819 .unused,
108794 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108795 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108796 .{ .type = .i64, .kind = .{ .reg = .rsi } },
108797 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },
108798 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106820108799 .unused,
106821108800 .unused,
106822108801 .unused,
......@@ -106824,25 +108803,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106824108803 .unused,
106825108804 .unused,
106826108805 },
106827 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
108806 .dst_temps = .{ .mem, .unused },
106828108807 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106829108808 .each = .{ .once = &.{
106830 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
108809 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108810 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
108811 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },
108812 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
108813 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4x, .ui(0), ._ },
108814 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108815 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106831108816 } },
106832108817 }, .{
106833 .required_features = .{ .sse, null, null, null },
106834 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
106835 .dst_constraints = .{ .{ .float = .word }, .any },
108818 .required_features = .{ .@"64bit", .sse2, null, null },
108819 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
108820 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106836108821 .patterns = &.{
106837 .{ .src = .{ .{ .to_reg = .edi }, .none, .none } },
108822 .{ .src = .{ .to_mem, .none, .none } },
106838108823 },
106839108824 .call_frame = .{ .alignment = .@"16" },
106840108825 .extra_temps = .{
106841 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
106842 .unused,
106843 .unused,
106844 .unused,
106845 .unused,
108826 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108827 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108828 .{ .type = .i64, .kind = .{ .reg = .rsi } },
108829 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },
108830 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106846108831 .unused,
106847108832 .unused,
106848108833 .unused,
......@@ -106850,51 +108835,98 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106850108835 .unused,
106851108836 .unused,
106852108837 },
106853 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
108838 .dst_temps = .{ .mem, .unused },
106854108839 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106855108840 .each = .{ .once = &.{
106856 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
108841 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108842 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
108843 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },
108844 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
108845 .{ ._, .p_w, .extr, .tmp1d, .tmp4x, .ui(0), ._ },
108846 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108847 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108848 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106857108849 } },
106858108850 }, .{
106859108851 .required_features = .{ .@"64bit", .sse, null, null },
106860 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
106861 .dst_constraints = .{ .{ .float = .word }, .any },
108852 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
108853 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106862108854 .patterns = &.{
106863 .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } },
108855 .{ .src = .{ .to_mem, .none, .none } },
106864108856 },
106865108857 .call_frame = .{ .alignment = .@"16" },
106866108858 .extra_temps = .{
106867 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
108859 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108860 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108861 .{ .type = .i64, .kind = .{ .reg = .rsi } },
108862 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },
108863 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108864 .{ .type = .f32, .kind = .mem },
106868108865 .unused,
106869108866 .unused,
106870108867 .unused,
106871108868 .unused,
106872108869 .unused,
108870 },
108871 .dst_temps = .{ .mem, .unused },
108872 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108873 .each = .{ .once = &.{
108874 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108875 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
108876 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },
108877 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
108878 .{ ._, ._ss, .mov, .tmp5d, .tmp4d, ._, ._ },
108879 .{ ._, ._, .mov, .tmp1d, .tmp5d, ._, ._ },
108880 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108881 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108882 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108883 } },
108884 }, .{
108885 .required_features = .{ .@"64bit", .avx, null, null },
108886 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
108887 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
108888 .patterns = &.{
108889 .{ .src = .{ .to_mem, .none, .none } },
108890 },
108891 .call_frame = .{ .alignment = .@"16" },
108892 .extra_temps = .{
108893 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108894 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108895 .{ .type = .u64, .kind = .{ .reg = .rsi } },
108896 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },
108897 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108898 .unused,
106873108899 .unused,
106874108900 .unused,
106875108901 .unused,
106876108902 .unused,
106877108903 .unused,
106878108904 },
106879 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
108905 .dst_temps = .{ .mem, .unused },
106880108906 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106881108907 .each = .{ .once = &.{
106882 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
108908 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108909 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
108910 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },
108911 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
108912 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4x, .ui(0), ._ },
108913 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108914 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106883108915 } },
106884108916 }, .{
106885 .required_features = .{ .@"64bit", .sse, null, null },
106886 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
106887 .dst_constraints = .{ .{ .float = .word }, .any },
108917 .required_features = .{ .@"64bit", .sse4_1, null, null },
108918 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
108919 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106888108920 .patterns = &.{
106889 .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } },
108921 .{ .src = .{ .to_mem, .none, .none } },
106890108922 },
106891108923 .call_frame = .{ .alignment = .@"16" },
106892108924 .extra_temps = .{
106893 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
106894 .unused,
106895 .unused,
106896 .unused,
106897 .unused,
108925 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108926 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108927 .{ .type = .u64, .kind = .{ .reg = .rsi } },
108928 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },
108929 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106898108930 .unused,
106899108931 .unused,
106900108932 .unused,
......@@ -106902,25 +108934,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106902108934 .unused,
106903108935 .unused,
106904108936 },
106905 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
108937 .dst_temps = .{ .mem, .unused },
106906108938 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106907108939 .each = .{ .once = &.{
106908 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
108940 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108941 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
108942 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },
108943 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
108944 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4x, .ui(0), ._ },
108945 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108946 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106909108947 } },
106910108948 }, .{
106911 .required_features = .{ .@"64bit", .sse, null, null },
106912 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
106913 .dst_constraints = .{ .{ .float = .word }, .any },
108949 .required_features = .{ .@"64bit", .sse2, null, null },
108950 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
108951 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106914108952 .patterns = &.{
106915 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
108953 .{ .src = .{ .to_mem, .none, .none } },
106916108954 },
106917108955 .call_frame = .{ .alignment = .@"16" },
106918108956 .extra_temps = .{
106919 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },
106920 .unused,
106921 .unused,
106922 .unused,
106923 .unused,
108957 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108958 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108959 .{ .type = .u64, .kind = .{ .reg = .rsi } },
108960 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },
108961 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106924108962 .unused,
106925108963 .unused,
106926108964 .unused,
......@@ -106928,193 +108966,206 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106928108966 .unused,
106929108967 .unused,
106930108968 },
106931 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
108969 .dst_temps = .{ .mem, .unused },
106932108970 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106933108971 .each = .{ .once = &.{
106934 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
108972 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108973 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
108974 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },
108975 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
108976 .{ ._, .p_w, .extr, .tmp1d, .tmp4x, .ui(0), ._ },
108977 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108978 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108979 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106935108980 } },
106936108981 }, .{
106937108982 .required_features = .{ .@"64bit", .sse, null, null },
106938 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
106939 .dst_constraints = .{ .{ .float = .word }, .any },
108983 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
108984 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106940108985 .patterns = &.{
106941 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
108986 .{ .src = .{ .to_mem, .none, .none } },
106942108987 },
106943108988 .call_frame = .{ .alignment = .@"16" },
106944108989 .extra_temps = .{
108990 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108991 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108992 .{ .type = .u64, .kind = .{ .reg = .rsi } },
106945108993 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },
106946 .unused,
106947 .unused,
106948 .unused,
106949 .unused,
106950 .unused,
108994 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108995 .{ .type = .f32, .kind = .mem },
106951108996 .unused,
106952108997 .unused,
106953108998 .unused,
106954108999 .unused,
106955109000 .unused,
106956109001 },
106957 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
109002 .dst_temps = .{ .mem, .unused },
106958109003 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106959109004 .each = .{ .once = &.{
106960 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
109005 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109006 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
109007 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },
109008 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
109009 .{ ._, ._ss, .mov, .tmp5d, .tmp4d, ._, ._ },
109010 .{ ._, ._, .mov, .tmp1d, .tmp5d, ._, ._ },
109011 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
109012 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109013 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106961109014 } },
106962109015 }, .{
106963 .required_features = .{ .@"64bit", .sse, null, null },
106964 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
106965 .dst_constraints = .{ .{ .float = .word }, .any },
109016 .required_features = .{ .@"64bit", .avx, null, null },
109017 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
109018 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106966109019 .patterns = &.{
106967109020 .{ .src = .{ .to_mem, .none, .none } },
106968109021 },
106969109022 .call_frame = .{ .alignment = .@"16" },
106970109023 .extra_temps = .{
109024 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
109025 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106971109026 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106972109027 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106973109028 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },
106974 .unused,
106975 .unused,
106976 .unused,
109029 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106977109030 .unused,
106978109031 .unused,
106979109032 .unused,
106980109033 .unused,
106981109034 .unused,
106982109035 },
106983 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
109036 .dst_temps = .{ .mem, .unused },
106984109037 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106985109038 .each = .{ .once = &.{
106986109039 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
106987 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
106988 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109040 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109041 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
109042 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
109043 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
109044 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp5x, .ui(0), ._ },
109045 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
109046 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
109047 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106989109048 } },
106990109049 }, .{
106991 .required_features = .{ .@"64bit", .sse, null, null },
106992 .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
106993 .dst_constraints = .{ .{ .float = .word }, .any },
109050 .required_features = .{ .@"64bit", .sse4_1, null, null },
109051 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
109052 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106994109053 .patterns = &.{
106995109054 .{ .src = .{ .to_mem, .none, .none } },
106996109055 },
106997109056 .call_frame = .{ .alignment = .@"16" },
106998109057 .extra_temps = .{
109058 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
109059 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106999109060 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107000109061 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107001 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
107002 .unused,
107003 .unused,
107004 .unused,
109062 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },
109063 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107005109064 .unused,
107006109065 .unused,
107007109066 .unused,
107008109067 .unused,
107009109068 .unused,
107010109069 },
107011 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
109070 .dst_temps = .{ .mem, .unused },
107012109071 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107013109072 .each = .{ .once = &.{
107014109073 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
107015 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
107016 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107017 } },
107018 }, .{
107019 .required_features = .{ .f16c, null, null, null },
107020 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
107021 .dst_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },
107022 .patterns = &.{
107023 .{ .src = .{ .mem, .none, .none } },
107024 .{ .src = .{ .to_sse, .none, .none } },
107025 },
107026 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
107027 .each = .{ .once = &.{
107028 .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ },
107029 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
107030 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
107031 } },
107032 }, .{
107033 .required_features = .{ .f16c, .avx2, null, null },
107034 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
107035 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },
107036 .patterns = &.{
107037 .{ .src = .{ .mem, .none, .none } },
107038 .{ .src = .{ .to_sse, .none, .none } },
107039 },
107040 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
107041 .each = .{ .once = &.{
107042 .{ ._, .vp_d, .movsxb, .dst0y, .src0q, ._, ._ },
107043 .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ },
107044 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
109074 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109075 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
109076 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
109077 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
109078 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp5x, .ui(0), ._ },
109079 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
109080 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
109081 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107045109082 } },
107046109083 }, .{
107047 .required_features = .{ .f16c, null, null, null },
107048 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },
107049 .dst_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },
109084 .required_features = .{ .@"64bit", .sse2, null, null },
109085 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
109086 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
107050109087 .patterns = &.{
107051 .{ .src = .{ .mem, .none, .none } },
107052 .{ .src = .{ .to_sse, .none, .none } },
109088 .{ .src = .{ .to_mem, .none, .none } },
107053109089 },
107054 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
107055 .each = .{ .once = &.{
107056 .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ },
107057 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
107058 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
107059 } },
107060 }, .{
107061 .required_features = .{ .f16c, .avx2, null, null },
107062 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, .any, .any },
107063 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },
107064 .patterns = &.{
107065 .{ .src = .{ .mem, .none, .none } },
107066 .{ .src = .{ .to_sse, .none, .none } },
109090 .call_frame = .{ .alignment = .@"16" },
109091 .extra_temps = .{
109092 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
109093 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109094 .{ .type = .usize, .kind = .{ .reg = .rdi } },
109095 .{ .type = .usize, .kind = .{ .reg = .rsi } },
109096 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },
109097 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109098 .unused,
109099 .unused,
109100 .unused,
109101 .unused,
109102 .unused,
107067109103 },
107068 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
109104 .dst_temps = .{ .mem, .unused },
109105 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107069109106 .each = .{ .once = &.{
107070 .{ ._, .vp_d, .movzxb, .dst0y, .src0q, ._, ._ },
107071 .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ },
107072 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
109107 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
109108 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109109 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
109110 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
109111 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
109112 .{ ._, .p_w, .extr, .tmp2d, .tmp5x, .ui(0), ._ },
109113 .{ ._, ._, .mov, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp2w, ._, ._ },
109114 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
109115 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
109116 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107073109117 } },
107074109118 }, .{
107075 .required_features = .{ .f16c, .avx2, null, null },
107076 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
107077 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },
109119 .required_features = .{ .@"64bit", .sse, null, null },
109120 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
109121 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
107078109122 .patterns = &.{
107079109123 .{ .src = .{ .to_mem, .none, .none } },
107080109124 },
109125 .call_frame = .{ .alignment = .@"16" },
107081109126 .extra_temps = .{
109127 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
107082109128 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107083 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
107084 .unused,
107085 .unused,
107086 .unused,
107087 .unused,
107088 .unused,
109129 .{ .type = .usize, .kind = .{ .reg = .rdi } },
109130 .{ .type = .usize, .kind = .{ .reg = .rsi } },
109131 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },
109132 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109133 .{ .type = .f32, .kind = .mem },
107089109134 .unused,
107090109135 .unused,
107091109136 .unused,
107092109137 .unused,
107093109138 },
107094109139 .dst_temps = .{ .mem, .unused },
107095 .clobbers = .{ .eflags = true },
109140 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107096109141 .each = .{ .once = &.{
107097 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107098 .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107099 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
107100 .{ ._, .v_, .cvtps2ph, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
107101 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
109142 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
109143 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109144 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
109145 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
109146 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
109147 .{ ._, ._ss, .mov, .tmp6d, .tmp5d, ._, ._ },
109148 .{ ._, ._, .mov, .tmp2d, .tmp6d, ._, ._ },
109149 .{ ._, ._, .mov, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp2w, ._, ._ },
109150 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
109151 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
107102109152 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107103109153 } },
107104109154 }, .{
107105 .required_features = .{ .f16c, null, null, null },
107106 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
107107 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any },
109155 .required_features = .{ .@"64bit", .avx, null, null },
109156 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
109157 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
107108109158 .patterns = &.{
107109109159 .{ .src = .{ .to_mem, .none, .none } },
107110109160 },
109161 .call_frame = .{ .alignment = .@"16" },
107111109162 .extra_temps = .{
109163 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
107112109164 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107113 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
107114 .unused,
107115 .unused,
107116 .unused,
107117 .unused,
109165 .{ .type = .usize, .kind = .{ .reg = .rdi } },
109166 .{ .type = .usize, .kind = .{ .reg = .rsi } },
109167 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
109168 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107118109169 .unused,
107119109170 .unused,
107120109171 .unused,
......@@ -107122,29 +109173,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107122109173 .unused,
107123109174 },
107124109175 .dst_temps = .{ .mem, .unused },
107125 .clobbers = .{ .eflags = true },
109176 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107126109177 .each = .{ .once = &.{
107127 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107128 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
107129 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
107130 .{ ._, .v_, .cvtps2ph, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },
107131 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
109178 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
109179 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109180 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
109181 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
109182 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
109183 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp5x, .ui(0), ._ },
109184 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
109185 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
107132109186 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107133109187 } },
107134109188 }, .{
107135 .required_features = .{ .f16c, .avx2, null, null },
107136 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, .any, .any },
107137 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },
109189 .required_features = .{ .@"64bit", .sse4_1, null, null },
109190 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
109191 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
107138109192 .patterns = &.{
107139109193 .{ .src = .{ .to_mem, .none, .none } },
107140109194 },
109195 .call_frame = .{ .alignment = .@"16" },
107141109196 .extra_temps = .{
109197 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
107142109198 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107143 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
107144 .unused,
107145 .unused,
107146 .unused,
107147 .unused,
109199 .{ .type = .usize, .kind = .{ .reg = .rdi } },
109200 .{ .type = .usize, .kind = .{ .reg = .rsi } },
109201 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
109202 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107148109203 .unused,
107149109204 .unused,
107150109205 .unused,
......@@ -107152,29 +109207,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107152109207 .unused,
107153109208 },
107154109209 .dst_temps = .{ .mem, .unused },
107155 .clobbers = .{ .eflags = true },
109210 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107156109211 .each = .{ .once = &.{
107157 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107158 .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107159 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
107160 .{ ._, .v_, .cvtps2ph, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
107161 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
109212 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
109213 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109214 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
109215 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
109216 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
109217 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp5x, .ui(0), ._ },
109218 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
109219 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
107162109220 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107163109221 } },
107164109222 }, .{
107165 .required_features = .{ .f16c, null, null, null },
107166 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },
107167 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any },
109223 .required_features = .{ .@"64bit", .sse2, null, null },
109224 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
109225 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
107168109226 .patterns = &.{
107169109227 .{ .src = .{ .to_mem, .none, .none } },
107170109228 },
109229 .call_frame = .{ .alignment = .@"16" },
107171109230 .extra_temps = .{
109231 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
107172109232 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107173 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
107174 .unused,
107175 .unused,
107176 .unused,
107177 .unused,
109233 .{ .type = .usize, .kind = .{ .reg = .rdi } },
109234 .{ .type = .usize, .kind = .{ .reg = .rsi } },
109235 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
109236 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107178109237 .unused,
107179109238 .unused,
107180109239 .unused,
......@@ -107182,31 +109241,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107182109241 .unused,
107183109242 },
107184109243 .dst_temps = .{ .mem, .unused },
107185 .clobbers = .{ .eflags = true },
109244 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107186109245 .each = .{ .once = &.{
107187 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107188 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
107189 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
107190 .{ ._, .v_, .cvtps2ph, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },
107191 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
109246 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
109247 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109248 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
109249 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
109250 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
109251 .{ ._, .p_w, .extr, .tmp2d, .tmp5x, .ui(0), ._ },
109252 .{ ._, ._, .mov, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp2w, ._, ._ },
109253 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
109254 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
107192109255 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107193109256 } },
107194109257 }, .{
107195 .required_features = .{ .avx, .slow_incdec, null, null },
107196 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
109258 .required_features = .{ .@"64bit", .sse, null, null },
109259 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
107197109260 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
107198109261 .patterns = &.{
107199109262 .{ .src = .{ .to_mem, .none, .none } },
107200109263 },
107201109264 .call_frame = .{ .alignment = .@"16" },
107202109265 .extra_temps = .{
109266 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
107203109267 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107204 .{ .type = .i32, .kind = .{ .reg = .edi } },
107205 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
109268 .{ .type = .usize, .kind = .{ .reg = .rdi } },
109269 .{ .type = .usize, .kind = .{ .reg = .rsi } },
109270 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
107206109271 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107207 .unused,
107208 .unused,
107209 .unused,
109272 .{ .type = .f32, .kind = .mem },
107210109273 .unused,
107211109274 .unused,
107212109275 .unused,
......@@ -107215,26 +109278,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107215109278 .dst_temps = .{ .mem, .unused },
107216109279 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107217109280 .each = .{ .once = &.{
107218 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107219 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107220 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107221 .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107222 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
109281 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
109282 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109283 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
109284 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
109285 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
109286 .{ ._, ._ss, .mov, .tmp6d, .tmp5d, ._, ._ },
109287 .{ ._, ._, .mov, .tmp2d, .tmp6d, ._, ._ },
109288 .{ ._, ._, .mov, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp2w, ._, ._ },
109289 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
109290 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
107223109291 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107224109292 } },
107225109293 }, .{
107226109294 .required_features = .{ .avx, null, null, null },
107227 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107228 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
109295 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
109296 .dst_constraints = .{ .{ .float = .dword }, .any },
107229109297 .patterns = &.{
107230 .{ .src = .{ .to_mem, .none, .none } },
109298 .{ .src = .{ .mem, .none, .none } },
109299 .{ .src = .{ .to_gpr, .none, .none } },
107231109300 },
107232 .call_frame = .{ .alignment = .@"16" },
107233109301 .extra_temps = .{
107234 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107235 .{ .type = .i32, .kind = .{ .reg = .edi } },
107236 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
107237 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109302 .{ .type = .i8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
109303 .unused,
109304 .unused,
109305 .unused,
107238109306 .unused,
107239109307 .unused,
107240109308 .unused,
......@@ -107243,29 +109311,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107243109311 .unused,
107244109312 .unused,
107245109313 },
107246 .dst_temps = .{ .mem, .unused },
107247 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109314 .dst_temps = .{ .{ .rc = .sse }, .unused },
107248109315 .each = .{ .once = &.{
107249 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107250 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107251 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107252 .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107253 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
107254 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
109316 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
109317 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
109318 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
107255109319 } },
107256109320 }, .{
107257 .required_features = .{ .sse4_1, .slow_incdec, null, null },
107258 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107259 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
109321 .required_features = .{ .sse, null, null, null },
109322 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
109323 .dst_constraints = .{ .{ .float = .dword }, .any },
107260109324 .patterns = &.{
107261 .{ .src = .{ .to_mem, .none, .none } },
109325 .{ .src = .{ .mem, .none, .none } },
109326 .{ .src = .{ .to_gpr, .none, .none } },
107262109327 },
107263 .call_frame = .{ .alignment = .@"16" },
107264109328 .extra_temps = .{
107265 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107266 .{ .type = .i32, .kind = .{ .reg = .edi } },
107267 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
107268 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109329 .{ .type = .i8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
109330 .unused,
109331 .unused,
109332 .unused,
107269109333 .unused,
107270109334 .unused,
107271109335 .unused,
......@@ -107274,29 +109338,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107274109338 .unused,
107275109339 .unused,
107276109340 },
107277 .dst_temps = .{ .mem, .unused },
107278 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109341 .dst_temps = .{ .{ .rc = .sse }, .unused },
107279109342 .each = .{ .once = &.{
107280 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107281 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107282 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107283 .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107284 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
107285 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109343 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
109344 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
109345 .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0d, ._, ._ },
107286109346 } },
107287109347 }, .{
107288 .required_features = .{ .sse4_1, null, null, null },
107289 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107290 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
109348 .required_features = .{ .avx, null, null, null },
109349 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
109350 .dst_constraints = .{ .{ .float = .dword }, .any },
107291109351 .patterns = &.{
107292 .{ .src = .{ .to_mem, .none, .none } },
109352 .{ .src = .{ .mem, .none, .none } },
109353 .{ .src = .{ .to_gpr, .none, .none } },
107293109354 },
107294 .call_frame = .{ .alignment = .@"16" },
107295109355 .extra_temps = .{
107296 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107297 .{ .type = .i32, .kind = .{ .reg = .edi } },
107298 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
107299 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109356 .{ .type = .u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
109357 .unused,
109358 .unused,
109359 .unused,
107300109360 .unused,
107301109361 .unused,
107302109362 .unused,
......@@ -107305,29 +109365,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107305109365 .unused,
107306109366 .unused,
107307109367 },
107308 .dst_temps = .{ .mem, .unused },
107309 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109368 .dst_temps = .{ .{ .rc = .sse }, .unused },
107310109369 .each = .{ .once = &.{
107311 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107312 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107313 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107314 .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107315 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
107316 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
109370 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
109371 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
109372 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
107317109373 } },
107318109374 }, .{
107319 .required_features = .{ .sse2, .slow_incdec, null, null },
107320 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107321 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
109375 .required_features = .{ .sse, null, null, null },
109376 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
109377 .dst_constraints = .{ .{ .float = .dword }, .any },
107322109378 .patterns = &.{
107323 .{ .src = .{ .to_mem, .none, .none } },
109379 .{ .src = .{ .mem, .none, .none } },
109380 .{ .src = .{ .to_gpr, .none, .none } },
107324109381 },
107325 .call_frame = .{ .alignment = .@"16" },
107326109382 .extra_temps = .{
107327 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107328 .{ .type = .i32, .kind = .{ .reg = .edi } },
107329 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
107330 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109383 .{ .type = .u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
109384 .unused,
109385 .unused,
109386 .unused,
107331109387 .unused,
107332109388 .unused,
107333109389 .unused,
......@@ -107336,30 +109392,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107336109392 .unused,
107337109393 .unused,
107338109394 },
107339 .dst_temps = .{ .mem, .unused },
107340 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109395 .dst_temps = .{ .{ .rc = .sse }, .unused },
107341109396 .each = .{ .once = &.{
107342 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107343 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107344 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107345 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
107346 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
107347 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
107348 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109397 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
109398 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
109399 .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0d, ._, ._ },
107349109400 } },
107350109401 }, .{
107351 .required_features = .{ .sse2, null, null, null },
107352 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107353 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
109402 .required_features = .{ .avx, null, null, null },
109403 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
109404 .dst_constraints = .{ .{ .float = .dword }, .any },
107354109405 .patterns = &.{
107355 .{ .src = .{ .to_mem, .none, .none } },
109406 .{ .src = .{ .mem, .none, .none } },
109407 .{ .src = .{ .to_gpr, .none, .none } },
107356109408 },
107357 .call_frame = .{ .alignment = .@"16" },
107358109409 .extra_temps = .{
107359 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107360 .{ .type = .i32, .kind = .{ .reg = .edi } },
107361 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
107362 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109410 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
109411 .unused,
109412 .unused,
109413 .unused,
107363109414 .unused,
107364109415 .unused,
107365109416 .unused,
......@@ -107368,31 +109419,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107368109419 .unused,
107369109420 .unused,
107370109421 },
107371 .dst_temps = .{ .mem, .unused },
107372 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109422 .dst_temps = .{ .{ .rc = .sse }, .unused },
107373109423 .each = .{ .once = &.{
107374 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107375 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107376 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107377 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
107378 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
107379 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
107380 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
109424 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
109425 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
109426 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
107381109427 } },
107382109428 }, .{
107383 .required_features = .{ .sse, .slow_incdec, null, null },
107384 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107385 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
109429 .required_features = .{ .sse, null, null, null },
109430 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
109431 .dst_constraints = .{ .{ .float = .dword }, .any },
107386109432 .patterns = &.{
107387 .{ .src = .{ .to_mem, .none, .none } },
109433 .{ .src = .{ .mem, .none, .none } },
109434 .{ .src = .{ .to_gpr, .none, .none } },
107388109435 },
107389 .call_frame = .{ .alignment = .@"16" },
107390109436 .extra_temps = .{
107391 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107392 .{ .type = .i32, .kind = .{ .reg = .edi } },
107393 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
107394 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107395 .{ .type = .f32, .kind = .mem },
109437 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
109438 .unused,
109439 .unused,
109440 .unused,
109441 .unused,
107396109442 .unused,
107397109443 .unused,
107398109444 .unused,
......@@ -107400,32 +109446,53 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107400109446 .unused,
107401109447 .unused,
107402109448 },
107403 .dst_temps = .{ .mem, .unused },
107404 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109449 .dst_temps = .{ .{ .rc = .sse }, .unused },
107405109450 .each = .{ .once = &.{
107406 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107407 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107408 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107409 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
107410 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
107411 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
107412 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
107413 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109451 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
109452 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
109453 .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0d, ._, ._ },
109454 } },
109455 }, .{
109456 .required_features = .{ .avx, null, null, null },
109457 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
109458 .dst_constraints = .{ .{ .float = .dword }, .any },
109459 .patterns = &.{
109460 .{ .src = .{ .mem, .none, .none } },
109461 .{ .src = .{ .to_gpr, .none, .none } },
109462 },
109463 .extra_temps = .{
109464 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
109465 .unused,
109466 .unused,
109467 .unused,
109468 .unused,
109469 .unused,
109470 .unused,
109471 .unused,
109472 .unused,
109473 .unused,
109474 .unused,
109475 },
109476 .dst_temps = .{ .{ .rc = .sse }, .unused },
109477 .each = .{ .once = &.{
109478 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
109479 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
109480 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
107414109481 } },
107415109482 }, .{
107416109483 .required_features = .{ .sse, null, null, null },
107417 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107418 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
109484 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
109485 .dst_constraints = .{ .{ .float = .dword }, .any },
107419109486 .patterns = &.{
107420 .{ .src = .{ .to_mem, .none, .none } },
109487 .{ .src = .{ .mem, .none, .none } },
109488 .{ .src = .{ .to_gpr, .none, .none } },
107421109489 },
107422 .call_frame = .{ .alignment = .@"16" },
107423109490 .extra_temps = .{
107424 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107425 .{ .type = .i32, .kind = .{ .reg = .edi } },
107426 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
107427 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107428 .{ .type = .f32, .kind = .mem },
109491 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
109492 .unused,
109493 .unused,
109494 .unused,
109495 .unused,
107429109496 .unused,
107430109497 .unused,
107431109498 .unused,
......@@ -107433,31 +109500,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107433109500 .unused,
107434109501 .unused,
107435109502 },
107436 .dst_temps = .{ .mem, .unused },
107437 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109503 .dst_temps = .{ .{ .rc = .sse }, .unused },
107438109504 .each = .{ .once = &.{
107439 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107440 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107441 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107442 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
107443 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
107444 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
107445 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
107446 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
109505 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
109506 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
109507 .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0d, ._, ._ },
107447109508 } },
107448109509 }, .{
107449 .required_features = .{ .avx, .slow_incdec, null, null },
107450 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107451 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
109510 .required_features = .{ .avx, null, null, null },
109511 .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any },
109512 .dst_constraints = .{ .{ .float = .dword }, .any },
107452109513 .patterns = &.{
107453 .{ .src = .{ .to_mem, .none, .none } },
109514 .{ .src = .{ .mem, .none, .none } },
109515 .{ .src = .{ .to_gpr, .none, .none } },
109516 },
109517 .dst_temps = .{ .{ .rc = .sse }, .unused },
109518 .each = .{ .once = &.{
109519 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
109520 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0d, ._ },
109521 } },
109522 }, .{
109523 .required_features = .{ .sse, null, null, null },
109524 .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any },
109525 .dst_constraints = .{ .{ .float = .dword }, .any },
109526 .patterns = &.{
109527 .{ .src = .{ .mem, .none, .none } },
109528 .{ .src = .{ .to_gpr, .none, .none } },
109529 },
109530 .dst_temps = .{ .{ .rc = .sse }, .unused },
109531 .each = .{ .once = &.{
109532 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
109533 .{ ._, ._ss, .cvtsi2, .dst0x, .src0d, ._, ._ },
109534 } },
109535 }, .{
109536 .required_features = .{ .avx, null, null, null },
109537 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any },
109538 .dst_constraints = .{ .{ .float = .dword }, .any },
109539 .patterns = &.{
109540 .{ .src = .{ .mem, .none, .none } },
109541 .{ .src = .{ .to_gpr, .none, .none } },
107454109542 },
107455 .call_frame = .{ .alignment = .@"16" },
107456109543 .extra_temps = .{
107457 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107458 .{ .type = .u32, .kind = .{ .reg = .edi } },
107459 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
107460 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109544 .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
109545 .unused,
109546 .unused,
109547 .unused,
107461109548 .unused,
107462109549 .unused,
107463109550 .unused,
......@@ -107466,29 +109553,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107466109553 .unused,
107467109554 .unused,
107468109555 },
107469 .dst_temps = .{ .mem, .unused },
107470 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109556 .dst_temps = .{ .{ .rc = .sse }, .unused },
107471109557 .each = .{ .once = &.{
107472 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107473 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107474 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107475 .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107476 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
107477 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109558 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
109559 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
109560 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0q, ._ },
107478109561 } },
107479109562 }, .{
107480 .required_features = .{ .avx, null, null, null },
107481 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107482 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
109563 .required_features = .{ .sse, null, null, null },
109564 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any },
109565 .dst_constraints = .{ .{ .float = .dword }, .any },
107483109566 .patterns = &.{
107484 .{ .src = .{ .to_mem, .none, .none } },
109567 .{ .src = .{ .mem, .none, .none } },
109568 .{ .src = .{ .to_gpr, .none, .none } },
107485109569 },
107486 .call_frame = .{ .alignment = .@"16" },
107487109570 .extra_temps = .{
107488 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107489 .{ .type = .u32, .kind = .{ .reg = .edi } },
107490 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
107491 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109571 .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
109572 .unused,
109573 .unused,
109574 .unused,
107492109575 .unused,
107493109576 .unused,
107494109577 .unused,
......@@ -107497,29 +109580,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107497109580 .unused,
107498109581 .unused,
107499109582 },
107500 .dst_temps = .{ .mem, .unused },
107501 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109583 .dst_temps = .{ .{ .rc = .sse }, .unused },
107502109584 .each = .{ .once = &.{
107503 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107504 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107505 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107506 .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107507 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
107508 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
109585 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
109586 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
109587 .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0q, ._, ._ },
107509109588 } },
107510109589 }, .{
107511 .required_features = .{ .sse4_1, .slow_incdec, null, null },
107512 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107513 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
109590 .required_features = .{ .@"64bit", .avx, null, null },
109591 .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any },
109592 .dst_constraints = .{ .{ .float = .dword }, .any },
107514109593 .patterns = &.{
107515 .{ .src = .{ .to_mem, .none, .none } },
109594 .{ .src = .{ .mem, .none, .none } },
109595 .{ .src = .{ .to_gpr, .none, .none } },
109596 },
109597 .dst_temps = .{ .{ .rc = .sse }, .unused },
109598 .each = .{ .once = &.{
109599 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
109600 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ },
109601 } },
109602 }, .{
109603 .required_features = .{ .@"64bit", .sse, null, null },
109604 .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any },
109605 .dst_constraints = .{ .{ .float = .dword }, .any },
109606 .patterns = &.{
109607 .{ .src = .{ .mem, .none, .none } },
109608 .{ .src = .{ .to_gpr, .none, .none } },
109609 },
109610 .dst_temps = .{ .{ .rc = .sse }, .unused },
109611 .each = .{ .once = &.{
109612 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
109613 .{ ._, ._ss, .cvtsi2, .dst0x, .src0q, ._, ._ },
109614 } },
109615 }, .{
109616 .required_features = .{ .@"64bit", .avx, null, null },
109617 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },
109618 .dst_constraints = .{ .{ .float = .dword }, .any },
109619 .patterns = &.{
109620 .{ .src = .{ .to_mut_gpr, .none, .none } },
107516109621 },
107517 .call_frame = .{ .alignment = .@"16" },
107518109622 .extra_temps = .{
107519 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107520 .{ .type = .u32, .kind = .{ .reg = .edi } },
107521 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
107522 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109623 .{ .type = .u1, .kind = .{ .rc = .general_purpose } },
109624 .unused,
109625 .unused,
109626 .unused,
107523109627 .unused,
107524109628 .unused,
107525109629 .unused,
......@@ -107528,29 +109632,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107528109632 .unused,
107529109633 .unused,
107530109634 },
107531 .dst_temps = .{ .mem, .unused },
107532 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109635 .dst_temps = .{ .{ .rc = .sse }, .unused },
109636 .clobbers = .{ .eflags = true },
107533109637 .each = .{ .once = &.{
107534 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107535 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107536 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107537 .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107538 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
107539 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109638 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
109639 .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ },
109640 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
109641 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
109642 .{ ._, ._r, .sh, .src0q, .ui(1), ._, ._ },
109643 .{ ._, ._, .@"and", .tmp0d, .si(1), ._, ._ },
109644 .{ ._, ._, .@"or", .src0q, .tmp0q, ._, ._ },
109645 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ },
109646 .{ ._, .v_ss, .add, .dst0x, .dst0x, .dst0d, ._ },
109647 .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
109648 .{ .@"1:", .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ },
107540109649 } },
107541109650 }, .{
107542 .required_features = .{ .sse4_1, null, null, null },
107543 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107544 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
109651 .required_features = .{ .@"64bit", .sse, null, null },
109652 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },
109653 .dst_constraints = .{ .{ .float = .dword }, .any },
107545109654 .patterns = &.{
107546 .{ .src = .{ .to_mem, .none, .none } },
109655 .{ .src = .{ .to_mut_gpr, .none, .none } },
107547109656 },
107548 .call_frame = .{ .alignment = .@"16" },
107549109657 .extra_temps = .{
107550 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107551 .{ .type = .u32, .kind = .{ .reg = .edi } },
107552 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
107553 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109658 .{ .type = .u1, .kind = .{ .rc = .general_purpose } },
109659 .unused,
109660 .unused,
109661 .unused,
107554109662 .unused,
107555109663 .unused,
107556109664 .unused,
......@@ -107559,29 +109667,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107559109667 .unused,
107560109668 .unused,
107561109669 },
107562 .dst_temps = .{ .mem, .unused },
107563 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109670 .dst_temps = .{ .{ .rc = .sse }, .unused },
109671 .clobbers = .{ .eflags = true },
107564109672 .each = .{ .once = &.{
107565 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107566 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107567 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107568 .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107569 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
107570 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
109673 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
109674 .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ },
109675 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
109676 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
109677 .{ ._, ._r, .sh, .src0q, .ui(1), ._, ._ },
109678 .{ ._, ._, .@"and", .tmp0d, .si(1), ._, ._ },
109679 .{ ._, ._, .@"or", .src0q, .tmp0q, ._, ._ },
109680 .{ ._, ._ss, .cvtsi2, .dst0x, .src0q, ._, ._ },
109681 .{ ._, ._ss, .add, .dst0x, .dst0d, ._, ._ },
109682 .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
109683 .{ .@"1:", ._ss, .cvtsi2, .dst0x, .src0q, ._, ._ },
107571109684 } },
107572109685 }, .{
107573 .required_features = .{ .sse2, .slow_incdec, null, null },
107574 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107575 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
109686 .required_features = .{ .@"64bit", .sse, null, null },
109687 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
109688 .dst_constraints = .{ .{ .float = .dword }, .any },
107576109689 .patterns = &.{
107577 .{ .src = .{ .to_mem, .none, .none } },
109690 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
107578109691 },
107579109692 .call_frame = .{ .alignment = .@"16" },
107580109693 .extra_temps = .{
107581 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107582 .{ .type = .u32, .kind = .{ .reg = .edi } },
107583 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
107584 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109694 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattisf" } } },
109695 .unused,
109696 .unused,
109697 .unused,
107585109698 .unused,
107586109699 .unused,
107587109700 .unused,
......@@ -107590,30 +109703,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107590109703 .unused,
107591109704 .unused,
107592109705 },
107593 .dst_temps = .{ .mem, .unused },
109706 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
107594109707 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107595109708 .each = .{ .once = &.{
107596 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107597 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107598 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107599 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
107600 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
107601 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
107602 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109709 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
107603109710 } },
107604109711 }, .{
107605 .required_features = .{ .sse2, null, null, null },
107606 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107607 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
109712 .required_features = .{ .@"64bit", .sse, null, null },
109713 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
109714 .dst_constraints = .{ .{ .float = .dword }, .any },
107608109715 .patterns = &.{
107609 .{ .src = .{ .to_mem, .none, .none } },
109716 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
107610109717 },
107611109718 .call_frame = .{ .alignment = .@"16" },
107612109719 .extra_temps = .{
107613 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107614 .{ .type = .u32, .kind = .{ .reg = .edi } },
107615 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
107616 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109720 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntisf" } } },
109721 .unused,
109722 .unused,
109723 .unused,
107617109724 .unused,
107618109725 .unused,
107619109726 .unused,
......@@ -107622,31 +109729,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107622109729 .unused,
107623109730 .unused,
107624109731 },
107625 .dst_temps = .{ .mem, .unused },
109732 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
107626109733 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107627109734 .each = .{ .once = &.{
107628 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107629 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107630 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107631 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
107632 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
107633 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
107634 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
109735 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
107635109736 } },
107636109737 }, .{
107637 .required_features = .{ .sse, .slow_incdec, null, null },
107638 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107639 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
109738 .required_features = .{ .@"64bit", .sse, null, null },
109739 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
109740 .dst_constraints = .{ .{ .float = .dword }, .any },
107640109741 .patterns = &.{
107641109742 .{ .src = .{ .to_mem, .none, .none } },
107642109743 },
107643109744 .call_frame = .{ .alignment = .@"16" },
107644109745 .extra_temps = .{
107645 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107646 .{ .type = .u32, .kind = .{ .reg = .edi } },
107647 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
107648 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107649 .{ .type = .f32, .kind = .mem },
109746 .{ .type = .usize, .kind = .{ .reg = .rdi } },
109747 .{ .type = .usize, .kind = .{ .reg = .rsi } },
109748 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateisf" } } },
109749 .unused,
109750 .unused,
107650109751 .unused,
107651109752 .unused,
107652109753 .unused,
......@@ -107654,32 +109755,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107654109755 .unused,
107655109756 .unused,
107656109757 },
107657 .dst_temps = .{ .mem, .unused },
109758 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
107658109759 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107659109760 .each = .{ .once = &.{
107660 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107661 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
109761 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
109762 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
107662109763 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107663 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
107664 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
107665 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
107666 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
107667 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107668109764 } },
107669109765 }, .{
107670 .required_features = .{ .sse, null, null, null },
107671 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107672 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
109766 .required_features = .{ .@"64bit", .sse, null, null },
109767 .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
109768 .dst_constraints = .{ .{ .float = .dword }, .any },
107673109769 .patterns = &.{
107674109770 .{ .src = .{ .to_mem, .none, .none } },
107675109771 },
107676109772 .call_frame = .{ .alignment = .@"16" },
107677109773 .extra_temps = .{
107678 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107679 .{ .type = .u32, .kind = .{ .reg = .edi } },
107680 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
107681 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107682 .{ .type = .f32, .kind = .mem },
109774 .{ .type = .usize, .kind = .{ .reg = .rdi } },
109775 .{ .type = .usize, .kind = .{ .reg = .rsi } },
109776 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneisf" } } },
109777 .unused,
109778 .unused,
107683109779 .unused,
107684109780 .unused,
107685109781 .unused,
......@@ -107687,78 +109783,95 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107687109783 .unused,
107688109784 .unused,
107689109785 },
107690 .dst_temps = .{ .mem, .unused },
109786 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
107691109787 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107692109788 .each = .{ .once = &.{
107693 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107694 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
109789 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
109790 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
107695109791 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107696 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
107697 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
107698 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
107699 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
107700 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
107701109792 } },
107702109793 }, .{
107703 .required_features = .{ .f16c, null, null, null },
107704 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
107705 .dst_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },
109794 .required_features = .{ .avx, null, null, null },
109795 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
109796 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
107706109797 .patterns = &.{
107707109798 .{ .src = .{ .mem, .none, .none } },
107708109799 .{ .src = .{ .to_sse, .none, .none } },
107709109800 },
107710109801 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
107711109802 .each = .{ .once = &.{
107712 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },
109803 .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ },
107713109804 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
107714 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
107715109805 } },
107716109806 }, .{
107717 .required_features = .{ .f16c, .avx2, null, null },
107718 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
107719 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },
109807 .required_features = .{ .sse4_1, null, null, null },
109808 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
109809 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
107720109810 .patterns = &.{
107721109811 .{ .src = .{ .mem, .none, .none } },
107722109812 .{ .src = .{ .to_sse, .none, .none } },
107723109813 },
107724109814 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
107725109815 .each = .{ .once = &.{
107726 .{ ._, .vp_d, .movsxw, .dst0y, .src0x, ._, ._ },
109816 .{ ._, .p_d, .movsxb, .dst0x, .src0d, ._, ._ },
109817 .{ ._, ._ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
109818 } },
109819 }, .{
109820 .required_features = .{ .avx2, null, null, null },
109821 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
109822 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any },
109823 .patterns = &.{
109824 .{ .src = .{ .mem, .none, .none } },
109825 .{ .src = .{ .to_sse, .none, .none } },
109826 },
109827 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
109828 .each = .{ .once = &.{
109829 .{ ._, .vp_d, .movsxb, .dst0y, .src0q, ._, ._ },
107727109830 .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ },
107728 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
107729109831 } },
107730109832 }, .{
107731 .required_features = .{ .f16c, null, null, null },
107732 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },
107733 .dst_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },
109833 .required_features = .{ .avx, null, null, null },
109834 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },
109835 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
107734109836 .patterns = &.{
107735109837 .{ .src = .{ .mem, .none, .none } },
107736109838 .{ .src = .{ .to_sse, .none, .none } },
107737109839 },
107738109840 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
107739109841 .each = .{ .once = &.{
107740 .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ },
109842 .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ },
107741109843 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
107742 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
107743109844 } },
107744109845 }, .{
107745 .required_features = .{ .f16c, .avx2, null, null },
107746 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
107747 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },
109846 .required_features = .{ .sse4_1, null, null, null },
109847 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },
109848 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
107748109849 .patterns = &.{
107749109850 .{ .src = .{ .mem, .none, .none } },
107750109851 .{ .src = .{ .to_sse, .none, .none } },
107751109852 },
107752109853 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
107753109854 .each = .{ .once = &.{
107754 .{ ._, .vp_d, .movzxw, .dst0y, .src0x, ._, ._ },
109855 .{ ._, .p_d, .movzxb, .dst0x, .src0d, ._, ._ },
109856 .{ ._, ._ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
109857 } },
109858 }, .{
109859 .required_features = .{ .avx2, null, null, null },
109860 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, .any, .any },
109861 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any },
109862 .patterns = &.{
109863 .{ .src = .{ .mem, .none, .none } },
109864 .{ .src = .{ .to_sse, .none, .none } },
109865 },
109866 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
109867 .each = .{ .once = &.{
109868 .{ ._, .vp_d, .movzxb, .dst0y, .src0q, ._, ._ },
107755109869 .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ },
107756 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
107757109870 } },
107758109871 }, .{
107759 .required_features = .{ .f16c, .avx2, null, null },
107760 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
107761 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },
109872 .required_features = .{ .avx2, null, null, null },
109873 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
109874 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },
107762109875 .patterns = &.{
107763109876 .{ .src = .{ .to_mem, .none, .none } },
107764109877 },
......@@ -107779,16 +109892,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107779109892 .clobbers = .{ .eflags = true },
107780109893 .each = .{ .once = &.{
107781109894 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107782 .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
109895 .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107783109896 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
107784 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
107785 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
109897 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
109898 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
107786109899 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107787109900 } },
107788109901 }, .{
107789 .required_features = .{ .f16c, null, null, null },
107790 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
107791 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any },
109902 .required_features = .{ .avx, null, null, null },
109903 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
109904 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
107792109905 .patterns = &.{
107793109906 .{ .src = .{ .to_mem, .none, .none } },
107794109907 },
......@@ -107809,16 +109922,46 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107809109922 .clobbers = .{ .eflags = true },
107810109923 .each = .{ .once = &.{
107811109924 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107812 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
109925 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
107813109926 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
107814 .{ ._, .v_, .cvtps2ph, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },
107815 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
109927 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
109928 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
107816109929 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107817109930 } },
107818109931 }, .{
107819 .required_features = .{ .f16c, .avx2, null, null },
107820 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
107821 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },
109932 .required_features = .{ .sse4_1, null, null, null },
109933 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
109934 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
109935 .patterns = &.{
109936 .{ .src = .{ .to_mem, .none, .none } },
109937 },
109938 .extra_temps = .{
109939 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109940 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
109941 .unused,
109942 .unused,
109943 .unused,
109944 .unused,
109945 .unused,
109946 .unused,
109947 .unused,
109948 .unused,
109949 .unused,
109950 },
109951 .dst_temps = .{ .mem, .unused },
109952 .clobbers = .{ .eflags = true },
109953 .each = .{ .once = &.{
109954 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
109955 .{ .@"0:", .p_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
109956 .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
109957 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
109958 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
109959 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109960 } },
109961 }, .{
109962 .required_features = .{ .avx2, null, null, null },
109963 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, .any, .any },
109964 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },
107822109965 .patterns = &.{
107823109966 .{ .src = .{ .to_mem, .none, .none } },
107824109967 },
......@@ -107839,16 +109982,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107839109982 .clobbers = .{ .eflags = true },
107840109983 .each = .{ .once = &.{
107841109984 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107842 .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
109985 .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107843109986 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
107844 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
107845 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
109987 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
109988 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
107846109989 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107847109990 } },
107848109991 }, .{
107849 .required_features = .{ .f16c, null, null, null },
107850 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },
107851 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any },
109992 .required_features = .{ .avx, null, null, null },
109993 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },
109994 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
107852109995 .patterns = &.{
107853109996 .{ .src = .{ .to_mem, .none, .none } },
107854109997 },
......@@ -107869,16 +110012,46 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107869110012 .clobbers = .{ .eflags = true },
107870110013 .each = .{ .once = &.{
107871110014 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107872 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
110015 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
107873110016 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
107874 .{ ._, .v_, .cvtps2ph, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },
107875 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
110017 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
110018 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
107876110019 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107877110020 } },
107878110021 }, .{
107879 .required_features = .{ .avx, null, null, null },
107880 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
107881 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110022 .required_features = .{ .sse4_1, null, null, null },
110023 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },
110024 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
110025 .patterns = &.{
110026 .{ .src = .{ .to_mem, .none, .none } },
110027 },
110028 .extra_temps = .{
110029 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110030 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
110031 .unused,
110032 .unused,
110033 .unused,
110034 .unused,
110035 .unused,
110036 .unused,
110037 .unused,
110038 .unused,
110039 .unused,
110040 },
110041 .dst_temps = .{ .mem, .unused },
110042 .clobbers = .{ .eflags = true },
110043 .each = .{ .once = &.{
110044 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110045 .{ .@"0:", .p_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
110046 .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
110047 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
110048 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
110049 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110050 } },
110051 }, .{
110052 .required_features = .{ .avx, .slow_incdec, null, null },
110053 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110054 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
107882110055 .patterns = &.{
107883110056 .{ .src = .{ .to_mem, .none, .none } },
107884110057 },
......@@ -107886,8 +110059,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107886110059 .extra_temps = .{
107887110060 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107888110061 .{ .type = .i32, .kind = .{ .reg = .edi } },
107889 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
107890 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110062 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
110063 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
107891110064 .unused,
107892110065 .unused,
107893110066 .unused,
......@@ -107900,16 +110073,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107900110073 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107901110074 .each = .{ .once = &.{
107902110075 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107903 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
110076 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107904110077 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107905 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107906 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110078 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110079 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
107907110080 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107908110081 } },
107909110082 }, .{
107910 .required_features = .{ .sse4_1, null, null, null },
107911 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
107912 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110083 .required_features = .{ .avx, null, null, null },
110084 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110085 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
107913110086 .patterns = &.{
107914110087 .{ .src = .{ .to_mem, .none, .none } },
107915110088 },
......@@ -107917,8 +110090,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107917110090 .extra_temps = .{
107918110091 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107919110092 .{ .type = .i32, .kind = .{ .reg = .edi } },
107920 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
107921 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110093 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
110094 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
107922110095 .unused,
107923110096 .unused,
107924110097 .unused,
......@@ -107931,16 +110104,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107931110104 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107932110105 .each = .{ .once = &.{
107933110106 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107934 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
110107 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107935110108 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107936 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107937 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
107938 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110109 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110110 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
110111 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
107939110112 } },
107940110113 }, .{
107941 .required_features = .{ .sse2, null, null, null },
107942 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
107943 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110114 .required_features = .{ .sse, .slow_incdec, null, null },
110115 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110116 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
107944110117 .patterns = &.{
107945110118 .{ .src = .{ .to_mem, .none, .none } },
107946110119 },
......@@ -107948,8 +110121,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107948110121 .extra_temps = .{
107949110122 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107950110123 .{ .type = .i32, .kind = .{ .reg = .edi } },
107951 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
107952 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110124 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
110125 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
107953110126 .unused,
107954110127 .unused,
107955110128 .unused,
......@@ -107962,17 +110135,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107962110135 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107963110136 .each = .{ .once = &.{
107964110137 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107965 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
110138 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107966110139 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107967 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
107968 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
107969 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110140 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110141 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
107970110142 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107971110143 } },
107972110144 }, .{
107973110145 .required_features = .{ .sse, null, null, null },
107974 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
107975 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110146 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110147 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
107976110148 .patterns = &.{
107977110149 .{ .src = .{ .to_mem, .none, .none } },
107978110150 },
......@@ -107980,9 +110152,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107980110152 .extra_temps = .{
107981110153 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107982110154 .{ .type = .i32, .kind = .{ .reg = .edi } },
107983 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
107984 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107985 .{ .type = .f32, .kind = .mem },
110155 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
110156 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
110157 .unused,
107986110158 .unused,
107987110159 .unused,
107988110160 .unused,
......@@ -107994,18 +110166,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107994110166 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107995110167 .each = .{ .once = &.{
107996110168 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107997 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
110169 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
107998110170 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107999 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
108000 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
108001 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108002 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108003 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110171 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110172 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
110173 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
108004110174 } },
108005110175 }, .{
108006 .required_features = .{ .avx, null, null, null },
108007 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
108008 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110176 .required_features = .{ .avx, .slow_incdec, null, null },
110177 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110178 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108009110179 .patterns = &.{
108010110180 .{ .src = .{ .to_mem, .none, .none } },
108011110181 },
......@@ -108013,8 +110183,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108013110183 .extra_temps = .{
108014110184 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108015110185 .{ .type = .u32, .kind = .{ .reg = .edi } },
108016 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108017 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110186 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
110187 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
108018110188 .unused,
108019110189 .unused,
108020110190 .unused,
......@@ -108027,16 +110197,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108027110197 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108028110198 .each = .{ .once = &.{
108029110199 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108030 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
110200 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
108031110201 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108032 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108033 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110202 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110203 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
108034110204 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108035110205 } },
108036110206 }, .{
108037 .required_features = .{ .sse4_1, null, null, null },
108038 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
108039 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110207 .required_features = .{ .avx, null, null, null },
110208 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110209 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108040110210 .patterns = &.{
108041110211 .{ .src = .{ .to_mem, .none, .none } },
108042110212 },
......@@ -108044,8 +110214,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108044110214 .extra_temps = .{
108045110215 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108046110216 .{ .type = .u32, .kind = .{ .reg = .edi } },
108047 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108048 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110217 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
110218 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
108049110219 .unused,
108050110220 .unused,
108051110221 .unused,
......@@ -108058,16 +110228,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108058110228 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108059110229 .each = .{ .once = &.{
108060110230 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108061 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
110231 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
108062110232 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108063 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108064 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108065 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110233 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110234 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
110235 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
108066110236 } },
108067110237 }, .{
108068 .required_features = .{ .sse2, null, null, null },
108069 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
108070 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110238 .required_features = .{ .sse, .slow_incdec, null, null },
110239 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110240 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108071110241 .patterns = &.{
108072110242 .{ .src = .{ .to_mem, .none, .none } },
108073110243 },
......@@ -108075,8 +110245,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108075110245 .extra_temps = .{
108076110246 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108077110247 .{ .type = .u32, .kind = .{ .reg = .edi } },
108078 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108079 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110248 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
110249 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
108080110250 .unused,
108081110251 .unused,
108082110252 .unused,
......@@ -108089,17 +110259,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108089110259 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108090110260 .each = .{ .once = &.{
108091110261 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108092 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
110262 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
108093110263 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108094 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
108095 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108096 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110264 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110265 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
108097110266 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108098110267 } },
108099110268 }, .{
108100110269 .required_features = .{ .sse, null, null, null },
108101 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
108102 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110270 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110271 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108103110272 .patterns = &.{
108104110273 .{ .src = .{ .to_mem, .none, .none } },
108105110274 },
......@@ -108107,9 +110276,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108107110276 .extra_temps = .{
108108110277 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108109110278 .{ .type = .u32, .kind = .{ .reg = .edi } },
108110 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108111 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108112 .{ .type = .f32, .kind = .mem },
110279 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
110280 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
110281 .unused,
108113110282 .unused,
108114110283 .unused,
108115110284 .unused,
......@@ -108121,44 +110290,94 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108121110290 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108122110291 .each = .{ .once = &.{
108123110292 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108124 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
110293 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
108125110294 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108126 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
108127 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
108128 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108129 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108130 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110295 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110296 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
110297 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
108131110298 } },
108132110299 }, .{
108133 .required_features = .{ .f16c, null, null, null },
108134 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
108135 .dst_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },
110300 .required_features = .{ .avx, null, null, null },
110301 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
110302 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
108136110303 .patterns = &.{
108137110304 .{ .src = .{ .mem, .none, .none } },
108138110305 .{ .src = .{ .to_sse, .none, .none } },
108139110306 },
108140110307 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
108141110308 .each = .{ .once = &.{
108142 .{ ._, .v_ps, .cvtdq2, .dst0x, .src0x, ._, ._ },
108143 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
110309 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },
110310 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
108144110311 } },
108145110312 }, .{
108146 .required_features = .{ .f16c, .avx2, null, null },
108147 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },
108148 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },
110313 .required_features = .{ .sse4_1, null, null, null },
110314 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
110315 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
108149110316 .patterns = &.{
108150110317 .{ .src = .{ .mem, .none, .none } },
108151110318 .{ .src = .{ .to_sse, .none, .none } },
108152110319 },
108153110320 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
108154110321 .each = .{ .once = &.{
108155 .{ ._, .v_ps, .cvtdq2, .dst0y, .src0y, ._, ._ },
108156 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
110322 .{ ._, .p_d, .movsxw, .dst0x, .src0q, ._, ._ },
110323 .{ ._, ._ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
108157110324 } },
108158110325 }, .{
108159 .required_features = .{ .f16c, .avx2, null, null },
108160 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },
108161 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },
110326 .required_features = .{ .avx2, null, null, null },
110327 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
110328 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any },
110329 .patterns = &.{
110330 .{ .src = .{ .mem, .none, .none } },
110331 .{ .src = .{ .to_sse, .none, .none } },
110332 },
110333 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
110334 .each = .{ .once = &.{
110335 .{ ._, .vp_d, .movsxw, .dst0y, .src0x, ._, ._ },
110336 .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ },
110337 } },
110338 }, .{
110339 .required_features = .{ .avx, null, null, null },
110340 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },
110341 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
110342 .patterns = &.{
110343 .{ .src = .{ .mem, .none, .none } },
110344 .{ .src = .{ .to_sse, .none, .none } },
110345 },
110346 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
110347 .each = .{ .once = &.{
110348 .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ },
110349 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
110350 } },
110351 }, .{
110352 .required_features = .{ .sse4_1, null, null, null },
110353 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },
110354 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
110355 .patterns = &.{
110356 .{ .src = .{ .mem, .none, .none } },
110357 .{ .src = .{ .to_sse, .none, .none } },
110358 },
110359 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
110360 .each = .{ .once = &.{
110361 .{ ._, .p_d, .movzxw, .dst0x, .src0q, ._, ._ },
110362 .{ ._, ._ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
110363 } },
110364 }, .{
110365 .required_features = .{ .avx2, null, null, null },
110366 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
110367 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any },
110368 .patterns = &.{
110369 .{ .src = .{ .mem, .none, .none } },
110370 .{ .src = .{ .to_sse, .none, .none } },
110371 },
110372 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
110373 .each = .{ .once = &.{
110374 .{ ._, .vp_d, .movzxw, .dst0y, .src0x, ._, ._ },
110375 .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ },
110376 } },
110377 }, .{
110378 .required_features = .{ .avx2, null, null, null },
110379 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
110380 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },
108162110381 .patterns = &.{
108163110382 .{ .src = .{ .to_mem, .none, .none } },
108164110383 },
......@@ -108178,16 +110397,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108178110397 .dst_temps = .{ .mem, .unused },
108179110398 .clobbers = .{ .eflags = true },
108180110399 .each = .{ .once = &.{
108181 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108182 .{ .@"0:", .v_ps, .cvtdq2, .tmp1y, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
108183 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
110400 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110401 .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
110402 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
110403 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
108184110404 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
108185110405 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108186110406 } },
108187110407 }, .{
108188 .required_features = .{ .f16c, null, null, null },
108189 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
108190 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any },
110408 .required_features = .{ .avx, null, null, null },
110409 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
110410 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
108191110411 .patterns = &.{
108192110412 .{ .src = .{ .to_mem, .none, .none } },
108193110413 },
......@@ -108207,25 +110427,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108207110427 .dst_temps = .{ .mem, .unused },
108208110428 .clobbers = .{ .eflags = true },
108209110429 .each = .{ .once = &.{
108210 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108211 .{ .@"0:", .v_ps, .cvtdq2, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
108212 .{ ._, .v_, .cvtps2ph, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },
110430 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110431 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
110432 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
110433 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
108213110434 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
108214110435 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108215110436 } },
108216110437 }, .{
108217 .required_features = .{ .avx, null, null, null },
108218 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
108219 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110438 .required_features = .{ .sse4_1, null, null, null },
110439 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
110440 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
108220110441 .patterns = &.{
108221110442 .{ .src = .{ .to_mem, .none, .none } },
108222110443 },
108223 .call_frame = .{ .alignment = .@"16" },
108224110444 .extra_temps = .{
108225110445 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108226 .{ .type = .i32, .kind = .{ .reg = .edi } },
108227 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
108228 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110446 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
110447 .unused,
110448 .unused,
108229110449 .unused,
108230110450 .unused,
108231110451 .unused,
......@@ -108235,28 +110455,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108235110455 .unused,
108236110456 },
108237110457 .dst_temps = .{ .mem, .unused },
108238 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110458 .clobbers = .{ .eflags = true },
108239110459 .each = .{ .once = &.{
108240 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108241 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
108242 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108243 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108244 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110460 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110461 .{ .@"0:", .p_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
110462 .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
110463 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
110464 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
108245110465 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108246110466 } },
108247110467 }, .{
108248 .required_features = .{ .sse4_1, null, null, null },
108249 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
108250 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110468 .required_features = .{ .avx2, null, null, null },
110469 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
110470 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },
108251110471 .patterns = &.{
108252110472 .{ .src = .{ .to_mem, .none, .none } },
108253110473 },
108254 .call_frame = .{ .alignment = .@"16" },
108255110474 .extra_temps = .{
108256110475 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108257 .{ .type = .i32, .kind = .{ .reg = .edi } },
108258 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
108259 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110476 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
110477 .unused,
110478 .unused,
108260110479 .unused,
108261110480 .unused,
108262110481 .unused,
......@@ -108266,28 +110485,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108266110485 .unused,
108267110486 },
108268110487 .dst_temps = .{ .mem, .unused },
108269 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110488 .clobbers = .{ .eflags = true },
108270110489 .each = .{ .once = &.{
108271 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108272 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
108273 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108274 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108275 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110490 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110491 .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
110492 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
110493 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
110494 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
108276110495 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108277110496 } },
108278110497 }, .{
108279 .required_features = .{ .sse2, null, null, null },
108280 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
108281 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110498 .required_features = .{ .avx, null, null, null },
110499 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },
110500 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
108282110501 .patterns = &.{
108283110502 .{ .src = .{ .to_mem, .none, .none } },
108284110503 },
108285 .call_frame = .{ .alignment = .@"16" },
108286110504 .extra_temps = .{
108287110505 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108288 .{ .type = .i32, .kind = .{ .reg = .edi } },
108289 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
108290 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110506 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
110507 .unused,
110508 .unused,
108291110509 .unused,
108292110510 .unused,
108293110511 .unused,
......@@ -108297,30 +110515,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108297110515 .unused,
108298110516 },
108299110517 .dst_temps = .{ .mem, .unused },
108300 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110518 .clobbers = .{ .eflags = true },
108301110519 .each = .{ .once = &.{
108302 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108303 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
108304 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108305 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
108306 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108307 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110520 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110521 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
110522 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
110523 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
110524 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
108308110525 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108309110526 } },
108310110527 }, .{
108311 .required_features = .{ .sse, null, null, null },
108312 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
108313 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110528 .required_features = .{ .sse4_1, null, null, null },
110529 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },
110530 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
108314110531 .patterns = &.{
108315110532 .{ .src = .{ .to_mem, .none, .none } },
108316110533 },
108317 .call_frame = .{ .alignment = .@"16" },
108318110534 .extra_temps = .{
108319110535 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108320 .{ .type = .i32, .kind = .{ .reg = .edi } },
108321 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
108322 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108323 .{ .type = .f32, .kind = .mem },
110536 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
110537 .unused,
110538 .unused,
110539 .unused,
108324110540 .unused,
108325110541 .unused,
108326110542 .unused,
......@@ -108329,30 +110545,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108329110545 .unused,
108330110546 },
108331110547 .dst_temps = .{ .mem, .unused },
108332 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110548 .clobbers = .{ .eflags = true },
108333110549 .each = .{ .once = &.{
108334 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108335 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
108336 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108337 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
108338 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
108339 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108340 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110550 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110551 .{ .@"0:", .p_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
110552 .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
110553 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
110554 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
108341110555 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108342110556 } },
108343110557 }, .{
108344110558 .required_features = .{ .avx, null, null, null },
108345 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
108346 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110559 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
110560 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108347110561 .patterns = &.{
108348110562 .{ .src = .{ .to_mem, .none, .none } },
108349110563 },
108350110564 .call_frame = .{ .alignment = .@"16" },
108351110565 .extra_temps = .{
108352110566 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108353 .{ .type = .u32, .kind = .{ .reg = .edi } },
108354 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108355 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110567 .{ .type = .i32, .kind = .{ .reg = .edi } },
110568 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
110569 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
108356110570 .unused,
108357110571 .unused,
108358110572 .unused,
......@@ -108364,26 +110578,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108364110578 .dst_temps = .{ .mem, .unused },
108365110579 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108366110580 .each = .{ .once = &.{
108367 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108368 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
110581 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110582 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
108369110583 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108370 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
110584 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
108371110585 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108372110586 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108373110587 } },
108374110588 }, .{
108375 .required_features = .{ .sse4_1, null, null, null },
108376 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
108377 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110589 .required_features = .{ .sse, null, null, null },
110590 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
110591 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108378110592 .patterns = &.{
108379110593 .{ .src = .{ .to_mem, .none, .none } },
108380110594 },
108381110595 .call_frame = .{ .alignment = .@"16" },
108382110596 .extra_temps = .{
108383110597 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108384 .{ .type = .u32, .kind = .{ .reg = .edi } },
108385 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108386 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110598 .{ .type = .i32, .kind = .{ .reg = .edi } },
110599 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
110600 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
108387110601 .unused,
108388110602 .unused,
108389110603 .unused,
......@@ -108395,17 +110609,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108395110609 .dst_temps = .{ .mem, .unused },
108396110610 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108397110611 .each = .{ .once = &.{
108398 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108399 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
110612 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110613 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
108400110614 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108401 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
110615 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
108402110616 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108403110617 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108404110618 } },
108405110619 }, .{
108406 .required_features = .{ .sse2, null, null, null },
108407 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
108408 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110620 .required_features = .{ .avx, null, null, null },
110621 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
110622 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108409110623 .patterns = &.{
108410110624 .{ .src = .{ .to_mem, .none, .none } },
108411110625 },
......@@ -108413,8 +110627,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108413110627 .extra_temps = .{
108414110628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108415110629 .{ .type = .u32, .kind = .{ .reg = .edi } },
108416 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108417 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110630 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
110631 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
108418110632 .unused,
108419110633 .unused,
108420110634 .unused,
......@@ -108426,18 +110640,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108426110640 .dst_temps = .{ .mem, .unused },
108427110641 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108428110642 .each = .{ .once = &.{
108429 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108430 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
110643 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110644 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
108431110645 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108432 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
108433 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
110646 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
108434110647 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108435110648 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108436110649 } },
108437110650 }, .{
108438110651 .required_features = .{ .sse, null, null, null },
108439 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
108440 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110652 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
110653 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108441110654 .patterns = &.{
108442110655 .{ .src = .{ .to_mem, .none, .none } },
108443110656 },
......@@ -108445,9 +110658,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108445110658 .extra_temps = .{
108446110659 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108447110660 .{ .type = .u32, .kind = .{ .reg = .edi } },
108448 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108449 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108450 .{ .type = .f32, .kind = .mem },
110661 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
110662 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
110663 .unused,
108451110664 .unused,
108452110665 .unused,
108453110666 .unused,
......@@ -108458,121 +110671,61 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108458110671 .dst_temps = .{ .mem, .unused },
108459110672 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108460110673 .each = .{ .once = &.{
108461 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108462 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
110674 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110675 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
108463110676 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108464 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
108465 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
108466 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
110677 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
108467110678 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108468110679 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108469110680 } },
108470110681 }, .{
108471 .required_features = .{ .@"64bit", .f16c, null, null },
108472 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
108473 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110682 .required_features = .{ .avx, null, null, null },
110683 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
110684 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
108474110685 .patterns = &.{
108475 .{ .src = .{ .to_mem, .none, .none } },
108476 },
108477 .extra_temps = .{
108478 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108479 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
108480 .unused,
108481 .unused,
108482 .unused,
108483 .unused,
108484 .unused,
108485 .unused,
108486 .unused,
108487 .unused,
108488 .unused,
110686 .{ .src = .{ .mem, .none, .none } },
110687 .{ .src = .{ .to_sse, .none, .none } },
108489110688 },
108490 .dst_temps = .{ .mem, .unused },
108491 .clobbers = .{ .eflags = true },
110689 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
108492110690 .each = .{ .once = &.{
108493 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108494 .{ .@"0:", .v_ps, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
108495 .{ ._, .v_ss, .cvtsi2, .tmp1x, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._ },
108496 .{ ._, .v_, .cvtps2ph, .tmp1q, .tmp1x, .rm(.{}), ._ },
108497 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
108498 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108499 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110691 .{ ._, .v_ps, .cvtdq2, .dst0x, .src0x, ._, ._ },
108500110692 } },
108501110693 }, .{
108502 .required_features = .{ .@"64bit", .avx, null, null },
108503 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
108504 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110694 .required_features = .{ .sse2, null, null, null },
110695 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
110696 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
108505110697 .patterns = &.{
108506 .{ .src = .{ .to_mem, .none, .none } },
108507 },
108508 .call_frame = .{ .alignment = .@"16" },
108509 .extra_temps = .{
108510 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108511 .{ .type = .i64, .kind = .{ .reg = .rdi } },
108512 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
108513 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108514 .unused,
108515 .unused,
108516 .unused,
108517 .unused,
108518 .unused,
108519 .unused,
108520 .unused,
110698 .{ .src = .{ .mem, .none, .none } },
110699 .{ .src = .{ .to_sse, .none, .none } },
108521110700 },
108522 .dst_temps = .{ .mem, .unused },
108523 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110701 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
108524110702 .each = .{ .once = &.{
108525 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108526 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
108527 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108528 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108529 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108530 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110703 .{ ._, ._ps, .cvtdq2, .dst0x, .src0x, ._, ._ },
108531110704 } },
108532110705 }, .{
108533 .required_features = .{ .@"64bit", .sse4_1, null, null },
108534 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
108535 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110706 .required_features = .{ .avx2, null, null, null },
110707 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },
110708 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any },
108536110709 .patterns = &.{
108537 .{ .src = .{ .to_mem, .none, .none } },
108538 },
108539 .call_frame = .{ .alignment = .@"16" },
108540 .extra_temps = .{
108541 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108542 .{ .type = .i64, .kind = .{ .reg = .rdi } },
108543 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
108544 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108545 .unused,
108546 .unused,
108547 .unused,
108548 .unused,
108549 .unused,
108550 .unused,
108551 .unused,
110710 .{ .src = .{ .mem, .none, .none } },
110711 .{ .src = .{ .to_sse, .none, .none } },
108552110712 },
108553 .dst_temps = .{ .mem, .unused },
108554 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110713 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
108555110714 .each = .{ .once = &.{
108556 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108557 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
108558 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108559 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108560 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108561 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110715 .{ ._, .v_ps, .cvtdq2, .dst0y, .src0y, ._, ._ },
108562110716 } },
108563110717 }, .{
108564 .required_features = .{ .@"64bit", .sse2, null, null },
108565 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
108566 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110718 .required_features = .{ .avx2, null, null, null },
110719 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },
110720 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },
108567110721 .patterns = &.{
108568110722 .{ .src = .{ .to_mem, .none, .none } },
108569110723 },
108570 .call_frame = .{ .alignment = .@"16" },
108571110724 .extra_temps = .{
108572 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108573 .{ .type = .i64, .kind = .{ .reg = .rdi } },
108574 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
108575 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110725 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110726 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
110727 .unused,
110728 .unused,
108576110729 .unused,
108577110730 .unused,
108578110731 .unused,
......@@ -108582,30 +110735,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108582110735 .unused,
108583110736 },
108584110737 .dst_temps = .{ .mem, .unused },
108585 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110738 .clobbers = .{ .eflags = true },
108586110739 .each = .{ .once = &.{
108587 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108588 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
108589 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108590 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
108591 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108592 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110740 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110741 .{ .@"0:", .v_ps, .cvtdq2, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
110742 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
110743 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
108593110744 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108594110745 } },
108595110746 }, .{
108596 .required_features = .{ .@"64bit", .sse, null, null },
108597 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
108598 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110747 .required_features = .{ .avx, null, null, null },
110748 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
110749 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
108599110750 .patterns = &.{
108600110751 .{ .src = .{ .to_mem, .none, .none } },
108601110752 },
108602 .call_frame = .{ .alignment = .@"16" },
108603110753 .extra_temps = .{
108604110754 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108605 .{ .type = .i64, .kind = .{ .reg = .rdi } },
108606 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
108607 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108608 .{ .type = .f32, .kind = .mem },
110755 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
110756 .unused,
110757 .unused,
110758 .unused,
108609110759 .unused,
108610110760 .unused,
108611110761 .unused,
......@@ -108614,30 +110764,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108614110764 .unused,
108615110765 },
108616110766 .dst_temps = .{ .mem, .unused },
108617 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110767 .clobbers = .{ .eflags = true },
108618110768 .each = .{ .once = &.{
108619110769 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108620 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
108621 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108622 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
108623 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
108624 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108625 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110770 .{ .@"0:", .v_ps, .cvtdq2, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
110771 .{ ._, .v_ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
110772 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
108626110773 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108627110774 } },
108628110775 }, .{
108629 .required_features = .{ .@"64bit", .avx, null, null },
108630 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
108631 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110776 .required_features = .{ .sse2, null, null, null },
110777 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
110778 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
108632110779 .patterns = &.{
108633110780 .{ .src = .{ .to_mem, .none, .none } },
108634110781 },
108635 .call_frame = .{ .alignment = .@"16" },
108636110782 .extra_temps = .{
108637110783 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108638 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108639 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
108640 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110784 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
110785 .unused,
110786 .unused,
108641110787 .unused,
108642110788 .unused,
108643110789 .unused,
......@@ -108647,28 +110793,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108647110793 .unused,
108648110794 },
108649110795 .dst_temps = .{ .mem, .unused },
108650 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110796 .clobbers = .{ .eflags = true },
108651110797 .each = .{ .once = &.{
108652110798 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108653 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
108654 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108655 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108656 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110799 .{ .@"0:", ._ps, .cvtdq2, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
110800 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
110801 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
108657110802 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108658110803 } },
108659110804 }, .{
108660 .required_features = .{ .@"64bit", .sse4_1, null, null },
108661 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
108662 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110805 .required_features = .{ .sse, null, null, null },
110806 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
110807 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108663110808 .patterns = &.{
108664110809 .{ .src = .{ .to_mem, .none, .none } },
108665110810 },
108666 .call_frame = .{ .alignment = .@"16" },
108667110811 .extra_temps = .{
108668110812 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108669 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108670 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
108671 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110813 .{ .type = .f32, .kind = .{ .rc = .sse } },
110814 .unused,
110815 .unused,
108672110816 .unused,
108673110817 .unused,
108674110818 .unused,
......@@ -108678,28 +110822,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108678110822 .unused,
108679110823 },
108680110824 .dst_temps = .{ .mem, .unused },
108681 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110825 .clobbers = .{ .eflags = true },
108682110826 .each = .{ .once = &.{
108683110827 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108684 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
108685 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108686 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108687 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110828 .{ .@"0:", ._ss, .cvtsi2, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
110829 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
110830 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
108688110831 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108689110832 } },
108690110833 }, .{
108691 .required_features = .{ .@"64bit", .sse2, null, null },
108692 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
108693 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110834 .required_features = .{ .avx, null, null, null },
110835 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
110836 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108694110837 .patterns = &.{
108695110838 .{ .src = .{ .to_mem, .none, .none } },
108696110839 },
108697110840 .call_frame = .{ .alignment = .@"16" },
108698110841 .extra_temps = .{
108699110842 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108700 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108701 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
108702 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110843 .{ .type = .i32, .kind = .{ .reg = .edi } },
110844 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
110845 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
108703110846 .unused,
108704110847 .unused,
108705110848 .unused,
......@@ -108712,27 +110855,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108712110855 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108713110856 .each = .{ .once = &.{
108714110857 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108715 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
110858 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
108716110859 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108717 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
108718 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108719 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110860 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110861 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
108720110862 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108721110863 } },
108722110864 }, .{
108723 .required_features = .{ .@"64bit", .sse, null, null },
108724 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
108725 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110865 .required_features = .{ .sse, null, null, null },
110866 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
110867 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108726110868 .patterns = &.{
108727110869 .{ .src = .{ .to_mem, .none, .none } },
108728110870 },
108729110871 .call_frame = .{ .alignment = .@"16" },
108730110872 .extra_temps = .{
108731110873 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108732 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108733 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
108734 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108735 .{ .type = .f32, .kind = .mem },
110874 .{ .type = .i32, .kind = .{ .reg = .edi } },
110875 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
110876 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
110877 .unused,
108736110878 .unused,
108737110879 .unused,
108738110880 .unused,
......@@ -108744,28 +110886,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108744110886 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108745110887 .each = .{ .once = &.{
108746110888 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108747 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
110889 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
108748110890 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108749 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
108750 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
108751 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108752 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110891 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110892 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
108753110893 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108754110894 } },
108755110895 }, .{
108756 .required_features = .{ .@"64bit", .avx, null, null },
108757 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
108758 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110896 .required_features = .{ .avx, null, null, null },
110897 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
110898 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108759110899 .patterns = &.{
108760110900 .{ .src = .{ .to_mem, .none, .none } },
108761110901 },
108762110902 .call_frame = .{ .alignment = .@"16" },
108763110903 .extra_temps = .{
108764110904 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108765 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108766 .{ .type = .i64, .kind = .{ .reg = .rsi } },
108767 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },
108768 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110905 .{ .type = .u32, .kind = .{ .reg = .edi } },
110906 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
110907 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
110908 .unused,
108769110909 .unused,
108770110910 .unused,
108771110911 .unused,
......@@ -108777,27 +110917,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108777110917 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108778110918 .each = .{ .once = &.{
108779110919 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108780 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
108781 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },
108782 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
108783 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4x, .ui(0), ._ },
108784 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110920 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
110921 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110922 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110923 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
108785110924 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108786110925 } },
108787110926 }, .{
108788 .required_features = .{ .@"64bit", .sse4_1, null, null },
108789 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
108790 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110927 .required_features = .{ .sse, null, null, null },
110928 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
110929 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108791110930 .patterns = &.{
108792110931 .{ .src = .{ .to_mem, .none, .none } },
108793110932 },
108794110933 .call_frame = .{ .alignment = .@"16" },
108795110934 .extra_temps = .{
108796110935 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108797 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108798 .{ .type = .i64, .kind = .{ .reg = .rsi } },
108799 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },
108800 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110936 .{ .type = .u32, .kind = .{ .reg = .edi } },
110937 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
110938 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
110939 .unused,
108801110940 .unused,
108802110941 .unused,
108803110942 .unused,
......@@ -108809,27 +110948,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108809110948 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108810110949 .each = .{ .once = &.{
108811110950 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108812 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
108813 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },
108814 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
108815 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4x, .ui(0), ._ },
108816 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110951 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
110952 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110953 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110954 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
108817110955 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108818110956 } },
108819110957 }, .{
108820 .required_features = .{ .@"64bit", .sse2, null, null },
108821 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
108822 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110958 .required_features = .{ .@"64bit", .avx, null, null },
110959 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
110960 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108823110961 .patterns = &.{
108824110962 .{ .src = .{ .to_mem, .none, .none } },
108825110963 },
108826 .call_frame = .{ .alignment = .@"16" },
108827110964 .extra_temps = .{
108828110965 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108829 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108830 .{ .type = .i64, .kind = .{ .reg = .rsi } },
108831 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },
108832 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110966 .{ .type = .f32, .kind = .{ .rc = .sse } },
110967 .unused,
110968 .unused,
110969 .unused,
108833110970 .unused,
108834110971 .unused,
108835110972 .unused,
......@@ -108838,32 +110975,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108838110975 .unused,
108839110976 },
108840110977 .dst_temps = .{ .mem, .unused },
108841 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110978 .clobbers = .{ .eflags = true },
108842110979 .each = .{ .once = &.{
108843110980 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108844 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
108845 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },
108846 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
108847 .{ ._, .p_w, .extr, .tmp1d, .tmp4x, .ui(0), ._ },
108848 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108849 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110981 .{ .@"0:", .v_ps, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
110982 .{ ._, .v_ss, .cvtsi2, .tmp1x, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._ },
110983 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
110984 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
108850110985 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108851110986 } },
108852110987 }, .{
108853110988 .required_features = .{ .@"64bit", .sse, null, null },
108854 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
108855 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110989 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
110990 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108856110991 .patterns = &.{
108857110992 .{ .src = .{ .to_mem, .none, .none } },
108858110993 },
108859 .call_frame = .{ .alignment = .@"16" },
108860110994 .extra_temps = .{
108861110995 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108862 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108863 .{ .type = .i64, .kind = .{ .reg = .rsi } },
108864 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },
108865 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108866 .{ .type = .f32, .kind = .mem },
110996 .{ .type = .f32, .kind = .{ .rc = .sse } },
110997 .unused,
110998 .unused,
110999 .unused,
111000 .unused,
108867111001 .unused,
108868111002 .unused,
108869111003 .unused,
......@@ -108871,32 +111005,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108871111005 .unused,
108872111006 },
108873111007 .dst_temps = .{ .mem, .unused },
108874 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111008 .clobbers = .{ .eflags = true },
108875111009 .each = .{ .once = &.{
108876111010 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108877 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
108878 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },
108879 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
108880 .{ ._, ._ss, .mov, .tmp5d, .tmp4d, ._, ._ },
108881 .{ ._, ._, .mov, .tmp1d, .tmp5d, ._, ._ },
108882 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108883 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
111011 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
111012 .{ ._, ._ss, .cvtsi2, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
111013 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
111014 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
108884111015 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108885111016 } },
108886111017 }, .{
108887111018 .required_features = .{ .@"64bit", .avx, null, null },
108888 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
108889 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
111019 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
111020 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108890111021 .patterns = &.{
108891111022 .{ .src = .{ .to_mem, .none, .none } },
108892111023 },
108893111024 .call_frame = .{ .alignment = .@"16" },
108894111025 .extra_temps = .{
108895111026 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108896 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108897 .{ .type = .u64, .kind = .{ .reg = .rsi } },
108898 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },
108899 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
111027 .{ .type = .i64, .kind = .{ .reg = .rdi } },
111028 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdisf" } } },
111029 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111030 .unused,
108900111031 .unused,
108901111032 .unused,
108902111033 .unused,
......@@ -108908,27 +111039,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108908111039 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108909111040 .each = .{ .once = &.{
108910111041 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108911 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
108912 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },
108913 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
108914 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4x, .ui(0), ._ },
108915 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
111042 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
111043 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111044 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111045 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
108916111046 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108917111047 } },
108918111048 }, .{
108919 .required_features = .{ .@"64bit", .sse4_1, null, null },
108920 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
108921 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
111049 .required_features = .{ .@"64bit", .sse, null, null },
111050 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
111051 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108922111052 .patterns = &.{
108923111053 .{ .src = .{ .to_mem, .none, .none } },
108924111054 },
108925111055 .call_frame = .{ .alignment = .@"16" },
108926111056 .extra_temps = .{
108927111057 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108928 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108929 .{ .type = .u64, .kind = .{ .reg = .rsi } },
108930 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },
108931 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
111058 .{ .type = .i64, .kind = .{ .reg = .rdi } },
111059 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdisf" } } },
111060 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111061 .unused,
108932111062 .unused,
108933111063 .unused,
108934111064 .unused,
......@@ -108940,17 +111070,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108940111070 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108941111071 .each = .{ .once = &.{
108942111072 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108943 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
108944 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },
108945 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
108946 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4x, .ui(0), ._ },
108947 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
111073 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
111074 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111075 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111076 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
108948111077 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108949111078 } },
108950111079 }, .{
108951 .required_features = .{ .@"64bit", .sse2, null, null },
108952 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
108953 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
111080 .required_features = .{ .@"64bit", .avx, null, null },
111081 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
111082 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108954111083 .patterns = &.{
108955111084 .{ .src = .{ .to_mem, .none, .none } },
108956111085 },
......@@ -108958,9 +111087,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108958111087 .extra_temps = .{
108959111088 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108960111089 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108961 .{ .type = .u64, .kind = .{ .reg = .rsi } },
108962 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },
108963 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
111090 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundisf" } } },
111091 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111092 .unused,
108964111093 .unused,
108965111094 .unused,
108966111095 .unused,
......@@ -108972,18 +111101,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108972111101 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108973111102 .each = .{ .once = &.{
108974111103 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108975 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
108976 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },
108977 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
108978 .{ ._, .p_w, .extr, .tmp1d, .tmp4x, .ui(0), ._ },
108979 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108980 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
111104 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
111105 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111106 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111107 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
108981111108 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108982111109 } },
108983111110 }, .{
108984111111 .required_features = .{ .@"64bit", .sse, null, null },
108985 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
108986 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
111112 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
111113 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108987111114 .patterns = &.{
108988111115 .{ .src = .{ .to_mem, .none, .none } },
108989111116 },
......@@ -108991,10 +111118,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108991111118 .extra_temps = .{
108992111119 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108993111120 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108994 .{ .type = .u64, .kind = .{ .reg = .rsi } },
108995 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },
108996 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108997 .{ .type = .f32, .kind = .mem },
111121 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundisf" } } },
111122 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111123 .unused,
111124 .unused,
108998111125 .unused,
108999111126 .unused,
109000111127 .unused,
......@@ -109005,30 +111132,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109005111132 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109006111133 .each = .{ .once = &.{
109007111134 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109008 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
109009 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },
109010 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
109011 .{ ._, ._ss, .mov, .tmp5d, .tmp4d, ._, ._ },
109012 .{ ._, ._, .mov, .tmp1d, .tmp5d, ._, ._ },
109013 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
109014 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
111135 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
111136 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111137 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111138 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
109015111139 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109016111140 } },
109017111141 }, .{
109018111142 .required_features = .{ .@"64bit", .avx, null, null },
109019 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
109020 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
111143 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
111144 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
109021111145 .patterns = &.{
109022111146 .{ .src = .{ .to_mem, .none, .none } },
109023111147 },
109024111148 .call_frame = .{ .alignment = .@"16" },
109025111149 .extra_temps = .{
109026 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
109027111150 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109028 .{ .type = .usize, .kind = .{ .reg = .rdi } },
109029 .{ .type = .usize, .kind = .{ .reg = .rsi } },
109030 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },
109031 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
111151 .{ .type = .u64, .kind = .{ .reg = .rdi } },
111152 .{ .type = .i64, .kind = .{ .reg = .rsi } },
111153 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattisf" } } },
111154 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111155 .unused,
109032111156 .unused,
109033111157 .unused,
109034111158 .unused,
......@@ -109038,31 +111162,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109038111162 .dst_temps = .{ .mem, .unused },
109039111163 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109040111164 .each = .{ .once = &.{
109041 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
109042 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109043 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
109044 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
109045 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
109046 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp5x, .ui(0), ._ },
109047 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
109048 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
111165 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
111166 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
111167 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ },
111168 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
111169 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
111170 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
109049111171 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109050111172 } },
109051111173 }, .{
109052 .required_features = .{ .@"64bit", .sse4_1, null, null },
109053 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
109054 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
111174 .required_features = .{ .@"64bit", .sse, null, null },
111175 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
111176 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
109055111177 .patterns = &.{
109056111178 .{ .src = .{ .to_mem, .none, .none } },
109057111179 },
109058111180 .call_frame = .{ .alignment = .@"16" },
109059111181 .extra_temps = .{
109060 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
109061111182 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109062 .{ .type = .usize, .kind = .{ .reg = .rdi } },
109063 .{ .type = .usize, .kind = .{ .reg = .rsi } },
109064 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },
109065 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
111183 .{ .type = .u64, .kind = .{ .reg = .rdi } },
111184 .{ .type = .i64, .kind = .{ .reg = .rsi } },
111185 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattisf" } } },
111186 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111187 .unused,
109066111188 .unused,
109067111189 .unused,
109068111190 .unused,
......@@ -109072,31 +111194,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109072111194 .dst_temps = .{ .mem, .unused },
109073111195 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109074111196 .each = .{ .once = &.{
109075 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
109076 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109077 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
109078 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
109079 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
109080 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp5x, .ui(0), ._ },
109081 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
109082 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
111197 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
111198 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
111199 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ },
111200 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
111201 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
111202 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
109083111203 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109084111204 } },
109085111205 }, .{
109086 .required_features = .{ .@"64bit", .sse2, null, null },
109087 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
109088 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
111206 .required_features = .{ .@"64bit", .avx, null, null },
111207 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
111208 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
109089111209 .patterns = &.{
109090111210 .{ .src = .{ .to_mem, .none, .none } },
109091111211 },
109092111212 .call_frame = .{ .alignment = .@"16" },
109093111213 .extra_temps = .{
109094 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
109095111214 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109096 .{ .type = .usize, .kind = .{ .reg = .rdi } },
109097 .{ .type = .usize, .kind = .{ .reg = .rsi } },
109098 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },
109099 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
111215 .{ .type = .u64, .kind = .{ .reg = .rdi } },
111216 .{ .type = .u64, .kind = .{ .reg = .rsi } },
111217 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntisf" } } },
111218 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111219 .unused,
109100111220 .unused,
109101111221 .unused,
109102111222 .unused,
......@@ -109106,33 +111226,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109106111226 .dst_temps = .{ .mem, .unused },
109107111227 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109108111228 .each = .{ .once = &.{
109109 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
109110 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109111 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
109112 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
109113 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
109114 .{ ._, .p_w, .extr, .tmp2d, .tmp5x, .ui(0), ._ },
109115 .{ ._, ._, .mov, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp2w, ._, ._ },
109116 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
109117 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
111229 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
111230 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
111231 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ },
111232 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
111233 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
111234 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
109118111235 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109119111236 } },
109120111237 }, .{
109121111238 .required_features = .{ .@"64bit", .sse, null, null },
109122 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
109123 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
111239 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
111240 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
109124111241 .patterns = &.{
109125111242 .{ .src = .{ .to_mem, .none, .none } },
109126111243 },
109127111244 .call_frame = .{ .alignment = .@"16" },
109128111245 .extra_temps = .{
109129 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
109130111246 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109131 .{ .type = .usize, .kind = .{ .reg = .rdi } },
109132 .{ .type = .usize, .kind = .{ .reg = .rsi } },
109133 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },
109134 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109135 .{ .type = .f32, .kind = .mem },
111247 .{ .type = .u64, .kind = .{ .reg = .rdi } },
111248 .{ .type = .u64, .kind = .{ .reg = .rsi } },
111249 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntisf" } } },
111250 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111251 .unused,
111252 .unused,
109136111253 .unused,
109137111254 .unused,
109138111255 .unused,
......@@ -109141,22 +111258,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109141111258 .dst_temps = .{ .mem, .unused },
109142111259 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109143111260 .each = .{ .once = &.{
109144 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
109145 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109146 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
109147 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
109148 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
109149 .{ ._, ._ss, .mov, .tmp6d, .tmp5d, ._, ._ },
109150 .{ ._, ._, .mov, .tmp2d, .tmp6d, ._, ._ },
109151 .{ ._, ._, .mov, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp2w, ._, ._ },
109152 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
109153 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
111261 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
111262 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
111263 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ },
111264 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
111265 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
111266 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
109154111267 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109155111268 } },
109156111269 }, .{
109157111270 .required_features = .{ .@"64bit", .avx, null, null },
109158 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
109159 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
111271 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
111272 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
109160111273 .patterns = &.{
109161111274 .{ .src = .{ .to_mem, .none, .none } },
109162111275 },
......@@ -109166,8 +111279,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109166111279 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109167111280 .{ .type = .usize, .kind = .{ .reg = .rdi } },
109168111281 .{ .type = .usize, .kind = .{ .reg = .rsi } },
109169 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
109170 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
111282 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateisf" } } },
111283 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
109171111284 .unused,
109172111285 .unused,
109173111286 .unused,
......@@ -109182,15 +111295,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109182111295 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
109183111296 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
109184111297 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
109185 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp5x, .ui(0), ._ },
111298 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
109186111299 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
109187 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
111300 .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ },
109188111301 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109189111302 } },
109190111303 }, .{
109191 .required_features = .{ .@"64bit", .sse4_1, null, null },
109192 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
109193 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
111304 .required_features = .{ .@"64bit", .sse, null, null },
111305 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
111306 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
109194111307 .patterns = &.{
109195111308 .{ .src = .{ .to_mem, .none, .none } },
109196111309 },
......@@ -109200,8 +111313,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109200111313 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109201111314 .{ .type = .usize, .kind = .{ .reg = .rdi } },
109202111315 .{ .type = .usize, .kind = .{ .reg = .rsi } },
109203 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
109204 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
111316 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateisf" } } },
111317 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
109205111318 .unused,
109206111319 .unused,
109207111320 .unused,
......@@ -109216,15 +111329,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109216111329 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
109217111330 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
109218111331 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
109219 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp5x, .ui(0), ._ },
111332 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
109220111333 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
109221 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
111334 .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ },
109222111335 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109223111336 } },
109224111337 }, .{
109225 .required_features = .{ .@"64bit", .sse2, null, null },
111338 .required_features = .{ .@"64bit", .avx, null, null },
109226111339 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
109227 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
111340 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
109228111341 .patterns = &.{
109229111342 .{ .src = .{ .to_mem, .none, .none } },
109230111343 },
......@@ -109234,8 +111347,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109234111347 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109235111348 .{ .type = .usize, .kind = .{ .reg = .rdi } },
109236111349 .{ .type = .usize, .kind = .{ .reg = .rsi } },
109237 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
109238 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
111350 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneisf" } } },
111351 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
109239111352 .unused,
109240111353 .unused,
109241111354 .unused,
......@@ -109250,16 +111363,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109250111363 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
109251111364 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
109252111365 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
109253 .{ ._, .p_w, .extr, .tmp2d, .tmp5x, .ui(0), ._ },
109254 .{ ._, ._, .mov, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp2w, ._, ._ },
111366 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
109255111367 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
109256 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
111368 .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ },
109257111369 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109258111370 } },
109259111371 }, .{
109260111372 .required_features = .{ .@"64bit", .sse, null, null },
109261111373 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
109262 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
111374 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
109263111375 .patterns = &.{
109264111376 .{ .src = .{ .to_mem, .none, .none } },
109265111377 },
......@@ -109269,9 +111381,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109269111381 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109270111382 .{ .type = .usize, .kind = .{ .reg = .rdi } },
109271111383 .{ .type = .usize, .kind = .{ .reg = .rsi } },
109272 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
109273 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109274 .{ .type = .f32, .kind = .mem },
111384 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneisf" } } },
111385 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111386 .unused,
109275111387 .unused,
109276111388 .unused,
109277111389 .unused,
......@@ -109285,23 +111397,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109285111397 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
109286111398 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
109287111399 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
109288 .{ ._, ._ss, .mov, .tmp6d, .tmp5d, ._, ._ },
109289 .{ ._, ._, .mov, .tmp2d, .tmp6d, ._, ._ },
109290 .{ ._, ._, .mov, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp2w, ._, ._ },
111400 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
109291111401 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
109292 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
111402 .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ },
109293111403 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109294111404 } },
109295111405 }, .{
109296111406 .required_features = .{ .avx, null, null, null },
109297111407 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
109298 .dst_constraints = .{ .{ .float = .dword }, .any },
111408 .dst_constraints = .{ .{ .float = .qword }, .any },
109299111409 .patterns = &.{
109300111410 .{ .src = .{ .mem, .none, .none } },
109301111411 .{ .src = .{ .to_gpr, .none, .none } },
109302111412 },
109303111413 .extra_temps = .{
109304 .{ .type = .i8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
111414 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
109305111415 .unused,
109306111416 .unused,
109307111417 .unused,
......@@ -109316,19 +111426,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109316111426 .dst_temps = .{ .{ .rc = .sse }, .unused },
109317111427 .each = .{ .once = &.{
109318111428 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
109319 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
109320 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
111429 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
111430 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
109321111431 } },
109322111432 }, .{
109323 .required_features = .{ .sse, null, null, null },
111433 .required_features = .{ .sse2, null, null, null },
109324111434 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
109325 .dst_constraints = .{ .{ .float = .dword }, .any },
111435 .dst_constraints = .{ .{ .float = .qword }, .any },
109326111436 .patterns = &.{
109327111437 .{ .src = .{ .mem, .none, .none } },
109328111438 .{ .src = .{ .to_gpr, .none, .none } },
109329111439 },
109330111440 .extra_temps = .{
109331 .{ .type = .i8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
111441 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
109332111442 .unused,
109333111443 .unused,
109334111444 .unused,
......@@ -109343,19 +111453,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109343111453 .dst_temps = .{ .{ .rc = .sse }, .unused },
109344111454 .each = .{ .once = &.{
109345111455 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
109346 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
109347 .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0d, ._, ._ },
111456 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
111457 .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0d, ._, ._ },
109348111458 } },
109349111459 }, .{
109350111460 .required_features = .{ .avx, null, null, null },
109351111461 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
109352 .dst_constraints = .{ .{ .float = .dword }, .any },
111462 .dst_constraints = .{ .{ .float = .qword }, .any },
109353111463 .patterns = &.{
109354111464 .{ .src = .{ .mem, .none, .none } },
109355111465 .{ .src = .{ .to_gpr, .none, .none } },
109356111466 },
109357111467 .extra_temps = .{
109358 .{ .type = .u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
111468 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
109359111469 .unused,
109360111470 .unused,
109361111471 .unused,
......@@ -109370,19 +111480,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109370111480 .dst_temps = .{ .{ .rc = .sse }, .unused },
109371111481 .each = .{ .once = &.{
109372111482 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
109373 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
109374 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
111483 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
111484 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
109375111485 } },
109376111486 }, .{
109377 .required_features = .{ .sse, null, null, null },
111487 .required_features = .{ .sse2, null, null, null },
109378111488 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
109379 .dst_constraints = .{ .{ .float = .dword }, .any },
111489 .dst_constraints = .{ .{ .float = .qword }, .any },
109380111490 .patterns = &.{
109381111491 .{ .src = .{ .mem, .none, .none } },
109382111492 .{ .src = .{ .to_gpr, .none, .none } },
109383111493 },
109384111494 .extra_temps = .{
109385 .{ .type = .u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
111495 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
109386111496 .unused,
109387111497 .unused,
109388111498 .unused,
......@@ -109397,13 +111507,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109397111507 .dst_temps = .{ .{ .rc = .sse }, .unused },
109398111508 .each = .{ .once = &.{
109399111509 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
109400 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
109401 .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0d, ._, ._ },
111510 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
111511 .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0d, ._, ._ },
109402111512 } },
109403111513 }, .{
109404111514 .required_features = .{ .avx, null, null, null },
109405111515 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
109406 .dst_constraints = .{ .{ .float = .dword }, .any },
111516 .dst_constraints = .{ .{ .float = .qword }, .any },
109407111517 .patterns = &.{
109408111518 .{ .src = .{ .mem, .none, .none } },
109409111519 .{ .src = .{ .to_gpr, .none, .none } },
......@@ -109424,13 +111534,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109424111534 .dst_temps = .{ .{ .rc = .sse }, .unused },
109425111535 .each = .{ .once = &.{
109426111536 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
109427 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
109428 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
111537 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
111538 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
109429111539 } },
109430111540 }, .{
109431 .required_features = .{ .sse, null, null, null },
111541 .required_features = .{ .sse2, null, null, null },
109432111542 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
109433 .dst_constraints = .{ .{ .float = .dword }, .any },
111543 .dst_constraints = .{ .{ .float = .qword }, .any },
109434111544 .patterns = &.{
109435111545 .{ .src = .{ .mem, .none, .none } },
109436111546 .{ .src = .{ .to_gpr, .none, .none } },
......@@ -109451,13 +111561,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109451111561 .dst_temps = .{ .{ .rc = .sse }, .unused },
109452111562 .each = .{ .once = &.{
109453111563 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
109454 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
109455 .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0d, ._, ._ },
111564 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
111565 .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0d, ._, ._ },
109456111566 } },
109457111567 }, .{
109458111568 .required_features = .{ .avx, null, null, null },
109459111569 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
109460 .dst_constraints = .{ .{ .float = .dword }, .any },
111570 .dst_constraints = .{ .{ .float = .qword }, .any },
109461111571 .patterns = &.{
109462111572 .{ .src = .{ .mem, .none, .none } },
109463111573 .{ .src = .{ .to_gpr, .none, .none } },
......@@ -109478,13 +111588,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109478111588 .dst_temps = .{ .{ .rc = .sse }, .unused },
109479111589 .each = .{ .once = &.{
109480111590 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
109481 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
109482 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
111591 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
111592 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
109483111593 } },
109484111594 }, .{
109485 .required_features = .{ .sse, null, null, null },
111595 .required_features = .{ .sse2, null, null, null },
109486111596 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
109487 .dst_constraints = .{ .{ .float = .dword }, .any },
111597 .dst_constraints = .{ .{ .float = .qword }, .any },
109488111598 .patterns = &.{
109489111599 .{ .src = .{ .mem, .none, .none } },
109490111600 .{ .src = .{ .to_gpr, .none, .none } },
......@@ -109505,39 +111615,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109505111615 .dst_temps = .{ .{ .rc = .sse }, .unused },
109506111616 .each = .{ .once = &.{
109507111617 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
109508 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
109509 .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0d, ._, ._ },
111618 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
111619 .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0d, ._, ._ },
109510111620 } },
109511111621 }, .{
109512111622 .required_features = .{ .avx, null, null, null },
109513111623 .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any },
109514 .dst_constraints = .{ .{ .float = .dword }, .any },
111624 .dst_constraints = .{ .{ .float = .qword }, .any },
109515111625 .patterns = &.{
109516111626 .{ .src = .{ .mem, .none, .none } },
109517111627 .{ .src = .{ .to_gpr, .none, .none } },
109518111628 },
109519111629 .dst_temps = .{ .{ .rc = .sse }, .unused },
109520111630 .each = .{ .once = &.{
109521 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
109522 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0d, ._ },
111631 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
111632 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .src0d, ._ },
109523111633 } },
109524111634 }, .{
109525 .required_features = .{ .sse, null, null, null },
111635 .required_features = .{ .sse2, null, null, null },
109526111636 .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any },
109527 .dst_constraints = .{ .{ .float = .dword }, .any },
111637 .dst_constraints = .{ .{ .float = .qword }, .any },
109528111638 .patterns = &.{
109529111639 .{ .src = .{ .mem, .none, .none } },
109530111640 .{ .src = .{ .to_gpr, .none, .none } },
109531111641 },
109532111642 .dst_temps = .{ .{ .rc = .sse }, .unused },
109533111643 .each = .{ .once = &.{
109534 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
109535 .{ ._, ._ss, .cvtsi2, .dst0x, .src0d, ._, ._ },
111644 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
111645 .{ ._, ._sd, .cvtsi2, .dst0x, .src0d, ._, ._ },
109536111646 } },
109537111647 }, .{
109538111648 .required_features = .{ .avx, null, null, null },
109539111649 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any },
109540 .dst_constraints = .{ .{ .float = .dword }, .any },
111650 .dst_constraints = .{ .{ .float = .qword }, .any },
109541111651 .patterns = &.{
109542111652 .{ .src = .{ .mem, .none, .none } },
109543111653 .{ .src = .{ .to_gpr, .none, .none } },
......@@ -109558,13 +111668,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109558111668 .dst_temps = .{ .{ .rc = .sse }, .unused },
109559111669 .each = .{ .once = &.{
109560111670 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
109561 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
109562 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0q, ._ },
111671 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
111672 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0q, ._ },
109563111673 } },
109564111674 }, .{
109565 .required_features = .{ .sse, null, null, null },
111675 .required_features = .{ .sse2, null, null, null },
109566111676 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any },
109567 .dst_constraints = .{ .{ .float = .dword }, .any },
111677 .dst_constraints = .{ .{ .float = .qword }, .any },
109568111678 .patterns = &.{
109569111679 .{ .src = .{ .mem, .none, .none } },
109570111680 .{ .src = .{ .to_gpr, .none, .none } },
......@@ -109585,117 +111695,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109585111695 .dst_temps = .{ .{ .rc = .sse }, .unused },
109586111696 .each = .{ .once = &.{
109587111697 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
109588 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
109589 .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0q, ._, ._ },
109590 } },
109591 }, .{
109592 .required_features = .{ .@"64bit", .avx, null, null },
109593 .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any },
109594 .dst_constraints = .{ .{ .float = .dword }, .any },
109595 .patterns = &.{
109596 .{ .src = .{ .mem, .none, .none } },
109597 .{ .src = .{ .to_gpr, .none, .none } },
109598 },
109599 .dst_temps = .{ .{ .rc = .sse }, .unused },
109600 .each = .{ .once = &.{
109601 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
109602 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ },
111698 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
111699 .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0q, ._, ._ },
109603111700 } },
109604111701 }, .{
109605 .required_features = .{ .@"64bit", .sse, null, null },
109606 .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any },
109607 .dst_constraints = .{ .{ .float = .dword }, .any },
111702 .required_features = .{ .x87, null, null, null },
111703 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
111704 .dst_constraints = .{ .{ .float = .qword }, .any },
109608111705 .patterns = &.{
109609111706 .{ .src = .{ .mem, .none, .none } },
109610111707 .{ .src = .{ .to_gpr, .none, .none } },
109611111708 },
109612 .dst_temps = .{ .{ .rc = .sse }, .unused },
109613 .each = .{ .once = &.{
109614 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
109615 .{ ._, ._ss, .cvtsi2, .dst0x, .src0q, ._, ._ },
109616 } },
109617 }, .{
109618 .required_features = .{ .@"64bit", .avx, null, null },
109619 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },
109620 .dst_constraints = .{ .{ .float = .dword }, .any },
109621 .patterns = &.{
109622 .{ .src = .{ .to_mut_gpr, .none, .none } },
109623 },
109624 .extra_temps = .{
109625 .{ .type = .u1, .kind = .{ .rc = .general_purpose } },
109626 .unused,
109627 .unused,
109628 .unused,
109629 .unused,
109630 .unused,
109631 .unused,
109632 .unused,
109633 .unused,
109634 .unused,
109635 .unused,
109636 },
109637 .dst_temps = .{ .{ .rc = .sse }, .unused },
109638 .clobbers = .{ .eflags = true },
109639 .each = .{ .once = &.{
109640 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
109641 .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ },
109642 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
109643 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
109644 .{ ._, ._r, .sh, .src0q, .ui(1), ._, ._ },
109645 .{ ._, ._, .@"and", .tmp0d, .si(1), ._, ._ },
109646 .{ ._, ._, .@"or", .src0q, .tmp0q, ._, ._ },
109647 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ },
109648 .{ ._, .v_ss, .add, .dst0x, .dst0x, .dst0d, ._ },
109649 .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
109650 .{ .@"1:", .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ },
109651 } },
109652 }, .{
109653 .required_features = .{ .@"64bit", .sse, null, null },
109654 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },
109655 .dst_constraints = .{ .{ .float = .dword }, .any },
109656 .patterns = &.{
109657 .{ .src = .{ .to_mut_gpr, .none, .none } },
109658 },
109659 .extra_temps = .{
109660 .{ .type = .u1, .kind = .{ .rc = .general_purpose } },
109661 .unused,
109662 .unused,
109663 .unused,
109664 .unused,
109665 .unused,
109666 .unused,
109667 .unused,
109668 .unused,
109669 .unused,
109670 .unused,
109671 },
109672 .dst_temps = .{ .{ .rc = .sse }, .unused },
109673 .clobbers = .{ .eflags = true },
109674 .each = .{ .once = &.{
109675 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
109676 .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ },
109677 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
109678 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
109679 .{ ._, ._r, .sh, .src0q, .ui(1), ._, ._ },
109680 .{ ._, ._, .@"and", .tmp0d, .si(1), ._, ._ },
109681 .{ ._, ._, .@"or", .src0q, .tmp0q, ._, ._ },
109682 .{ ._, ._ss, .cvtsi2, .dst0x, .src0q, ._, ._ },
109683 .{ ._, ._ss, .add, .dst0x, .dst0d, ._, ._ },
109684 .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
109685 .{ .@"1:", ._ss, .cvtsi2, .dst0x, .src0q, ._, ._ },
109686 } },
109687 }, .{
109688 .required_features = .{ .@"64bit", .sse, null, null },
109689 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
109690 .dst_constraints = .{ .{ .float = .dword }, .any },
109691 .patterns = &.{
109692 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
109693 },
109694 .call_frame = .{ .alignment = .@"16" },
109695111709 .extra_temps = .{
109696 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattisf" } } },
109697 .unused,
109698 .unused,
111710 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
111711 .{ .type = .i16, .kind = .mem },
111712 .{ .type = .f64, .kind = .{ .reg = .st7 } },
109699111713 .unused,
109700111714 .unused,
109701111715 .unused,
......@@ -109705,23 +111719,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109705111719 .unused,
109706111720 .unused,
109707111721 },
109708 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
109709 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111722 .dst_temps = .{ .mem, .unused },
109710111723 .each = .{ .once = &.{
109711 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
111724 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
111725 .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ },
111726 .{ ._, .fi_, .ld, .tmp1w, ._, ._, ._ },
111727 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
109712111728 } },
109713111729 }, .{
109714 .required_features = .{ .@"64bit", .sse, null, null },
109715 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
109716 .dst_constraints = .{ .{ .float = .dword }, .any },
111730 .required_features = .{ .x87, null, null, null },
111731 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
111732 .dst_constraints = .{ .{ .float = .qword }, .any },
109717111733 .patterns = &.{
109718 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
111734 .{ .src = .{ .mem, .none, .none } },
111735 .{ .src = .{ .to_gpr, .none, .none } },
109719111736 },
109720 .call_frame = .{ .alignment = .@"16" },
109721111737 .extra_temps = .{
109722 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntisf" } } },
109723 .unused,
109724 .unused,
111738 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
111739 .{ .type = .i16, .kind = .mem },
111740 .{ .type = .f64, .kind = .{ .reg = .st7 } },
109725111741 .unused,
109726111742 .unused,
109727111743 .unused,
......@@ -109731,51 +111747,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109731111747 .unused,
109732111748 .unused,
109733111749 },
109734 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
109735 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111750 .dst_temps = .{ .mem, .unused },
109736111751 .each = .{ .once = &.{
109737 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
111752 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
111753 .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ },
111754 .{ ._, .fi_, .ld, .tmp1w, ._, ._, ._ },
111755 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
109738111756 } },
109739111757 }, .{
109740 .required_features = .{ .@"64bit", .sse, null, null },
109741 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
109742 .dst_constraints = .{ .{ .float = .dword }, .any },
111758 .required_features = .{ .x87, null, null, null },
111759 .src_constraints = .{ .{ .signed_or_exclusive_int = .word }, .any, .any },
111760 .dst_constraints = .{ .{ .float = .qword }, .any },
109743111761 .patterns = &.{
109744111762 .{ .src = .{ .to_mem, .none, .none } },
109745111763 },
109746 .call_frame = .{ .alignment = .@"16" },
109747111764 .extra_temps = .{
109748 .{ .type = .usize, .kind = .{ .reg = .rdi } },
109749 .{ .type = .usize, .kind = .{ .reg = .rsi } },
109750 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateisf" } } },
109751 .unused,
109752 .unused,
109753 .unused,
109754 .unused,
109755 .unused,
109756 .unused,
111765 .{ .type = .f64, .kind = .{ .reg = .st7 } },
109757111766 .unused,
109758111767 .unused,
109759 },
109760 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
109761 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109762 .each = .{ .once = &.{
109763 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
109764 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
109765 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109766 } },
109767 }, .{
109768 .required_features = .{ .@"64bit", .sse, null, null },
109769 .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
109770 .dst_constraints = .{ .{ .float = .dword }, .any },
109771 .patterns = &.{
109772 .{ .src = .{ .to_mem, .none, .none } },
109773 },
109774 .call_frame = .{ .alignment = .@"16" },
109775 .extra_temps = .{
109776 .{ .type = .usize, .kind = .{ .reg = .rdi } },
109777 .{ .type = .usize, .kind = .{ .reg = .rsi } },
109778 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneisf" } } },
109779111768 .unused,
109780111769 .unused,
109781111770 .unused,
......@@ -109785,102 +111774,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109785111774 .unused,
109786111775 .unused,
109787111776 },
109788 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
109789 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109790 .each = .{ .once = &.{
109791 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
109792 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
109793 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109794 } },
109795 }, .{
109796 .required_features = .{ .avx, null, null, null },
109797 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
109798 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
109799 .patterns = &.{
109800 .{ .src = .{ .mem, .none, .none } },
109801 .{ .src = .{ .to_sse, .none, .none } },
109802 },
109803 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
109804 .each = .{ .once = &.{
109805 .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ },
109806 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
109807 } },
109808 }, .{
109809 .required_features = .{ .sse4_1, null, null, null },
109810 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
109811 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
109812 .patterns = &.{
109813 .{ .src = .{ .mem, .none, .none } },
109814 .{ .src = .{ .to_sse, .none, .none } },
109815 },
109816 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
109817 .each = .{ .once = &.{
109818 .{ ._, .p_d, .movsxb, .dst0x, .src0d, ._, ._ },
109819 .{ ._, ._ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
109820 } },
109821 }, .{
109822 .required_features = .{ .avx2, null, null, null },
109823 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
109824 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any },
109825 .patterns = &.{
109826 .{ .src = .{ .mem, .none, .none } },
109827 .{ .src = .{ .to_sse, .none, .none } },
109828 },
109829 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
109830 .each = .{ .once = &.{
109831 .{ ._, .vp_d, .movsxb, .dst0y, .src0q, ._, ._ },
109832 .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ },
109833 } },
109834 }, .{
109835 .required_features = .{ .avx, null, null, null },
109836 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },
109837 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
109838 .patterns = &.{
109839 .{ .src = .{ .mem, .none, .none } },
109840 .{ .src = .{ .to_sse, .none, .none } },
109841 },
109842 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
109843 .each = .{ .once = &.{
109844 .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ },
109845 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
109846 } },
109847 }, .{
109848 .required_features = .{ .sse4_1, null, null, null },
109849 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },
109850 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
109851 .patterns = &.{
109852 .{ .src = .{ .mem, .none, .none } },
109853 .{ .src = .{ .to_sse, .none, .none } },
109854 },
109855 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
111777 .dst_temps = .{ .mem, .unused },
109856111778 .each = .{ .once = &.{
109857 .{ ._, .p_d, .movzxb, .dst0x, .src0d, ._, ._ },
109858 .{ ._, ._ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
111779 .{ ._, .fi_, .ld, .src0w, ._, ._, ._ },
111780 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
109859111781 } },
109860111782 }, .{
109861 .required_features = .{ .avx2, null, null, null },
109862 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, .any, .any },
109863 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any },
111783 .required_features = .{ .x87, null, null, null },
111784 .src_constraints = .{ .{ .exact_unsigned_int = 16 }, .any, .any },
111785 .dst_constraints = .{ .{ .float = .qword }, .any },
109864111786 .patterns = &.{
109865111787 .{ .src = .{ .mem, .none, .none } },
109866 .{ .src = .{ .to_sse, .none, .none } },
109867 },
109868 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
109869 .each = .{ .once = &.{
109870 .{ ._, .vp_d, .movzxb, .dst0y, .src0q, ._, ._ },
109871 .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ },
109872 } },
109873 }, .{
109874 .required_features = .{ .avx2, null, null, null },
109875 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
109876 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },
109877 .patterns = &.{
109878 .{ .src = .{ .to_mem, .none, .none } },
111788 .{ .src = .{ .to_gpr, .none, .none } },
109879111789 },
109880111790 .extra_temps = .{
109881 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109882 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
109883 .unused,
111791 .{ .type = .i32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
111792 .{ .type = .i32, .kind = .mem },
111793 .{ .type = .f64, .kind = .{ .reg = .st7 } },
109884111794 .unused,
109885111795 .unused,
109886111796 .unused,
......@@ -109891,55 +111801,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109891111801 .unused,
109892111802 },
109893111803 .dst_temps = .{ .mem, .unused },
109894 .clobbers = .{ .eflags = true },
109895111804 .each = .{ .once = &.{
109896 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
109897 .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
109898 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
109899 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
109900 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
109901 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111805 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
111806 .{ ._, ._, .mov, .tmp1d, .tmp0d, ._, ._ },
111807 .{ ._, .fi_, .ld, .tmp1d, ._, ._, ._ },
111808 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
109902111809 } },
109903111810 }, .{
109904 .required_features = .{ .avx, null, null, null },
109905 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
109906 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
111811 .required_features = .{ .x87, null, null, null },
111812 .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any },
111813 .dst_constraints = .{ .{ .float = .qword }, .any },
109907111814 .patterns = &.{
109908111815 .{ .src = .{ .to_mem, .none, .none } },
109909111816 },
109910111817 .extra_temps = .{
109911 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109912 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
109913 .unused,
109914 .unused,
109915 .unused,
109916 .unused,
109917 .unused,
109918 .unused,
109919 .unused,
109920 .unused,
111818 .{ .type = .f64, .kind = .{ .reg = .st7 } },
109921111819 .unused,
109922 },
109923 .dst_temps = .{ .mem, .unused },
109924 .clobbers = .{ .eflags = true },
109925 .each = .{ .once = &.{
109926 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
109927 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
109928 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
109929 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
109930 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
109931 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109932 } },
109933 }, .{
109934 .required_features = .{ .sse4_1, null, null, null },
109935 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
109936 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
109937 .patterns = &.{
109938 .{ .src = .{ .to_mem, .none, .none } },
109939 },
109940 .extra_temps = .{
109941 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109942 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
109943111820 .unused,
109944111821 .unused,
109945111822 .unused,
......@@ -109951,26 +111828,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109951111828 .unused,
109952111829 },
109953111830 .dst_temps = .{ .mem, .unused },
109954 .clobbers = .{ .eflags = true },
109955111831 .each = .{ .once = &.{
109956 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
109957 .{ .@"0:", .p_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
109958 .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
109959 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
109960 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
109961 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111832 .{ ._, .fi_, .ld, .src0d, ._, ._, ._ },
111833 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
109962111834 } },
109963111835 }, .{
109964 .required_features = .{ .avx2, null, null, null },
109965 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, .any, .any },
109966 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },
111836 .required_features = .{ .@"64bit", .x87, null, null },
111837 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any },
111838 .dst_constraints = .{ .{ .float = .qword }, .any },
109967111839 .patterns = &.{
109968 .{ .src = .{ .to_mem, .none, .none } },
111840 .{ .src = .{ .mem, .none, .none } },
111841 .{ .src = .{ .to_gpr, .none, .none } },
109969111842 },
109970111843 .extra_temps = .{
109971 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109972 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
109973 .unused,
111844 .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
111845 .{ .type = .i64, .kind = .mem },
111846 .{ .type = .f64, .kind = .{ .reg = .st7 } },
109974111847 .unused,
109975111848 .unused,
109976111849 .unused,
......@@ -109981,88 +111854,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109981111854 .unused,
109982111855 },
109983111856 .dst_temps = .{ .mem, .unused },
109984 .clobbers = .{ .eflags = true },
109985111857 .each = .{ .once = &.{
109986 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
109987 .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
109988 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
109989 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
109990 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
109991 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111858 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
111859 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
111860 .{ ._, .fi_, .ld, .tmp1q, ._, ._, ._ },
111861 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
109992111862 } },
109993111863 }, .{
109994 .required_features = .{ .avx, null, null, null },
109995 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },
109996 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
111864 .required_features = .{ .@"64bit", .avx, null, null },
111865 .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any },
111866 .dst_constraints = .{ .{ .float = .qword }, .any },
109997111867 .patterns = &.{
109998 .{ .src = .{ .to_mem, .none, .none } },
109999 },
110000 .extra_temps = .{
110001 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110002 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
110003 .unused,
110004 .unused,
110005 .unused,
110006 .unused,
110007 .unused,
110008 .unused,
110009 .unused,
110010 .unused,
110011 .unused,
111868 .{ .src = .{ .mem, .none, .none } },
111869 .{ .src = .{ .to_gpr, .none, .none } },
110012111870 },
110013 .dst_temps = .{ .mem, .unused },
110014 .clobbers = .{ .eflags = true },
111871 .dst_temps = .{ .{ .rc = .sse }, .unused },
110015111872 .each = .{ .once = &.{
110016 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110017 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
110018 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
110019 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
110020 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
110021 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111873 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
111874 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .src0q, ._ },
110022111875 } },
110023111876 }, .{
110024 .required_features = .{ .sse4_1, null, null, null },
110025 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },
110026 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
111877 .required_features = .{ .@"64bit", .sse2, null, null },
111878 .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any },
111879 .dst_constraints = .{ .{ .float = .qword }, .any },
110027111880 .patterns = &.{
110028 .{ .src = .{ .to_mem, .none, .none } },
110029 },
110030 .extra_temps = .{
110031 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110032 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
110033 .unused,
110034 .unused,
110035 .unused,
110036 .unused,
110037 .unused,
110038 .unused,
110039 .unused,
110040 .unused,
110041 .unused,
111881 .{ .src = .{ .mem, .none, .none } },
111882 .{ .src = .{ .to_gpr, .none, .none } },
110042111883 },
110043 .dst_temps = .{ .mem, .unused },
110044 .clobbers = .{ .eflags = true },
111884 .dst_temps = .{ .{ .rc = .sse }, .unused },
110045111885 .each = .{ .once = &.{
110046 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110047 .{ .@"0:", .p_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
110048 .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
110049 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
110050 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
110051 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111886 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
111887 .{ ._, ._sd, .cvtsi2, .dst0x, .src0q, ._, ._ },
110052111888 } },
110053111889 }, .{
110054 .required_features = .{ .avx, .slow_incdec, null, null },
110055 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110056 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
111890 .required_features = .{ .@"64bit", .avx, null, null },
111891 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },
111892 .dst_constraints = .{ .{ .float = .qword }, .any },
110057111893 .patterns = &.{
110058 .{ .src = .{ .to_mem, .none, .none } },
111894 .{ .src = .{ .mem, .none, .none } },
111895 .{ .src = .{ .to_gpr, .none, .none } },
110059111896 },
110060 .call_frame = .{ .alignment = .@"16" },
110061 .extra_temps = .{
110062 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110063 .{ .type = .i32, .kind = .{ .reg = .edi } },
110064 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
110065 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111897 .extra_temps = .{
111898 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
111899 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
111900 .{ .type = .vector_4_u32, .kind = .u32_0x1p52_hi_0x1p84_hi_0_0_mem },
111901 .{ .type = .vector_2_f64, .kind = .f64_0x1p52_0x1p84_mem },
110066111902 .unused,
110067111903 .unused,
110068111904 .unused,
......@@ -110071,29 +111907,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110071111907 .unused,
110072111908 .unused,
110073111909 },
110074 .dst_temps = .{ .mem, .unused },
110075 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111910 .dst_temps = .{ .{ .rc = .sse }, .unused },
110076111911 .each = .{ .once = &.{
110077 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110078 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
110079 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110080 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110081 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
110082 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111912 .{ ._, .v_q, .mov, .tmp0x, .src0q, ._, ._ },
111913 .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ },
111914 .{ ._, .vp_, .unpckldq, .tmp0x, .tmp0x, .lea(.tmp1x), ._ },
111915 .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ },
111916 .{ ._, .v_pd, .sub, .tmp0x, .tmp0x, .lea(.tmp1x), ._ },
111917 .{ ._, .v_pd, .unpckh, .dst0x, .tmp0x, .tmp0x, ._ },
111918 .{ ._, .v_sd, .add, .dst0x, .dst0x, .tmp0x, ._ },
110083111919 } },
110084111920 }, .{
110085 .required_features = .{ .avx, null, null, null },
110086 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110087 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
111921 .required_features = .{ .@"64bit", .sse2, null, null },
111922 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },
111923 .dst_constraints = .{ .{ .float = .qword }, .any },
110088111924 .patterns = &.{
110089 .{ .src = .{ .to_mem, .none, .none } },
111925 .{ .src = .{ .mem, .none, .none } },
111926 .{ .src = .{ .to_gpr, .none, .none } },
110090111927 },
110091 .call_frame = .{ .alignment = .@"16" },
110092111928 .extra_temps = .{
110093 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110094 .{ .type = .i32, .kind = .{ .reg = .edi } },
110095 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
110096 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111929 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
111930 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
111931 .{ .type = .vector_4_u32, .kind = .u32_0x1p52_hi_0x1p84_hi_0_0_mem },
111932 .{ .type = .vector_2_f64, .kind = .f64_0x1p52_0x1p84_mem },
110097111933 .unused,
110098111934 .unused,
110099111935 .unused,
......@@ -110102,29 +111938,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110102111938 .unused,
110103111939 .unused,
110104111940 },
110105 .dst_temps = .{ .mem, .unused },
110106 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111941 .dst_temps = .{ .{ .rc = .sse }, .unused },
110107111942 .each = .{ .once = &.{
110108 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110109 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
110110 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110111 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110112 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
110113 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
111943 .{ ._, ._q, .mov, .tmp0x, .src0q, ._, ._ },
111944 .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ },
111945 .{ ._, .p_, .unpckldq, .tmp0x, .lea(.tmp1x), ._, ._ },
111946 .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ },
111947 .{ ._, ._pd, .sub, .tmp0x, .lea(.tmp1x), ._, ._ },
111948 .{ ._, ._pd, .mova, .dst0x, .tmp0x, ._, ._ },
111949 .{ ._, ._pd, .unpckh, .dst0x, .dst0x, ._, ._ },
111950 .{ ._, ._sd, .add, .dst0x, .tmp0x, ._, ._ },
110114111951 } },
110115111952 }, .{
110116 .required_features = .{ .sse, .slow_incdec, null, null },
110117 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110118 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
111953 .required_features = .{ .x87, null, null, null },
111954 .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any },
111955 .dst_constraints = .{ .{ .float = .qword }, .any },
110119111956 .patterns = &.{
110120111957 .{ .src = .{ .to_mem, .none, .none } },
110121111958 },
110122 .call_frame = .{ .alignment = .@"16" },
110123111959 .extra_temps = .{
110124 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110125 .{ .type = .i32, .kind = .{ .reg = .edi } },
110126 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
110127 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111960 .{ .type = .f64, .kind = .{ .reg = .st7 } },
111961 .unused,
111962 .unused,
111963 .unused,
110128111964 .unused,
110129111965 .unused,
110130111966 .unused,
......@@ -110134,28 +111970,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110134111970 .unused,
110135111971 },
110136111972 .dst_temps = .{ .mem, .unused },
110137 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110138111973 .each = .{ .once = &.{
110139 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110140 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
110141 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110142 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110143 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
110144 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111974 .{ ._, .fi_, .ld, .src0q, ._, ._, ._ },
111975 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
110145111976 } },
110146111977 }, .{
110147 .required_features = .{ .sse, null, null, null },
110148 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110149 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
111978 .required_features = .{ .@"64bit", .x87, null, null },
111979 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },
111980 .dst_constraints = .{ .{ .float = .qword }, .any },
110150111981 .patterns = &.{
110151 .{ .src = .{ .to_mem, .none, .none } },
111982 .{ .src = .{ .to_mut_gpr, .none, .none } },
110152111983 },
110153 .call_frame = .{ .alignment = .@"16" },
110154111984 .extra_temps = .{
110155 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110156 .{ .type = .i32, .kind = .{ .reg = .edi } },
110157 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
110158 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111985 .{ .type = .u1, .kind = .{ .rc = .general_purpose } },
111986 .{ .type = .f64, .kind = .{ .reg = .st7 } },
111987 .unused,
111988 .unused,
110159111989 .unused,
110160111990 .unused,
110161111991 .unused,
......@@ -110165,28 +111995,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110165111995 .unused,
110166111996 },
110167111997 .dst_temps = .{ .mem, .unused },
110168 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111998 .clobbers = .{ .eflags = true },
110169111999 .each = .{ .once = &.{
110170 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110171 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
110172 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110173 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110174 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
110175 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
112000 .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ },
112001 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
112002 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
112003 .{ ._, ._r, .sh, .src0q, .ui(1), ._, ._ },
112004 .{ ._, ._, .@"and", .tmp0d, .si(1), ._, ._ },
112005 .{ ._, ._, .@"or", .src0q, .tmp0q, ._, ._ },
112006 .{ ._, ._, .mov, .dst0q, .src0q, ._, ._ },
112007 .{ ._, .fi_, .ld, .dst0q, ._, ._, ._ },
112008 .{ ._, .f_, .add, .tmp1t, .tmp1t, ._, ._ },
112009 .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
112010 .{ .pseudo, .f_cstp, .in, ._, ._, ._, ._ },
112011 .{ .@"1:", ._, .mov, .dst0q, .src0q, ._, ._ },
112012 .{ ._, .fi_, .ld, .dst0q, ._, ._, ._ },
112013 .{ .@"0:", .f_p, .st, .dst0q, ._, ._, ._ },
110176112014 } },
110177112015 }, .{
110178 .required_features = .{ .avx, .slow_incdec, null, null },
110179 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110180 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112016 .required_features = .{ .@"64bit", .sse, null, null },
112017 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
112018 .dst_constraints = .{ .{ .float = .qword }, .any },
110181112019 .patterns = &.{
110182 .{ .src = .{ .to_mem, .none, .none } },
112020 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
110183112021 },
110184112022 .call_frame = .{ .alignment = .@"16" },
110185112023 .extra_temps = .{
110186 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110187 .{ .type = .u32, .kind = .{ .reg = .edi } },
110188 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
110189 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112024 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },
112025 .unused,
112026 .unused,
112027 .unused,
110190112028 .unused,
110191112029 .unused,
110192112030 .unused,
......@@ -110195,29 +112033,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110195112033 .unused,
110196112034 .unused,
110197112035 },
110198 .dst_temps = .{ .mem, .unused },
112036 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
110199112037 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110200112038 .each = .{ .once = &.{
110201 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110202 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
110203 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110204 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110205 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
110206 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112039 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
110207112040 } },
110208112041 }, .{
110209 .required_features = .{ .avx, null, null, null },
110210 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110211 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112042 .required_features = .{ .@"64bit", .sse, null, null },
112043 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
112044 .dst_constraints = .{ .{ .float = .qword }, .any },
110212112045 .patterns = &.{
110213 .{ .src = .{ .to_mem, .none, .none } },
112046 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
110214112047 },
110215112048 .call_frame = .{ .alignment = .@"16" },
110216112049 .extra_temps = .{
110217 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110218 .{ .type = .u32, .kind = .{ .reg = .edi } },
110219 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
110220 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112050 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },
112051 .unused,
112052 .unused,
112053 .unused,
110221112054 .unused,
110222112055 .unused,
110223112056 .unused,
......@@ -110226,29 +112059,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110226112059 .unused,
110227112060 .unused,
110228112061 },
110229 .dst_temps = .{ .mem, .unused },
112062 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
110230112063 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110231112064 .each = .{ .once = &.{
110232 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110233 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
110234 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110235 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110236 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
110237 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
112065 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
110238112066 } },
110239112067 }, .{
110240 .required_features = .{ .sse, .slow_incdec, null, null },
110241 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110242 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112068 .required_features = .{ .@"64bit", .sse, null, null },
112069 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
112070 .dst_constraints = .{ .{ .float = .qword }, .any },
110243112071 .patterns = &.{
110244112072 .{ .src = .{ .to_mem, .none, .none } },
110245112073 },
110246112074 .call_frame = .{ .alignment = .@"16" },
110247112075 .extra_temps = .{
110248 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110249 .{ .type = .u32, .kind = .{ .reg = .edi } },
110250 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
110251 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112076 .{ .type = .usize, .kind = .{ .reg = .rdi } },
112077 .{ .type = .usize, .kind = .{ .reg = .rsi } },
112078 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },
112079 .unused,
110252112080 .unused,
110253112081 .unused,
110254112082 .unused,
......@@ -110257,29 +112085,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110257112085 .unused,
110258112086 .unused,
110259112087 },
110260 .dst_temps = .{ .mem, .unused },
112088 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
110261112089 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110262112090 .each = .{ .once = &.{
110263 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110264 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112091 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
112092 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
110265112093 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110266 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110267 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
110268 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110269112094 } },
110270112095 }, .{
110271 .required_features = .{ .sse, null, null, null },
110272 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110273 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112096 .required_features = .{ .@"64bit", .sse, null, null },
112097 .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
112098 .dst_constraints = .{ .{ .float = .qword }, .any },
110274112099 .patterns = &.{
110275112100 .{ .src = .{ .to_mem, .none, .none } },
110276112101 },
110277112102 .call_frame = .{ .alignment = .@"16" },
110278112103 .extra_temps = .{
110279 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110280 .{ .type = .u32, .kind = .{ .reg = .edi } },
110281 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
110282 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112104 .{ .type = .usize, .kind = .{ .reg = .rdi } },
112105 .{ .type = .usize, .kind = .{ .reg = .rsi } },
112106 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },
112107 .unused,
110283112108 .unused,
110284112109 .unused,
110285112110 .unused,
......@@ -110288,98 +112113,95 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110288112113 .unused,
110289112114 .unused,
110290112115 },
110291 .dst_temps = .{ .mem, .unused },
112116 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
110292112117 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110293112118 .each = .{ .once = &.{
110294 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110295 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112119 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
112120 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
110296112121 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110297 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110298 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
110299 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
110300112122 } },
110301112123 }, .{
110302112124 .required_features = .{ .avx, null, null, null },
110303 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
110304 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
112125 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
112126 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
110305112127 .patterns = &.{
110306112128 .{ .src = .{ .mem, .none, .none } },
110307112129 .{ .src = .{ .to_sse, .none, .none } },
110308112130 },
110309112131 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
110310112132 .each = .{ .once = &.{
110311 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },
110312 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
112133 .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ },
112134 .{ ._, .v_pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },
110313112135 } },
110314112136 }, .{
110315112137 .required_features = .{ .sse4_1, null, null, null },
110316 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
110317 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
112138 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
112139 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
110318112140 .patterns = &.{
110319112141 .{ .src = .{ .mem, .none, .none } },
110320112142 .{ .src = .{ .to_sse, .none, .none } },
110321112143 },
110322112144 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
110323112145 .each = .{ .once = &.{
110324 .{ ._, .p_d, .movsxw, .dst0x, .src0q, ._, ._ },
110325 .{ ._, ._ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
112146 .{ ._, .p_d, .movsxb, .dst0x, .src0d, ._, ._ },
112147 .{ ._, ._pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },
110326112148 } },
110327112149 }, .{
110328112150 .required_features = .{ .avx2, null, null, null },
110329 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
110330 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any },
112151 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
112152 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },
110331112153 .patterns = &.{
110332112154 .{ .src = .{ .mem, .none, .none } },
110333112155 .{ .src = .{ .to_sse, .none, .none } },
110334112156 },
110335112157 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
110336112158 .each = .{ .once = &.{
110337 .{ ._, .vp_d, .movsxw, .dst0y, .src0x, ._, ._ },
110338 .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ },
112159 .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ },
112160 .{ ._, .v_pd, .cvtdq2, .dst0y, .dst0x, ._, ._ },
110339112161 } },
110340112162 }, .{
110341112163 .required_features = .{ .avx, null, null, null },
110342 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },
110343 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
112164 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .word, .is = .byte } }, .any, .any },
112165 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
110344112166 .patterns = &.{
110345112167 .{ .src = .{ .mem, .none, .none } },
110346112168 .{ .src = .{ .to_sse, .none, .none } },
110347112169 },
110348112170 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
110349112171 .each = .{ .once = &.{
110350 .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ },
110351 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
112172 .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ },
112173 .{ ._, .v_pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },
110352112174 } },
110353112175 }, .{
110354112176 .required_features = .{ .sse4_1, null, null, null },
110355 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },
110356 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
112177 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .word, .is = .byte } }, .any, .any },
112178 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
110357112179 .patterns = &.{
110358112180 .{ .src = .{ .mem, .none, .none } },
110359112181 .{ .src = .{ .to_sse, .none, .none } },
110360112182 },
110361112183 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
110362112184 .each = .{ .once = &.{
110363 .{ ._, .p_d, .movzxw, .dst0x, .src0q, ._, ._ },
110364 .{ ._, ._ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
112185 .{ ._, .p_d, .movzxb, .dst0x, .src0d, ._, ._ },
112186 .{ ._, ._pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },
110365112187 } },
110366112188 }, .{
110367112189 .required_features = .{ .avx2, null, null, null },
110368 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
110369 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any },
112190 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },
112191 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },
110370112192 .patterns = &.{
110371112193 .{ .src = .{ .mem, .none, .none } },
110372112194 .{ .src = .{ .to_sse, .none, .none } },
110373112195 },
110374112196 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
110375112197 .each = .{ .once = &.{
110376 .{ ._, .vp_d, .movzxw, .dst0y, .src0x, ._, ._ },
110377 .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ },
112198 .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ },
112199 .{ ._, .v_pd, .cvtdq2, .dst0y, .dst0x, ._, ._ },
110378112200 } },
110379112201 }, .{
110380112202 .required_features = .{ .avx2, null, null, null },
110381 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
110382 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },
112203 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
112204 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },
110383112205 .patterns = &.{
110384112206 .{ .src = .{ .to_mem, .none, .none } },
110385112207 },
......@@ -110400,16 +112222,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110400112222 .clobbers = .{ .eflags = true },
110401112223 .each = .{ .once = &.{
110402112224 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110403 .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
110404 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
110405 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
110406 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
112225 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
112226 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },
112227 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
112228 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
110407112229 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110408112230 } },
110409112231 }, .{
110410112232 .required_features = .{ .avx, null, null, null },
110411 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
110412 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
112233 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
112234 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
110413112235 .patterns = &.{
110414112236 .{ .src = .{ .to_mem, .none, .none } },
110415112237 },
......@@ -110430,16 +112252,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110430112252 .clobbers = .{ .eflags = true },
110431112253 .each = .{ .once = &.{
110432112254 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110433 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
110434 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
110435 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
110436 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
112255 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
112256 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
112257 .{ ._, .vp_d, .movsxb, .tmp1x, .tmp1d, ._, ._ },
112258 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
112259 .{ ._, .v_pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112260 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110437112261 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110438112262 } },
110439112263 }, .{
110440112264 .required_features = .{ .sse4_1, null, null, null },
110441 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
110442 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
112265 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
112266 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
110443112267 .patterns = &.{
110444112268 .{ .src = .{ .to_mem, .none, .none } },
110445112269 },
......@@ -110460,16 +112284,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110460112284 .clobbers = .{ .eflags = true },
110461112285 .each = .{ .once = &.{
110462112286 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110463 .{ .@"0:", .p_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
110464 .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
110465 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
110466 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
112287 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
112288 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
112289 .{ ._, .p_d, .movsxb, .tmp1x, .tmp1d, ._, ._ },
112290 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
112291 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112292 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110467112293 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110468112294 } },
110469112295 }, .{
110470112296 .required_features = .{ .avx2, null, null, null },
110471 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
110472 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },
112297 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },
112298 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },
110473112299 .patterns = &.{
110474112300 .{ .src = .{ .to_mem, .none, .none } },
110475112301 },
......@@ -110490,16 +112316,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110490112316 .clobbers = .{ .eflags = true },
110491112317 .each = .{ .once = &.{
110492112318 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110493 .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
110494 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
110495 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
110496 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
112319 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
112320 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },
112321 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
112322 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
110497112323 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110498112324 } },
110499112325 }, .{
110500112326 .required_features = .{ .avx, null, null, null },
110501 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },
110502 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
112327 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .byte } }, .any, .any },
112328 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
110503112329 .patterns = &.{
110504112330 .{ .src = .{ .to_mem, .none, .none } },
110505112331 },
......@@ -110520,16 +112346,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110520112346 .clobbers = .{ .eflags = true },
110521112347 .each = .{ .once = &.{
110522112348 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110523 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
110524 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
110525 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
110526 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
112349 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
112350 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
112351 .{ ._, .vp_d, .movzxb, .tmp1x, .tmp1d, ._, ._ },
112352 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
112353 .{ ._, .v_pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112354 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110527112355 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110528112356 } },
110529112357 }, .{
110530112358 .required_features = .{ .sse4_1, null, null, null },
110531 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },
110532 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
112359 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .byte } }, .any, .any },
112360 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
110533112361 .patterns = &.{
110534112362 .{ .src = .{ .to_mem, .none, .none } },
110535112363 },
......@@ -110550,16 +112378,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110550112378 .clobbers = .{ .eflags = true },
110551112379 .each = .{ .once = &.{
110552112380 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110553 .{ .@"0:", .p_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
110554 .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
110555 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
110556 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
112381 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
112382 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
112383 .{ ._, .p_d, .movzxb, .tmp1x, .tmp1d, ._, ._ },
112384 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
112385 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112386 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110557112387 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110558112388 } },
110559112389 }, .{
110560 .required_features = .{ .avx, null, null, null },
110561 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
110562 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112390 .required_features = .{ .avx, .slow_incdec, null, null },
112391 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
112392 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
110563112393 .patterns = &.{
110564112394 .{ .src = .{ .to_mem, .none, .none } },
110565112395 },
......@@ -110567,8 +112397,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110567112397 .extra_temps = .{
110568112398 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110569112399 .{ .type = .i32, .kind = .{ .reg = .edi } },
110570 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
110571 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112400 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
112401 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
110572112402 .unused,
110573112403 .unused,
110574112404 .unused,
......@@ -110581,16 +112411,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110581112411 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110582112412 .each = .{ .once = &.{
110583112413 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110584 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
112414 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
110585112415 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110586 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110587 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
112416 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112417 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
110588112418 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110589112419 } },
110590112420 }, .{
110591 .required_features = .{ .sse, null, null, null },
110592 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
110593 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112421 .required_features = .{ .avx, null, null, null },
112422 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
112423 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
110594112424 .patterns = &.{
110595112425 .{ .src = .{ .to_mem, .none, .none } },
110596112426 },
......@@ -110598,8 +112428,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110598112428 .extra_temps = .{
110599112429 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110600112430 .{ .type = .i32, .kind = .{ .reg = .edi } },
110601 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
110602 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112431 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
112432 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
110603112433 .unused,
110604112434 .unused,
110605112435 .unused,
......@@ -110612,25 +112442,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110612112442 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110613112443 .each = .{ .once = &.{
110614112444 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110615 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
112445 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
110616112446 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110617 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110618 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110619 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112447 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112448 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
112449 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
110620112450 } },
110621112451 }, .{
110622 .required_features = .{ .avx, null, null, null },
110623 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
110624 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112452 .required_features = .{ .sse2, .slow_incdec, null, null },
112453 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
112454 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
110625112455 .patterns = &.{
110626112456 .{ .src = .{ .to_mem, .none, .none } },
110627112457 },
110628112458 .call_frame = .{ .alignment = .@"16" },
110629112459 .extra_temps = .{
110630112460 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110631 .{ .type = .u32, .kind = .{ .reg = .edi } },
110632 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
110633 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112461 .{ .type = .i32, .kind = .{ .reg = .edi } },
112462 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
112463 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
110634112464 .unused,
110635112465 .unused,
110636112466 .unused,
......@@ -110643,25 +112473,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110643112473 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110644112474 .each = .{ .once = &.{
110645112475 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110646 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
112476 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
110647112477 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110648 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110649 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
112478 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112479 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
110650112480 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110651112481 } },
110652112482 }, .{
110653 .required_features = .{ .sse, null, null, null },
110654 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
110655 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112483 .required_features = .{ .sse2, null, null, null },
112484 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
112485 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
110656112486 .patterns = &.{
110657112487 .{ .src = .{ .to_mem, .none, .none } },
110658112488 },
110659112489 .call_frame = .{ .alignment = .@"16" },
110660112490 .extra_temps = .{
110661112491 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110662 .{ .type = .u32, .kind = .{ .reg = .edi } },
110663 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
110664 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112492 .{ .type = .i32, .kind = .{ .reg = .edi } },
112493 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
112494 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
110665112495 .unused,
110666112496 .unused,
110667112497 .unused,
......@@ -110674,60 +112504,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110674112504 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110675112505 .each = .{ .once = &.{
110676112506 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110677 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
112507 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
110678112508 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110679 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110680 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110681 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110682 } },
110683 }, .{
110684 .required_features = .{ .avx, null, null, null },
110685 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
110686 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
110687 .patterns = &.{
110688 .{ .src = .{ .mem, .none, .none } },
110689 .{ .src = .{ .to_sse, .none, .none } },
110690 },
110691 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
110692 .each = .{ .once = &.{
110693 .{ ._, .v_ps, .cvtdq2, .dst0x, .src0x, ._, ._ },
110694 } },
110695 }, .{
110696 .required_features = .{ .sse2, null, null, null },
110697 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
110698 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
110699 .patterns = &.{
110700 .{ .src = .{ .mem, .none, .none } },
110701 .{ .src = .{ .to_sse, .none, .none } },
110702 },
110703 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
110704 .each = .{ .once = &.{
110705 .{ ._, ._ps, .cvtdq2, .dst0x, .src0x, ._, ._ },
110706 } },
110707 }, .{
110708 .required_features = .{ .avx2, null, null, null },
110709 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },
110710 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any },
110711 .patterns = &.{
110712 .{ .src = .{ .mem, .none, .none } },
110713 .{ .src = .{ .to_sse, .none, .none } },
110714 },
110715 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
110716 .each = .{ .once = &.{
110717 .{ ._, .v_ps, .cvtdq2, .dst0y, .src0y, ._, ._ },
112509 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112510 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
112511 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
110718112512 } },
110719112513 }, .{
110720 .required_features = .{ .avx2, null, null, null },
110721 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },
110722 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },
112514 .required_features = .{ .sse, .slow_incdec, null, null },
112515 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
112516 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
110723112517 .patterns = &.{
110724112518 .{ .src = .{ .to_mem, .none, .none } },
110725112519 },
112520 .call_frame = .{ .alignment = .@"16" },
110726112521 .extra_temps = .{
110727112522 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110728 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
110729 .unused,
110730 .unused,
112523 .{ .type = .i32, .kind = .{ .reg = .edi } },
112524 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
112525 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
110731112526 .unused,
110732112527 .unused,
110733112528 .unused,
......@@ -110737,26 +112532,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110737112532 .unused,
110738112533 },
110739112534 .dst_temps = .{ .mem, .unused },
110740 .clobbers = .{ .eflags = true },
112535 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110741112536 .each = .{ .once = &.{
110742112537 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110743 .{ .@"0:", .v_ps, .cvtdq2, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
110744 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
110745 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
112538 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112539 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112540 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112541 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
110746112542 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110747112543 } },
110748112544 }, .{
110749 .required_features = .{ .avx, null, null, null },
110750 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
110751 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
112545 .required_features = .{ .sse, null, null, null },
112546 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
112547 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
110752112548 .patterns = &.{
110753112549 .{ .src = .{ .to_mem, .none, .none } },
110754112550 },
112551 .call_frame = .{ .alignment = .@"16" },
110755112552 .extra_temps = .{
110756112553 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110757 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
110758 .unused,
110759 .unused,
112554 .{ .type = .i32, .kind = .{ .reg = .edi } },
112555 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
112556 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
110760112557 .unused,
110761112558 .unused,
110762112559 .unused,
......@@ -110766,26 +112563,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110766112563 .unused,
110767112564 },
110768112565 .dst_temps = .{ .mem, .unused },
110769 .clobbers = .{ .eflags = true },
112566 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110770112567 .each = .{ .once = &.{
110771 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
110772 .{ .@"0:", .v_ps, .cvtdq2, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
110773 .{ ._, .v_ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
110774 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
110775 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112568 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112569 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112570 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112571 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112572 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
112573 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
110776112574 } },
110777112575 }, .{
110778 .required_features = .{ .sse2, null, null, null },
110779 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
110780 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
112576 .required_features = .{ .avx, .slow_incdec, null, null },
112577 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
112578 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
110781112579 .patterns = &.{
110782112580 .{ .src = .{ .to_mem, .none, .none } },
110783112581 },
112582 .call_frame = .{ .alignment = .@"16" },
110784112583 .extra_temps = .{
110785112584 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110786 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
110787 .unused,
110788 .unused,
112585 .{ .type = .u32, .kind = .{ .reg = .edi } },
112586 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
112587 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
110789112588 .unused,
110790112589 .unused,
110791112590 .unused,
......@@ -110795,26 +112594,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110795112594 .unused,
110796112595 },
110797112596 .dst_temps = .{ .mem, .unused },
110798 .clobbers = .{ .eflags = true },
112597 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110799112598 .each = .{ .once = &.{
110800 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
110801 .{ .@"0:", ._ps, .cvtdq2, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
110802 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
110803 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
112599 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112600 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112601 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112602 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112603 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
110804112604 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110805112605 } },
110806112606 }, .{
110807 .required_features = .{ .sse, null, null, null },
110808 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
110809 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112607 .required_features = .{ .avx, null, null, null },
112608 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
112609 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
110810112610 .patterns = &.{
110811112611 .{ .src = .{ .to_mem, .none, .none } },
110812112612 },
112613 .call_frame = .{ .alignment = .@"16" },
110813112614 .extra_temps = .{
110814112615 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110815 .{ .type = .f32, .kind = .{ .rc = .sse } },
110816 .unused,
110817 .unused,
112616 .{ .type = .u32, .kind = .{ .reg = .edi } },
112617 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
112618 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
110818112619 .unused,
110819112620 .unused,
110820112621 .unused,
......@@ -110824,27 +112625,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110824112625 .unused,
110825112626 },
110826112627 .dst_temps = .{ .mem, .unused },
110827 .clobbers = .{ .eflags = true },
112628 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110828112629 .each = .{ .once = &.{
110829 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
110830 .{ .@"0:", ._ss, .cvtsi2, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
110831 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
110832 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
110833 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112630 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112631 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112632 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112633 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112634 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
112635 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
110834112636 } },
110835112637 }, .{
110836 .required_features = .{ .avx, null, null, null },
110837 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
110838 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112638 .required_features = .{ .sse2, .slow_incdec, null, null },
112639 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
112640 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
110839112641 .patterns = &.{
110840112642 .{ .src = .{ .to_mem, .none, .none } },
110841112643 },
110842112644 .call_frame = .{ .alignment = .@"16" },
110843112645 .extra_temps = .{
110844112646 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110845 .{ .type = .i32, .kind = .{ .reg = .edi } },
110846 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
110847 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112647 .{ .type = .u32, .kind = .{ .reg = .edi } },
112648 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
112649 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
110848112650 .unused,
110849112651 .unused,
110850112652 .unused,
......@@ -110856,26 +112658,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110856112658 .dst_temps = .{ .mem, .unused },
110857112659 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110858112660 .each = .{ .once = &.{
110859 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
110860 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
112661 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112662 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
110861112663 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110862 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110863 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
112664 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112665 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
110864112666 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110865112667 } },
110866112668 }, .{
110867 .required_features = .{ .sse, null, null, null },
110868 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
110869 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112669 .required_features = .{ .sse2, null, null, null },
112670 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
112671 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
110870112672 .patterns = &.{
110871112673 .{ .src = .{ .to_mem, .none, .none } },
110872112674 },
110873112675 .call_frame = .{ .alignment = .@"16" },
110874112676 .extra_temps = .{
110875112677 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110876 .{ .type = .i32, .kind = .{ .reg = .edi } },
110877 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
110878 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112678 .{ .type = .u32, .kind = .{ .reg = .edi } },
112679 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
112680 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
110879112681 .unused,
110880112682 .unused,
110881112683 .unused,
......@@ -110887,17 +112689,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110887112689 .dst_temps = .{ .mem, .unused },
110888112690 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110889112691 .each = .{ .once = &.{
110890 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
110891 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
112692 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112693 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
110892112694 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110893 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110894 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
110895 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112695 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112696 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
112697 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
110896112698 } },
110897112699 }, .{
110898 .required_features = .{ .avx, null, null, null },
110899 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
110900 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112700 .required_features = .{ .sse, .slow_incdec, null, null },
112701 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
112702 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
110901112703 .patterns = &.{
110902112704 .{ .src = .{ .to_mem, .none, .none } },
110903112705 },
......@@ -110905,8 +112707,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110905112707 .extra_temps = .{
110906112708 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110907112709 .{ .type = .u32, .kind = .{ .reg = .edi } },
110908 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
110909 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112710 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
112711 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
110910112712 .unused,
110911112713 .unused,
110912112714 .unused,
......@@ -110918,17 +112720,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110918112720 .dst_temps = .{ .mem, .unused },
110919112721 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110920112722 .each = .{ .once = &.{
110921 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
110922 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
112723 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112724 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
110923112725 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110924 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110925 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
112726 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112727 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
110926112728 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110927112729 } },
110928112730 }, .{
110929112731 .required_features = .{ .sse, null, null, null },
110930 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
110931 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112732 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
112733 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
110932112734 .patterns = &.{
110933112735 .{ .src = .{ .to_mem, .none, .none } },
110934112736 },
......@@ -110936,8 +112738,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110936112738 .extra_temps = .{
110937112739 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110938112740 .{ .type = .u32, .kind = .{ .reg = .edi } },
110939 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
110940 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112741 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
112742 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
110941112743 .unused,
110942112744 .unused,
110943112745 .unused,
......@@ -110949,243 +112751,104 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110949112751 .dst_temps = .{ .mem, .unused },
110950112752 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110951112753 .each = .{ .once = &.{
110952 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
110953 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
112754 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112755 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
110954112756 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110955 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110956 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
110957 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112757 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112758 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
112759 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
110958112760 } },
110959112761 }, .{
110960 .required_features = .{ .@"64bit", .avx, null, null },
110961 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
110962 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112762 .required_features = .{ .avx, null, null, null },
112763 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
112764 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
110963112765 .patterns = &.{
110964 .{ .src = .{ .to_mem, .none, .none } },
110965 },
110966 .extra_temps = .{
110967 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110968 .{ .type = .f32, .kind = .{ .rc = .sse } },
110969 .unused,
110970 .unused,
110971 .unused,
110972 .unused,
110973 .unused,
110974 .unused,
110975 .unused,
110976 .unused,
110977 .unused,
112766 .{ .src = .{ .mem, .none, .none } },
112767 .{ .src = .{ .to_sse, .none, .none } },
110978112768 },
110979 .dst_temps = .{ .mem, .unused },
110980 .clobbers = .{ .eflags = true },
112769 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
110981112770 .each = .{ .once = &.{
110982 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
110983 .{ .@"0:", .v_ps, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
110984 .{ ._, .v_ss, .cvtsi2, .tmp1x, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._ },
110985 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
110986 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
110987 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112771 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },
112772 .{ ._, .v_pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },
110988112773 } },
110989112774 }, .{
110990 .required_features = .{ .@"64bit", .sse, null, null },
110991 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
110992 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112775 .required_features = .{ .sse4_1, null, null, null },
112776 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
112777 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
110993112778 .patterns = &.{
110994 .{ .src = .{ .to_mem, .none, .none } },
110995 },
110996 .extra_temps = .{
110997 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110998 .{ .type = .f32, .kind = .{ .rc = .sse } },
110999 .unused,
111000 .unused,
111001 .unused,
111002 .unused,
111003 .unused,
111004 .unused,
111005 .unused,
111006 .unused,
111007 .unused,
112779 .{ .src = .{ .mem, .none, .none } },
112780 .{ .src = .{ .to_sse, .none, .none } },
111008112781 },
111009 .dst_temps = .{ .mem, .unused },
111010 .clobbers = .{ .eflags = true },
112782 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
111011112783 .each = .{ .once = &.{
111012 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
111013 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
111014 .{ ._, ._ss, .cvtsi2, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
111015 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
111016 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
111017 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112784 .{ ._, .p_d, .movsxw, .dst0x, .src0q, ._, ._ },
112785 .{ ._, ._pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },
111018112786 } },
111019112787 }, .{
111020 .required_features = .{ .@"64bit", .avx, null, null },
111021 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
111022 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112788 .required_features = .{ .avx2, null, null, null },
112789 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
112790 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },
111023112791 .patterns = &.{
111024 .{ .src = .{ .to_mem, .none, .none } },
111025 },
111026 .call_frame = .{ .alignment = .@"16" },
111027 .extra_temps = .{
111028 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111029 .{ .type = .i64, .kind = .{ .reg = .rdi } },
111030 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdisf" } } },
111031 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111032 .unused,
111033 .unused,
111034 .unused,
111035 .unused,
111036 .unused,
111037 .unused,
111038 .unused,
112792 .{ .src = .{ .mem, .none, .none } },
112793 .{ .src = .{ .to_sse, .none, .none } },
111039112794 },
111040 .dst_temps = .{ .mem, .unused },
111041 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112795 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
111042112796 .each = .{ .once = &.{
111043 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
111044 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
111045 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111046 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111047 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
111048 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112797 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },
112798 .{ ._, .v_pd, .cvtdq2, .dst0y, .dst0x, ._, ._ },
111049112799 } },
111050112800 }, .{
111051 .required_features = .{ .@"64bit", .sse, null, null },
111052 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
111053 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112801 .required_features = .{ .avx, null, null, null },
112802 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any, .any },
112803 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
111054112804 .patterns = &.{
111055 .{ .src = .{ .to_mem, .none, .none } },
111056 },
111057 .call_frame = .{ .alignment = .@"16" },
111058 .extra_temps = .{
111059 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111060 .{ .type = .i64, .kind = .{ .reg = .rdi } },
111061 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdisf" } } },
111062 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111063 .unused,
111064 .unused,
111065 .unused,
111066 .unused,
111067 .unused,
111068 .unused,
111069 .unused,
112805 .{ .src = .{ .mem, .none, .none } },
112806 .{ .src = .{ .to_sse, .none, .none } },
111070112807 },
111071 .dst_temps = .{ .mem, .unused },
111072 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112808 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
111073112809 .each = .{ .once = &.{
111074 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
111075 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
111076 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111077 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111078 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
111079 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112810 .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ },
112811 .{ ._, .v_pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },
111080112812 } },
111081112813 }, .{
111082 .required_features = .{ .@"64bit", .avx, null, null },
111083 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
111084 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112814 .required_features = .{ .sse4_1, null, null, null },
112815 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any, .any },
112816 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
111085112817 .patterns = &.{
111086 .{ .src = .{ .to_mem, .none, .none } },
111087 },
111088 .call_frame = .{ .alignment = .@"16" },
111089 .extra_temps = .{
111090 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111091 .{ .type = .u64, .kind = .{ .reg = .rdi } },
111092 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundisf" } } },
111093 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111094 .unused,
111095 .unused,
111096 .unused,
111097 .unused,
111098 .unused,
111099 .unused,
111100 .unused,
112818 .{ .src = .{ .mem, .none, .none } },
112819 .{ .src = .{ .to_sse, .none, .none } },
111101112820 },
111102 .dst_temps = .{ .mem, .unused },
111103 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112821 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
111104112822 .each = .{ .once = &.{
111105 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
111106 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
111107 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111108 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111109 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
111110 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112823 .{ ._, .p_d, .movzxw, .dst0x, .src0q, ._, ._ },
112824 .{ ._, ._pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },
111111112825 } },
111112112826 }, .{
111113 .required_features = .{ .@"64bit", .sse, null, null },
111114 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
111115 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112827 .required_features = .{ .avx2, null, null, null },
112828 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },
112829 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },
111116112830 .patterns = &.{
111117 .{ .src = .{ .to_mem, .none, .none } },
111118 },
111119 .call_frame = .{ .alignment = .@"16" },
111120 .extra_temps = .{
111121 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111122 .{ .type = .u64, .kind = .{ .reg = .rdi } },
111123 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundisf" } } },
111124 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111125 .unused,
111126 .unused,
111127 .unused,
111128 .unused,
111129 .unused,
111130 .unused,
111131 .unused,
112831 .{ .src = .{ .mem, .none, .none } },
112832 .{ .src = .{ .to_sse, .none, .none } },
111132112833 },
111133 .dst_temps = .{ .mem, .unused },
111134 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112834 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
111135112835 .each = .{ .once = &.{
111136 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
111137 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
111138 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111139 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111140 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
111141 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112836 .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ },
112837 .{ ._, .v_pd, .cvtdq2, .dst0y, .dst0x, ._, ._ },
111142112838 } },
111143112839 }, .{
111144 .required_features = .{ .@"64bit", .avx, null, null },
111145 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
111146 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112840 .required_features = .{ .avx2, null, null, null },
112841 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
112842 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },
111147112843 .patterns = &.{
111148112844 .{ .src = .{ .to_mem, .none, .none } },
111149112845 },
111150 .call_frame = .{ .alignment = .@"16" },
111151112846 .extra_temps = .{
111152112847 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111153 .{ .type = .u64, .kind = .{ .reg = .rdi } },
111154 .{ .type = .i64, .kind = .{ .reg = .rsi } },
111155 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattisf" } } },
111156 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111157 .unused,
111158 .unused,
111159 .unused,
112848 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
111160112849 .unused,
111161112850 .unused,
111162112851 .unused,
111163 },
111164 .dst_temps = .{ .mem, .unused },
111165 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111166 .each = .{ .once = &.{
111167 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
111168 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
111169 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ },
111170 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
111171 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
111172 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
111173 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111174 } },
111175 }, .{
111176 .required_features = .{ .@"64bit", .sse, null, null },
111177 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
111178 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
111179 .patterns = &.{
111180 .{ .src = .{ .to_mem, .none, .none } },
111181 },
111182 .call_frame = .{ .alignment = .@"16" },
111183 .extra_temps = .{
111184 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111185 .{ .type = .u64, .kind = .{ .reg = .rdi } },
111186 .{ .type = .i64, .kind = .{ .reg = .rsi } },
111187 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattisf" } } },
111188 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111189112852 .unused,
111190112853 .unused,
111191112854 .unused,
......@@ -111194,62 +112857,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111194112857 .unused,
111195112858 },
111196112859 .dst_temps = .{ .mem, .unused },
111197 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112860 .clobbers = .{ .eflags = true },
111198112861 .each = .{ .once = &.{
111199 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
111200 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
111201 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ },
111202 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
111203 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
111204 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
112862 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112863 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
112864 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },
112865 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
112866 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
111205112867 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111206112868 } },
111207112869 }, .{
111208 .required_features = .{ .@"64bit", .avx, null, null },
111209 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
111210 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112870 .required_features = .{ .avx, null, null, null },
112871 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
112872 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
111211112873 .patterns = &.{
111212112874 .{ .src = .{ .to_mem, .none, .none } },
111213112875 },
111214 .call_frame = .{ .alignment = .@"16" },
111215112876 .extra_temps = .{
111216112877 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111217 .{ .type = .u64, .kind = .{ .reg = .rdi } },
111218 .{ .type = .u64, .kind = .{ .reg = .rsi } },
111219 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntisf" } } },
111220 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111221 .unused,
111222 .unused,
111223 .unused,
112878 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111224112879 .unused,
111225112880 .unused,
111226112881 .unused,
111227 },
111228 .dst_temps = .{ .mem, .unused },
111229 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111230 .each = .{ .once = &.{
111231 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
111232 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
111233 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ },
111234 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
111235 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
111236 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
111237 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111238 } },
111239 }, .{
111240 .required_features = .{ .@"64bit", .sse, null, null },
111241 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
111242 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
111243 .patterns = &.{
111244 .{ .src = .{ .to_mem, .none, .none } },
111245 },
111246 .call_frame = .{ .alignment = .@"16" },
111247 .extra_temps = .{
111248 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111249 .{ .type = .u64, .kind = .{ .reg = .rdi } },
111250 .{ .type = .u64, .kind = .{ .reg = .rsi } },
111251 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntisf" } } },
111252 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111253112882 .unused,
111254112883 .unused,
111255112884 .unused,
......@@ -111258,99 +112887,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111258112887 .unused,
111259112888 },
111260112889 .dst_temps = .{ .mem, .unused },
111261 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112890 .clobbers = .{ .eflags = true },
111262112891 .each = .{ .once = &.{
111263 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
111264 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
111265 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ },
111266 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
111267 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
112892 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112893 .{ .@"0:", .v_d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
112894 .{ ._, .vp_d, .movsxw, .tmp1x, .tmp1q, ._, ._ },
112895 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
112896 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
111268112897 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
111269112898 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111270112899 } },
111271112900 }, .{
111272 .required_features = .{ .@"64bit", .avx, null, null },
111273 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
111274 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
111275 .patterns = &.{
111276 .{ .src = .{ .to_mem, .none, .none } },
111277 },
111278 .call_frame = .{ .alignment = .@"16" },
111279 .extra_temps = .{
111280 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
111281 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111282 .{ .type = .usize, .kind = .{ .reg = .rdi } },
111283 .{ .type = .usize, .kind = .{ .reg = .rsi } },
111284 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateisf" } } },
111285 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111286 .unused,
111287 .unused,
111288 .unused,
111289 .unused,
111290 .unused,
111291 },
111292 .dst_temps = .{ .mem, .unused },
111293 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111294 .each = .{ .once = &.{
111295 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
111296 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
111297 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
111298 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
111299 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
111300 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
111301 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
111302 .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ },
111303 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111304 } },
111305 }, .{
111306 .required_features = .{ .@"64bit", .sse, null, null },
111307 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
111308 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112901 .required_features = .{ .sse4_1, null, null, null },
112902 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
112903 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
111309112904 .patterns = &.{
111310112905 .{ .src = .{ .to_mem, .none, .none } },
111311112906 },
111312 .call_frame = .{ .alignment = .@"16" },
111313112907 .extra_temps = .{
111314 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
111315112908 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111316 .{ .type = .usize, .kind = .{ .reg = .rdi } },
111317 .{ .type = .usize, .kind = .{ .reg = .rsi } },
111318 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateisf" } } },
111319 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111320 .unused,
112909 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111321112910 .unused,
111322112911 .unused,
111323112912 .unused,
111324112913 .unused,
111325 },
111326 .dst_temps = .{ .mem, .unused },
111327 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111328 .each = .{ .once = &.{
111329 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
111330 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
111331 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
111332 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
111333 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
111334 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
111335 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
111336 .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ },
111337 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111338 } },
111339 }, .{
111340 .required_features = .{ .@"64bit", .avx, null, null },
111341 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
111342 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
111343 .patterns = &.{
111344 .{ .src = .{ .to_mem, .none, .none } },
111345 },
111346 .call_frame = .{ .alignment = .@"16" },
111347 .extra_temps = .{
111348 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
111349 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111350 .{ .type = .usize, .kind = .{ .reg = .rdi } },
111351 .{ .type = .usize, .kind = .{ .reg = .rsi } },
111352 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneisf" } } },
111353 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111354112914 .unused,
111355112915 .unused,
111356112916 .unused,
......@@ -111358,33 +112918,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111358112918 .unused,
111359112919 },
111360112920 .dst_temps = .{ .mem, .unused },
111361 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111362 .each = .{ .once = &.{
111363 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
111364 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
111365 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
111366 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
111367 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
111368 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
111369 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
111370 .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ },
112921 .clobbers = .{ .eflags = true },
112922 .each = .{ .once = &.{
112923 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112924 .{ .@"0:", ._d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
112925 .{ ._, .p_d, .movsxw, .tmp1x, .tmp1q, ._, ._ },
112926 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
112927 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112928 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
111371112929 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111372112930 } },
111373112931 }, .{
111374 .required_features = .{ .@"64bit", .sse, null, null },
111375 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
111376 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112932 .required_features = .{ .avx2, null, null, null },
112933 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },
112934 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },
111377112935 .patterns = &.{
111378112936 .{ .src = .{ .to_mem, .none, .none } },
111379112937 },
111380 .call_frame = .{ .alignment = .@"16" },
111381112938 .extra_temps = .{
111382 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
111383112939 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111384 .{ .type = .usize, .kind = .{ .reg = .rdi } },
111385 .{ .type = .usize, .kind = .{ .reg = .rsi } },
111386 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneisf" } } },
111387 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112940 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
112941 .unused,
112942 .unused,
112943 .unused,
112944 .unused,
111388112945 .unused,
111389112946 .unused,
111390112947 .unused,
......@@ -111392,29 +112949,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111392112949 .unused,
111393112950 },
111394112951 .dst_temps = .{ .mem, .unused },
111395 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112952 .clobbers = .{ .eflags = true },
111396112953 .each = .{ .once = &.{
111397 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
111398 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
111399 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
111400 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
111401 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
111402 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
111403 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
111404 .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ },
112954 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112955 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
112956 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },
112957 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
112958 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
111405112959 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111406112960 } },
111407112961 }, .{
111408112962 .required_features = .{ .avx, null, null, null },
111409 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
111410 .dst_constraints = .{ .{ .float = .qword }, .any },
112963 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any, .any },
112964 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
111411112965 .patterns = &.{
111412 .{ .src = .{ .mem, .none, .none } },
111413 .{ .src = .{ .to_gpr, .none, .none } },
112966 .{ .src = .{ .to_mem, .none, .none } },
111414112967 },
111415112968 .extra_temps = .{
111416 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
111417 .unused,
112969 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112970 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111418112971 .unused,
111419112972 .unused,
111420112973 .unused,
......@@ -111425,23 +112978,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111425112978 .unused,
111426112979 .unused,
111427112980 },
111428 .dst_temps = .{ .{ .rc = .sse }, .unused },
112981 .dst_temps = .{ .mem, .unused },
112982 .clobbers = .{ .eflags = true },
111429112983 .each = .{ .once = &.{
111430 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
111431 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
111432 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
112984 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112985 .{ .@"0:", .v_d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
112986 .{ ._, .vp_d, .movzxw, .tmp1x, .tmp1q, ._, ._ },
112987 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
112988 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112989 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
112990 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111433112991 } },
111434112992 }, .{
111435 .required_features = .{ .sse2, null, null, null },
111436 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
111437 .dst_constraints = .{ .{ .float = .qword }, .any },
112993 .required_features = .{ .sse4_1, null, null, null },
112994 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any, .any },
112995 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
111438112996 .patterns = &.{
111439 .{ .src = .{ .mem, .none, .none } },
111440 .{ .src = .{ .to_gpr, .none, .none } },
112997 .{ .src = .{ .to_mem, .none, .none } },
111441112998 },
111442112999 .extra_temps = .{
111443 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
111444 .unused,
113000 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113001 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111445113002 .unused,
111446113003 .unused,
111447113004 .unused,
......@@ -111452,25 +113009,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111452113009 .unused,
111453113010 .unused,
111454113011 },
111455 .dst_temps = .{ .{ .rc = .sse }, .unused },
113012 .dst_temps = .{ .mem, .unused },
113013 .clobbers = .{ .eflags = true },
111456113014 .each = .{ .once = &.{
111457 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
111458 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
111459 .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0d, ._, ._ },
113015 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113016 .{ .@"0:", ._d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
113017 .{ ._, .p_d, .movzxw, .tmp1x, .tmp1q, ._, ._ },
113018 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
113019 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
113020 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
113021 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111460113022 } },
111461113023 }, .{
111462113024 .required_features = .{ .avx, null, null, null },
111463 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
111464 .dst_constraints = .{ .{ .float = .qword }, .any },
113025 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
113026 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111465113027 .patterns = &.{
111466 .{ .src = .{ .mem, .none, .none } },
111467 .{ .src = .{ .to_gpr, .none, .none } },
113028 .{ .src = .{ .to_mem, .none, .none } },
111468113029 },
113030 .call_frame = .{ .alignment = .@"16" },
111469113031 .extra_temps = .{
111470 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
111471 .unused,
111472 .unused,
111473 .unused,
113032 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113033 .{ .type = .i32, .kind = .{ .reg = .edi } },
113034 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
113035 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
111474113036 .unused,
111475113037 .unused,
111476113038 .unused,
......@@ -111479,25 +113041,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111479113041 .unused,
111480113042 .unused,
111481113043 },
111482 .dst_temps = .{ .{ .rc = .sse }, .unused },
113044 .dst_temps = .{ .mem, .unused },
113045 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111483113046 .each = .{ .once = &.{
111484 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
111485 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
111486 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
113047 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113048 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
113049 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113050 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113051 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113052 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111487113053 } },
111488113054 }, .{
111489113055 .required_features = .{ .sse2, null, null, null },
111490 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
111491 .dst_constraints = .{ .{ .float = .qword }, .any },
113056 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
113057 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111492113058 .patterns = &.{
111493 .{ .src = .{ .mem, .none, .none } },
111494 .{ .src = .{ .to_gpr, .none, .none } },
113059 .{ .src = .{ .to_mem, .none, .none } },
111495113060 },
113061 .call_frame = .{ .alignment = .@"16" },
111496113062 .extra_temps = .{
111497 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
111498 .unused,
111499 .unused,
111500 .unused,
113063 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113064 .{ .type = .i32, .kind = .{ .reg = .edi } },
113065 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
113066 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
111501113067 .unused,
111502113068 .unused,
111503113069 .unused,
......@@ -111506,25 +113072,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111506113072 .unused,
111507113073 .unused,
111508113074 },
111509 .dst_temps = .{ .{ .rc = .sse }, .unused },
113075 .dst_temps = .{ .mem, .unused },
113076 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111510113077 .each = .{ .once = &.{
111511 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
111512 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
111513 .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0d, ._, ._ },
113078 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113079 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
113080 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113081 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113082 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113083 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111514113084 } },
111515113085 }, .{
111516 .required_features = .{ .avx, null, null, null },
111517 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
111518 .dst_constraints = .{ .{ .float = .qword }, .any },
113086 .required_features = .{ .sse, null, null, null },
113087 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
113088 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111519113089 .patterns = &.{
111520 .{ .src = .{ .mem, .none, .none } },
111521 .{ .src = .{ .to_gpr, .none, .none } },
113090 .{ .src = .{ .to_mem, .none, .none } },
111522113091 },
113092 .call_frame = .{ .alignment = .@"16" },
111523113093 .extra_temps = .{
111524 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
111525 .unused,
111526 .unused,
111527 .unused,
113094 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113095 .{ .type = .i32, .kind = .{ .reg = .edi } },
113096 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
113097 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
111528113098 .unused,
111529113099 .unused,
111530113100 .unused,
......@@ -111533,25 +113103,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111533113103 .unused,
111534113104 .unused,
111535113105 },
111536 .dst_temps = .{ .{ .rc = .sse }, .unused },
113106 .dst_temps = .{ .mem, .unused },
113107 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111537113108 .each = .{ .once = &.{
111538 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
111539 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
111540 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
113109 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113110 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
113111 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113112 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113113 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113114 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111541113115 } },
111542113116 }, .{
111543 .required_features = .{ .sse2, null, null, null },
111544 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
111545 .dst_constraints = .{ .{ .float = .qword }, .any },
113117 .required_features = .{ .avx, null, null, null },
113118 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
113119 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111546113120 .patterns = &.{
111547 .{ .src = .{ .mem, .none, .none } },
111548 .{ .src = .{ .to_gpr, .none, .none } },
113121 .{ .src = .{ .to_mem, .none, .none } },
111549113122 },
113123 .call_frame = .{ .alignment = .@"16" },
111550113124 .extra_temps = .{
111551 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
111552 .unused,
111553 .unused,
111554 .unused,
113125 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113126 .{ .type = .u32, .kind = .{ .reg = .edi } },
113127 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
113128 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
111555113129 .unused,
111556113130 .unused,
111557113131 .unused,
......@@ -111560,25 +113134,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111560113134 .unused,
111561113135 .unused,
111562113136 },
111563 .dst_temps = .{ .{ .rc = .sse }, .unused },
113137 .dst_temps = .{ .mem, .unused },
113138 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111564113139 .each = .{ .once = &.{
111565 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
111566 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
111567 .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0d, ._, ._ },
113140 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113141 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
113142 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113143 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113144 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113145 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111568113146 } },
111569113147 }, .{
111570 .required_features = .{ .avx, null, null, null },
111571 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
111572 .dst_constraints = .{ .{ .float = .qword }, .any },
113148 .required_features = .{ .sse2, null, null, null },
113149 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
113150 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111573113151 .patterns = &.{
111574 .{ .src = .{ .mem, .none, .none } },
111575 .{ .src = .{ .to_gpr, .none, .none } },
113152 .{ .src = .{ .to_mem, .none, .none } },
111576113153 },
113154 .call_frame = .{ .alignment = .@"16" },
111577113155 .extra_temps = .{
111578 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
111579 .unused,
111580 .unused,
111581 .unused,
113156 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113157 .{ .type = .u32, .kind = .{ .reg = .edi } },
113158 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
113159 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
111582113160 .unused,
111583113161 .unused,
111584113162 .unused,
......@@ -111587,25 +113165,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111587113165 .unused,
111588113166 .unused,
111589113167 },
111590 .dst_temps = .{ .{ .rc = .sse }, .unused },
113168 .dst_temps = .{ .mem, .unused },
113169 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111591113170 .each = .{ .once = &.{
111592 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
111593 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
111594 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
113171 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113172 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
113173 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113174 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113175 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113176 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111595113177 } },
111596113178 }, .{
111597 .required_features = .{ .sse2, null, null, null },
111598 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
111599 .dst_constraints = .{ .{ .float = .qword }, .any },
113179 .required_features = .{ .sse, null, null, null },
113180 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
113181 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111600113182 .patterns = &.{
111601 .{ .src = .{ .mem, .none, .none } },
111602 .{ .src = .{ .to_gpr, .none, .none } },
113183 .{ .src = .{ .to_mem, .none, .none } },
111603113184 },
113185 .call_frame = .{ .alignment = .@"16" },
111604113186 .extra_temps = .{
111605 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
111606 .unused,
111607 .unused,
111608 .unused,
113187 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113188 .{ .type = .u32, .kind = .{ .reg = .edi } },
113189 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
113190 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
111609113191 .unused,
111610113192 .unused,
111611113193 .unused,
......@@ -111614,104 +113196,63 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111614113196 .unused,
111615113197 .unused,
111616113198 },
111617 .dst_temps = .{ .{ .rc = .sse }, .unused },
113199 .dst_temps = .{ .mem, .unused },
113200 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111618113201 .each = .{ .once = &.{
111619 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
111620 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
111621 .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0d, ._, ._ },
113202 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113203 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
113204 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113205 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113206 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113207 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111622113208 } },
111623113209 }, .{
111624113210 .required_features = .{ .avx, null, null, null },
111625 .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any },
111626 .dst_constraints = .{ .{ .float = .qword }, .any },
113211 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
113212 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
111627113213 .patterns = &.{
111628113214 .{ .src = .{ .mem, .none, .none } },
111629 .{ .src = .{ .to_gpr, .none, .none } },
113215 .{ .src = .{ .to_sse, .none, .none } },
111630113216 },
111631 .dst_temps = .{ .{ .rc = .sse }, .unused },
113217 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
111632113218 .each = .{ .once = &.{
111633 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
111634 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .src0d, ._ },
113219 .{ ._, .v_pd, .cvtdq2, .dst0x, .src0q, ._, ._ },
111635113220 } },
111636113221 }, .{
111637113222 .required_features = .{ .sse2, null, null, null },
111638 .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any },
111639 .dst_constraints = .{ .{ .float = .qword }, .any },
113223 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
113224 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
111640113225 .patterns = &.{
111641113226 .{ .src = .{ .mem, .none, .none } },
111642 .{ .src = .{ .to_gpr, .none, .none } },
113227 .{ .src = .{ .to_sse, .none, .none } },
111643113228 },
111644 .dst_temps = .{ .{ .rc = .sse }, .unused },
113229 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
111645113230 .each = .{ .once = &.{
111646 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
111647 .{ ._, ._sd, .cvtsi2, .dst0x, .src0d, ._, ._ },
113231 .{ ._, ._pd, .cvtdq2, .dst0x, .src0q, ._, ._ },
111648113232 } },
111649113233 }, .{
111650 .required_features = .{ .avx, null, null, null },
111651 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any },
111652 .dst_constraints = .{ .{ .float = .qword }, .any },
113234 .required_features = .{ .avx2, null, null, null },
113235 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
113236 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },
111653113237 .patterns = &.{
111654113238 .{ .src = .{ .mem, .none, .none } },
111655 .{ .src = .{ .to_gpr, .none, .none } },
111656 },
111657 .extra_temps = .{
111658 .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
111659 .unused,
111660 .unused,
111661 .unused,
111662 .unused,
111663 .unused,
111664 .unused,
111665 .unused,
111666 .unused,
111667 .unused,
111668 .unused,
113239 .{ .src = .{ .to_sse, .none, .none } },
111669113240 },
111670 .dst_temps = .{ .{ .rc = .sse }, .unused },
113241 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
111671113242 .each = .{ .once = &.{
111672 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
111673 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
111674 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0q, ._ },
113243 .{ ._, .v_pd, .cvtdq2, .dst0y, .src0x, ._, ._ },
111675113244 } },
111676113245 }, .{
111677 .required_features = .{ .sse2, null, null, null },
111678 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any },
111679 .dst_constraints = .{ .{ .float = .qword }, .any },
113246 .required_features = .{ .avx2, null, null, null },
113247 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
113248 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },
111680113249 .patterns = &.{
111681 .{ .src = .{ .mem, .none, .none } },
111682 .{ .src = .{ .to_gpr, .none, .none } },
113250 .{ .src = .{ .to_mem, .none, .none } },
111683113251 },
111684113252 .extra_temps = .{
111685 .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
111686 .unused,
111687 .unused,
111688 .unused,
111689 .unused,
111690 .unused,
111691 .unused,
111692 .unused,
111693 .unused,
111694 .unused,
113253 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113254 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
111695113255 .unused,
111696 },
111697 .dst_temps = .{ .{ .rc = .sse }, .unused },
111698 .each = .{ .once = &.{
111699 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
111700 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
111701 .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0q, ._, ._ },
111702 } },
111703 }, .{
111704 .required_features = .{ .x87, null, null, null },
111705 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
111706 .dst_constraints = .{ .{ .float = .qword }, .any },
111707 .patterns = &.{
111708 .{ .src = .{ .mem, .none, .none } },
111709 .{ .src = .{ .to_gpr, .none, .none } },
111710 },
111711 .extra_temps = .{
111712 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
111713 .{ .type = .i16, .kind = .mem },
111714 .{ .type = .f64, .kind = .{ .reg = .st7 } },
111715113256 .unused,
111716113257 .unused,
111717113258 .unused,
......@@ -111722,24 +113263,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111722113263 .unused,
111723113264 },
111724113265 .dst_temps = .{ .mem, .unused },
113266 .clobbers = .{ .eflags = true },
111725113267 .each = .{ .once = &.{
111726 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
111727 .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ },
111728 .{ ._, .fi_, .ld, .tmp1w, ._, ._, ._ },
111729 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
113268 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113269 .{ .@"0:", .v_pd, .cvtdq2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
113270 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
113271 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
113272 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111730113273 } },
111731113274 }, .{
111732 .required_features = .{ .x87, null, null, null },
111733 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
111734 .dst_constraints = .{ .{ .float = .qword }, .any },
113275 .required_features = .{ .avx, null, null, null },
113276 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
113277 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
111735113278 .patterns = &.{
111736 .{ .src = .{ .mem, .none, .none } },
111737 .{ .src = .{ .to_gpr, .none, .none } },
113279 .{ .src = .{ .to_mem, .none, .none } },
111738113280 },
111739113281 .extra_temps = .{
111740 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
111741 .{ .type = .i16, .kind = .mem },
111742 .{ .type = .f64, .kind = .{ .reg = .st7 } },
113282 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113283 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
113284 .unused,
111743113285 .unused,
111744113286 .unused,
111745113287 .unused,
......@@ -111750,22 +113292,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111750113292 .unused,
111751113293 },
111752113294 .dst_temps = .{ .mem, .unused },
113295 .clobbers = .{ .eflags = true },
111753113296 .each = .{ .once = &.{
111754 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
111755 .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ },
111756 .{ ._, .fi_, .ld, .tmp1w, ._, ._, ._ },
111757 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
113297 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113298 .{ .@"0:", .v_pd, .cvtdq2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
113299 .{ ._, .v_pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
113300 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113301 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111758113302 } },
111759113303 }, .{
111760 .required_features = .{ .x87, null, null, null },
111761 .src_constraints = .{ .{ .signed_or_exclusive_int = .word }, .any, .any },
111762 .dst_constraints = .{ .{ .float = .qword }, .any },
113304 .required_features = .{ .sse2, null, null, null },
113305 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
113306 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
111763113307 .patterns = &.{
111764113308 .{ .src = .{ .to_mem, .none, .none } },
111765113309 },
111766113310 .extra_temps = .{
111767 .{ .type = .f64, .kind = .{ .reg = .st7 } },
111768 .unused,
113311 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113312 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111769113313 .unused,
111770113314 .unused,
111771113315 .unused,
......@@ -111777,23 +113321,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111777113321 .unused,
111778113322 },
111779113323 .dst_temps = .{ .mem, .unused },
113324 .clobbers = .{ .eflags = true },
111780113325 .each = .{ .once = &.{
111781 .{ ._, .fi_, .ld, .src0w, ._, ._, ._ },
111782 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
113326 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113327 .{ .@"0:", ._pd, .cvtdq2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
113328 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
113329 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113330 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111783113331 } },
111784113332 }, .{
111785 .required_features = .{ .x87, null, null, null },
111786 .src_constraints = .{ .{ .exact_unsigned_int = 16 }, .any, .any },
111787 .dst_constraints = .{ .{ .float = .qword }, .any },
113333 .required_features = .{ .avx, null, null, null },
113334 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
113335 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111788113336 .patterns = &.{
111789 .{ .src = .{ .mem, .none, .none } },
111790 .{ .src = .{ .to_gpr, .none, .none } },
113337 .{ .src = .{ .to_mem, .none, .none } },
111791113338 },
113339 .call_frame = .{ .alignment = .@"16" },
111792113340 .extra_temps = .{
111793 .{ .type = .i32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
111794 .{ .type = .i32, .kind = .mem },
111795 .{ .type = .f64, .kind = .{ .reg = .st7 } },
111796 .unused,
113341 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113342 .{ .type = .i32, .kind = .{ .reg = .edi } },
113343 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
113344 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
111797113345 .unused,
111798113346 .unused,
111799113347 .unused,
......@@ -111803,24 +113351,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111803113351 .unused,
111804113352 },
111805113353 .dst_temps = .{ .mem, .unused },
113354 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111806113355 .each = .{ .once = &.{
111807 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
111808 .{ ._, ._, .mov, .tmp1d, .tmp0d, ._, ._ },
111809 .{ ._, .fi_, .ld, .tmp1d, ._, ._, ._ },
111810 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
113356 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113357 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
113358 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113359 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113360 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
113361 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111811113362 } },
111812113363 }, .{
111813 .required_features = .{ .x87, null, null, null },
111814 .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any },
111815 .dst_constraints = .{ .{ .float = .qword }, .any },
113364 .required_features = .{ .sse2, null, null, null },
113365 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
113366 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111816113367 .patterns = &.{
111817113368 .{ .src = .{ .to_mem, .none, .none } },
111818113369 },
113370 .call_frame = .{ .alignment = .@"16" },
111819113371 .extra_temps = .{
111820 .{ .type = .f64, .kind = .{ .reg = .st7 } },
111821 .unused,
111822 .unused,
111823 .unused,
113372 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113373 .{ .type = .i32, .kind = .{ .reg = .edi } },
113374 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
113375 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
111824113376 .unused,
111825113377 .unused,
111826113378 .unused,
......@@ -111830,23 +113382,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111830113382 .unused,
111831113383 },
111832113384 .dst_temps = .{ .mem, .unused },
113385 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111833113386 .each = .{ .once = &.{
111834 .{ ._, .fi_, .ld, .src0d, ._, ._, ._ },
111835 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
113387 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113388 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
113389 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113390 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113391 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
113392 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111836113393 } },
111837113394 }, .{
111838 .required_features = .{ .@"64bit", .x87, null, null },
111839 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any },
111840 .dst_constraints = .{ .{ .float = .qword }, .any },
113395 .required_features = .{ .sse, null, null, null },
113396 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
113397 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111841113398 .patterns = &.{
111842 .{ .src = .{ .mem, .none, .none } },
111843 .{ .src = .{ .to_gpr, .none, .none } },
113399 .{ .src = .{ .to_mem, .none, .none } },
111844113400 },
113401 .call_frame = .{ .alignment = .@"16" },
111845113402 .extra_temps = .{
111846 .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
111847 .{ .type = .i64, .kind = .mem },
111848 .{ .type = .f64, .kind = .{ .reg = .st7 } },
111849 .unused,
113403 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113404 .{ .type = .i32, .kind = .{ .reg = .edi } },
113405 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
113406 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
111850113407 .unused,
111851113408 .unused,
111852113409 .unused,
......@@ -111856,51 +113413,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111856113413 .unused,
111857113414 },
111858113415 .dst_temps = .{ .mem, .unused },
113416 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111859113417 .each = .{ .once = &.{
111860 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
111861 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
111862 .{ ._, .fi_, .ld, .tmp1q, ._, ._, ._ },
111863 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
111864 } },
111865 }, .{
111866 .required_features = .{ .@"64bit", .avx, null, null },
111867 .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any },
111868 .dst_constraints = .{ .{ .float = .qword }, .any },
111869 .patterns = &.{
111870 .{ .src = .{ .mem, .none, .none } },
111871 .{ .src = .{ .to_gpr, .none, .none } },
111872 },
111873 .dst_temps = .{ .{ .rc = .sse }, .unused },
111874 .each = .{ .once = &.{
111875 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
111876 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .src0q, ._ },
111877 } },
111878 }, .{
111879 .required_features = .{ .@"64bit", .sse2, null, null },
111880 .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any },
111881 .dst_constraints = .{ .{ .float = .qword }, .any },
111882 .patterns = &.{
111883 .{ .src = .{ .mem, .none, .none } },
111884 .{ .src = .{ .to_gpr, .none, .none } },
111885 },
111886 .dst_temps = .{ .{ .rc = .sse }, .unused },
111887 .each = .{ .once = &.{
111888 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
111889 .{ ._, ._sd, .cvtsi2, .dst0x, .src0q, ._, ._ },
113418 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113419 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
113420 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113421 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113422 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
113423 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111890113424 } },
111891113425 }, .{
111892 .required_features = .{ .@"64bit", .avx, null, null },
111893 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },
111894 .dst_constraints = .{ .{ .float = .qword }, .any },
113426 .required_features = .{ .avx, null, null, null },
113427 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
113428 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111895113429 .patterns = &.{
111896 .{ .src = .{ .mem, .none, .none } },
111897 .{ .src = .{ .to_gpr, .none, .none } },
113430 .{ .src = .{ .to_mem, .none, .none } },
111898113431 },
113432 .call_frame = .{ .alignment = .@"16" },
111899113433 .extra_temps = .{
111900 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
111901 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
111902 .{ .type = .vector_4_u32, .kind = .u32_0x1p52_hi_0x1p84_hi_0_0_mem },
111903 .{ .type = .vector_2_f64, .kind = .f64_0x1p52_0x1p84_mem },
113434 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113435 .{ .type = .u32, .kind = .{ .reg = .edi } },
113436 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
113437 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
111904113438 .unused,
111905113439 .unused,
111906113440 .unused,
......@@ -111909,29 +113443,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111909113443 .unused,
111910113444 .unused,
111911113445 },
111912 .dst_temps = .{ .{ .rc = .sse }, .unused },
113446 .dst_temps = .{ .mem, .unused },
113447 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111913113448 .each = .{ .once = &.{
111914 .{ ._, .v_q, .mov, .tmp0x, .src0q, ._, ._ },
111915 .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ },
111916 .{ ._, .vp_, .unpckldq, .tmp0x, .tmp0x, .lea(.tmp1x), ._ },
111917 .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ },
111918 .{ ._, .v_pd, .sub, .tmp0x, .tmp0x, .lea(.tmp1x), ._ },
111919 .{ ._, .v_pd, .unpckh, .dst0x, .tmp0x, .tmp0x, ._ },
111920 .{ ._, .v_sd, .add, .dst0x, .dst0x, .tmp0x, ._ },
113449 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113450 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
113451 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113452 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113453 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
113454 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111921113455 } },
111922113456 }, .{
111923 .required_features = .{ .@"64bit", .sse2, null, null },
111924 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },
111925 .dst_constraints = .{ .{ .float = .qword }, .any },
113457 .required_features = .{ .sse2, null, null, null },
113458 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
113459 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111926113460 .patterns = &.{
111927 .{ .src = .{ .mem, .none, .none } },
111928 .{ .src = .{ .to_gpr, .none, .none } },
113461 .{ .src = .{ .to_mem, .none, .none } },
111929113462 },
113463 .call_frame = .{ .alignment = .@"16" },
111930113464 .extra_temps = .{
111931 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
111932 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
111933 .{ .type = .vector_4_u32, .kind = .u32_0x1p52_hi_0x1p84_hi_0_0_mem },
111934 .{ .type = .vector_2_f64, .kind = .f64_0x1p52_0x1p84_mem },
113465 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113466 .{ .type = .u32, .kind = .{ .reg = .edi } },
113467 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
113468 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
111935113469 .unused,
111936113470 .unused,
111937113471 .unused,
......@@ -111940,29 +113474,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111940113474 .unused,
111941113475 .unused,
111942113476 },
111943 .dst_temps = .{ .{ .rc = .sse }, .unused },
113477 .dst_temps = .{ .mem, .unused },
113478 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111944113479 .each = .{ .once = &.{
111945 .{ ._, ._q, .mov, .tmp0x, .src0q, ._, ._ },
111946 .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ },
111947 .{ ._, .p_, .unpckldq, .tmp0x, .lea(.tmp1x), ._, ._ },
111948 .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ },
111949 .{ ._, ._pd, .sub, .tmp0x, .lea(.tmp1x), ._, ._ },
111950 .{ ._, ._pd, .mova, .dst0x, .tmp0x, ._, ._ },
111951 .{ ._, ._pd, .unpckh, .dst0x, .dst0x, ._, ._ },
111952 .{ ._, ._sd, .add, .dst0x, .tmp0x, ._, ._ },
113480 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113481 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
113482 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113483 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113484 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
113485 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111953113486 } },
111954113487 }, .{
111955 .required_features = .{ .x87, null, null, null },
111956 .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any },
111957 .dst_constraints = .{ .{ .float = .qword }, .any },
113488 .required_features = .{ .sse, null, null, null },
113489 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
113490 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111958113491 .patterns = &.{
111959113492 .{ .src = .{ .to_mem, .none, .none } },
111960113493 },
113494 .call_frame = .{ .alignment = .@"16" },
111961113495 .extra_temps = .{
111962 .{ .type = .f64, .kind = .{ .reg = .st7 } },
111963 .unused,
111964 .unused,
111965 .unused,
113496 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113497 .{ .type = .u32, .kind = .{ .reg = .edi } },
113498 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
113499 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
111966113500 .unused,
111967113501 .unused,
111968113502 .unused,
......@@ -111972,20 +113506,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111972113506 .unused,
111973113507 },
111974113508 .dst_temps = .{ .mem, .unused },
113509 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111975113510 .each = .{ .once = &.{
111976 .{ ._, .fi_, .ld, .src0q, ._, ._, ._ },
111977 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
113511 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113512 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
113513 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113514 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113515 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
113516 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111978113517 } },
111979113518 }, .{
111980 .required_features = .{ .@"64bit", .x87, null, null },
111981 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },
111982 .dst_constraints = .{ .{ .float = .qword }, .any },
113519 .required_features = .{ .@"64bit", .avx, null, null },
113520 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
113521 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111983113522 .patterns = &.{
111984 .{ .src = .{ .to_mut_gpr, .none, .none } },
113523 .{ .src = .{ .to_mem, .none, .none } },
111985113524 },
111986113525 .extra_temps = .{
111987 .{ .type = .u1, .kind = .{ .rc = .general_purpose } },
111988 .{ .type = .f64, .kind = .{ .reg = .st7 } },
113526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113527 .{ .type = .f64, .kind = .{ .rc = .sse } },
111989113528 .unused,
111990113529 .unused,
111991113530 .unused,
......@@ -111999,32 +113538,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111999113538 .dst_temps = .{ .mem, .unused },
112000113539 .clobbers = .{ .eflags = true },
112001113540 .each = .{ .once = &.{
112002 .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ },
112003 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
112004 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
112005 .{ ._, ._r, .sh, .src0q, .ui(1), ._, ._ },
112006 .{ ._, ._, .@"and", .tmp0d, .si(1), ._, ._ },
112007 .{ ._, ._, .@"or", .src0q, .tmp0q, ._, ._ },
112008 .{ ._, ._, .mov, .dst0q, .src0q, ._, ._ },
112009 .{ ._, .fi_, .ld, .dst0q, ._, ._, ._ },
112010 .{ ._, .f_, .add, .tmp1t, .tmp1t, ._, ._ },
112011 .{ ._, ._mp, .j, .@"0f", ._, ._, ._ },
112012 .{ .pseudo, .f_cstp, .in, ._, ._, ._, ._ },
112013 .{ .@"1:", ._, .mov, .dst0q, .src0q, ._, ._ },
112014 .{ ._, .fi_, .ld, .dst0q, ._, ._, ._ },
112015 .{ .@"0:", .f_p, .st, .dst0q, ._, ._, ._ },
113541 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113542 .{ .@"0:", .v_pd, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
113543 .{ ._, .v_sd, .cvtsi2, .tmp1x, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._ },
113544 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
113545 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113546 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112016113547 } },
112017113548 }, .{
112018 .required_features = .{ .@"64bit", .sse, null, null },
112019 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
112020 .dst_constraints = .{ .{ .float = .qword }, .any },
113549 .required_features = .{ .@"64bit", .sse2, null, null },
113550 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
113551 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112021113552 .patterns = &.{
112022 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
113553 .{ .src = .{ .to_mem, .none, .none } },
112023113554 },
112024 .call_frame = .{ .alignment = .@"16" },
112025113555 .extra_temps = .{
112026 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },
112027 .unused,
113556 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113557 .{ .type = .f64, .kind = .{ .rc = .sse } },
112028113558 .unused,
112029113559 .unused,
112030113560 .unused,
......@@ -112035,24 +113565,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112035113565 .unused,
112036113566 .unused,
112037113567 },
112038 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
112039 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113568 .dst_temps = .{ .mem, .unused },
113569 .clobbers = .{ .eflags = true },
112040113570 .each = .{ .once = &.{
112041 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
113571 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113572 .{ .@"0:", ._pd, .xor, .tmp1x, .tmp1x, ._, ._ },
113573 .{ ._, ._sd, .cvtsi2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
113574 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
113575 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113576 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112042113577 } },
112043113578 }, .{
112044 .required_features = .{ .@"64bit", .sse, null, null },
112045 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
112046 .dst_constraints = .{ .{ .float = .qword }, .any },
113579 .required_features = .{ .@"64bit", .avx, null, null },
113580 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
113581 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112047113582 .patterns = &.{
112048 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
113583 .{ .src = .{ .to_mem, .none, .none } },
112049113584 },
112050113585 .call_frame = .{ .alignment = .@"16" },
112051113586 .extra_temps = .{
112052 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },
112053 .unused,
112054 .unused,
112055 .unused,
113587 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113588 .{ .type = .i64, .kind = .{ .reg = .rdi } },
113589 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdidf" } } },
113590 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112056113591 .unused,
112057113592 .unused,
112058113593 .unused,
......@@ -112061,24 +113596,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112061113596 .unused,
112062113597 .unused,
112063113598 },
112064 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113599 .dst_temps = .{ .mem, .unused },
112065113600 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112066113601 .each = .{ .once = &.{
112067 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
113602 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113603 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
113604 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113605 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113606 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113607 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112068113608 } },
112069113609 }, .{
112070 .required_features = .{ .@"64bit", .sse, null, null },
112071 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
112072 .dst_constraints = .{ .{ .float = .qword }, .any },
113610 .required_features = .{ .@"64bit", .sse2, null, null },
113611 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
113612 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112073113613 .patterns = &.{
112074113614 .{ .src = .{ .to_mem, .none, .none } },
112075113615 },
112076113616 .call_frame = .{ .alignment = .@"16" },
112077113617 .extra_temps = .{
112078 .{ .type = .usize, .kind = .{ .reg = .rdi } },
112079 .{ .type = .usize, .kind = .{ .reg = .rsi } },
112080 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },
112081 .unused,
113618 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113619 .{ .type = .i64, .kind = .{ .reg = .rdi } },
113620 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdidf" } } },
113621 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112082113622 .unused,
112083113623 .unused,
112084113624 .unused,
......@@ -112087,26 +113627,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112087113627 .unused,
112088113628 .unused,
112089113629 },
112090 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113630 .dst_temps = .{ .mem, .unused },
112091113631 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112092113632 .each = .{ .once = &.{
112093 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
112094 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
113633 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113634 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
112095113635 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113636 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113637 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113638 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112096113639 } },
112097113640 }, .{
112098113641 .required_features = .{ .@"64bit", .sse, null, null },
112099 .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
112100 .dst_constraints = .{ .{ .float = .qword }, .any },
113642 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
113643 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112101113644 .patterns = &.{
112102113645 .{ .src = .{ .to_mem, .none, .none } },
112103113646 },
112104113647 .call_frame = .{ .alignment = .@"16" },
112105113648 .extra_temps = .{
112106 .{ .type = .usize, .kind = .{ .reg = .rdi } },
112107 .{ .type = .usize, .kind = .{ .reg = .rsi } },
112108 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },
112109 .unused,
113649 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113650 .{ .type = .i64, .kind = .{ .reg = .rdi } },
113651 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdidf" } } },
113652 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112110113653 .unused,
112111113654 .unused,
112112113655 .unused,
......@@ -112115,103 +113658,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112115113658 .unused,
112116113659 .unused,
112117113660 },
112118 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113661 .dst_temps = .{ .mem, .unused },
112119113662 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112120113663 .each = .{ .once = &.{
112121 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
112122 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
113664 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113665 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
112123113666 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113667 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113668 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113669 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112124113670 } },
112125113671 }, .{
112126 .required_features = .{ .avx, null, null, null },
112127 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
112128 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
112129 .patterns = &.{
112130 .{ .src = .{ .mem, .none, .none } },
112131 .{ .src = .{ .to_sse, .none, .none } },
112132 },
112133 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
112134 .each = .{ .once = &.{
112135 .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ },
112136 .{ ._, .v_pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },
112137 } },
112138 }, .{
112139 .required_features = .{ .sse4_1, null, null, null },
112140 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
112141 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
112142 .patterns = &.{
112143 .{ .src = .{ .mem, .none, .none } },
112144 .{ .src = .{ .to_sse, .none, .none } },
112145 },
112146 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
112147 .each = .{ .once = &.{
112148 .{ ._, .p_d, .movsxb, .dst0x, .src0d, ._, ._ },
112149 .{ ._, ._pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },
112150 } },
112151 }, .{
112152 .required_features = .{ .avx2, null, null, null },
112153 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
112154 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },
112155 .patterns = &.{
112156 .{ .src = .{ .mem, .none, .none } },
112157 .{ .src = .{ .to_sse, .none, .none } },
112158 },
112159 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
112160 .each = .{ .once = &.{
112161 .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ },
112162 .{ ._, .v_pd, .cvtdq2, .dst0y, .dst0x, ._, ._ },
112163 } },
112164 }, .{
112165 .required_features = .{ .avx, null, null, null },
112166 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .word, .is = .byte } }, .any, .any },
112167 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
112168 .patterns = &.{
112169 .{ .src = .{ .mem, .none, .none } },
112170 .{ .src = .{ .to_sse, .none, .none } },
112171 },
112172 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
112173 .each = .{ .once = &.{
112174 .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ },
112175 .{ ._, .v_pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },
112176 } },
112177 }, .{
112178 .required_features = .{ .sse4_1, null, null, null },
112179 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .word, .is = .byte } }, .any, .any },
112180 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
112181 .patterns = &.{
112182 .{ .src = .{ .mem, .none, .none } },
112183 .{ .src = .{ .to_sse, .none, .none } },
112184 },
112185 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
112186 .each = .{ .once = &.{
112187 .{ ._, .p_d, .movzxb, .dst0x, .src0d, ._, ._ },
112188 .{ ._, ._pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },
112189 } },
112190 }, .{
112191 .required_features = .{ .avx2, null, null, null },
112192 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },
112193 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },
112194 .patterns = &.{
112195 .{ .src = .{ .mem, .none, .none } },
112196 .{ .src = .{ .to_sse, .none, .none } },
112197 },
112198 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
112199 .each = .{ .once = &.{
112200 .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ },
112201 .{ ._, .v_pd, .cvtdq2, .dst0y, .dst0x, ._, ._ },
112202 } },
112203 }, .{
112204 .required_features = .{ .avx2, null, null, null },
112205 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
112206 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },
113672 .required_features = .{ .@"64bit", .avx, null, null },
113673 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
113674 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112207113675 .patterns = &.{
112208113676 .{ .src = .{ .to_mem, .none, .none } },
112209113677 },
113678 .call_frame = .{ .alignment = .@"16" },
112210113679 .extra_temps = .{
112211113680 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112212 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
112213 .unused,
112214 .unused,
113681 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113682 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundidf" } } },
113683 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112215113684 .unused,
112216113685 .unused,
112217113686 .unused,
......@@ -112221,27 +113690,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112221113690 .unused,
112222113691 },
112223113692 .dst_temps = .{ .mem, .unused },
112224 .clobbers = .{ .eflags = true },
113693 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112225113694 .each = .{ .once = &.{
112226113695 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112227 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
112228 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },
112229 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
112230 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
113696 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
113697 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113698 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113699 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
112231113700 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112232113701 } },
112233113702 }, .{
112234 .required_features = .{ .avx, null, null, null },
112235 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
112236 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
113703 .required_features = .{ .@"64bit", .sse2, null, null },
113704 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
113705 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112237113706 .patterns = &.{
112238113707 .{ .src = .{ .to_mem, .none, .none } },
112239113708 },
113709 .call_frame = .{ .alignment = .@"16" },
112240113710 .extra_temps = .{
112241113711 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112242 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
112243 .unused,
112244 .unused,
113712 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113713 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundidf" } } },
113714 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112245113715 .unused,
112246113716 .unused,
112247113717 .unused,
......@@ -112251,29 +113721,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112251113721 .unused,
112252113722 },
112253113723 .dst_temps = .{ .mem, .unused },
112254 .clobbers = .{ .eflags = true },
113724 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112255113725 .each = .{ .once = &.{
112256113726 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112257 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
112258 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
112259 .{ ._, .vp_d, .movsxb, .tmp1x, .tmp1d, ._, ._ },
112260 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
112261 .{ ._, .v_pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112262 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113727 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
113728 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113729 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113730 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
112263113731 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112264113732 } },
112265113733 }, .{
112266 .required_features = .{ .sse4_1, null, null, null },
112267 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
112268 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
113734 .required_features = .{ .@"64bit", .sse, null, null },
113735 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
113736 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112269113737 .patterns = &.{
112270113738 .{ .src = .{ .to_mem, .none, .none } },
112271113739 },
113740 .call_frame = .{ .alignment = .@"16" },
112272113741 .extra_temps = .{
112273113742 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112274 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
112275 .unused,
112276 .unused,
113743 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113744 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundidf" } } },
113745 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112277113746 .unused,
112278113747 .unused,
112279113748 .unused,
......@@ -112283,30 +113752,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112283113752 .unused,
112284113753 },
112285113754 .dst_temps = .{ .mem, .unused },
112286 .clobbers = .{ .eflags = true },
113755 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112287113756 .each = .{ .once = &.{
112288113757 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112289 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
112290 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
112291 .{ ._, .p_d, .movsxb, .tmp1x, .tmp1d, ._, ._ },
112292 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
112293 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112294 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113758 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
113759 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113760 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113761 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
112295113762 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112296113763 } },
112297113764 }, .{
112298 .required_features = .{ .avx2, null, null, null },
112299 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },
112300 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },
113765 .required_features = .{ .@"64bit", .avx, null, null },
113766 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
113767 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112301113768 .patterns = &.{
112302113769 .{ .src = .{ .to_mem, .none, .none } },
112303113770 },
113771 .call_frame = .{ .alignment = .@"16" },
112304113772 .extra_temps = .{
112305113773 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112306 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
112307 .unused,
112308 .unused,
112309 .unused,
113774 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113775 .{ .type = .i64, .kind = .{ .reg = .rsi } },
113776 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },
113777 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112310113778 .unused,
112311113779 .unused,
112312113780 .unused,
......@@ -112315,28 +113783,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112315113783 .unused,
112316113784 },
112317113785 .dst_temps = .{ .mem, .unused },
112318 .clobbers = .{ .eflags = true },
113786 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112319113787 .each = .{ .once = &.{
112320 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112321 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
112322 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },
112323 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
112324 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
113788 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
113789 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
113790 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },
113791 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
113792 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
113793 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
112325113794 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112326113795 } },
112327113796 }, .{
112328 .required_features = .{ .avx, null, null, null },
112329 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .byte } }, .any, .any },
112330 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
113797 .required_features = .{ .@"64bit", .sse2, null, null },
113798 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
113799 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112331113800 .patterns = &.{
112332113801 .{ .src = .{ .to_mem, .none, .none } },
112333113802 },
113803 .call_frame = .{ .alignment = .@"16" },
112334113804 .extra_temps = .{
112335113805 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112336 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
112337 .unused,
112338 .unused,
112339 .unused,
113806 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113807 .{ .type = .i64, .kind = .{ .reg = .rsi } },
113808 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },
113809 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112340113810 .unused,
112341113811 .unused,
112342113812 .unused,
......@@ -112345,30 +113815,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112345113815 .unused,
112346113816 },
112347113817 .dst_temps = .{ .mem, .unused },
112348 .clobbers = .{ .eflags = true },
113818 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112349113819 .each = .{ .once = &.{
112350 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112351 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
112352 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
112353 .{ ._, .vp_d, .movzxb, .tmp1x, .tmp1d, ._, ._ },
112354 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
112355 .{ ._, .v_pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112356 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113820 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
113821 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
113822 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },
113823 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
113824 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
113825 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
112357113826 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112358113827 } },
112359113828 }, .{
112360 .required_features = .{ .sse4_1, null, null, null },
112361 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .byte } }, .any, .any },
112362 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
113829 .required_features = .{ .@"64bit", .sse, null, null },
113830 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
113831 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112363113832 .patterns = &.{
112364113833 .{ .src = .{ .to_mem, .none, .none } },
112365113834 },
113835 .call_frame = .{ .alignment = .@"16" },
112366113836 .extra_temps = .{
112367113837 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112368 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
112369 .unused,
112370 .unused,
112371 .unused,
113838 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113839 .{ .type = .i64, .kind = .{ .reg = .rsi } },
113840 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },
113841 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112372113842 .unused,
112373113843 .unused,
112374113844 .unused,
......@@ -112377,20 +113847,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112377113847 .unused,
112378113848 },
112379113849 .dst_temps = .{ .mem, .unused },
112380 .clobbers = .{ .eflags = true },
113850 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112381113851 .each = .{ .once = &.{
112382 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112383 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
112384 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
112385 .{ ._, .p_d, .movzxb, .tmp1x, .tmp1d, ._, ._ },
112386 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
112387 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112388 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113852 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
113853 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
113854 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },
113855 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
113856 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
113857 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
112389113858 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112390113859 } },
112391113860 }, .{
112392 .required_features = .{ .avx, .slow_incdec, null, null },
112393 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
113861 .required_features = .{ .@"64bit", .avx, null, null },
113862 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
112394113863 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112395113864 .patterns = &.{
112396113865 .{ .src = .{ .to_mem, .none, .none } },
......@@ -112398,8 +113867,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112398113867 .call_frame = .{ .alignment = .@"16" },
112399113868 .extra_temps = .{
112400113869 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112401 .{ .type = .i32, .kind = .{ .reg = .edi } },
112402 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
113870 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113871 .{ .type = .u64, .kind = .{ .reg = .rsi } },
113872 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },
112403113873 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112404113874 .unused,
112405113875 .unused,
......@@ -112407,21 +113877,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112407113877 .unused,
112408113878 .unused,
112409113879 .unused,
112410 .unused,
112411113880 },
112412113881 .dst_temps = .{ .mem, .unused },
112413113882 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112414113883 .each = .{ .once = &.{
112415 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112416 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112417 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112418 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112419 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
113884 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
113885 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
113886 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },
113887 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
113888 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
113889 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
112420113890 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112421113891 } },
112422113892 }, .{
112423 .required_features = .{ .avx, null, null, null },
112424 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
113893 .required_features = .{ .@"64bit", .sse2, null, null },
113894 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
112425113895 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112426113896 .patterns = &.{
112427113897 .{ .src = .{ .to_mem, .none, .none } },
......@@ -112429,8 +113899,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112429113899 .call_frame = .{ .alignment = .@"16" },
112430113900 .extra_temps = .{
112431113901 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112432 .{ .type = .i32, .kind = .{ .reg = .edi } },
112433 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
113902 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113903 .{ .type = .u64, .kind = .{ .reg = .rsi } },
113904 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },
112434113905 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112435113906 .unused,
112436113907 .unused,
......@@ -112438,21 +113909,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112438113909 .unused,
112439113910 .unused,
112440113911 .unused,
112441 .unused,
112442113912 },
112443113913 .dst_temps = .{ .mem, .unused },
112444113914 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112445113915 .each = .{ .once = &.{
112446 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112447 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112448 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112449 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112450 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
112451 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
113916 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
113917 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
113918 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },
113919 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
113920 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
113921 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113922 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112452113923 } },
112453113924 }, .{
112454 .required_features = .{ .sse2, .slow_incdec, null, null },
112455 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
113925 .required_features = .{ .@"64bit", .sse, null, null },
113926 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
112456113927 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112457113928 .patterns = &.{
112458113929 .{ .src = .{ .to_mem, .none, .none } },
......@@ -112460,8 +113931,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112460113931 .call_frame = .{ .alignment = .@"16" },
112461113932 .extra_temps = .{
112462113933 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112463 .{ .type = .i32, .kind = .{ .reg = .edi } },
112464 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
113934 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113935 .{ .type = .u64, .kind = .{ .reg = .rsi } },
113936 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },
112465113937 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112466113938 .unused,
112467113939 .unused,
......@@ -112469,217 +113941,235 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112469113941 .unused,
112470113942 .unused,
112471113943 .unused,
112472 .unused,
112473113944 },
112474113945 .dst_temps = .{ .mem, .unused },
112475113946 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112476113947 .each = .{ .once = &.{
112477 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112478 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112479 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112480 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112481 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
113948 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
113949 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
113950 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },
113951 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
113952 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
113953 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
112482113954 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112483113955 } },
112484113956 }, .{
112485 .required_features = .{ .sse2, null, null, null },
112486 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
113957 .required_features = .{ .@"64bit", .avx, null, null },
113958 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
112487113959 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112488113960 .patterns = &.{
112489113961 .{ .src = .{ .to_mem, .none, .none } },
112490113962 },
112491113963 .call_frame = .{ .alignment = .@"16" },
112492113964 .extra_temps = .{
113965 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
112493113966 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112494 .{ .type = .i32, .kind = .{ .reg = .edi } },
112495 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
113967 .{ .type = .usize, .kind = .{ .reg = .rdi } },
113968 .{ .type = .usize, .kind = .{ .reg = .rsi } },
113969 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },
112496113970 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112497113971 .unused,
112498113972 .unused,
112499113973 .unused,
112500113974 .unused,
112501113975 .unused,
112502 .unused,
112503 .unused,
112504113976 },
112505113977 .dst_temps = .{ .mem, .unused },
112506113978 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112507113979 .each = .{ .once = &.{
112508 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112509 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112510 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112511 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112512 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
112513 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
113980 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
113981 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
113982 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
113983 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
113984 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
113985 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
113986 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
113987 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },
113988 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112514113989 } },
112515113990 }, .{
112516 .required_features = .{ .sse, .slow_incdec, null, null },
112517 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
113991 .required_features = .{ .@"64bit", .sse2, null, null },
113992 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
112518113993 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112519113994 .patterns = &.{
112520113995 .{ .src = .{ .to_mem, .none, .none } },
112521113996 },
112522113997 .call_frame = .{ .alignment = .@"16" },
112523113998 .extra_temps = .{
113999 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
112524114000 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112525 .{ .type = .i32, .kind = .{ .reg = .edi } },
112526 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
114001 .{ .type = .usize, .kind = .{ .reg = .rdi } },
114002 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114003 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },
112527114004 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112528114005 .unused,
112529114006 .unused,
112530114007 .unused,
112531114008 .unused,
112532114009 .unused,
112533 .unused,
112534 .unused,
112535114010 },
112536114011 .dst_temps = .{ .mem, .unused },
112537114012 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112538114013 .each = .{ .once = &.{
112539 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112540 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112541 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112542 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112543 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
114014 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
114015 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
114016 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
114017 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
114018 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
114019 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
114020 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
114021 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },
112544114022 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112545114023 } },
112546114024 }, .{
112547 .required_features = .{ .sse, null, null, null },
112548 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114025 .required_features = .{ .@"64bit", .sse, null, null },
114026 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
112549114027 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112550114028 .patterns = &.{
112551114029 .{ .src = .{ .to_mem, .none, .none } },
112552114030 },
112553114031 .call_frame = .{ .alignment = .@"16" },
112554114032 .extra_temps = .{
114033 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
112555114034 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112556 .{ .type = .i32, .kind = .{ .reg = .edi } },
112557 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
114035 .{ .type = .usize, .kind = .{ .reg = .rdi } },
114036 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114037 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },
112558114038 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112559114039 .unused,
112560114040 .unused,
112561114041 .unused,
112562114042 .unused,
112563114043 .unused,
112564 .unused,
112565 .unused,
112566114044 },
112567114045 .dst_temps = .{ .mem, .unused },
112568114046 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112569114047 .each = .{ .once = &.{
112570 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112571 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112572 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112573 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112574 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
112575 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
114048 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
114049 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
114050 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
114051 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
114052 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
114053 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
114054 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
114055 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },
114056 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112576114057 } },
112577114058 }, .{
112578 .required_features = .{ .avx, .slow_incdec, null, null },
112579 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114059 .required_features = .{ .@"64bit", .avx, null, null },
114060 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
112580114061 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112581114062 .patterns = &.{
112582114063 .{ .src = .{ .to_mem, .none, .none } },
112583114064 },
112584114065 .call_frame = .{ .alignment = .@"16" },
112585114066 .extra_temps = .{
114067 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
112586114068 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112587 .{ .type = .u32, .kind = .{ .reg = .edi } },
112588 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
114069 .{ .type = .usize, .kind = .{ .reg = .rdi } },
114070 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114071 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },
112589114072 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112590114073 .unused,
112591114074 .unused,
112592114075 .unused,
112593114076 .unused,
112594114077 .unused,
112595 .unused,
112596 .unused,
112597114078 },
112598114079 .dst_temps = .{ .mem, .unused },
112599114080 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112600114081 .each = .{ .once = &.{
112601 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112602 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112603 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112604 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112605 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
114082 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
114083 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
114084 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
114085 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
114086 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
114087 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
114088 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
114089 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },
112606114090 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112607114091 } },
112608114092 }, .{
112609 .required_features = .{ .avx, null, null, null },
112610 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114093 .required_features = .{ .@"64bit", .sse2, null, null },
114094 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
112611114095 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112612114096 .patterns = &.{
112613114097 .{ .src = .{ .to_mem, .none, .none } },
112614114098 },
112615114099 .call_frame = .{ .alignment = .@"16" },
112616114100 .extra_temps = .{
114101 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
112617114102 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112618 .{ .type = .u32, .kind = .{ .reg = .edi } },
112619 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
114103 .{ .type = .usize, .kind = .{ .reg = .rdi } },
114104 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114105 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },
112620114106 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112621114107 .unused,
112622114108 .unused,
112623114109 .unused,
112624114110 .unused,
112625114111 .unused,
112626 .unused,
112627 .unused,
112628114112 },
112629114113 .dst_temps = .{ .mem, .unused },
112630114114 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112631114115 .each = .{ .once = &.{
112632 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112633 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112634 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112635 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112636 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
112637 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
114116 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
114117 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
114118 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
114119 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
114120 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
114121 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
114122 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
114123 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },
114124 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112638114125 } },
112639114126 }, .{
112640 .required_features = .{ .sse2, .slow_incdec, null, null },
112641 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114127 .required_features = .{ .@"64bit", .sse, null, null },
114128 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
112642114129 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112643114130 .patterns = &.{
112644114131 .{ .src = .{ .to_mem, .none, .none } },
112645114132 },
112646114133 .call_frame = .{ .alignment = .@"16" },
112647114134 .extra_temps = .{
114135 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
112648114136 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112649 .{ .type = .u32, .kind = .{ .reg = .edi } },
112650 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
114137 .{ .type = .usize, .kind = .{ .reg = .rdi } },
114138 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114139 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },
112651114140 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112652114141 .unused,
112653114142 .unused,
112654114143 .unused,
112655114144 .unused,
112656114145 .unused,
112657 .unused,
112658 .unused,
112659114146 },
112660114147 .dst_temps = .{ .mem, .unused },
112661114148 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112662114149 .each = .{ .once = &.{
112663 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112664 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112665 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112666 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112667 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
114150 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
114151 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
114152 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
114153 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
114154 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
114155 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
114156 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
114157 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },
112668114158 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112669114159 } },
112670114160 }, .{
112671 .required_features = .{ .sse2, null, null, null },
112672 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
112673 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
114161 .required_features = .{ .x87, null, null, null },
114162 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
114163 .dst_constraints = .{ .{ .float = .tbyte }, .any },
112674114164 .patterns = &.{
112675 .{ .src = .{ .to_mem, .none, .none } },
114165 .{ .src = .{ .mem, .none, .none } },
114166 .{ .src = .{ .to_gpr, .none, .none } },
112676114167 },
112677 .call_frame = .{ .alignment = .@"16" },
112678114168 .extra_temps = .{
112679 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112680 .{ .type = .u32, .kind = .{ .reg = .edi } },
112681 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
112682 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114169 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
114170 .{ .type = .i16, .kind = .mem },
114171 .{ .type = .f80, .kind = .{ .reg = .st7 } },
114172 .unused,
112683114173 .unused,
112684114174 .unused,
112685114175 .unused,
......@@ -112688,29 +114178,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112688114178 .unused,
112689114179 .unused,
112690114180 },
112691 .dst_temps = .{ .mem, .unused },
112692 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114181 .dst_temps = .{ .{ .rc = .x87 }, .unused },
112693114182 .each = .{ .once = &.{
112694 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112695 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112696 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112697 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112698 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
112699 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
114183 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
114184 .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ },
114185 .{ ._, .fi_, .ld, .tmp1w, ._, ._, ._ },
114186 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
112700114187 } },
112701114188 }, .{
112702 .required_features = .{ .sse, .slow_incdec, null, null },
112703 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
112704 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
114189 .required_features = .{ .x87, null, null, null },
114190 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
114191 .dst_constraints = .{ .{ .float = .tbyte }, .any },
112705114192 .patterns = &.{
112706 .{ .src = .{ .to_mem, .none, .none } },
114193 .{ .src = .{ .mem, .none, .none } },
114194 .{ .src = .{ .to_gpr, .none, .none } },
112707114195 },
112708 .call_frame = .{ .alignment = .@"16" },
112709114196 .extra_temps = .{
112710 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112711 .{ .type = .u32, .kind = .{ .reg = .edi } },
112712 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
112713 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114197 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
114198 .{ .type = .i16, .kind = .mem },
114199 .{ .type = .f80, .kind = .{ .reg = .st7 } },
114200 .unused,
112714114201 .unused,
112715114202 .unused,
112716114203 .unused,
......@@ -112719,29 +114206,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112719114206 .unused,
112720114207 .unused,
112721114208 },
112722 .dst_temps = .{ .mem, .unused },
112723 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114209 .dst_temps = .{ .{ .rc = .x87 }, .unused },
112724114210 .each = .{ .once = &.{
112725 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112726 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112727 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112728 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112729 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
112730 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114211 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
114212 .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ },
114213 .{ ._, .fi_, .ld, .tmp1w, ._, ._, ._ },
114214 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
112731114215 } },
112732114216 }, .{
112733 .required_features = .{ .sse, null, null, null },
112734 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
112735 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
114217 .required_features = .{ .x87, null, null, null },
114218 .src_constraints = .{ .{ .signed_or_exclusive_int = .word }, .any, .any },
114219 .dst_constraints = .{ .{ .float = .tbyte }, .any },
112736114220 .patterns = &.{
112737114221 .{ .src = .{ .to_mem, .none, .none } },
112738114222 },
112739 .call_frame = .{ .alignment = .@"16" },
112740114223 .extra_temps = .{
112741 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112742 .{ .type = .u32, .kind = .{ .reg = .edi } },
112743 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
112744 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114224 .{ .type = .f80, .kind = .{ .reg = .st7 } },
114225 .unused,
114226 .unused,
114227 .unused,
112745114228 .unused,
112746114229 .unused,
112747114230 .unused,
......@@ -112750,104 +114233,184 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112750114233 .unused,
112751114234 .unused,
112752114235 },
112753 .dst_temps = .{ .mem, .unused },
112754 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114236 .dst_temps = .{ .{ .rc = .x87 }, .unused },
112755114237 .each = .{ .once = &.{
112756 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112757 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112758 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112759 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112760 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
112761 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
114238 .{ ._, .fi_, .ld, .src0w, ._, ._, ._ },
114239 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
112762114240 } },
112763114241 }, .{
112764 .required_features = .{ .avx, null, null, null },
112765 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
112766 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
114242 .required_features = .{ .x87, null, null, null },
114243 .src_constraints = .{ .{ .exact_unsigned_int = 16 }, .any, .any },
114244 .dst_constraints = .{ .{ .float = .tbyte }, .any },
112767114245 .patterns = &.{
112768114246 .{ .src = .{ .mem, .none, .none } },
112769 .{ .src = .{ .to_sse, .none, .none } },
114247 .{ .src = .{ .to_gpr, .none, .none } },
112770114248 },
112771 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
114249 .extra_temps = .{
114250 .{ .type = .i32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
114251 .{ .type = .i32, .kind = .mem },
114252 .{ .type = .f80, .kind = .{ .reg = .st7 } },
114253 .unused,
114254 .unused,
114255 .unused,
114256 .unused,
114257 .unused,
114258 .unused,
114259 .unused,
114260 .unused,
114261 },
114262 .dst_temps = .{ .{ .rc = .x87 }, .unused },
112772114263 .each = .{ .once = &.{
112773 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },
112774 .{ ._, .v_pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },
114264 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
114265 .{ ._, ._, .mov, .tmp1d, .tmp0d, ._, ._ },
114266 .{ ._, .fi_, .ld, .tmp1d, ._, ._, ._ },
114267 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
112775114268 } },
112776114269 }, .{
112777 .required_features = .{ .sse4_1, null, null, null },
112778 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
112779 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
114270 .required_features = .{ .x87, null, null, null },
114271 .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any },
114272 .dst_constraints = .{ .{ .float = .tbyte }, .any },
112780114273 .patterns = &.{
112781 .{ .src = .{ .mem, .none, .none } },
112782 .{ .src = .{ .to_sse, .none, .none } },
114274 .{ .src = .{ .to_mem, .none, .none } },
112783114275 },
112784 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
114276 .extra_temps = .{
114277 .{ .type = .f80, .kind = .{ .reg = .st7 } },
114278 .unused,
114279 .unused,
114280 .unused,
114281 .unused,
114282 .unused,
114283 .unused,
114284 .unused,
114285 .unused,
114286 .unused,
114287 .unused,
114288 },
114289 .dst_temps = .{ .{ .rc = .x87 }, .unused },
112785114290 .each = .{ .once = &.{
112786 .{ ._, .p_d, .movsxw, .dst0x, .src0q, ._, ._ },
112787 .{ ._, ._pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },
114291 .{ ._, .fi_, .ld, .src0d, ._, ._, ._ },
114292 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
112788114293 } },
112789114294 }, .{
112790 .required_features = .{ .avx2, null, null, null },
112791 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
112792 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },
114295 .required_features = .{ .@"64bit", .x87, null, null },
114296 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any },
114297 .dst_constraints = .{ .{ .float = .tbyte }, .any },
112793114298 .patterns = &.{
112794114299 .{ .src = .{ .mem, .none, .none } },
112795 .{ .src = .{ .to_sse, .none, .none } },
114300 .{ .src = .{ .to_gpr, .none, .none } },
112796114301 },
112797 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
114302 .extra_temps = .{
114303 .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
114304 .{ .type = .i64, .kind = .mem },
114305 .{ .type = .f80, .kind = .{ .reg = .st7 } },
114306 .unused,
114307 .unused,
114308 .unused,
114309 .unused,
114310 .unused,
114311 .unused,
114312 .unused,
114313 .unused,
114314 },
114315 .dst_temps = .{ .{ .rc = .x87 }, .unused },
112798114316 .each = .{ .once = &.{
112799 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },
112800 .{ ._, .v_pd, .cvtdq2, .dst0y, .dst0x, ._, ._ },
114317 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
114318 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
114319 .{ ._, .fi_, .ld, .tmp1q, ._, ._, ._ },
114320 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
112801114321 } },
112802114322 }, .{
112803 .required_features = .{ .avx, null, null, null },
112804 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any, .any },
112805 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
114323 .required_features = .{ .x87, null, null, null },
114324 .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any },
114325 .dst_constraints = .{ .{ .float = .tbyte }, .any },
112806114326 .patterns = &.{
112807 .{ .src = .{ .mem, .none, .none } },
112808 .{ .src = .{ .to_sse, .none, .none } },
114327 .{ .src = .{ .to_mem, .none, .none } },
112809114328 },
112810 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
114329 .extra_temps = .{
114330 .{ .type = .f80, .kind = .{ .reg = .st7 } },
114331 .unused,
114332 .unused,
114333 .unused,
114334 .unused,
114335 .unused,
114336 .unused,
114337 .unused,
114338 .unused,
114339 .unused,
114340 .unused,
114341 },
114342 .dst_temps = .{ .{ .rc = .x87 }, .unused },
112811114343 .each = .{ .once = &.{
112812 .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ },
112813 .{ ._, .v_pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },
114344 .{ ._, .fi_, .ld, .src0q, ._, ._, ._ },
114345 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
112814114346 } },
112815114347 }, .{
112816 .required_features = .{ .sse4_1, null, null, null },
112817 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any, .any },
112818 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
114348 .required_features = .{ .x87, null, null, null },
114349 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },
114350 .dst_constraints = .{ .{ .float = .tbyte }, .any },
112819114351 .patterns = &.{
112820 .{ .src = .{ .mem, .none, .none } },
112821 .{ .src = .{ .to_sse, .none, .none } },
114352 .{ .src = .{ .to_mem, .none, .none } },
112822114353 },
112823 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
114354 .extra_temps = .{
114355 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114356 .{ .type = .u1, .kind = .{ .rc = .general_purpose } },
114357 .{ .type = .vector_2_f32, .kind = .f32_0_0x1p64_mem },
114358 .{ .type = .f80, .kind = .{ .reg = .st7 } },
114359 .unused,
114360 .unused,
114361 .unused,
114362 .unused,
114363 .unused,
114364 .unused,
114365 .unused,
114366 },
114367 .dst_temps = .{ .{ .rc = .x87 }, .unused },
114368 .clobbers = .{ .eflags = true },
112824114369 .each = .{ .once = &.{
112825 .{ ._, .p_d, .movzxw, .dst0x, .src0q, ._, ._ },
112826 .{ ._, ._pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },
114370 .{ ._, .fi_, .ld, .src0q, ._, ._, ._ },
114371 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
114372 .{ ._, ._, .mov, .tmp1d, .memd(.src0d, 4), ._, ._ },
114373 .{ ._, ._r, .sh, .tmp1d, .ui(31), ._, ._ },
114374 .{ ._, .f_, .add, .leasi(.tmp0d, .@"4", .tmp1), ._, ._, ._ },
114375 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
112827114376 } },
112828114377 }, .{
112829 .required_features = .{ .avx2, null, null, null },
112830 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },
112831 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },
114378 .required_features = .{ .@"64bit", .sse, null, null },
114379 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
114380 .dst_constraints = .{ .{ .float = .tbyte }, .any },
112832114381 .patterns = &.{
112833 .{ .src = .{ .mem, .none, .none } },
112834 .{ .src = .{ .to_sse, .none, .none } },
114382 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
112835114383 },
112836 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
114384 .call_frame = .{ .alignment = .@"16" },
114385 .extra_temps = .{
114386 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattixf" } } },
114387 .unused,
114388 .unused,
114389 .unused,
114390 .unused,
114391 .unused,
114392 .unused,
114393 .unused,
114394 .unused,
114395 .unused,
114396 .unused,
114397 },
114398 .dst_temps = .{ .{ .reg = .st0 }, .unused },
114399 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112837114400 .each = .{ .once = &.{
112838 .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ },
112839 .{ ._, .v_pd, .cvtdq2, .dst0y, .dst0x, ._, ._ },
114401 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
112840114402 } },
112841114403 }, .{
112842 .required_features = .{ .avx2, null, null, null },
112843 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
112844 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },
114404 .required_features = .{ .@"64bit", .sse, null, null },
114405 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
114406 .dst_constraints = .{ .{ .float = .tbyte }, .any },
112845114407 .patterns = &.{
112846 .{ .src = .{ .to_mem, .none, .none } },
114408 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
112847114409 },
114410 .call_frame = .{ .alignment = .@"16" },
112848114411 .extra_temps = .{
112849 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112850 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
114412 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntixf" } } },
114413 .unused,
112851114414 .unused,
112852114415 .unused,
112853114416 .unused,
......@@ -112858,27 +114421,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112858114421 .unused,
112859114422 .unused,
112860114423 },
112861 .dst_temps = .{ .mem, .unused },
112862 .clobbers = .{ .eflags = true },
114424 .dst_temps = .{ .{ .reg = .st0 }, .unused },
114425 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112863114426 .each = .{ .once = &.{
112864 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112865 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
112866 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },
112867 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
112868 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
112869 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114427 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
112870114428 } },
112871114429 }, .{
112872 .required_features = .{ .avx, null, null, null },
112873 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
112874 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
114430 .required_features = .{ .@"64bit", .sse, null, null },
114431 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
114432 .dst_constraints = .{ .{ .float = .tbyte }, .any },
112875114433 .patterns = &.{
112876114434 .{ .src = .{ .to_mem, .none, .none } },
112877114435 },
114436 .call_frame = .{ .alignment = .@"16" },
112878114437 .extra_temps = .{
112879 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112880 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
112881 .unused,
114438 .{ .type = .usize, .kind = .{ .reg = .rdi } },
114439 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114440 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateixf" } } },
112882114441 .unused,
112883114442 .unused,
112884114443 .unused,
......@@ -112888,28 +114447,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112888114447 .unused,
112889114448 .unused,
112890114449 },
112891 .dst_temps = .{ .mem, .unused },
112892 .clobbers = .{ .eflags = true },
114450 .dst_temps = .{ .{ .reg = .st0 }, .unused },
114451 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112893114452 .each = .{ .once = &.{
112894 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112895 .{ .@"0:", .v_d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
112896 .{ ._, .vp_d, .movsxw, .tmp1x, .tmp1q, ._, ._ },
112897 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
112898 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112899 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
112900 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114453 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
114454 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
114455 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112901114456 } },
112902114457 }, .{
112903 .required_features = .{ .sse4_1, null, null, null },
112904 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
112905 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
114458 .required_features = .{ .@"64bit", .sse, null, null },
114459 .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
114460 .dst_constraints = .{ .{ .float = .tbyte }, .any },
112906114461 .patterns = &.{
112907114462 .{ .src = .{ .to_mem, .none, .none } },
112908114463 },
114464 .call_frame = .{ .alignment = .@"16" },
112909114465 .extra_temps = .{
112910 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112911 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
112912 .unused,
114466 .{ .type = .usize, .kind = .{ .reg = .rdi } },
114467 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114468 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneixf" } } },
112913114469 .unused,
112914114470 .unused,
112915114471 .unused,
......@@ -112919,30 +114475,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112919114475 .unused,
112920114476 .unused,
112921114477 },
112922 .dst_temps = .{ .mem, .unused },
112923 .clobbers = .{ .eflags = true },
114478 .dst_temps = .{ .{ .reg = .st0 }, .unused },
114479 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112924114480 .each = .{ .once = &.{
112925 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112926 .{ .@"0:", ._d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
112927 .{ ._, .p_d, .movsxw, .tmp1x, .tmp1q, ._, ._ },
112928 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
112929 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112930 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
112931 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114481 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
114482 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
114483 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112932114484 } },
112933114485 }, .{
112934 .required_features = .{ .avx2, null, null, null },
112935 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },
112936 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },
114486 .required_features = .{ .x87, .slow_incdec, null, null },
114487 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114488 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
112937114489 .patterns = &.{
112938114490 .{ .src = .{ .to_mem, .none, .none } },
112939114491 },
112940114492 .extra_temps = .{
112941114493 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112942 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
112943 .unused,
112944 .unused,
112945 .unused,
114494 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114495 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
114496 .{ .type = .i16, .kind = .mem },
114497 .{ .type = .f80, .kind = .{ .reg = .st7 } },
112946114498 .unused,
112947114499 .unused,
112948114500 .unused,
......@@ -112954,25 +114506,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112954114506 .clobbers = .{ .eflags = true },
112955114507 .each = .{ .once = &.{
112956114508 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112957 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
112958 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },
112959 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
112960 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
114509 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114510 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114511 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },
114512 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },
114513 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114514 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114515 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
112961114516 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112962114517 } },
112963114518 }, .{
112964 .required_features = .{ .avx, null, null, null },
112965 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any, .any },
112966 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
114519 .required_features = .{ .x87, null, null, null },
114520 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114521 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
112967114522 .patterns = &.{
112968114523 .{ .src = .{ .to_mem, .none, .none } },
112969114524 },
112970114525 .extra_temps = .{
112971114526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112972 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
112973 .unused,
112974 .unused,
112975 .unused,
114527 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114528 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
114529 .{ .type = .i16, .kind = .mem },
114530 .{ .type = .f80, .kind = .{ .reg = .st7 } },
112976114531 .unused,
112977114532 .unused,
112978114533 .unused,
......@@ -112984,26 +114539,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112984114539 .clobbers = .{ .eflags = true },
112985114540 .each = .{ .once = &.{
112986114541 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112987 .{ .@"0:", .v_d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
112988 .{ ._, .vp_d, .movzxw, .tmp1x, .tmp1q, ._, ._ },
112989 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
112990 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112991 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
112992 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114542 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114543 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114544 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },
114545 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },
114546 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114547 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114548 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
114549 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
112993114550 } },
112994114551 }, .{
112995 .required_features = .{ .sse4_1, null, null, null },
112996 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any, .any },
112997 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
114552 .required_features = .{ .x87, .slow_incdec, null, null },
114553 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114554 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
112998114555 .patterns = &.{
112999114556 .{ .src = .{ .to_mem, .none, .none } },
113000114557 },
113001114558 .extra_temps = .{
113002114559 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113003 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
113004 .unused,
113005 .unused,
113006 .unused,
114560 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114561 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
114562 .{ .type = .i16, .kind = .mem },
114563 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113007114564 .unused,
113008114565 .unused,
113009114566 .unused,
......@@ -113015,27 +114572,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113015114572 .clobbers = .{ .eflags = true },
113016114573 .each = .{ .once = &.{
113017114574 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113018 .{ .@"0:", ._d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
113019 .{ ._, .p_d, .movzxw, .tmp1x, .tmp1q, ._, ._ },
113020 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
113021 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
113022 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
114575 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114576 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114577 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },
114578 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },
114579 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114580 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114581 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
113023114582 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113024114583 } },
113025114584 }, .{
113026 .required_features = .{ .avx, null, null, null },
113027 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
113028 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
114585 .required_features = .{ .x87, null, null, null },
114586 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114587 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113029114588 .patterns = &.{
113030114589 .{ .src = .{ .to_mem, .none, .none } },
113031114590 },
113032 .call_frame = .{ .alignment = .@"16" },
113033114591 .extra_temps = .{
113034114592 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113035 .{ .type = .i32, .kind = .{ .reg = .edi } },
113036 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
113037 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113038 .unused,
114593 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114594 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
114595 .{ .type = .i16, .kind = .mem },
114596 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113039114597 .unused,
113040114598 .unused,
113041114599 .unused,
......@@ -113044,29 +114602,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113044114602 .unused,
113045114603 },
113046114604 .dst_temps = .{ .mem, .unused },
113047 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114605 .clobbers = .{ .eflags = true },
113048114606 .each = .{ .once = &.{
113049114607 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113050 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
113051 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113052 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113053 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113054 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114608 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114609 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114610 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },
114611 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },
114612 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114613 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114614 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
114615 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
113055114616 } },
113056114617 }, .{
113057 .required_features = .{ .sse2, null, null, null },
113058 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
113059 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
114618 .required_features = .{ .x87, .slow_incdec, null, null },
114619 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114620 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113060114621 .patterns = &.{
113061114622 .{ .src = .{ .to_mem, .none, .none } },
113062114623 },
113063114624 .call_frame = .{ .alignment = .@"16" },
113064114625 .extra_temps = .{
113065114626 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114627 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
113066114628 .{ .type = .i32, .kind = .{ .reg = .edi } },
113067 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
113068 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113069 .unused,
114629 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },
114630 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113070114631 .unused,
113071114632 .unused,
113072114633 .unused,
......@@ -113078,26 +114639,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113078114639 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113079114640 .each = .{ .once = &.{
113080114641 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113081 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
113082 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113083 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113084 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
114642 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114643 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114644 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
114645 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
114646 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114647 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114648 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
113085114649 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113086114650 } },
113087114651 }, .{
113088 .required_features = .{ .sse, null, null, null },
113089 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
113090 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
114652 .required_features = .{ .x87, null, null, null },
114653 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114654 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113091114655 .patterns = &.{
113092114656 .{ .src = .{ .to_mem, .none, .none } },
113093114657 },
113094114658 .call_frame = .{ .alignment = .@"16" },
113095114659 .extra_temps = .{
113096114660 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114661 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
113097114662 .{ .type = .i32, .kind = .{ .reg = .edi } },
113098 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
113099 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113100 .unused,
114663 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },
114664 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113101114665 .unused,
113102114666 .unused,
113103114667 .unused,
......@@ -113109,26 +114673,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113109114673 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113110114674 .each = .{ .once = &.{
113111114675 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113112 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
113113 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113114 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113115 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113116 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114676 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114677 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114678 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
114679 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
114680 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114681 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114682 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
114683 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
113117114684 } },
113118114685 }, .{
113119 .required_features = .{ .avx, null, null, null },
113120 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
113121 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
114686 .required_features = .{ .x87, .slow_incdec, null, null },
114687 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114688 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113122114689 .patterns = &.{
113123114690 .{ .src = .{ .to_mem, .none, .none } },
113124114691 },
113125114692 .call_frame = .{ .alignment = .@"16" },
113126114693 .extra_temps = .{
113127114694 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114695 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
113128114696 .{ .type = .u32, .kind = .{ .reg = .edi } },
113129 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
113130 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113131 .unused,
114697 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },
114698 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113132114699 .unused,
113133114700 .unused,
113134114701 .unused,
......@@ -113140,26 +114707,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113140114707 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113141114708 .each = .{ .once = &.{
113142114709 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113143 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
113144 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113145 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113146 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
114710 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114711 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114712 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
114713 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
114714 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114715 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114716 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
113147114717 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113148114718 } },
113149114719 }, .{
113150 .required_features = .{ .sse2, null, null, null },
113151 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
113152 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
114720 .required_features = .{ .x87, null, null, null },
114721 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114722 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113153114723 .patterns = &.{
113154114724 .{ .src = .{ .to_mem, .none, .none } },
113155114725 },
113156114726 .call_frame = .{ .alignment = .@"16" },
113157114727 .extra_temps = .{
113158114728 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114729 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
113159114730 .{ .type = .u32, .kind = .{ .reg = .edi } },
113160 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
113161 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113162 .unused,
114731 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },
114732 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113163114733 .unused,
113164114734 .unused,
113165114735 .unused,
......@@ -113171,25 +114741,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113171114741 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113172114742 .each = .{ .once = &.{
113173114743 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113174 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
113175 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113176 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113177 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113178 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114744 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114745 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114746 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
114747 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
114748 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114749 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114750 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
114751 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
113179114752 } },
113180114753 }, .{
113181 .required_features = .{ .sse, null, null, null },
113182 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
113183 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
114754 .required_features = .{ .x87, null, null, null },
114755 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
114756 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113184114757 .patterns = &.{
113185114758 .{ .src = .{ .to_mem, .none, .none } },
113186114759 },
113187 .call_frame = .{ .alignment = .@"16" },
113188114760 .extra_temps = .{
113189114761 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113190 .{ .type = .u32, .kind = .{ .reg = .edi } },
113191 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
113192 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114762 .{ .type = .f80, .kind = .{ .reg = .st7 } },
114763 .unused,
114764 .unused,
113193114765 .unused,
113194114766 .unused,
113195114767 .unused,
......@@ -113199,63 +114771,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113199114771 .unused,
113200114772 },
113201114773 .dst_temps = .{ .mem, .unused },
113202 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114774 .clobbers = .{ .eflags = true },
113203114775 .each = .{ .once = &.{
113204114776 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113205 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
113206 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113207 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114777 .{ .@"0:", .fi_, .ld, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._, ._ },
114778 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
113208114779 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113209114780 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113210114781 } },
113211114782 }, .{
113212 .required_features = .{ .avx, null, null, null },
113213 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
113214 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
113215 .patterns = &.{
113216 .{ .src = .{ .mem, .none, .none } },
113217 .{ .src = .{ .to_sse, .none, .none } },
113218 },
113219 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
113220 .each = .{ .once = &.{
113221 .{ ._, .v_pd, .cvtdq2, .dst0x, .src0q, ._, ._ },
113222 } },
113223 }, .{
113224 .required_features = .{ .sse2, null, null, null },
113225 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
113226 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
113227 .patterns = &.{
113228 .{ .src = .{ .mem, .none, .none } },
113229 .{ .src = .{ .to_sse, .none, .none } },
113230 },
113231 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
113232 .each = .{ .once = &.{
113233 .{ ._, ._pd, .cvtdq2, .dst0x, .src0q, ._, ._ },
113234 } },
113235 }, .{
113236 .required_features = .{ .avx2, null, null, null },
113237 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
113238 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },
113239 .patterns = &.{
113240 .{ .src = .{ .mem, .none, .none } },
113241 .{ .src = .{ .to_sse, .none, .none } },
113242 },
113243 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
113244 .each = .{ .once = &.{
113245 .{ ._, .v_pd, .cvtdq2, .dst0y, .src0x, ._, ._ },
113246 } },
113247 }, .{
113248 .required_features = .{ .avx2, null, null, null },
113249 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
113250 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },
114783 .required_features = .{ .x87, null, null, null },
114784 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
114785 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113251114786 .patterns = &.{
113252114787 .{ .src = .{ .to_mem, .none, .none } },
113253114788 },
114789 .call_frame = .{ .alignment = .@"16" },
113254114790 .extra_temps = .{
113255114791 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113256 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
113257 .unused,
113258 .unused,
114792 .{ .type = .i32, .kind = .{ .reg = .edi } },
114793 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },
114794 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113259114795 .unused,
113260114796 .unused,
113261114797 .unused,
......@@ -113265,26 +114801,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113265114801 .unused,
113266114802 },
113267114803 .dst_temps = .{ .mem, .unused },
113268 .clobbers = .{ .eflags = true },
114804 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113269114805 .each = .{ .once = &.{
113270114806 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113271 .{ .@"0:", .v_pd, .cvtdq2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
113272 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
113273 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
114807 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
114808 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114809 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
114810 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
114811 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113274114812 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113275114813 } },
113276114814 }, .{
113277 .required_features = .{ .avx, null, null, null },
113278 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
113279 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
114815 .required_features = .{ .x87, null, null, null },
114816 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
114817 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113280114818 .patterns = &.{
113281114819 .{ .src = .{ .to_mem, .none, .none } },
113282114820 },
114821 .call_frame = .{ .alignment = .@"16" },
113283114822 .extra_temps = .{
113284114823 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113285 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
113286 .unused,
113287 .unused,
114824 .{ .type = .u32, .kind = .{ .reg = .edi } },
114825 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },
114826 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113288114827 .unused,
113289114828 .unused,
113290114829 .unused,
......@@ -113294,24 +114833,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113294114833 .unused,
113295114834 },
113296114835 .dst_temps = .{ .mem, .unused },
113297 .clobbers = .{ .eflags = true },
114836 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113298114837 .each = .{ .once = &.{
113299114838 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113300 .{ .@"0:", .v_pd, .cvtdq2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
113301 .{ ._, .v_pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
113302 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
114839 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
114840 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114841 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
114842 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
114843 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113303114844 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113304114845 } },
113305114846 }, .{
113306 .required_features = .{ .sse2, null, null, null },
113307 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
113308 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
114847 .required_features = .{ .x87, null, null, null },
114848 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
114849 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113309114850 .patterns = &.{
113310114851 .{ .src = .{ .to_mem, .none, .none } },
113311114852 },
113312114853 .extra_temps = .{
113313114854 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113314 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
114855 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113315114856 .unused,
113316114857 .unused,
113317114858 .unused,
......@@ -113326,15 +114867,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113326114867 .clobbers = .{ .eflags = true },
113327114868 .each = .{ .once = &.{
113328114869 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113329 .{ .@"0:", ._pd, .cvtdq2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
113330 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
113331 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
114870 .{ .@"0:", .fi_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
114871 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
114872 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
113332114873 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113333114874 } },
113334114875 }, .{
113335 .required_features = .{ .avx, null, null, null },
114876 .required_features = .{ .x87, null, null, null },
113336114877 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
113337 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
114878 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113338114879 .patterns = &.{
113339114880 .{ .src = .{ .to_mem, .none, .none } },
113340114881 },
......@@ -113342,8 +114883,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113342114883 .extra_temps = .{
113343114884 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113344114885 .{ .type = .i32, .kind = .{ .reg = .edi } },
113345 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
113346 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114886 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },
114887 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113347114888 .unused,
113348114889 .unused,
113349114890 .unused,
......@@ -113358,23 +114899,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113358114899 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113359114900 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
113360114901 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113361 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114902 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
114903 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
113362114904 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
113363114905 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113364114906 } },
113365114907 }, .{
113366 .required_features = .{ .sse2, null, null, null },
113367 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
113368 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
114908 .required_features = .{ .x87, null, null, null },
114909 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
114910 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113369114911 .patterns = &.{
113370114912 .{ .src = .{ .to_mem, .none, .none } },
113371114913 },
113372114914 .call_frame = .{ .alignment = .@"16" },
113373114915 .extra_temps = .{
113374114916 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113375 .{ .type = .i32, .kind = .{ .reg = .edi } },
113376 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
113377 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114917 .{ .type = .u32, .kind = .{ .reg = .edi } },
114918 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },
114919 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113378114920 .unused,
113379114921 .unused,
113380114922 .unused,
......@@ -113389,23 +114931,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113389114931 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113390114932 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
113391114933 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113392 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114934 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
114935 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
113393114936 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
113394114937 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113395114938 } },
113396114939 }, .{
113397 .required_features = .{ .sse, null, null, null },
113398 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
113399 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
114940 .required_features = .{ .x87, null, null, null },
114941 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
114942 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113400114943 .patterns = &.{
113401114944 .{ .src = .{ .to_mem, .none, .none } },
113402114945 },
113403 .call_frame = .{ .alignment = .@"16" },
113404114946 .extra_temps = .{
113405114947 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113406 .{ .type = .i32, .kind = .{ .reg = .edi } },
113407 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
113408 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114948 .{ .type = .f80, .kind = .{ .reg = .st7 } },
114949 .unused,
114950 .unused,
113409114951 .unused,
113410114952 .unused,
113411114953 .unused,
......@@ -113415,28 +114957,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113415114957 .unused,
113416114958 },
113417114959 .dst_temps = .{ .mem, .unused },
113418 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114960 .clobbers = .{ .eflags = true },
113419114961 .each = .{ .once = &.{
113420114962 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113421 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
113422 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113423 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113424 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
114963 .{ .@"0:", .fi_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
114964 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
114965 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113425114966 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113426114967 } },
113427114968 }, .{
113428 .required_features = .{ .avx, null, null, null },
113429 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
113430 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
114969 .required_features = .{ .@"64bit", .x87, null, null },
114970 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
114971 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113431114972 .patterns = &.{
113432114973 .{ .src = .{ .to_mem, .none, .none } },
113433114974 },
113434114975 .call_frame = .{ .alignment = .@"16" },
113435114976 .extra_temps = .{
113436114977 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113437 .{ .type = .u32, .kind = .{ .reg = .edi } },
113438 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
113439 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114978 .{ .type = .i64, .kind = .{ .reg = .rdi } },
114979 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdixf" } } },
114980 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113440114981 .unused,
113441114982 .unused,
113442114983 .unused,
......@@ -113449,25 +114990,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113449114990 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113450114991 .each = .{ .once = &.{
113451114992 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113452 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
114993 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
113453114994 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113454 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113455 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
114995 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
114996 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
114997 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113456114998 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113457114999 } },
113458115000 }, .{
113459 .required_features = .{ .sse2, null, null, null },
113460 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
113461 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115001 .required_features = .{ .@"64bit", .x87, null, null },
115002 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
115003 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113462115004 .patterns = &.{
113463115005 .{ .src = .{ .to_mem, .none, .none } },
113464115006 },
113465115007 .call_frame = .{ .alignment = .@"16" },
113466115008 .extra_temps = .{
113467115009 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113468 .{ .type = .u32, .kind = .{ .reg = .edi } },
113469 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
113470 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115010 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115011 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundixf" } } },
115012 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113471115013 .unused,
113472115014 .unused,
113473115015 .unused,
......@@ -113480,26 +115022,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113480115022 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113481115023 .each = .{ .once = &.{
113482115024 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113483 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
115025 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
113484115026 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113485 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113486 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
115027 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
115028 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
115029 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113487115030 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113488115031 } },
113489115032 }, .{
113490 .required_features = .{ .sse, null, null, null },
113491 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
113492 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115033 .required_features = .{ .@"64bit", .x87, null, null },
115034 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
115035 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113493115036 .patterns = &.{
113494115037 .{ .src = .{ .to_mem, .none, .none } },
113495115038 },
113496115039 .call_frame = .{ .alignment = .@"16" },
113497115040 .extra_temps = .{
113498115041 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113499 .{ .type = .u32, .kind = .{ .reg = .edi } },
113500 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
113501 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113502 .unused,
115042 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115043 .{ .type = .i64, .kind = .{ .reg = .rsi } },
115044 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattixf" } } },
115045 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113503115046 .unused,
113504115047 .unused,
113505115048 .unused,
......@@ -113511,25 +115054,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113511115054 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113512115055 .each = .{ .once = &.{
113513115056 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113514 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
113515 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113516 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113517 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
115057 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
115058 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
115059 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115060 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
115061 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
115062 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
113518115063 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113519115064 } },
113520115065 }, .{
113521 .required_features = .{ .@"64bit", .avx, null, null },
113522 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
113523 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115066 .required_features = .{ .@"64bit", .x87, null, null },
115067 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
115068 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113524115069 .patterns = &.{
113525115070 .{ .src = .{ .to_mem, .none, .none } },
113526115071 },
115072 .call_frame = .{ .alignment = .@"16" },
113527115073 .extra_temps = .{
113528115074 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113529 .{ .type = .f64, .kind = .{ .rc = .sse } },
113530 .unused,
113531 .unused,
113532 .unused,
115075 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115076 .{ .type = .u64, .kind = .{ .reg = .rsi } },
115077 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntixf" } } },
115078 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113533115079 .unused,
113534115080 .unused,
113535115081 .unused,
......@@ -113538,29 +115084,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113538115084 .unused,
113539115085 },
113540115086 .dst_temps = .{ .mem, .unused },
113541 .clobbers = .{ .eflags = true },
115087 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113542115088 .each = .{ .once = &.{
113543115089 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113544 .{ .@"0:", .v_pd, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
113545 .{ ._, .v_sd, .cvtsi2, .tmp1x, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._ },
113546 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
113547 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
115090 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
115091 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
115092 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115093 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
115094 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
115095 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
113548115096 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113549115097 } },
113550115098 }, .{
113551 .required_features = .{ .@"64bit", .sse2, null, null },
113552 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
113553 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115099 .required_features = .{ .@"64bit", .x87, null, null },
115100 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
115101 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113554115102 .patterns = &.{
113555115103 .{ .src = .{ .to_mem, .none, .none } },
113556115104 },
115105 .call_frame = .{ .alignment = .@"16" },
113557115106 .extra_temps = .{
115107 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
113558115108 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113559 .{ .type = .f64, .kind = .{ .rc = .sse } },
113560 .unused,
113561 .unused,
113562 .unused,
113563 .unused,
115109 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115110 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115111 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateixf" } } },
115112 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113564115113 .unused,
113565115114 .unused,
113566115115 .unused,
......@@ -113568,30 +115117,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113568115117 .unused,
113569115118 },
113570115119 .dst_temps = .{ .mem, .unused },
113571 .clobbers = .{ .eflags = true },
115120 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113572115121 .each = .{ .once = &.{
113573 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113574 .{ .@"0:", ._pd, .xor, .tmp1x, .tmp1x, ._, ._ },
113575 .{ ._, ._sd, .cvtsi2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
113576 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
113577 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
115122 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
115123 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
115124 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
115125 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
115126 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
115127 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
115128 .{ ._, .f_p, .st, .memia(.dst0t, .tmp1, .add_unaligned_size), ._, ._, ._ },
115129 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
115130 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
113578115131 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113579115132 } },
113580115133 }, .{
113581 .required_features = .{ .@"64bit", .avx, null, null },
113582 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
113583 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115134 .required_features = .{ .@"64bit", .x87, null, null },
115135 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
115136 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113584115137 .patterns = &.{
113585115138 .{ .src = .{ .to_mem, .none, .none } },
113586115139 },
113587115140 .call_frame = .{ .alignment = .@"16" },
113588115141 .extra_temps = .{
115142 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
113589115143 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113590 .{ .type = .i64, .kind = .{ .reg = .rdi } },
113591 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdidf" } } },
113592 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113593 .unused,
113594 .unused,
115144 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115145 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115146 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneixf" } } },
115147 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113595115148 .unused,
113596115149 .unused,
113597115150 .unused,
......@@ -113601,26 +115154,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113601115154 .dst_temps = .{ .mem, .unused },
113602115155 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113603115156 .each = .{ .once = &.{
113604 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113605 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
113606 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113607 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113608 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
115157 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
115158 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
115159 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
115160 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
115161 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
115162 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
115163 .{ ._, .f_p, .st, .memia(.dst0t, .tmp1, .add_unaligned_size), ._, ._, ._ },
115164 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
115165 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
113609115166 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113610115167 } },
113611115168 }, .{
113612 .required_features = .{ .@"64bit", .sse2, null, null },
113613 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
113614 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115169 .required_features = .{ .sse, null, null, null },
115170 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
115171 .dst_constraints = .{ .{ .float = .xword }, .any },
113615115172 .patterns = &.{
113616 .{ .src = .{ .to_mem, .none, .none } },
115173 .{ .src = .{ .mem, .none, .none } },
115174 .{ .src = .{ .to_gpr, .none, .none } },
113617115175 },
113618115176 .call_frame = .{ .alignment = .@"16" },
113619115177 .extra_temps = .{
113620 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113621 .{ .type = .i64, .kind = .{ .reg = .rdi } },
113622 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdidf" } } },
113623 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115178 .{ .type = .i32, .kind = .{ .reg = .edi } },
115179 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
115180 .unused,
115181 .unused,
113624115182 .unused,
113625115183 .unused,
113626115184 .unused,
......@@ -113629,29 +115187,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113629115187 .unused,
113630115188 .unused,
113631115189 },
113632 .dst_temps = .{ .mem, .unused },
115190 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113633115191 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113634115192 .each = .{ .once = &.{
113635 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113636 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
113637 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113638 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113639 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113640 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115193 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
115194 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
113641115195 } },
113642115196 }, .{
113643 .required_features = .{ .@"64bit", .sse, null, null },
113644 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
113645 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115197 .required_features = .{ .sse, null, null, null },
115198 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
115199 .dst_constraints = .{ .{ .float = .xword }, .any },
113646115200 .patterns = &.{
113647 .{ .src = .{ .to_mem, .none, .none } },
115201 .{ .src = .{ .mem, .none, .none } },
115202 .{ .src = .{ .to_gpr, .none, .none } },
113648115203 },
113649115204 .call_frame = .{ .alignment = .@"16" },
113650115205 .extra_temps = .{
113651 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113652 .{ .type = .i64, .kind = .{ .reg = .rdi } },
113653 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdidf" } } },
113654 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115206 .{ .type = .u32, .kind = .{ .reg = .edi } },
115207 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
115208 .unused,
115209 .unused,
113655115210 .unused,
113656115211 .unused,
113657115212 .unused,
......@@ -113660,29 +115215,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113660115215 .unused,
113661115216 .unused,
113662115217 },
113663 .dst_temps = .{ .mem, .unused },
115218 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113664115219 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113665115220 .each = .{ .once = &.{
113666 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113667 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
113668 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113669 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113670 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113671 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115221 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
115222 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
113672115223 } },
113673115224 }, .{
113674 .required_features = .{ .@"64bit", .avx, null, null },
113675 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
113676 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115225 .required_features = .{ .sse, null, null, null },
115226 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
115227 .dst_constraints = .{ .{ .float = .xword }, .any },
113677115228 .patterns = &.{
113678 .{ .src = .{ .to_mem, .none, .none } },
115229 .{ .src = .{ .mem, .none, .none } },
115230 .{ .src = .{ .to_gpr, .none, .none } },
113679115231 },
113680115232 .call_frame = .{ .alignment = .@"16" },
113681115233 .extra_temps = .{
113682 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113683 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113684 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundidf" } } },
113685 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115234 .{ .type = .i32, .kind = .{ .reg = .edi } },
115235 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
115236 .unused,
115237 .unused,
113686115238 .unused,
113687115239 .unused,
113688115240 .unused,
......@@ -113691,29 +115243,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113691115243 .unused,
113692115244 .unused,
113693115245 },
113694 .dst_temps = .{ .mem, .unused },
115246 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113695115247 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113696115248 .each = .{ .once = &.{
113697 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113698 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
113699 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113700 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113701 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113702 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115249 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
115250 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
113703115251 } },
113704115252 }, .{
113705 .required_features = .{ .@"64bit", .sse2, null, null },
113706 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
113707 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115253 .required_features = .{ .sse, null, null, null },
115254 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
115255 .dst_constraints = .{ .{ .float = .xword }, .any },
113708115256 .patterns = &.{
113709 .{ .src = .{ .to_mem, .none, .none } },
115257 .{ .src = .{ .mem, .none, .none } },
115258 .{ .src = .{ .to_gpr, .none, .none } },
113710115259 },
113711115260 .call_frame = .{ .alignment = .@"16" },
113712115261 .extra_temps = .{
113713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113714 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113715 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundidf" } } },
113716 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115262 .{ .type = .u32, .kind = .{ .reg = .edi } },
115263 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
115264 .unused,
115265 .unused,
113717115266 .unused,
113718115267 .unused,
113719115268 .unused,
......@@ -113722,29 +115271,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113722115271 .unused,
113723115272 .unused,
113724115273 },
113725 .dst_temps = .{ .mem, .unused },
115274 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113726115275 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113727115276 .each = .{ .once = &.{
113728 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113729 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
113730 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113731 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113732 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113733 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115277 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
115278 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
113734115279 } },
113735115280 }, .{
113736 .required_features = .{ .@"64bit", .sse, null, null },
113737 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
113738 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115281 .required_features = .{ .sse, null, null, null },
115282 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
115283 .dst_constraints = .{ .{ .float = .xword }, .any },
113739115284 .patterns = &.{
113740 .{ .src = .{ .to_mem, .none, .none } },
115285 .{ .src = .{ .{ .to_reg = .edi }, .none, .none } },
113741115286 },
113742115287 .call_frame = .{ .alignment = .@"16" },
113743115288 .extra_temps = .{
113744 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113745 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113746 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundidf" } } },
113747 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115289 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
115290 .unused,
115291 .unused,
115292 .unused,
113748115293 .unused,
113749115294 .unused,
113750115295 .unused,
......@@ -113753,30 +115298,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113753115298 .unused,
113754115299 .unused,
113755115300 },
113756 .dst_temps = .{ .mem, .unused },
115301 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113757115302 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113758115303 .each = .{ .once = &.{
113759 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113760 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
113761 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113762 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113763 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113764 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115304 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
113765115305 } },
113766115306 }, .{
113767 .required_features = .{ .@"64bit", .avx, null, null },
113768 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
113769 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115307 .required_features = .{ .sse, null, null, null },
115308 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
115309 .dst_constraints = .{ .{ .float = .xword }, .any },
113770115310 .patterns = &.{
113771 .{ .src = .{ .to_mem, .none, .none } },
115311 .{ .src = .{ .{ .to_reg = .edi }, .none, .none } },
113772115312 },
113773115313 .call_frame = .{ .alignment = .@"16" },
113774115314 .extra_temps = .{
113775 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113776 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113777 .{ .type = .i64, .kind = .{ .reg = .rsi } },
113778 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },
113779 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115315 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
115316 .unused,
115317 .unused,
115318 .unused,
115319 .unused,
113780115320 .unused,
113781115321 .unused,
113782115322 .unused,
......@@ -113784,31 +115324,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113784115324 .unused,
113785115325 .unused,
113786115326 },
113787 .dst_temps = .{ .mem, .unused },
115327 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113788115328 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113789115329 .each = .{ .once = &.{
113790 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
113791 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
113792 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },
113793 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
113794 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
113795 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113796 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115330 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
113797115331 } },
113798115332 }, .{
113799 .required_features = .{ .@"64bit", .sse2, null, null },
113800 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
113801 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115333 .required_features = .{ .@"64bit", .sse, null, null },
115334 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
115335 .dst_constraints = .{ .{ .float = .xword }, .any },
113802115336 .patterns = &.{
113803 .{ .src = .{ .to_mem, .none, .none } },
115337 .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } },
113804115338 },
113805115339 .call_frame = .{ .alignment = .@"16" },
113806115340 .extra_temps = .{
113807 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113808 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113809 .{ .type = .i64, .kind = .{ .reg = .rsi } },
113810 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },
113811 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115341 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },
115342 .unused,
115343 .unused,
115344 .unused,
115345 .unused,
113812115346 .unused,
113813115347 .unused,
113814115348 .unused,
......@@ -113816,31 +115350,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113816115350 .unused,
113817115351 .unused,
113818115352 },
113819 .dst_temps = .{ .mem, .unused },
115353 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113820115354 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113821115355 .each = .{ .once = &.{
113822 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
113823 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
113824 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },
113825 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
113826 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
113827 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113828 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115356 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
113829115357 } },
113830115358 }, .{
113831115359 .required_features = .{ .@"64bit", .sse, null, null },
113832 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
113833 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115360 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
115361 .dst_constraints = .{ .{ .float = .xword }, .any },
113834115362 .patterns = &.{
113835 .{ .src = .{ .to_mem, .none, .none } },
115363 .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } },
113836115364 },
113837115365 .call_frame = .{ .alignment = .@"16" },
113838115366 .extra_temps = .{
113839 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113840 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113841 .{ .type = .i64, .kind = .{ .reg = .rsi } },
113842 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },
113843 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115367 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },
115368 .unused,
115369 .unused,
115370 .unused,
115371 .unused,
113844115372 .unused,
113845115373 .unused,
113846115374 .unused,
......@@ -113848,31 +115376,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113848115376 .unused,
113849115377 .unused,
113850115378 },
113851 .dst_temps = .{ .mem, .unused },
115379 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113852115380 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113853115381 .each = .{ .once = &.{
113854 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
113855 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
113856 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },
113857 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
113858 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
113859 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113860 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115382 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
113861115383 } },
113862115384 }, .{
113863 .required_features = .{ .@"64bit", .avx, null, null },
113864 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
113865 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115385 .required_features = .{ .@"64bit", .sse, null, null },
115386 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
115387 .dst_constraints = .{ .{ .float = .xword }, .any },
113866115388 .patterns = &.{
113867 .{ .src = .{ .to_mem, .none, .none } },
115389 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
113868115390 },
113869115391 .call_frame = .{ .alignment = .@"16" },
113870115392 .extra_temps = .{
113871 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113872 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113873 .{ .type = .u64, .kind = .{ .reg = .rsi } },
113874 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },
113875 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115393 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },
115394 .unused,
115395 .unused,
115396 .unused,
115397 .unused,
113876115398 .unused,
113877115399 .unused,
113878115400 .unused,
......@@ -113880,31 +115402,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113880115402 .unused,
113881115403 .unused,
113882115404 },
113883 .dst_temps = .{ .mem, .unused },
115405 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113884115406 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113885115407 .each = .{ .once = &.{
113886 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
113887 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
113888 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },
113889 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
113890 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
113891 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113892 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115408 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
113893115409 } },
113894115410 }, .{
113895 .required_features = .{ .@"64bit", .sse2, null, null },
113896 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
113897 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115411 .required_features = .{ .@"64bit", .sse, null, null },
115412 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
115413 .dst_constraints = .{ .{ .float = .xword }, .any },
113898115414 .patterns = &.{
113899 .{ .src = .{ .to_mem, .none, .none } },
115415 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
113900115416 },
113901115417 .call_frame = .{ .alignment = .@"16" },
113902115418 .extra_temps = .{
113903 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113904 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113905 .{ .type = .u64, .kind = .{ .reg = .rsi } },
113906 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },
113907 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115419 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },
115420 .unused,
115421 .unused,
115422 .unused,
115423 .unused,
113908115424 .unused,
113909115425 .unused,
113910115426 .unused,
......@@ -113912,31 +115428,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113912115428 .unused,
113913115429 .unused,
113914115430 },
113915 .dst_temps = .{ .mem, .unused },
115431 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113916115432 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113917115433 .each = .{ .once = &.{
113918 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
113919 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
113920 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },
113921 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
113922 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
113923 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113924 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115434 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
113925115435 } },
113926115436 }, .{
113927115437 .required_features = .{ .@"64bit", .sse, null, null },
113928 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
113929 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115438 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
115439 .dst_constraints = .{ .{ .float = .xword }, .any },
113930115440 .patterns = &.{
113931115441 .{ .src = .{ .to_mem, .none, .none } },
113932115442 },
113933115443 .call_frame = .{ .alignment = .@"16" },
113934115444 .extra_temps = .{
113935 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113936 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113937 .{ .type = .u64, .kind = .{ .reg = .rsi } },
113938 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },
113939 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115445 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115446 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115447 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },
115448 .unused,
115449 .unused,
113940115450 .unused,
113941115451 .unused,
113942115452 .unused,
......@@ -113944,66 +115454,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113944115454 .unused,
113945115455 .unused,
113946115456 },
113947 .dst_temps = .{ .mem, .unused },
115457 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113948115458 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113949115459 .each = .{ .once = &.{
113950 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
113951 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
113952 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },
113953 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
113954 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
113955 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113956 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115460 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
115461 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
115462 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113957115463 } },
113958115464 }, .{
113959 .required_features = .{ .@"64bit", .avx, null, null },
113960 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
113961 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115465 .required_features = .{ .@"64bit", .sse, null, null },
115466 .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
115467 .dst_constraints = .{ .{ .float = .xword }, .any },
113962115468 .patterns = &.{
113963115469 .{ .src = .{ .to_mem, .none, .none } },
113964115470 },
113965115471 .call_frame = .{ .alignment = .@"16" },
113966115472 .extra_temps = .{
113967 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
113968 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113969115473 .{ .type = .usize, .kind = .{ .reg = .rdi } },
113970115474 .{ .type = .usize, .kind = .{ .reg = .rsi } },
113971 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },
113972 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115475 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },
115476 .unused,
115477 .unused,
115478 .unused,
113973115479 .unused,
113974115480 .unused,
113975115481 .unused,
113976115482 .unused,
113977115483 .unused,
113978115484 },
113979 .dst_temps = .{ .mem, .unused },
115485 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113980115486 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113981115487 .each = .{ .once = &.{
113982115488 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
113983 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
113984 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
113985 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
113986 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
113987 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
113988 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
113989 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },
113990 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115489 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
115490 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113991115491 } },
113992115492 }, .{
113993 .required_features = .{ .@"64bit", .sse2, null, null },
113994 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
113995 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115493 .required_features = .{ .avx, .slow_incdec, null, null },
115494 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115495 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
113996115496 .patterns = &.{
113997115497 .{ .src = .{ .to_mem, .none, .none } },
113998115498 },
113999115499 .call_frame = .{ .alignment = .@"16" },
114000115500 .extra_temps = .{
114001 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114002115501 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114003 .{ .type = .usize, .kind = .{ .reg = .rdi } },
114004 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114005 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },
114006 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115502 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115503 .{ .type = .i32, .kind = .{ .reg = .edi } },
115504 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
115505 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115506 .unused,
114007115507 .unused,
114008115508 .unused,
114009115509 .unused,
......@@ -114013,31 +115513,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114013115513 .dst_temps = .{ .mem, .unused },
114014115514 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114015115515 .each = .{ .once = &.{
114016 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
114017 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
114018 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
114019 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
114020 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
114021 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
114022 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
114023 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },
115516 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115517 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115518 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115519 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115520 .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
115521 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115522 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
114024115523 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114025115524 } },
114026115525 }, .{
114027 .required_features = .{ .@"64bit", .sse, null, null },
114028 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
114029 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115526 .required_features = .{ .avx, null, null, null },
115527 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115528 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114030115529 .patterns = &.{
114031115530 .{ .src = .{ .to_mem, .none, .none } },
114032115531 },
114033115532 .call_frame = .{ .alignment = .@"16" },
114034115533 .extra_temps = .{
114035 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114036115534 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114037 .{ .type = .usize, .kind = .{ .reg = .rdi } },
114038 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114039 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },
114040 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115535 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115536 .{ .type = .i32, .kind = .{ .reg = .edi } },
115537 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
115538 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115539 .unused,
114041115540 .unused,
114042115541 .unused,
114043115542 .unused,
......@@ -114047,31 +115546,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114047115546 .dst_temps = .{ .mem, .unused },
114048115547 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114049115548 .each = .{ .once = &.{
114050 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
114051 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
114052 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
114053 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
114054 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
114055 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
114056 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
114057 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },
114058 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115549 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115550 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115551 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115552 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115553 .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
115554 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115555 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
115556 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
114059115557 } },
114060115558 }, .{
114061 .required_features = .{ .@"64bit", .avx, null, null },
114062 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
114063 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115559 .required_features = .{ .sse2, .slow_incdec, null, null },
115560 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115561 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114064115562 .patterns = &.{
114065115563 .{ .src = .{ .to_mem, .none, .none } },
114066115564 },
114067115565 .call_frame = .{ .alignment = .@"16" },
114068115566 .extra_temps = .{
114069 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114070115567 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114071 .{ .type = .usize, .kind = .{ .reg = .rdi } },
114072 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114073 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },
114074 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115568 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115569 .{ .type = .i32, .kind = .{ .reg = .edi } },
115570 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
115571 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115572 .unused,
114075115573 .unused,
114076115574 .unused,
114077115575 .unused,
......@@ -114081,31 +115579,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114081115579 .dst_temps = .{ .mem, .unused },
114082115580 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114083115581 .each = .{ .once = &.{
114084 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
114085 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
114086 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
114087 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
114088 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
114089 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
114090 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
114091 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },
115582 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115583 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115584 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115585 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115586 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
115587 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115588 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
114092115589 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114093115590 } },
114094115591 }, .{
114095 .required_features = .{ .@"64bit", .sse2, null, null },
114096 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
114097 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115592 .required_features = .{ .sse2, null, null, null },
115593 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115594 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114098115595 .patterns = &.{
114099115596 .{ .src = .{ .to_mem, .none, .none } },
114100115597 },
114101115598 .call_frame = .{ .alignment = .@"16" },
114102115599 .extra_temps = .{
114103 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114104115600 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114105 .{ .type = .usize, .kind = .{ .reg = .rdi } },
114106 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114107 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },
114108 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115601 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115602 .{ .type = .i32, .kind = .{ .reg = .edi } },
115603 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
115604 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115605 .unused,
114109115606 .unused,
114110115607 .unused,
114111115608 .unused,
......@@ -114115,31 +115612,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114115115612 .dst_temps = .{ .mem, .unused },
114116115613 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114117115614 .each = .{ .once = &.{
114118 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
114119 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
114120 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
114121 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
114122 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
114123 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
114124 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
114125 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },
114126 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115615 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115616 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115617 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115618 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115619 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
115620 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115621 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
115622 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
114127115623 } },
114128115624 }, .{
114129 .required_features = .{ .@"64bit", .sse, null, null },
114130 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
114131 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115625 .required_features = .{ .sse, .slow_incdec, null, null },
115626 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115627 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114132115628 .patterns = &.{
114133115629 .{ .src = .{ .to_mem, .none, .none } },
114134115630 },
114135115631 .call_frame = .{ .alignment = .@"16" },
114136115632 .extra_temps = .{
114137 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114138115633 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114139 .{ .type = .usize, .kind = .{ .reg = .rdi } },
114140 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114141 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },
114142 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115634 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115635 .{ .type = .i32, .kind = .{ .reg = .edi } },
115636 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
115637 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115638 .unused,
114143115639 .unused,
114144115640 .unused,
114145115641 .unused,
......@@ -114149,30 +115645,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114149115645 .dst_temps = .{ .mem, .unused },
114150115646 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114151115647 .each = .{ .once = &.{
114152 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
114153 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
114154 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
114155 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
114156 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
114157 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
114158 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
114159 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },
115648 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115649 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115650 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115651 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115652 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },
115653 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115654 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
114160115655 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114161115656 } },
114162115657 }, .{
114163 .required_features = .{ .x87, null, null, null },
114164 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
114165 .dst_constraints = .{ .{ .float = .tbyte }, .any },
115658 .required_features = .{ .sse, null, null, null },
115659 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115660 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114166115661 .patterns = &.{
114167 .{ .src = .{ .mem, .none, .none } },
114168 .{ .src = .{ .to_gpr, .none, .none } },
115662 .{ .src = .{ .to_mem, .none, .none } },
114169115663 },
115664 .call_frame = .{ .alignment = .@"16" },
114170115665 .extra_temps = .{
114171 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
114172 .{ .type = .i16, .kind = .mem },
114173 .{ .type = .f80, .kind = .{ .reg = .st7 } },
114174 .unused,
114175 .unused,
115666 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115667 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115668 .{ .type = .i32, .kind = .{ .reg = .edi } },
115669 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
115670 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114176115671 .unused,
114177115672 .unused,
114178115673 .unused,
......@@ -114180,27 +115675,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114180115675 .unused,
114181115676 .unused,
114182115677 },
114183 .dst_temps = .{ .{ .rc = .x87 }, .unused },
115678 .dst_temps = .{ .mem, .unused },
115679 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114184115680 .each = .{ .once = &.{
114185 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
114186 .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ },
114187 .{ ._, .fi_, .ld, .tmp1w, ._, ._, ._ },
114188 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
115681 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115682 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115683 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115684 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115685 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },
115686 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115687 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
115688 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
114189115689 } },
114190115690 }, .{
114191 .required_features = .{ .x87, null, null, null },
114192 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
114193 .dst_constraints = .{ .{ .float = .tbyte }, .any },
115691 .required_features = .{ .avx, .slow_incdec, null, null },
115692 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115693 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114194115694 .patterns = &.{
114195 .{ .src = .{ .mem, .none, .none } },
114196 .{ .src = .{ .to_gpr, .none, .none } },
115695 .{ .src = .{ .to_mem, .none, .none } },
114197115696 },
115697 .call_frame = .{ .alignment = .@"16" },
114198115698 .extra_temps = .{
114199 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
114200 .{ .type = .i16, .kind = .mem },
114201 .{ .type = .f80, .kind = .{ .reg = .st7 } },
114202 .unused,
114203 .unused,
115699 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115700 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115701 .{ .type = .u32, .kind = .{ .reg = .edi } },
115702 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
115703 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114204115704 .unused,
114205115705 .unused,
114206115706 .unused,
......@@ -114208,26 +115708,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114208115708 .unused,
114209115709 .unused,
114210115710 },
114211 .dst_temps = .{ .{ .rc = .x87 }, .unused },
115711 .dst_temps = .{ .mem, .unused },
115712 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114212115713 .each = .{ .once = &.{
114213 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
114214 .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ },
114215 .{ ._, .fi_, .ld, .tmp1w, ._, ._, ._ },
114216 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
115714 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115715 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115716 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115717 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115718 .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
115719 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115720 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
115721 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114217115722 } },
114218115723 }, .{
114219 .required_features = .{ .x87, null, null, null },
114220 .src_constraints = .{ .{ .signed_or_exclusive_int = .word }, .any, .any },
114221 .dst_constraints = .{ .{ .float = .tbyte }, .any },
115724 .required_features = .{ .avx, null, null, null },
115725 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115726 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114222115727 .patterns = &.{
114223115728 .{ .src = .{ .to_mem, .none, .none } },
114224115729 },
115730 .call_frame = .{ .alignment = .@"16" },
114225115731 .extra_temps = .{
114226 .{ .type = .f80, .kind = .{ .reg = .st7 } },
114227 .unused,
114228 .unused,
114229 .unused,
114230 .unused,
115732 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115733 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115734 .{ .type = .u32, .kind = .{ .reg = .edi } },
115735 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
115736 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114231115737 .unused,
114232115738 .unused,
114233115739 .unused,
......@@ -114235,25 +115741,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114235115741 .unused,
114236115742 .unused,
114237115743 },
114238 .dst_temps = .{ .{ .rc = .x87 }, .unused },
115744 .dst_temps = .{ .mem, .unused },
115745 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114239115746 .each = .{ .once = &.{
114240 .{ ._, .fi_, .ld, .src0w, ._, ._, ._ },
114241 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
115747 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115748 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115749 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115750 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115751 .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
115752 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115753 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
115754 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
114242115755 } },
114243115756 }, .{
114244 .required_features = .{ .x87, null, null, null },
114245 .src_constraints = .{ .{ .exact_unsigned_int = 16 }, .any, .any },
114246 .dst_constraints = .{ .{ .float = .tbyte }, .any },
115757 .required_features = .{ .sse2, .slow_incdec, null, null },
115758 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115759 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114247115760 .patterns = &.{
114248 .{ .src = .{ .mem, .none, .none } },
114249 .{ .src = .{ .to_gpr, .none, .none } },
115761 .{ .src = .{ .to_mem, .none, .none } },
114250115762 },
115763 .call_frame = .{ .alignment = .@"16" },
114251115764 .extra_temps = .{
114252 .{ .type = .i32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
114253 .{ .type = .i32, .kind = .mem },
114254 .{ .type = .f80, .kind = .{ .reg = .st7 } },
114255 .unused,
114256 .unused,
115765 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115766 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115767 .{ .type = .u32, .kind = .{ .reg = .edi } },
115768 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
115769 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114257115770 .unused,
114258115771 .unused,
114259115772 .unused,
......@@ -114261,26 +115774,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114261115774 .unused,
114262115775 .unused,
114263115776 },
114264 .dst_temps = .{ .{ .rc = .x87 }, .unused },
115777 .dst_temps = .{ .mem, .unused },
115778 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114265115779 .each = .{ .once = &.{
114266 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
114267 .{ ._, ._, .mov, .tmp1d, .tmp0d, ._, ._ },
114268 .{ ._, .fi_, .ld, .tmp1d, ._, ._, ._ },
114269 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
115780 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115781 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115782 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115783 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115784 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
115785 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115786 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
115787 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114270115788 } },
114271115789 }, .{
114272 .required_features = .{ .x87, null, null, null },
114273 .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any },
114274 .dst_constraints = .{ .{ .float = .tbyte }, .any },
115790 .required_features = .{ .sse2, null, null, null },
115791 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115792 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114275115793 .patterns = &.{
114276115794 .{ .src = .{ .to_mem, .none, .none } },
114277115795 },
115796 .call_frame = .{ .alignment = .@"16" },
114278115797 .extra_temps = .{
114279 .{ .type = .f80, .kind = .{ .reg = .st7 } },
114280 .unused,
114281 .unused,
114282 .unused,
114283 .unused,
115798 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115799 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115800 .{ .type = .u32, .kind = .{ .reg = .edi } },
115801 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
115802 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114284115803 .unused,
114285115804 .unused,
114286115805 .unused,
......@@ -114288,25 +115807,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114288115807 .unused,
114289115808 .unused,
114290115809 },
114291 .dst_temps = .{ .{ .rc = .x87 }, .unused },
115810 .dst_temps = .{ .mem, .unused },
115811 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114292115812 .each = .{ .once = &.{
114293 .{ ._, .fi_, .ld, .src0d, ._, ._, ._ },
114294 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
115813 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115814 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115815 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115816 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115817 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
115818 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115819 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
115820 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
114295115821 } },
114296115822 }, .{
114297 .required_features = .{ .@"64bit", .x87, null, null },
114298 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any },
114299 .dst_constraints = .{ .{ .float = .tbyte }, .any },
115823 .required_features = .{ .sse, .slow_incdec, null, null },
115824 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115825 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114300115826 .patterns = &.{
114301 .{ .src = .{ .mem, .none, .none } },
114302 .{ .src = .{ .to_gpr, .none, .none } },
115827 .{ .src = .{ .to_mem, .none, .none } },
114303115828 },
115829 .call_frame = .{ .alignment = .@"16" },
114304115830 .extra_temps = .{
114305 .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
114306 .{ .type = .i64, .kind = .mem },
114307 .{ .type = .f80, .kind = .{ .reg = .st7 } },
114308 .unused,
114309 .unused,
115831 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115832 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115833 .{ .type = .u32, .kind = .{ .reg = .edi } },
115834 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
115835 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114310115836 .unused,
114311115837 .unused,
114312115838 .unused,
......@@ -114314,26 +115840,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114314115840 .unused,
114315115841 .unused,
114316115842 },
114317 .dst_temps = .{ .{ .rc = .x87 }, .unused },
115843 .dst_temps = .{ .mem, .unused },
115844 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114318115845 .each = .{ .once = &.{
114319 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
114320 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
114321 .{ ._, .fi_, .ld, .tmp1q, ._, ._, ._ },
114322 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
115846 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115847 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115848 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115849 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115850 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },
115851 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115852 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
115853 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114323115854 } },
114324115855 }, .{
114325 .required_features = .{ .x87, null, null, null },
114326 .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any },
114327 .dst_constraints = .{ .{ .float = .tbyte }, .any },
115856 .required_features = .{ .sse, null, null, null },
115857 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115858 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114328115859 .patterns = &.{
114329115860 .{ .src = .{ .to_mem, .none, .none } },
114330115861 },
115862 .call_frame = .{ .alignment = .@"16" },
114331115863 .extra_temps = .{
114332 .{ .type = .f80, .kind = .{ .reg = .st7 } },
114333 .unused,
114334 .unused,
114335 .unused,
114336 .unused,
115864 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115865 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115866 .{ .type = .u32, .kind = .{ .reg = .edi } },
115867 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
115868 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114337115869 .unused,
114338115870 .unused,
114339115871 .unused,
......@@ -114341,23 +115873,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114341115873 .unused,
114342115874 .unused,
114343115875 },
114344 .dst_temps = .{ .{ .rc = .x87 }, .unused },
115876 .dst_temps = .{ .mem, .unused },
115877 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114345115878 .each = .{ .once = &.{
114346 .{ ._, .fi_, .ld, .src0q, ._, ._, ._ },
114347 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
115879 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115880 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115881 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115882 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115883 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },
115884 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115885 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
115886 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
114348115887 } },
114349115888 }, .{
114350 .required_features = .{ .x87, null, null, null },
114351 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },
114352 .dst_constraints = .{ .{ .float = .tbyte }, .any },
115889 .required_features = .{ .avx, null, null, null },
115890 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
115891 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114353115892 .patterns = &.{
114354115893 .{ .src = .{ .to_mem, .none, .none } },
114355115894 },
115895 .call_frame = .{ .alignment = .@"16" },
114356115896 .extra_temps = .{
114357 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114358 .{ .type = .u1, .kind = .{ .rc = .general_purpose } },
114359 .{ .type = .vector_2_f32, .kind = .f32_0_0x1p64_mem },
114360 .{ .type = .f80, .kind = .{ .reg = .st7 } },
115897 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115898 .{ .type = .i32, .kind = .{ .reg = .edi } },
115899 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
115900 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114361115901 .unused,
114362115902 .unused,
114363115903 .unused,
......@@ -114366,29 +115906,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114366115906 .unused,
114367115907 .unused,
114368115908 },
114369 .dst_temps = .{ .{ .rc = .x87 }, .unused },
114370 .clobbers = .{ .eflags = true },
115909 .dst_temps = .{ .mem, .unused },
115910 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114371115911 .each = .{ .once = &.{
114372 .{ ._, .fi_, .ld, .src0q, ._, ._, ._ },
114373 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
114374 .{ ._, ._, .mov, .tmp1d, .memd(.src0d, 4), ._, ._ },
114375 .{ ._, ._r, .sh, .tmp1d, .ui(31), ._, ._ },
114376 .{ ._, .f_, .add, .leasi(.tmp0d, .@"4", .tmp1), ._, ._, ._ },
114377 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
115912 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115913 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
115914 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
115915 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
115916 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
115917 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114378115918 } },
114379115919 }, .{
114380 .required_features = .{ .@"64bit", .sse, null, null },
114381 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
114382 .dst_constraints = .{ .{ .float = .tbyte }, .any },
115920 .required_features = .{ .sse2, null, null, null },
115921 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
115922 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114383115923 .patterns = &.{
114384 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
115924 .{ .src = .{ .to_mem, .none, .none } },
114385115925 },
114386115926 .call_frame = .{ .alignment = .@"16" },
114387115927 .extra_temps = .{
114388 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattixf" } } },
114389 .unused,
114390 .unused,
114391 .unused,
115928 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115929 .{ .type = .i32, .kind = .{ .reg = .edi } },
115930 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
115931 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114392115932 .unused,
114393115933 .unused,
114394115934 .unused,
......@@ -114397,24 +115937,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114397115937 .unused,
114398115938 .unused,
114399115939 },
114400 .dst_temps = .{ .{ .reg = .st0 }, .unused },
115940 .dst_temps = .{ .mem, .unused },
114401115941 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114402115942 .each = .{ .once = &.{
114403 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
115943 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115944 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
115945 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
115946 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
115947 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
115948 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114404115949 } },
114405115950 }, .{
114406 .required_features = .{ .@"64bit", .sse, null, null },
114407 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
114408 .dst_constraints = .{ .{ .float = .tbyte }, .any },
115951 .required_features = .{ .sse, null, null, null },
115952 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
115953 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114409115954 .patterns = &.{
114410 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
115955 .{ .src = .{ .to_mem, .none, .none } },
114411115956 },
114412115957 .call_frame = .{ .alignment = .@"16" },
114413115958 .extra_temps = .{
114414 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntixf" } } },
114415 .unused,
114416 .unused,
114417 .unused,
115959 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115960 .{ .type = .i32, .kind = .{ .reg = .edi } },
115961 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
115962 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114418115963 .unused,
114419115964 .unused,
114420115965 .unused,
......@@ -114423,24 +115968,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114423115968 .unused,
114424115969 .unused,
114425115970 },
114426 .dst_temps = .{ .{ .reg = .st0 }, .unused },
115971 .dst_temps = .{ .mem, .unused },
114427115972 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114428115973 .each = .{ .once = &.{
114429 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
115974 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115975 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
115976 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
115977 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
115978 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
115979 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114430115980 } },
114431115981 }, .{
114432 .required_features = .{ .@"64bit", .sse, null, null },
114433 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
114434 .dst_constraints = .{ .{ .float = .tbyte }, .any },
115982 .required_features = .{ .avx, null, null, null },
115983 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
115984 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114435115985 .patterns = &.{
114436115986 .{ .src = .{ .to_mem, .none, .none } },
114437115987 },
114438115988 .call_frame = .{ .alignment = .@"16" },
114439115989 .extra_temps = .{
114440 .{ .type = .usize, .kind = .{ .reg = .rdi } },
114441 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114442 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateixf" } } },
114443 .unused,
115990 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115991 .{ .type = .u32, .kind = .{ .reg = .edi } },
115992 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
115993 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114444115994 .unused,
114445115995 .unused,
114446115996 .unused,
......@@ -114449,26 +115999,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114449115999 .unused,
114450116000 .unused,
114451116001 },
114452 .dst_temps = .{ .{ .reg = .st0 }, .unused },
116002 .dst_temps = .{ .mem, .unused },
114453116003 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114454116004 .each = .{ .once = &.{
114455 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
114456 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
116005 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116006 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
114457116007 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116008 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116009 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
116010 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114458116011 } },
114459116012 }, .{
114460 .required_features = .{ .@"64bit", .sse, null, null },
114461 .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
114462 .dst_constraints = .{ .{ .float = .tbyte }, .any },
116013 .required_features = .{ .sse2, null, null, null },
116014 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
116015 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114463116016 .patterns = &.{
114464116017 .{ .src = .{ .to_mem, .none, .none } },
114465116018 },
114466116019 .call_frame = .{ .alignment = .@"16" },
114467116020 .extra_temps = .{
114468 .{ .type = .usize, .kind = .{ .reg = .rdi } },
114469 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114470 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneixf" } } },
114471 .unused,
116021 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116022 .{ .type = .u32, .kind = .{ .reg = .edi } },
116023 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
116024 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114472116025 .unused,
114473116026 .unused,
114474116027 .unused,
......@@ -114477,26 +116030,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114477116030 .unused,
114478116031 .unused,
114479116032 },
114480 .dst_temps = .{ .{ .reg = .st0 }, .unused },
116033 .dst_temps = .{ .mem, .unused },
114481116034 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114482116035 .each = .{ .once = &.{
114483 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
114484 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
116036 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116037 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
114485116038 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116039 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116040 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
116041 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114486116042 } },
114487116043 }, .{
114488 .required_features = .{ .x87, .slow_incdec, null, null },
114489 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114490 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116044 .required_features = .{ .sse, null, null, null },
116045 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
116046 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114491116047 .patterns = &.{
114492116048 .{ .src = .{ .to_mem, .none, .none } },
114493116049 },
116050 .call_frame = .{ .alignment = .@"16" },
114494116051 .extra_temps = .{
114495116052 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114496 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114497 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
114498 .{ .type = .i16, .kind = .mem },
114499 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116053 .{ .type = .u32, .kind = .{ .reg = .edi } },
116054 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
116055 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
116056 .unused,
114500116057 .unused,
114501116058 .unused,
114502116059 .unused,
......@@ -114505,31 +116062,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114505116062 .unused,
114506116063 },
114507116064 .dst_temps = .{ .mem, .unused },
114508 .clobbers = .{ .eflags = true },
116065 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114509116066 .each = .{ .once = &.{
114510116067 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114511 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114512 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114513 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },
114514 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },
114515 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114516 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114517 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
116068 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
116069 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116070 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116071 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
114518116072 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114519116073 } },
114520116074 }, .{
114521 .required_features = .{ .x87, null, null, null },
114522 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114523 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116075 .required_features = .{ .avx, null, null, null },
116076 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116077 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114524116078 .patterns = &.{
114525116079 .{ .src = .{ .to_mem, .none, .none } },
114526116080 },
116081 .call_frame = .{ .alignment = .@"16" },
114527116082 .extra_temps = .{
114528116083 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114529 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114530 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
114531 .{ .type = .i16, .kind = .mem },
114532 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116084 .{ .type = .i32, .kind = .{ .reg = .edi } },
116085 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
116086 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
116087 .unused,
114533116088 .unused,
114534116089 .unused,
114535116090 .unused,
......@@ -114538,31 +116093,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114538116093 .unused,
114539116094 },
114540116095 .dst_temps = .{ .mem, .unused },
114541 .clobbers = .{ .eflags = true },
116096 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114542116097 .each = .{ .once = &.{
114543116098 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114544 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114545 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114546 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },
114547 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },
114548 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114549 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114550 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
114551 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
116099 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
116100 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116101 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116102 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
116103 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114552116104 } },
114553116105 }, .{
114554 .required_features = .{ .x87, .slow_incdec, null, null },
114555 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114556 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116106 .required_features = .{ .sse2, null, null, null },
116107 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116108 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114557116109 .patterns = &.{
114558116110 .{ .src = .{ .to_mem, .none, .none } },
114559116111 },
116112 .call_frame = .{ .alignment = .@"16" },
114560116113 .extra_temps = .{
114561116114 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114562 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114563 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
114564 .{ .type = .i16, .kind = .mem },
114565 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116115 .{ .type = .i32, .kind = .{ .reg = .edi } },
116116 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
116117 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
116118 .unused,
114566116119 .unused,
114567116120 .unused,
114568116121 .unused,
......@@ -114571,31 +116124,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114571116124 .unused,
114572116125 },
114573116126 .dst_temps = .{ .mem, .unused },
114574 .clobbers = .{ .eflags = true },
116127 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114575116128 .each = .{ .once = &.{
114576116129 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114577 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114578 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114579 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },
114580 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },
114581 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114582 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114583 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
116130 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
116131 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116132 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116133 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
114584116134 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114585116135 } },
114586116136 }, .{
114587 .required_features = .{ .x87, null, null, null },
114588 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114589 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116137 .required_features = .{ .sse, null, null, null },
116138 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116139 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114590116140 .patterns = &.{
114591116141 .{ .src = .{ .to_mem, .none, .none } },
114592116142 },
116143 .call_frame = .{ .alignment = .@"16" },
114593116144 .extra_temps = .{
114594116145 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114595 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114596 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
114597 .{ .type = .i16, .kind = .mem },
114598 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116146 .{ .type = .i32, .kind = .{ .reg = .edi } },
116147 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
116148 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
116149 .unused,
114599116150 .unused,
114600116151 .unused,
114601116152 .unused,
......@@ -114604,32 +116155,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114604116155 .unused,
114605116156 },
114606116157 .dst_temps = .{ .mem, .unused },
114607 .clobbers = .{ .eflags = true },
116158 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114608116159 .each = .{ .once = &.{
114609116160 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114610 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114611 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114612 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },
114613 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },
114614 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114615 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114616 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
114617 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
116161 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
116162 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116163 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116164 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
116165 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114618116166 } },
114619116167 }, .{
114620 .required_features = .{ .x87, .slow_incdec, null, null },
114621 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114622 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116168 .required_features = .{ .avx, null, null, null },
116169 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116170 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114623116171 .patterns = &.{
114624116172 .{ .src = .{ .to_mem, .none, .none } },
114625116173 },
114626116174 .call_frame = .{ .alignment = .@"16" },
114627116175 .extra_temps = .{
114628116176 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114629 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114630 .{ .type = .i32, .kind = .{ .reg = .edi } },
114631 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },
114632 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116177 .{ .type = .u32, .kind = .{ .reg = .edi } },
116178 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
116179 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
116180 .unused,
114633116181 .unused,
114634116182 .unused,
114635116183 .unused,
......@@ -114641,29 +116189,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114641116189 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114642116190 .each = .{ .once = &.{
114643116191 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114644 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114645 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114646 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
114647 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
114648 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114649 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114650 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
116192 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
116193 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116194 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116195 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
114651116196 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114652116197 } },
114653116198 }, .{
114654 .required_features = .{ .x87, null, null, null },
114655 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114656 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116199 .required_features = .{ .sse2, null, null, null },
116200 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116201 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114657116202 .patterns = &.{
114658116203 .{ .src = .{ .to_mem, .none, .none } },
114659116204 },
114660116205 .call_frame = .{ .alignment = .@"16" },
114661116206 .extra_temps = .{
114662116207 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114663 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114664 .{ .type = .i32, .kind = .{ .reg = .edi } },
114665 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },
114666 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116208 .{ .type = .u32, .kind = .{ .reg = .edi } },
116209 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
116210 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
116211 .unused,
114667116212 .unused,
114668116213 .unused,
114669116214 .unused,
......@@ -114675,29 +116220,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114675116220 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114676116221 .each = .{ .once = &.{
114677116222 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114678 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114679 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114680 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
114681 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
114682 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114683 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114684 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
114685 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
116223 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
116224 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116225 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116226 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
116227 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114686116228 } },
114687116229 }, .{
114688 .required_features = .{ .x87, .slow_incdec, null, null },
114689 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114690 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116230 .required_features = .{ .sse, null, null, null },
116231 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116232 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114691116233 .patterns = &.{
114692116234 .{ .src = .{ .to_mem, .none, .none } },
114693116235 },
114694116236 .call_frame = .{ .alignment = .@"16" },
114695116237 .extra_temps = .{
114696116238 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114697 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114698116239 .{ .type = .u32, .kind = .{ .reg = .edi } },
114699 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },
114700 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116240 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
116241 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
116242 .unused,
114701116243 .unused,
114702116244 .unused,
114703116245 .unused,
......@@ -114709,29 +116251,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114709116251 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114710116252 .each = .{ .once = &.{
114711116253 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114712 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114713 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114714 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
114715 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
114716 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114717 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114718 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
116254 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
116255 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116256 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116257 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
114719116258 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114720116259 } },
114721116260 }, .{
114722 .required_features = .{ .x87, null, null, null },
114723 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114724 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116261 .required_features = .{ .@"64bit", .avx, null, null },
116262 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
116263 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114725116264 .patterns = &.{
114726116265 .{ .src = .{ .to_mem, .none, .none } },
114727116266 },
114728116267 .call_frame = .{ .alignment = .@"16" },
114729116268 .extra_temps = .{
114730116269 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114731 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114732 .{ .type = .u32, .kind = .{ .reg = .edi } },
114733 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },
114734 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116270 .{ .type = .i64, .kind = .{ .reg = .rdi } },
116271 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },
116272 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
116273 .unused,
114735116274 .unused,
114736116275 .unused,
114737116276 .unused,
......@@ -114743,27 +116282,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114743116282 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114744116283 .each = .{ .once = &.{
114745116284 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114746 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114747 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114748 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
114749 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
114750 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114751 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114752 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
114753 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
116285 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
116286 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116287 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116288 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
116289 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114754116290 } },
114755116291 }, .{
114756 .required_features = .{ .x87, null, null, null },
114757 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
114758 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116292 .required_features = .{ .@"64bit", .sse2, null, null },
116293 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
116294 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114759116295 .patterns = &.{
114760116296 .{ .src = .{ .to_mem, .none, .none } },
114761116297 },
116298 .call_frame = .{ .alignment = .@"16" },
114762116299 .extra_temps = .{
114763116300 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114764 .{ .type = .f80, .kind = .{ .reg = .st7 } },
114765 .unused,
114766 .unused,
116301 .{ .type = .i64, .kind = .{ .reg = .rdi } },
116302 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },
116303 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114767116304 .unused,
114768116305 .unused,
114769116306 .unused,
......@@ -114773,27 +116310,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114773116310 .unused,
114774116311 },
114775116312 .dst_temps = .{ .mem, .unused },
114776 .clobbers = .{ .eflags = true },
116313 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114777116314 .each = .{ .once = &.{
114778116315 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114779 .{ .@"0:", .fi_, .ld, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._, ._ },
114780 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
114781 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
116316 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
116317 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116318 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116319 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
114782116320 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114783116321 } },
114784116322 }, .{
114785 .required_features = .{ .x87, null, null, null },
114786 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
114787 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116323 .required_features = .{ .@"64bit", .sse, null, null },
116324 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
116325 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114788116326 .patterns = &.{
114789116327 .{ .src = .{ .to_mem, .none, .none } },
114790116328 },
114791116329 .call_frame = .{ .alignment = .@"16" },
114792116330 .extra_temps = .{
114793116331 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114794 .{ .type = .i32, .kind = .{ .reg = .edi } },
114795 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },
114796 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116332 .{ .type = .i64, .kind = .{ .reg = .rdi } },
116333 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },
116334 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114797116335 .unused,
114798116336 .unused,
114799116337 .unused,
......@@ -114806,26 +116344,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114806116344 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114807116345 .each = .{ .once = &.{
114808116346 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114809 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
116347 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
114810116348 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114811 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
114812 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
114813 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
116349 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116350 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
114814116351 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114815116352 } },
114816116353 }, .{
114817 .required_features = .{ .x87, null, null, null },
114818 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
114819 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116354 .required_features = .{ .@"64bit", .avx, null, null },
116355 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
116356 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114820116357 .patterns = &.{
114821116358 .{ .src = .{ .to_mem, .none, .none } },
114822116359 },
114823116360 .call_frame = .{ .alignment = .@"16" },
114824116361 .extra_temps = .{
114825116362 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114826 .{ .type = .u32, .kind = .{ .reg = .edi } },
114827 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },
114828 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116363 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116364 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },
116365 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114829116366 .unused,
114830116367 .unused,
114831116368 .unused,
......@@ -114838,25 +116375,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114838116375 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114839116376 .each = .{ .once = &.{
114840116377 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114841 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
116378 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
114842116379 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114843 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
114844 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
114845 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
116380 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116381 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
114846116382 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114847116383 } },
114848116384 }, .{
114849 .required_features = .{ .x87, null, null, null },
114850 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
114851 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116385 .required_features = .{ .@"64bit", .sse2, null, null },
116386 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
116387 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114852116388 .patterns = &.{
114853116389 .{ .src = .{ .to_mem, .none, .none } },
114854116390 },
116391 .call_frame = .{ .alignment = .@"16" },
114855116392 .extra_temps = .{
114856116393 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114857 .{ .type = .f80, .kind = .{ .reg = .st7 } },
114858 .unused,
114859 .unused,
116394 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116395 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },
116396 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114860116397 .unused,
114861116398 .unused,
114862116399 .unused,
......@@ -114866,27 +116403,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114866116403 .unused,
114867116404 },
114868116405 .dst_temps = .{ .mem, .unused },
114869 .clobbers = .{ .eflags = true },
116406 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114870116407 .each = .{ .once = &.{
114871116408 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114872 .{ .@"0:", .fi_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
114873 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
114874 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
116409 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
116410 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116411 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116412 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
114875116413 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114876116414 } },
114877116415 }, .{
114878 .required_features = .{ .x87, null, null, null },
114879 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
114880 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116416 .required_features = .{ .@"64bit", .sse, null, null },
116417 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
116418 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114881116419 .patterns = &.{
114882116420 .{ .src = .{ .to_mem, .none, .none } },
114883116421 },
114884116422 .call_frame = .{ .alignment = .@"16" },
114885116423 .extra_temps = .{
114886116424 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114887 .{ .type = .i32, .kind = .{ .reg = .edi } },
114888 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },
114889 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116425 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116426 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },
116427 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114890116428 .unused,
114891116429 .unused,
114892116430 .unused,
......@@ -114899,27 +116437,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114899116437 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114900116438 .each = .{ .once = &.{
114901116439 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114902 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
116440 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
114903116441 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114904 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
114905 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
114906 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
116442 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116443 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
114907116444 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114908116445 } },
114909116446 }, .{
114910 .required_features = .{ .x87, null, null, null },
114911 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
114912 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116447 .required_features = .{ .@"64bit", .avx, null, null },
116448 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
116449 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114913116450 .patterns = &.{
114914116451 .{ .src = .{ .to_mem, .none, .none } },
114915116452 },
114916116453 .call_frame = .{ .alignment = .@"16" },
114917116454 .extra_temps = .{
114918116455 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114919 .{ .type = .u32, .kind = .{ .reg = .edi } },
114920 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },
114921 .{ .type = .f80, .kind = .{ .reg = .st7 } },
114922 .unused,
116456 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116457 .{ .type = .i64, .kind = .{ .reg = .rsi } },
116458 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },
116459 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114923116460 .unused,
114924116461 .unused,
114925116462 .unused,
......@@ -114931,26 +116468,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114931116468 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114932116469 .each = .{ .once = &.{
114933116470 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114934 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
114935 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114936 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
114937 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
114938 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
116471 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
116472 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
116473 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116474 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
116475 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
114939116476 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114940116477 } },
114941116478 }, .{
114942 .required_features = .{ .x87, null, null, null },
114943 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
114944 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116479 .required_features = .{ .@"64bit", .sse2, null, null },
116480 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
116481 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114945116482 .patterns = &.{
114946116483 .{ .src = .{ .to_mem, .none, .none } },
114947116484 },
116485 .call_frame = .{ .alignment = .@"16" },
114948116486 .extra_temps = .{
114949116487 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114950 .{ .type = .f80, .kind = .{ .reg = .st7 } },
114951 .unused,
114952 .unused,
114953 .unused,
116488 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116489 .{ .type = .i64, .kind = .{ .reg = .rsi } },
116490 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },
116491 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114954116492 .unused,
114955116493 .unused,
114956116494 .unused,
......@@ -114959,28 +116497,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114959116497 .unused,
114960116498 },
114961116499 .dst_temps = .{ .mem, .unused },
114962 .clobbers = .{ .eflags = true },
116500 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114963116501 .each = .{ .once = &.{
114964116502 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114965 .{ .@"0:", .fi_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
114966 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
114967 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
116503 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
116504 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
116505 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116506 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
116507 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
114968116508 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114969116509 } },
114970116510 }, .{
114971 .required_features = .{ .@"64bit", .x87, null, null },
114972 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
114973 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116511 .required_features = .{ .@"64bit", .sse, null, null },
116512 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
116513 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114974116514 .patterns = &.{
114975116515 .{ .src = .{ .to_mem, .none, .none } },
114976116516 },
114977116517 .call_frame = .{ .alignment = .@"16" },
114978116518 .extra_temps = .{
114979116519 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114980 .{ .type = .i64, .kind = .{ .reg = .rdi } },
114981 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdixf" } } },
114982 .{ .type = .f80, .kind = .{ .reg = .st7 } },
114983 .unused,
116520 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116521 .{ .type = .i64, .kind = .{ .reg = .rsi } },
116522 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },
116523 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114984116524 .unused,
114985116525 .unused,
114986116526 .unused,
......@@ -114993,16 +116533,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114993116533 .each = .{ .once = &.{
114994116534 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114995116535 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
114996 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114997 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
114998 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
114999 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
116536 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
116537 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116538 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
116539 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
115000116540 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115001116541 } },
115002116542 }, .{
115003 .required_features = .{ .@"64bit", .x87, null, null },
115004 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
115005 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116543 .required_features = .{ .@"64bit", .avx, null, null },
116544 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
116545 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
115006116546 .patterns = &.{
115007116547 .{ .src = .{ .to_mem, .none, .none } },
115008116548 },
......@@ -115010,9 +116550,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115010116550 .extra_temps = .{
115011116551 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115012116552 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115013 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundixf" } } },
115014 .{ .type = .f80, .kind = .{ .reg = .st7 } },
115015 .unused,
116553 .{ .type = .u64, .kind = .{ .reg = .rsi } },
116554 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },
116555 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115016116556 .unused,
115017116557 .unused,
115018116558 .unused,
......@@ -115025,16 +116565,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115025116565 .each = .{ .once = &.{
115026116566 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115027116567 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
115028 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
115029 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
115030 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
115031 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
116568 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
116569 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116570 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
116571 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
115032116572 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115033116573 } },
115034116574 }, .{
115035 .required_features = .{ .@"64bit", .x87, null, null },
115036 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
115037 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116575 .required_features = .{ .@"64bit", .sse2, null, null },
116576 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
116577 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
115038116578 .patterns = &.{
115039116579 .{ .src = .{ .to_mem, .none, .none } },
115040116580 },
......@@ -115042,9 +116582,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115042116582 .extra_temps = .{
115043116583 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115044116584 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115045 .{ .type = .i64, .kind = .{ .reg = .rsi } },
115046 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattixf" } } },
115047 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116585 .{ .type = .u64, .kind = .{ .reg = .rsi } },
116586 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },
116587 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115048116588 .unused,
115049116589 .unused,
115050116590 .unused,
......@@ -115059,15 +116599,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115059116599 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
115060116600 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
115061116601 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115062 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
115063 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
116602 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
115064116603 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
115065116604 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115066116605 } },
115067116606 }, .{
115068 .required_features = .{ .@"64bit", .x87, null, null },
116607 .required_features = .{ .@"64bit", .sse, null, null },
115069116608 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
115070 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116609 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
115071116610 .patterns = &.{
115072116611 .{ .src = .{ .to_mem, .none, .none } },
115073116612 },
......@@ -115076,8 +116615,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115076116615 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115077116616 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115078116617 .{ .type = .u64, .kind = .{ .reg = .rsi } },
115079 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntixf" } } },
115080 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116618 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },
116619 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115081116620 .unused,
115082116621 .unused,
115083116622 .unused,
......@@ -115092,15 +116631,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115092116631 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
115093116632 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
115094116633 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115095 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
115096 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
116634 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
115097116635 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
115098116636 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115099116637 } },
115100116638 }, .{
115101 .required_features = .{ .@"64bit", .x87, null, null },
116639 .required_features = .{ .@"64bit", .avx, null, null },
115102116640 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
115103 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116641 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
115104116642 .patterns = &.{
115105116643 .{ .src = .{ .to_mem, .none, .none } },
115106116644 },
......@@ -115110,8 +116648,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115110116648 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115111116649 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115112116650 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115113 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateixf" } } },
115114 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116651 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },
116652 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115115116653 .unused,
115116116654 .unused,
115117116655 .unused,
......@@ -115126,16 +116664,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115126116664 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
115127116665 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
115128116666 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
115129 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
115130 .{ ._, .f_p, .st, .memia(.dst0t, .tmp1, .add_unaligned_size), ._, ._, ._ },
116667 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
115131116668 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
115132116669 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
115133116670 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115134116671 } },
115135116672 }, .{
115136 .required_features = .{ .@"64bit", .x87, null, null },
115137 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
115138 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116673 .required_features = .{ .@"64bit", .sse2, null, null },
116674 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116675 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
115139116676 .patterns = &.{
115140116677 .{ .src = .{ .to_mem, .none, .none } },
115141116678 },
......@@ -115145,8 +116682,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115145116682 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115146116683 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115147116684 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115148 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneixf" } } },
115149 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116685 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },
116686 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115150116687 .unused,
115151116688 .unused,
115152116689 .unused,
......@@ -115161,134 +116698,185 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115161116698 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
115162116699 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
115163116700 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
115164 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
115165 .{ ._, .f_p, .st, .memia(.dst0t, .tmp1, .add_unaligned_size), ._, ._, ._ },
116701 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
115166116702 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
115167116703 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
115168116704 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115169116705 } },
115170116706 }, .{
115171 .required_features = .{ .sse, null, null, null },
115172 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
115173 .dst_constraints = .{ .{ .float = .xword }, .any },
116707 .required_features = .{ .@"64bit", .sse, null, null },
116708 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116709 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
115174116710 .patterns = &.{
115175 .{ .src = .{ .mem, .none, .none } },
115176 .{ .src = .{ .to_gpr, .none, .none } },
116711 .{ .src = .{ .to_mem, .none, .none } },
115177116712 },
115178116713 .call_frame = .{ .alignment = .@"16" },
115179116714 .extra_temps = .{
115180 .{ .type = .i32, .kind = .{ .reg = .edi } },
115181 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
115182 .unused,
115183 .unused,
115184 .unused,
115185 .unused,
116715 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116716 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116717 .{ .type = .usize, .kind = .{ .reg = .rdi } },
116718 .{ .type = .usize, .kind = .{ .reg = .rsi } },
116719 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },
116720 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115186116721 .unused,
115187116722 .unused,
115188116723 .unused,
115189116724 .unused,
115190116725 .unused,
115191116726 },
115192 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
116727 .dst_temps = .{ .mem, .unused },
115193116728 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115194116729 .each = .{ .once = &.{
115195 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
115196 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
116730 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
116731 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
116732 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
116733 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
116734 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
116735 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
116736 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
116737 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
116738 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115197116739 } },
115198116740 }, .{
115199 .required_features = .{ .sse, null, null, null },
115200 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
115201 .dst_constraints = .{ .{ .float = .xword }, .any },
116741 .required_features = .{ .@"64bit", .avx, null, null },
116742 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116743 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
115202116744 .patterns = &.{
115203 .{ .src = .{ .mem, .none, .none } },
115204 .{ .src = .{ .to_gpr, .none, .none } },
116745 .{ .src = .{ .to_mem, .none, .none } },
115205116746 },
115206116747 .call_frame = .{ .alignment = .@"16" },
115207116748 .extra_temps = .{
115208 .{ .type = .u32, .kind = .{ .reg = .edi } },
115209 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
115210 .unused,
115211 .unused,
115212 .unused,
115213 .unused,
116749 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116750 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116751 .{ .type = .usize, .kind = .{ .reg = .rdi } },
116752 .{ .type = .usize, .kind = .{ .reg = .rsi } },
116753 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },
116754 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115214116755 .unused,
115215116756 .unused,
115216116757 .unused,
115217116758 .unused,
115218116759 .unused,
115219116760 },
115220 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
116761 .dst_temps = .{ .mem, .unused },
115221116762 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115222116763 .each = .{ .once = &.{
115223 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
115224 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
116764 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
116765 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
116766 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
116767 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
116768 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
116769 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
116770 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
116771 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
116772 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115225116773 } },
115226116774 }, .{
115227 .required_features = .{ .sse, null, null, null },
115228 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
115229 .dst_constraints = .{ .{ .float = .xword }, .any },
116775 .required_features = .{ .@"64bit", .sse2, null, null },
116776 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116777 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
115230116778 .patterns = &.{
115231 .{ .src = .{ .mem, .none, .none } },
115232 .{ .src = .{ .to_gpr, .none, .none } },
116779 .{ .src = .{ .to_mem, .none, .none } },
115233116780 },
115234116781 .call_frame = .{ .alignment = .@"16" },
115235116782 .extra_temps = .{
115236 .{ .type = .i32, .kind = .{ .reg = .edi } },
115237 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
115238 .unused,
115239 .unused,
115240 .unused,
115241 .unused,
116783 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116784 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116785 .{ .type = .usize, .kind = .{ .reg = .rdi } },
116786 .{ .type = .usize, .kind = .{ .reg = .rsi } },
116787 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },
116788 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115242116789 .unused,
115243116790 .unused,
115244116791 .unused,
115245116792 .unused,
115246116793 .unused,
115247116794 },
115248 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
116795 .dst_temps = .{ .mem, .unused },
115249116796 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115250116797 .each = .{ .once = &.{
115251 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
115252 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
116798 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
116799 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
116800 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
116801 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
116802 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
116803 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
116804 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
116805 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
116806 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115253116807 } },
115254116808 }, .{
115255 .required_features = .{ .sse, null, null, null },
115256 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
115257 .dst_constraints = .{ .{ .float = .xword }, .any },
116809 .required_features = .{ .@"64bit", .sse, null, null },
116810 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116811 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
115258116812 .patterns = &.{
115259 .{ .src = .{ .mem, .none, .none } },
115260 .{ .src = .{ .to_gpr, .none, .none } },
116813 .{ .src = .{ .to_mem, .none, .none } },
115261116814 },
115262116815 .call_frame = .{ .alignment = .@"16" },
115263116816 .extra_temps = .{
115264 .{ .type = .u32, .kind = .{ .reg = .edi } },
115265 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
115266 .unused,
115267 .unused,
115268 .unused,
115269 .unused,
116817 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116818 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116819 .{ .type = .usize, .kind = .{ .reg = .rdi } },
116820 .{ .type = .usize, .kind = .{ .reg = .rsi } },
116821 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },
116822 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115270116823 .unused,
115271116824 .unused,
115272116825 .unused,
115273116826 .unused,
115274116827 .unused,
115275116828 },
115276 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
116829 .dst_temps = .{ .mem, .unused },
115277116830 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115278116831 .each = .{ .once = &.{
115279 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
115280 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
116832 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
116833 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
116834 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
116835 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
116836 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
116837 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
116838 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
116839 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
116840 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116841 } },
116842 } }) catch |err| switch (err) {
116843 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
116844 @tagName(air_tag),
116845 ty_op.ty.toType().fmt(pt),
116846 cg.typeOf(ty_op.operand).fmt(pt),
116847 ops[0].tracking(cg),
116848 }),
116849 else => |e| return e,
116850 };
116851 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
116852 },
116853
116854 .splat => |air_tag| if (use_old) try cg.airSplat(inst) else fallback: {
116855 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
116856 if (cg.typeOf(ty_op.operand).toIntern() == .bool_type) break :fallback try cg.airSplat(inst);
116857 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
116858 var res: [1]Temp = undefined;
116859 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
116860 .required_features = .{ .avx2, null, null, null },
116861 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any },
116862 .src_constraints = .{ .{ .int = .byte }, .any, .any },
116863 .patterns = &.{
116864 .{ .src = .{ .mem, .none, .none } },
116865 .{ .src = .{ .to_sse, .none, .none } },
116866 },
116867 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
116868 .each = .{ .once = &.{
116869 .{ ._, .vp_b, .broadcast, .dst0x, .src0b, ._, ._ },
115281116870 } },
115282116871 }, .{
115283 .required_features = .{ .sse, null, null, null },
115284 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
115285 .dst_constraints = .{ .{ .float = .xword }, .any },
116872 .required_features = .{ .avx, null, null, null },
116873 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any },
116874 .src_constraints = .{ .{ .int = .byte }, .any, .any },
115286116875 .patterns = &.{
115287 .{ .src = .{ .{ .to_reg = .edi }, .none, .none } },
116876 .{ .src = .{ .to_sse, .none, .none } },
115288116877 },
115289 .call_frame = .{ .alignment = .@"16" },
115290116878 .extra_temps = .{
115291 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
116879 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
115292116880 .unused,
115293116881 .unused,
115294116882 .unused,
......@@ -115300,21 +116888,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115300116888 .unused,
115301116889 .unused,
115302116890 },
115303 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
115304 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116891 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
115305116892 .each = .{ .once = &.{
115306 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
116893 .{ ._, .vp_, .xor, .tmp0x, .tmp0x, .tmp0x, ._ },
116894 .{ ._, .vp_b, .shuf, .dst0x, .src0x, .tmp0x, ._ },
115307116895 } },
115308116896 }, .{
115309 .required_features = .{ .sse, null, null, null },
115310 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
115311 .dst_constraints = .{ .{ .float = .xword }, .any },
116897 .required_features = .{ .ssse3, null, null, null },
116898 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any },
116899 .src_constraints = .{ .{ .int = .byte }, .any, .any },
115312116900 .patterns = &.{
115313 .{ .src = .{ .{ .to_reg = .edi }, .none, .none } },
116901 .{ .src = .{ .to_mut_sse, .none, .none } },
115314116902 },
115315 .call_frame = .{ .alignment = .@"16" },
115316116903 .extra_temps = .{
115317 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
116904 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
115318116905 .unused,
115319116906 .unused,
115320116907 .unused,
......@@ -115326,22 +116913,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115326116913 .unused,
115327116914 .unused,
115328116915 },
115329 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
115330 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116916 .dst_temps = .{ .{ .ref = .src0 }, .unused },
115331116917 .each = .{ .once = &.{
115332 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
116918 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
116919 .{ ._, .p_b, .shuf, .dst0x, .tmp0x, ._, ._ },
115333116920 } },
115334116921 }, .{
115335 .required_features = .{ .@"64bit", .sse, null, null },
115336 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
115337 .dst_constraints = .{ .{ .float = .xword }, .any },
116922 .required_features = .{ .sse2, null, null, null },
116923 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any },
116924 .src_constraints = .{ .{ .int = .byte }, .any, .any },
115338116925 .patterns = &.{
115339 .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } },
116926 .{ .src = .{ .to_mut_sse, .none, .none } },
116927 },
116928 .dst_temps = .{ .{ .ref = .src0 }, .unused },
116929 .each = .{ .once = &.{
116930 .{ ._, .p_, .unpcklbw, .src0x, .src0x, ._, ._ },
116931 .{ ._, .p_w, .shufl, .dst0x, .src0x, .ui(0b00_00_00_00), ._ },
116932 .{ ._, .p_d, .shuf, .dst0x, .dst0x, .ui(0b00_00_00_00), ._ },
116933 } },
116934 }, .{
116935 .required_features = .{ .avx2, null, null, null },
116936 .dst_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .byte } }, .any },
116937 .src_constraints = .{ .{ .int = .byte }, .any, .any },
116938 .patterns = &.{
116939 .{ .src = .{ .mem, .none, .none } },
116940 .{ .src = .{ .to_sse, .none, .none } },
116941 },
116942 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
116943 .each = .{ .once = &.{
116944 .{ ._, .vp_b, .broadcast, .dst0y, .src0b, ._, ._ },
116945 } },
116946 }, .{
116947 .required_features = .{ .avx2, null, null, null },
116948 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .byte } }, .any },
116949 .src_constraints = .{ .{ .int = .byte }, .any, .any },
116950 .patterns = &.{
116951 .{ .src = .{ .mem, .none, .none } },
116952 .{ .src = .{ .to_sse, .none, .none } },
115340116953 },
115341 .call_frame = .{ .alignment = .@"16" },
115342116954 .extra_temps = .{
115343 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },
115344 .unused,
116955 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116956 .{ .type = .vector_32_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
115345116957 .unused,
115346116958 .unused,
115347116959 .unused,
......@@ -115352,23 +116964,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115352116964 .unused,
115353116965 .unused,
115354116966 },
115355 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
115356 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116967 .dst_temps = .{ .mem, .unused },
115357116968 .each = .{ .once = &.{
115358 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
116969 .{ ._, ._, .mov, .tmp0d, .sia(-32, .dst0, .add_size), ._, ._ },
116970 .{ ._, .vp_b, .broadcast, .tmp1y, .src0b, ._, ._ },
116971 .{ .@"0:", .v_dqa, .mov, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
116972 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
116973 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115359116974 } },
115360116975 }, .{
115361 .required_features = .{ .@"64bit", .sse, null, null },
115362 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
115363 .dst_constraints = .{ .{ .float = .xword }, .any },
116976 .required_features = .{ .avx, null, null, null },
116977 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any },
116978 .src_constraints = .{ .{ .int = .byte }, .any, .any },
115364116979 .patterns = &.{
115365 .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } },
116980 .{ .src = .{ .to_sse, .none, .none } },
115366116981 },
115367 .call_frame = .{ .alignment = .@"16" },
115368116982 .extra_temps = .{
115369 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },
115370 .unused,
115371 .unused,
116983 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
116984 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116985 .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
115372116986 .unused,
115373116987 .unused,
115374116988 .unused,
......@@ -115378,22 +116992,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115378116992 .unused,
115379116993 .unused,
115380116994 },
115381 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
115382 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116995 .dst_temps = .{ .mem, .unused },
115383116996 .each = .{ .once = &.{
115384 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
116997 .{ ._, .vp_, .xor, .tmp0x, .tmp0x, .tmp0x, ._ },
116998 .{ ._, ._, .mov, .tmp1d, .sia(-16, .dst0, .add_size), ._, ._ },
116999 .{ ._, .vp_b, .shuf, .tmp2x, .src0x, .tmp0x, ._ },
117000 .{ .@"0:", .v_dqa, .mov, .memi(.dst0x, .tmp1), .tmp2x, ._, ._ },
117001 .{ ._, ._, .sub, .tmp1d, .si(16), ._, ._ },
117002 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115385117003 } },
115386117004 }, .{
115387 .required_features = .{ .@"64bit", .sse, null, null },
115388 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
115389 .dst_constraints = .{ .{ .float = .xword }, .any },
117005 .required_features = .{ .ssse3, null, null, null },
117006 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any },
117007 .src_constraints = .{ .{ .int = .byte }, .any, .any },
115390117008 .patterns = &.{
115391 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
117009 .{ .src = .{ .to_mut_sse, .none, .none } },
115392117010 },
115393 .call_frame = .{ .alignment = .@"16" },
115394117011 .extra_temps = .{
115395 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },
115396 .unused,
117012 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
117013 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115397117014 .unused,
115398117015 .unused,
115399117016 .unused,
......@@ -115404,21 +117021,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115404117021 .unused,
115405117022 .unused,
115406117023 },
115407 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
115408 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117024 .dst_temps = .{ .mem, .unused },
115409117025 .each = .{ .once = &.{
115410 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
117026 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
117027 .{ ._, ._, .mov, .tmp1d, .sia(-16, .dst0, .add_size), ._, ._ },
117028 .{ ._, .p_b, .shuf, .src0x, .tmp0x, ._, ._ },
117029 .{ .@"0:", ._dqa, .mov, .memi(.dst0x, .tmp1), .src0x, ._, ._ },
117030 .{ ._, ._, .sub, .tmp1d, .si(16), ._, ._ },
117031 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115411117032 } },
115412117033 }, .{
115413 .required_features = .{ .@"64bit", .sse, null, null },
115414 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
115415 .dst_constraints = .{ .{ .float = .xword }, .any },
117034 .required_features = .{ .sse2, null, null, null },
117035 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any },
117036 .src_constraints = .{ .{ .int = .byte }, .any, .any },
115416117037 .patterns = &.{
115417 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
117038 .{ .src = .{ .to_mut_sse, .none, .none } },
115418117039 },
115419 .call_frame = .{ .alignment = .@"16" },
115420117040 .extra_temps = .{
115421 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },
117041 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115422117042 .unused,
115423117043 .unused,
115424117044 .unused,
......@@ -115430,23 +117050,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115430117050 .unused,
115431117051 .unused,
115432117052 },
115433 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
115434 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117053 .dst_temps = .{ .mem, .unused },
115435117054 .each = .{ .once = &.{
115436 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
117055 .{ ._, .p_, .unpcklbw, .src0x, .src0x, ._, ._ },
117056 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
117057 .{ ._, .p_w, .shufl, .src0x, .src0x, .ui(0b00_00_00_00), ._ },
117058 .{ ._, .p_d, .shuf, .src0x, .src0x, .ui(0b00_00_00_00), ._ },
117059 .{ .@"0:", ._dqa, .mov, .memi(.dst0x, .tmp0), .src0x, ._, ._ },
117060 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
117061 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115437117062 } },
115438117063 }, .{
115439 .required_features = .{ .@"64bit", .sse, null, null },
115440 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
115441 .dst_constraints = .{ .{ .float = .xword }, .any },
117064 .required_features = .{ .slow_incdec, null, null, null },
117065 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
117066 .src_constraints = .{ .{ .int = .byte }, .any, .any },
115442117067 .patterns = &.{
115443 .{ .src = .{ .to_mem, .none, .none } },
117068 .{ .src = .{ .to_gpr, .none, .none } },
115444117069 },
115445 .call_frame = .{ .alignment = .@"16" },
115446117070 .extra_temps = .{
115447 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115448 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115449 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },
117071 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117072 .unused,
117073 .unused,
115450117074 .unused,
115451117075 .unused,
115452117076 .unused,
......@@ -115456,25 +117080,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115456117080 .unused,
115457117081 .unused,
115458117082 },
115459 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
115460 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117083 .dst_temps = .{ .mem, .unused },
115461117084 .each = .{ .once = &.{
115462 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
115463 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
115464 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117085 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_size), ._, ._ },
117086 .{ .@"0:", ._, .mov, .memi(.dst0b, .tmp0), .src0b, ._, ._ },
117087 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
117088 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115465117089 } },
115466117090 }, .{
115467 .required_features = .{ .@"64bit", .sse, null, null },
115468 .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
115469 .dst_constraints = .{ .{ .float = .xword }, .any },
117091 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
117092 .src_constraints = .{ .{ .int = .byte }, .any, .any },
115470117093 .patterns = &.{
115471 .{ .src = .{ .to_mem, .none, .none } },
117094 .{ .src = .{ .to_gpr, .none, .none } },
115472117095 },
115473 .call_frame = .{ .alignment = .@"16" },
115474117096 .extra_temps = .{
115475 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115476 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115477 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },
117097 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117098 .unused,
117099 .unused,
115478117100 .unused,
115479117101 .unused,
115480117102 .unused,
......@@ -115484,60 +117106,38 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115484117106 .unused,
115485117107 .unused,
115486117108 },
115487 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
115488 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117109 .dst_temps = .{ .mem, .unused },
115489117110 .each = .{ .once = &.{
115490 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
115491 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
115492 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117111 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_size), ._, ._ },
117112 .{ .@"0:", ._, .mov, .memi(.dst0b, .tmp0), .src0b, ._, ._ },
117113 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
117114 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
115493117115 } },
115494117116 }, .{
115495 .required_features = .{ .avx, .slow_incdec, null, null },
115496 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115497 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117117 .required_features = .{ .avx2, null, null, null },
117118 .dst_constraints = .{ .{ .scalar = .{ .of = .xword, .is = .word } }, .any },
117119 .src_constraints = .{ .{ .int_or_float = .word }, .any, .any },
115498117120 .patterns = &.{
115499 .{ .src = .{ .to_mem, .none, .none } },
115500 },
115501 .call_frame = .{ .alignment = .@"16" },
115502 .extra_temps = .{
115503 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115504 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115505 .{ .type = .i32, .kind = .{ .reg = .edi } },
115506 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
115507 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115508 .unused,
115509 .unused,
115510 .unused,
115511 .unused,
115512 .unused,
115513 .unused,
117121 .{ .src = .{ .mem, .none, .none } },
117122 .{ .src = .{ .to_sse, .none, .none } },
115514117123 },
115515 .dst_temps = .{ .mem, .unused },
115516 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117124 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
115517117125 .each = .{ .once = &.{
115518 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115519 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115520 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115521 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115522 .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
115523 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115524 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
115525 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117126 .{ ._, .vp_w, .broadcast, .dst0x, .src0w, ._, ._ },
115526117127 } },
115527117128 }, .{
115528117129 .required_features = .{ .avx, null, null, null },
115529 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115530 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117130 .dst_constraints = .{ .{ .scalar = .{ .of = .xword, .is = .word } }, .any },
117131 .src_constraints = .{ .{ .int_or_float = .word }, .any, .any },
115531117132 .patterns = &.{
115532 .{ .src = .{ .to_mem, .none, .none } },
117133 .{ .src = .{ .to_sse, .none, .none } },
115533117134 },
115534 .call_frame = .{ .alignment = .@"16" },
115535117135 .extra_temps = .{
115536 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115537117136 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115538 .{ .type = .i32, .kind = .{ .reg = .edi } },
115539 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
115540 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117137 .{ .type = .vector_16_u8, .kind = .{ .pshufb_splat_mem = .{ .size = .word } } },
117138 .unused,
117139 .unused,
117140 .unused,
115541117141 .unused,
115542117142 .unused,
115543117143 .unused,
......@@ -115545,32 +117145,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115545117145 .unused,
115546117146 .unused,
115547117147 },
115548 .dst_temps = .{ .mem, .unused },
115549 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117148 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
115550117149 .each = .{ .once = &.{
115551 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115552 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115553 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115554 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115555 .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
115556 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115557 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
115558 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
117150 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
117151 .{ ._, .vp_b, .shuf, .dst0x, .src0x, .lea(.tmp0x), ._ },
115559117152 } },
115560117153 }, .{
115561 .required_features = .{ .sse2, .slow_incdec, null, null },
115562 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115563 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117154 .required_features = .{ .ssse3, null, null, null },
117155 .dst_constraints = .{ .{ .scalar = .{ .of = .xword, .is = .word } }, .any },
117156 .src_constraints = .{ .{ .int_or_float = .word }, .any, .any },
115564117157 .patterns = &.{
115565 .{ .src = .{ .to_mem, .none, .none } },
117158 .{ .src = .{ .to_mut_sse, .none, .none } },
115566117159 },
115567 .call_frame = .{ .alignment = .@"16" },
115568117160 .extra_temps = .{
115569 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115570117161 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115571 .{ .type = .i32, .kind = .{ .reg = .edi } },
115572 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
115573 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117162 .{ .type = .vector_16_u8, .kind = .{ .pshufb_splat_mem = .{ .size = .word } } },
117163 .unused,
117164 .unused,
117165 .unused,
115574117166 .unused,
115575117167 .unused,
115576117168 .unused,
......@@ -115578,32 +117170,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115578117170 .unused,
115579117171 .unused,
115580117172 },
115581 .dst_temps = .{ .mem, .unused },
115582 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117173 .dst_temps = .{ .{ .ref = .src0 }, .unused },
115583117174 .each = .{ .once = &.{
115584 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115585 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115586 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115587 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115588 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
115589 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115590 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
115591 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117175 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
117176 .{ ._, .p_b, .shuf, .dst0x, .lea(.tmp0x), ._, ._ },
115592117177 } },
115593117178 }, .{
115594117179 .required_features = .{ .sse2, null, null, null },
115595 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115596 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117180 .dst_constraints = .{ .{ .scalar = .{ .of = .xword, .is = .word } }, .any },
117181 .src_constraints = .{ .{ .int_or_float = .word }, .any, .any },
115597117182 .patterns = &.{
115598 .{ .src = .{ .to_mem, .none, .none } },
117183 .{ .src = .{ .to_sse, .none, .none } },
117184 },
117185 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
117186 .each = .{ .once = &.{
117187 .{ ._, .p_w, .shufl, .dst0x, .src0x, .ui(0b00_00_00_00), ._ },
117188 .{ ._, .p_d, .shuf, .dst0x, .dst0x, .ui(0b00_00_00_00), ._ },
117189 } },
117190 }, .{
117191 .required_features = .{ .avx2, null, null, null },
117192 .dst_constraints = .{ .{ .scalar = .{ .of = .yword, .is = .word } }, .any },
117193 .src_constraints = .{ .{ .int_or_float = .word }, .any, .any },
117194 .patterns = &.{
117195 .{ .src = .{ .mem, .none, .none } },
117196 .{ .src = .{ .to_sse, .none, .none } },
117197 },
117198 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
117199 .each = .{ .once = &.{
117200 .{ ._, .vp_w, .broadcast, .dst0y, .src0w, ._, ._ },
117201 } },
117202 }, .{
117203 .required_features = .{ .avx2, null, null, null },
117204 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .yword, .is = .word } }, .any },
117205 .src_constraints = .{ .{ .int_or_float = .word }, .any, .any },
117206 .patterns = &.{
117207 .{ .src = .{ .mem, .none, .none } },
117208 .{ .src = .{ .to_sse, .none, .none } },
115599117209 },
115600 .call_frame = .{ .alignment = .@"16" },
115601117210 .extra_temps = .{
115602 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115603 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115604 .{ .type = .i32, .kind = .{ .reg = .edi } },
115605 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
115606 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117211 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117212 .{ .type = .vector_16_u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
117213 .unused,
117214 .unused,
117215 .unused,
115607117216 .unused,
115608117217 .unused,
115609117218 .unused,
......@@ -115612,31 +117221,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115612117221 .unused,
115613117222 },
115614117223 .dst_temps = .{ .mem, .unused },
115615 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115616117224 .each = .{ .once = &.{
115617 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115618 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115619 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115620 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115621 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
115622 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115623 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
115624 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
117225 .{ ._, ._, .mov, .tmp0d, .sia(-32, .dst0, .add_size), ._, ._ },
117226 .{ ._, .vp_w, .broadcast, .tmp1y, .src0w, ._, ._ },
117227 .{ .@"0:", .v_dqa, .mov, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
117228 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
117229 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115625117230 } },
115626117231 }, .{
115627 .required_features = .{ .sse, .slow_incdec, null, null },
115628 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115629 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117232 .required_features = .{ .avx, null, null, null },
117233 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .xword, .is = .word } }, .any },
117234 .src_constraints = .{ .{ .int_or_float = .word }, .any, .any },
115630117235 .patterns = &.{
115631 .{ .src = .{ .to_mem, .none, .none } },
117236 .{ .src = .{ .to_sse, .none, .none } },
115632117237 },
115633 .call_frame = .{ .alignment = .@"16" },
115634117238 .extra_temps = .{
115635 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115636 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115637 .{ .type = .i32, .kind = .{ .reg = .edi } },
115638 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
115639 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117239 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117240 .{ .type = .vector_16_u8, .kind = .{ .pshufb_splat_mem = .{ .size = .word } } },
117241 .{ .type = .vector_8_u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
117242 .unused,
117243 .unused,
115640117244 .unused,
115641117245 .unused,
115642117246 .unused,
......@@ -115645,31 +117249,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115645117249 .unused,
115646117250 },
115647117251 .dst_temps = .{ .mem, .unused },
115648 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115649117252 .each = .{ .once = &.{
115650 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115651 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115652 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115653 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115654 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },
115655 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115656 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
115657 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117253 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
117254 .{ ._, .vp_b, .shuf, .tmp2x, .src0x, .lea(.tmp0x), ._ },
117255 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
117256 .{ .@"0:", .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp2x, ._, ._ },
117257 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
117258 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115658117259 } },
115659117260 }, .{
115660 .required_features = .{ .sse, null, null, null },
115661 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115662 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117261 .required_features = .{ .ssse3, null, null, null },
117262 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .xword, .is = .word } }, .any },
117263 .src_constraints = .{ .{ .int_or_float = .word }, .any, .any },
115663117264 .patterns = &.{
115664 .{ .src = .{ .to_mem, .none, .none } },
117265 .{ .src = .{ .to_mut_sse, .none, .none } },
115665117266 },
115666 .call_frame = .{ .alignment = .@"16" },
115667117267 .extra_temps = .{
115668 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115669 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115670 .{ .type = .i32, .kind = .{ .reg = .edi } },
115671 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
115672 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117268 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117269 .{ .type = .vector_16_u8, .kind = .{ .pshufb_splat_mem = .{ .size = .word } } },
117270 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
117271 .unused,
117272 .unused,
115673117273 .unused,
115674117274 .unused,
115675117275 .unused,
......@@ -115678,31 +117278,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115678117278 .unused,
115679117279 },
115680117280 .dst_temps = .{ .mem, .unused },
115681 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115682117281 .each = .{ .once = &.{
115683 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115684 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115685 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115686 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115687 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },
115688 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115689 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
115690 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
117282 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
117283 .{ ._, .p_b, .shuf, .src0x, .lea(.tmp0x), ._, ._ },
117284 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
117285 .{ .@"0:", ._dqa, .mov, .memi(.dst0x, .tmp0), .src0x, ._, ._ },
117286 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
117287 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115691117288 } },
115692117289 }, .{
115693 .required_features = .{ .avx, .slow_incdec, null, null },
115694 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115695 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117290 .required_features = .{ .sse2, null, null, null },
117291 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .xword, .is = .word } }, .any },
117292 .src_constraints = .{ .{ .int_or_float = .word }, .any, .any },
115696117293 .patterns = &.{
115697 .{ .src = .{ .to_mem, .none, .none } },
117294 .{ .src = .{ .to_mut_sse, .none, .none } },
115698117295 },
115699 .call_frame = .{ .alignment = .@"16" },
115700117296 .extra_temps = .{
115701 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115702 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115703 .{ .type = .u32, .kind = .{ .reg = .edi } },
115704 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
115705 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117297 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117298 .unused,
117299 .unused,
117300 .unused,
117301 .unused,
115706117302 .unused,
115707117303 .unused,
115708117304 .unused,
......@@ -115711,31 +117307,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115711117307 .unused,
115712117308 },
115713117309 .dst_temps = .{ .mem, .unused },
115714 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115715117310 .each = .{ .once = &.{
115716 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115717 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115718 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115719 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115720 .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
115721 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115722 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
115723 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117311 .{ ._, .p_w, .shufl, .src0x, .src0x, .ui(0b00_00_00_00), ._ },
117312 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
117313 .{ ._, .p_d, .shuf, .src0x, .src0x, .ui(0b00_00_00_00), ._ },
117314 .{ .@"0:", ._dqa, .mov, .memi(.dst0x, .tmp0), .src0x, ._, ._ },
117315 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
117316 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115724117317 } },
115725117318 }, .{
115726 .required_features = .{ .avx, null, null, null },
115727 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115728 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117319 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .word, .is = .word } }, .any },
117320 .src_constraints = .{ .{ .int_or_float = .word }, .any, .any },
115729117321 .patterns = &.{
115730 .{ .src = .{ .to_mem, .none, .none } },
117322 .{ .src = .{ .to_gpr, .none, .none } },
115731117323 },
115732 .call_frame = .{ .alignment = .@"16" },
115733117324 .extra_temps = .{
115734 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115735 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115736 .{ .type = .u32, .kind = .{ .reg = .edi } },
115737 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
115738 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117325 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117326 .unused,
117327 .unused,
117328 .unused,
117329 .unused,
115739117330 .unused,
115740117331 .unused,
115741117332 .unused,
......@@ -115744,31 +117335,151 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115744117335 .unused,
115745117336 },
115746117337 .dst_temps = .{ .mem, .unused },
115747 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115748117338 .each = .{ .once = &.{
115749 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115750 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115751 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115752 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115753 .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
115754 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115755 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
115756 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
117339 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_size), ._, ._ },
117340 .{ .@"0:", ._, .mov, .memi(.dst0w, .tmp0), .src0w, ._, ._ },
117341 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
117342 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115757117343 } },
115758117344 }, .{
115759 .required_features = .{ .sse2, .slow_incdec, null, null },
115760 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115761 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117345 .required_features = .{ .avx2, null, null, null },
117346 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
117347 .src_constraints = .{ .{ .int = .dword }, .any, .any },
115762117348 .patterns = &.{
115763 .{ .src = .{ .to_mem, .none, .none } },
117349 .{ .src = .{ .mem, .none, .none } },
117350 .{ .src = .{ .to_sse, .none, .none } },
117351 },
117352 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
117353 .each = .{ .once = &.{
117354 .{ ._, .vp_d, .broadcast, .dst0x, .src0d, ._, ._ },
117355 } },
117356 }, .{
117357 .required_features = .{ .avx2, null, null, null },
117358 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
117359 .src_constraints = .{ .{ .float = .dword }, .any, .any },
117360 .patterns = &.{
117361 .{ .src = .{ .mem, .none, .none } },
117362 .{ .src = .{ .to_sse, .none, .none } },
117363 },
117364 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
117365 .each = .{ .once = &.{
117366 .{ ._, .v_ss, .broadcast, .dst0x, .src0d, ._, ._ },
117367 } },
117368 }, .{
117369 .required_features = .{ .avx, null, null, null },
117370 .dst_constraints = .{ .{ .scalar = .{ .of = .xword, .is = .dword } }, .any },
117371 .src_constraints = .{ .{ .int_or_float = .dword }, .any, .any },
117372 .patterns = &.{
117373 .{ .src = .{ .mem, .none, .none } },
117374 },
117375 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
117376 .each = .{ .once = &.{
117377 .{ ._, .v_ss, .broadcast, .dst0x, .src0d, ._, ._ },
117378 } },
117379 }, .{
117380 .required_features = .{ .avx, null, null, null },
117381 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
117382 .src_constraints = .{ .{ .int = .dword }, .any, .any },
117383 .patterns = &.{
117384 .{ .src = .{ .to_sse, .none, .none } },
117385 },
117386 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
117387 .each = .{ .once = &.{
117388 .{ ._, .vp_d, .shuf, .dst0x, .src0x, .ui(0b00_00_00_00), ._ },
117389 } },
117390 }, .{
117391 .required_features = .{ .avx, null, null, null },
117392 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
117393 .src_constraints = .{ .{ .float = .dword }, .any, .any },
117394 .patterns = &.{
117395 .{ .src = .{ .to_sse, .none, .none } },
117396 },
117397 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
117398 .each = .{ .once = &.{
117399 .{ ._, .v_ps, .shuf, .dst0x, .src0x, .src0x, .ui(0b00_00_00_00) },
117400 } },
117401 }, .{
117402 .required_features = .{ .sse2, null, null, null },
117403 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
117404 .src_constraints = .{ .{ .int = .dword }, .any, .any },
117405 .patterns = &.{
117406 .{ .src = .{ .to_sse, .none, .none } },
117407 },
117408 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
117409 .each = .{ .once = &.{
117410 .{ ._, .p_d, .shuf, .dst0x, .src0x, .ui(0b00_00_00_00), ._ },
117411 } },
117412 }, .{
117413 .required_features = .{ .sse, null, null, null },
117414 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
117415 .src_constraints = .{ .{ .float = .dword }, .any, .any },
117416 .patterns = &.{
117417 .{ .src = .{ .mut_sse, .none, .none } },
117418 },
117419 .dst_temps = .{ .{ .ref = .src0 }, .unused },
117420 .each = .{ .once = &.{
117421 .{ ._, ._ps, .shuf, .dst0x, .src0x, .ui(0b00_00_00_00), ._ },
117422 } },
117423 }, .{
117424 .required_features = .{ .sse2, null, null, null },
117425 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
117426 .src_constraints = .{ .{ .float = .dword }, .any, .any },
117427 .patterns = &.{
117428 .{ .src = .{ .sse, .none, .none } },
117429 },
117430 .dst_temps = .{ .{ .rc = .sse }, .unused },
117431 .each = .{ .once = &.{
117432 .{ ._, .p_d, .shuf, .dst0x, .src0x, .ui(0b00_00_00_00), ._ },
117433 } },
117434 }, .{
117435 .required_features = .{ .sse, null, null, null },
117436 .dst_constraints = .{ .{ .scalar = .{ .of = .xword, .is = .dword } }, .any },
117437 .src_constraints = .{ .{ .int_or_float = .dword }, .any, .any },
117438 .patterns = &.{
117439 .{ .src = .{ .to_mut_sse, .none, .none } },
117440 },
117441 .dst_temps = .{ .{ .ref = .src0 }, .unused },
117442 .each = .{ .once = &.{
117443 .{ ._, ._ps, .shuf, .dst0x, .src0x, .ui(0b00_00_00_00), ._ },
117444 } },
117445 }, .{
117446 .required_features = .{ .avx2, null, null, null },
117447 .dst_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },
117448 .src_constraints = .{ .{ .int = .dword }, .any, .any },
117449 .patterns = &.{
117450 .{ .src = .{ .mem, .none, .none } },
117451 .{ .src = .{ .to_sse, .none, .none } },
117452 },
117453 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
117454 .each = .{ .once = &.{
117455 .{ ._, .vp_d, .broadcast, .dst0y, .src0d, ._, ._ },
117456 } },
117457 }, .{
117458 .required_features = .{ .avx2, null, null, null },
117459 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any },
117460 .src_constraints = .{ .{ .float = .dword }, .any, .any },
117461 .patterns = &.{
117462 .{ .src = .{ .mem, .none, .none } },
117463 .{ .src = .{ .to_sse, .none, .none } },
117464 },
117465 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
117466 .each = .{ .once = &.{
117467 .{ ._, .v_ss, .broadcast, .dst0y, .src0d, ._, ._ },
117468 } },
117469 }, .{
117470 .required_features = .{ .avx2, null, null, null },
117471 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }, .any },
117472 .src_constraints = .{ .{ .int = .dword }, .any, .any },
117473 .patterns = &.{
117474 .{ .src = .{ .mem, .none, .none } },
117475 .{ .src = .{ .to_sse, .none, .none } },
115764117476 },
115765 .call_frame = .{ .alignment = .@"16" },
115766117477 .extra_temps = .{
115767 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115768 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115769 .{ .type = .u32, .kind = .{ .reg = .edi } },
115770 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
115771 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117478 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117479 .{ .type = .vector_8_u32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
117480 .unused,
117481 .unused,
117482 .unused,
115772117483 .unused,
115773117484 .unused,
115774117485 .unused,
......@@ -115777,31 +117488,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115777117488 .unused,
115778117489 },
115779117490 .dst_temps = .{ .mem, .unused },
115780 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115781117491 .each = .{ .once = &.{
115782 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115783 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115784 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115785 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115786 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
115787 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115788 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
115789 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117492 .{ ._, ._, .mov, .tmp0d, .sia(-32, .dst0, .add_size), ._, ._ },
117493 .{ ._, .vp_d, .broadcast, .tmp1y, .src0d, ._, ._ },
117494 .{ .@"0:", .v_dqa, .mov, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
117495 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
117496 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115790117497 } },
115791117498 }, .{
115792 .required_features = .{ .sse2, null, null, null },
115793 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115794 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117499 .required_features = .{ .avx2, null, null, null },
117500 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },
117501 .src_constraints = .{ .{ .float = .dword }, .any, .any },
115795117502 .patterns = &.{
115796 .{ .src = .{ .to_mem, .none, .none } },
117503 .{ .src = .{ .mem, .none, .none } },
117504 .{ .src = .{ .to_sse, .none, .none } },
115797117505 },
115798 .call_frame = .{ .alignment = .@"16" },
115799117506 .extra_temps = .{
115800 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115801 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115802 .{ .type = .u32, .kind = .{ .reg = .edi } },
115803 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
115804 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117507 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117508 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
117509 .unused,
117510 .unused,
117511 .unused,
115805117512 .unused,
115806117513 .unused,
115807117514 .unused,
......@@ -115810,31 +117517,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115810117517 .unused,
115811117518 },
115812117519 .dst_temps = .{ .mem, .unused },
115813 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115814117520 .each = .{ .once = &.{
115815 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115816 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115817 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115818 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115819 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
115820 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115821 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
115822 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
117521 .{ ._, ._, .mov, .tmp0d, .sia(-32, .dst0, .add_size), ._, ._ },
117522 .{ ._, .v_ss, .broadcast, .tmp1y, .src0d, ._, ._ },
117523 .{ .@"0:", .v_ps, .mova, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
117524 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
117525 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115823117526 } },
115824117527 }, .{
115825 .required_features = .{ .sse, .slow_incdec, null, null },
115826 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115827 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117528 .required_features = .{ .avx, null, null, null },
117529 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .xword, .is = .dword } }, .any },
117530 .src_constraints = .{ .{ .int_or_float = .dword }, .any, .any },
115828117531 .patterns = &.{
115829 .{ .src = .{ .to_mem, .none, .none } },
117532 .{ .src = .{ .mem, .none, .none } },
115830117533 },
115831 .call_frame = .{ .alignment = .@"16" },
115832117534 .extra_temps = .{
115833 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115834 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115835 .{ .type = .u32, .kind = .{ .reg = .edi } },
115836 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
115837 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117535 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117536 .{ .type = .vector_4_u32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
117537 .unused,
117538 .unused,
117539 .unused,
115838117540 .unused,
115839117541 .unused,
115840117542 .unused,
......@@ -115843,31 +117545,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115843117545 .unused,
115844117546 },
115845117547 .dst_temps = .{ .mem, .unused },
115846 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115847117548 .each = .{ .once = &.{
115848 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115849 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115850 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115851 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115852 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },
115853 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115854 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
115855 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117549 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
117550 .{ ._, .v_ss, .broadcast, .tmp1x, .src0d, ._, ._ },
117551 .{ .@"0:", .v_ps, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
117552 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
117553 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115856117554 } },
115857117555 }, .{
115858 .required_features = .{ .sse, null, null, null },
115859 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115860 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117556 .required_features = .{ .avx, null, null, null },
117557 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any },
117558 .src_constraints = .{ .{ .int = .dword }, .any, .any },
115861117559 .patterns = &.{
115862 .{ .src = .{ .to_mem, .none, .none } },
117560 .{ .src = .{ .to_sse, .none, .none } },
115863117561 },
115864 .call_frame = .{ .alignment = .@"16" },
115865117562 .extra_temps = .{
115866 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115867 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115868 .{ .type = .u32, .kind = .{ .reg = .edi } },
115869 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
115870 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117563 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117564 .{ .type = .vector_4_u32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
117565 .unused,
117566 .unused,
117567 .unused,
115871117568 .unused,
115872117569 .unused,
115873117570 .unused,
......@@ -115876,30 +117573,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115876117573 .unused,
115877117574 },
115878117575 .dst_temps = .{ .mem, .unused },
115879 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115880117576 .each = .{ .once = &.{
115881 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115882 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115883 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115884 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115885 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },
115886 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115887 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
115888 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
117577 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
117578 .{ ._, .vp_d, .shuf, .tmp1x, .src0x, .ui(0b00_00_00_00), ._ },
117579 .{ .@"0:", .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
117580 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
117581 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115889117582 } },
115890117583 }, .{
115891117584 .required_features = .{ .avx, null, null, null },
115892 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
115893 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117585 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
117586 .src_constraints = .{ .{ .float = .dword }, .any, .any },
115894117587 .patterns = &.{
115895 .{ .src = .{ .to_mem, .none, .none } },
117588 .{ .src = .{ .to_sse, .none, .none } },
115896117589 },
115897 .call_frame = .{ .alignment = .@"16" },
115898117590 .extra_temps = .{
115899 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115900 .{ .type = .i32, .kind = .{ .reg = .edi } },
115901 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
115902 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117591 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117592 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
117593 .unused,
117594 .unused,
115903117595 .unused,
115904117596 .unused,
115905117597 .unused,
......@@ -115909,28 +117601,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115909117601 .unused,
115910117602 },
115911117603 .dst_temps = .{ .mem, .unused },
115912 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115913117604 .each = .{ .once = &.{
115914 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115915 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
115916 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
115917 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
115918 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
115919 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117605 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
117606 .{ ._, .v_ps, .shuf, .tmp1x, .tmp1x, .src0x, .ui(0b00_00_00_00) },
117607 .{ .@"0:", .v_ps, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
117608 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
117609 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115920117610 } },
115921117611 }, .{
115922117612 .required_features = .{ .sse2, null, null, null },
115923 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
115924 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117613 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any },
117614 .src_constraints = .{ .{ .int = .dword }, .any, .any },
115925117615 .patterns = &.{
115926 .{ .src = .{ .to_mem, .none, .none } },
117616 .{ .src = .{ .to_sse, .none, .none } },
115927117617 },
115928 .call_frame = .{ .alignment = .@"16" },
115929117618 .extra_temps = .{
115930 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115931 .{ .type = .i32, .kind = .{ .reg = .edi } },
115932 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
115933 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117619 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117620 .{ .type = .vector_4_u32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
117621 .unused,
117622 .unused,
115934117623 .unused,
115935117624 .unused,
115936117625 .unused,
......@@ -115940,28 +117629,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115940117629 .unused,
115941117630 },
115942117631 .dst_temps = .{ .mem, .unused },
115943 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115944117632 .each = .{ .once = &.{
115945 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115946 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
115947 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
115948 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
115949 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
115950 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117633 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
117634 .{ ._, .p_d, .shuf, .tmp1x, .src0x, .ui(0b00_00_00_00), ._ },
117635 .{ .@"0:", ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
117636 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
117637 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115951117638 } },
115952117639 }, .{
115953117640 .required_features = .{ .sse, null, null, null },
115954 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
115955 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117641 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
117642 .src_constraints = .{ .{ .float = .dword }, .any, .any },
115956117643 .patterns = &.{
115957 .{ .src = .{ .to_mem, .none, .none } },
117644 .{ .src = .{ .mut_sse, .none, .none } },
115958117645 },
115959 .call_frame = .{ .alignment = .@"16" },
115960117646 .extra_temps = .{
115961 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115962 .{ .type = .i32, .kind = .{ .reg = .edi } },
115963 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
115964 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117647 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117648 .unused,
117649 .unused,
117650 .unused,
115965117651 .unused,
115966117652 .unused,
115967117653 .unused,
......@@ -115971,28 +117657,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115971117657 .unused,
115972117658 },
115973117659 .dst_temps = .{ .mem, .unused },
115974 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115975117660 .each = .{ .once = &.{
115976 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115977 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
115978 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
115979 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
115980 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
115981 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117661 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
117662 .{ ._, ._ps, .shuf, .src0x, .src0x, .ui(0b00_00_00_00), ._ },
117663 .{ .@"0:", ._ps, .mova, .memi(.dst0x, .tmp0), .src0x, ._, ._ },
117664 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
117665 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115982117666 } },
115983117667 }, .{
115984 .required_features = .{ .avx, null, null, null },
115985 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
115986 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117668 .required_features = .{ .sse2, null, null, null },
117669 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
117670 .src_constraints = .{ .{ .float = .dword }, .any, .any },
115987117671 .patterns = &.{
115988 .{ .src = .{ .to_mem, .none, .none } },
117672 .{ .src = .{ .sse, .none, .none } },
115989117673 },
115990 .call_frame = .{ .alignment = .@"16" },
115991117674 .extra_temps = .{
115992 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115993 .{ .type = .u32, .kind = .{ .reg = .edi } },
115994 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
115995 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117675 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117676 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
117677 .unused,
117678 .unused,
115996117679 .unused,
115997117680 .unused,
115998117681 .unused,
......@@ -116002,28 +117685,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116002117685 .unused,
116003117686 },
116004117687 .dst_temps = .{ .mem, .unused },
116005 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116006117688 .each = .{ .once = &.{
116007 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116008 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
116009 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116010 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116011 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
116012 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117689 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
117690 .{ ._, .p_d, .shuf, .tmp1x, .src0x, .ui(0b00_00_00_00), ._ },
117691 .{ .@"0:", ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
117692 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
117693 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116013117694 } },
116014117695 }, .{
116015 .required_features = .{ .sse2, null, null, null },
116016 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
116017 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117696 .required_features = .{ .sse, null, null, null },
117697 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .xword, .is = .dword } }, .any },
117698 .src_constraints = .{ .{ .int_or_float = .dword }, .any, .any },
116018117699 .patterns = &.{
116019 .{ .src = .{ .to_mem, .none, .none } },
117700 .{ .src = .{ .to_mut_sse, .none, .none } },
116020117701 },
116021 .call_frame = .{ .alignment = .@"16" },
116022117702 .extra_temps = .{
116023 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116024 .{ .type = .u32, .kind = .{ .reg = .edi } },
116025 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
116026 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117703 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117704 .unused,
117705 .unused,
117706 .unused,
116027117707 .unused,
116028117708 .unused,
116029117709 .unused,
......@@ -116033,28 +117713,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116033117713 .unused,
116034117714 },
116035117715 .dst_temps = .{ .mem, .unused },
116036 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116037117716 .each = .{ .once = &.{
116038 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116039 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
116040 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116041 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116042 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
116043 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117717 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
117718 .{ ._, ._ps, .shuf, .src0x, .src0x, .ui(0b00_00_00_00), ._ },
117719 .{ .@"0:", ._ps, .mova, .memi(.dst0x, .tmp0), .src0x, ._, ._ },
117720 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
117721 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116044117722 } },
116045117723 }, .{
116046 .required_features = .{ .sse, null, null, null },
116047 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
116048 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117724 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .dword, .is = .dword } }, .any },
117725 .src_constraints = .{ .{ .int_or_float = .dword }, .any, .any },
116049117726 .patterns = &.{
116050 .{ .src = .{ .to_mem, .none, .none } },
117727 .{ .src = .{ .to_gpr, .none, .none } },
116051117728 },
116052 .call_frame = .{ .alignment = .@"16" },
116053117729 .extra_temps = .{
116054 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116055 .{ .type = .u32, .kind = .{ .reg = .edi } },
116056 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
116057 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117730 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117731 .unused,
117732 .unused,
117733 .unused,
116058117734 .unused,
116059117735 .unused,
116060117736 .unused,
......@@ -116064,28 +117740,152 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116064117740 .unused,
116065117741 },
116066117742 .dst_temps = .{ .mem, .unused },
116067 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116068117743 .each = .{ .once = &.{
116069 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116070 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
116071 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116072 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116073 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
116074 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117744 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_size), ._, ._ },
117745 .{ .@"0:", ._, .mov, .memi(.dst0d, .tmp0), .src0d, ._, ._ },
117746 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
117747 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
117748 } },
117749 }, .{
117750 .required_features = .{ .avx2, null, null, null },
117751 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
117752 .src_constraints = .{ .{ .int = .qword }, .any, .any },
117753 .patterns = &.{
117754 .{ .src = .{ .mem, .none, .none } },
117755 .{ .src = .{ .to_sse, .none, .none } },
117756 },
117757 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
117758 .each = .{ .once = &.{
117759 .{ ._, .vp_q, .broadcast, .dst0x, .src0q, ._, ._ },
117760 } },
117761 }, .{
117762 .required_features = .{ .avx2, null, null, null },
117763 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
117764 .src_constraints = .{ .{ .float = .qword }, .any, .any },
117765 .patterns = &.{
117766 .{ .src = .{ .mem, .none, .none } },
117767 .{ .src = .{ .to_sse, .none, .none } },
117768 },
117769 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
117770 .each = .{ .once = &.{
117771 .{ ._, .v_, .movddup, .dst0x, .src0q, ._, ._ },
116075117772 } },
116076117773 }, .{
116077117774 .required_features = .{ .avx, null, null, null },
116078 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116079 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117775 .dst_constraints = .{ .{ .scalar = .{ .of = .xword, .is = .qword } }, .any },
117776 .src_constraints = .{ .{ .int_or_float = .qword }, .any, .any },
116080117777 .patterns = &.{
116081 .{ .src = .{ .to_mem, .none, .none } },
117778 .{ .src = .{ .mem, .none, .none } },
117779 .{ .src = .{ .to_sse, .none, .none } },
117780 },
117781 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
117782 .each = .{ .once = &.{
117783 .{ ._, .v_, .movddup, .dst0x, .src0q, ._, ._ },
117784 } },
117785 }, .{
117786 .required_features = .{ .sse3, null, null, null },
117787 .dst_constraints = .{ .{ .scalar = .{ .of = .xword, .is = .qword } }, .any },
117788 .src_constraints = .{ .{ .int_or_float = .qword }, .any, .any },
117789 .patterns = &.{
117790 .{ .src = .{ .mem, .none, .none } },
117791 .{ .src = .{ .to_sse, .none, .none } },
117792 },
117793 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
117794 .each = .{ .once = &.{
117795 .{ ._, ._, .movddup, .dst0x, .src0q, ._, ._ },
117796 } },
117797 }, .{
117798 .required_features = .{ .sse2, null, null, null },
117799 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
117800 .src_constraints = .{ .{ .int = .qword }, .any, .any },
117801 .patterns = &.{
117802 .{ .src = .{ .to_sse, .none, .none } },
117803 },
117804 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
117805 .each = .{ .once = &.{
117806 .{ ._, .p_d, .shuf, .dst0x, .src0x, .ui(0b01_00_01_00), ._ },
117807 } },
117808 }, .{
117809 .required_features = .{ .sse2, null, null, null },
117810 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
117811 .src_constraints = .{ .{ .float = .qword }, .any, .any },
117812 .patterns = &.{
117813 .{ .src = .{ .mut_sse, .none, .none } },
117814 },
117815 .dst_temps = .{ .{ .ref = .src0 }, .unused },
117816 .each = .{ .once = &.{
117817 .{ ._, ._pd, .shuf, .dst0x, .src0x, .ui(0b0_0), ._ },
117818 } },
117819 }, .{
117820 .required_features = .{ .sse2, null, null, null },
117821 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
117822 .src_constraints = .{ .{ .float = .qword }, .any, .any },
117823 .patterns = &.{
117824 .{ .src = .{ .sse, .none, .none } },
117825 },
117826 .dst_temps = .{ .{ .rc = .sse }, .unused },
117827 .each = .{ .once = &.{
117828 .{ ._, .p_d, .shuf, .dst0x, .src0x, .ui(0b01_00_01_00), ._ },
117829 } },
117830 }, .{
117831 .required_features = .{ .sse2, null, null, null },
117832 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
117833 .src_constraints = .{ .{ .float = .qword }, .any, .any },
117834 .patterns = &.{
117835 .{ .src = .{ .to_mut_sse, .none, .none } },
117836 },
117837 .dst_temps = .{ .{ .ref = .src0 }, .unused },
117838 .each = .{ .once = &.{
117839 .{ ._, ._pd, .shuf, .dst0x, .src0x, .ui(0b0_0), ._ },
117840 } },
117841 }, .{
117842 .required_features = .{ .sse, null, null, null },
117843 .dst_constraints = .{ .{ .scalar = .{ .of = .xword, .is = .qword } }, .any },
117844 .src_constraints = .{ .{ .int_or_float = .qword }, .any, .any },
117845 .patterns = &.{
117846 .{ .src = .{ .to_mut_sse, .none, .none } },
117847 },
117848 .dst_temps = .{ .{ .ref = .src0 }, .unused },
117849 .each = .{ .once = &.{
117850 .{ ._, ._ps, .shuf, .dst0x, .src0x, .ui(0b01_00_01_00), ._ },
117851 } },
117852 }, .{
117853 .required_features = .{ .avx2, null, null, null },
117854 .dst_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .qword } }, .any },
117855 .src_constraints = .{ .{ .int = .qword }, .any, .any },
117856 .patterns = &.{
117857 .{ .src = .{ .mem, .none, .none } },
117858 .{ .src = .{ .to_sse, .none, .none } },
117859 },
117860 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
117861 .each = .{ .once = &.{
117862 .{ ._, .vp_q, .broadcast, .dst0y, .src0q, ._, ._ },
117863 } },
117864 }, .{
117865 .required_features = .{ .avx2, null, null, null },
117866 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },
117867 .src_constraints = .{ .{ .float = .qword }, .any, .any },
117868 .patterns = &.{
117869 .{ .src = .{ .mem, .none, .none } },
117870 .{ .src = .{ .to_sse, .none, .none } },
117871 },
117872 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
117873 .each = .{ .once = &.{
117874 .{ ._, .v_sd, .broadcast, .dst0y, .src0q, ._, ._ },
117875 } },
117876 }, .{
117877 .required_features = .{ .avx2, null, null, null },
117878 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }, .any },
117879 .src_constraints = .{ .{ .int = .qword }, .any, .any },
117880 .patterns = &.{
117881 .{ .src = .{ .mem, .none, .none } },
117882 .{ .src = .{ .to_sse, .none, .none } },
116082117883 },
116083 .call_frame = .{ .alignment = .@"16" },
116084117884 .extra_temps = .{
116085 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116086 .{ .type = .i32, .kind = .{ .reg = .edi } },
116087 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
116088 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117885 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117886 .{ .type = .vector_4_u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
117887 .unused,
117888 .unused,
116089117889 .unused,
116090117890 .unused,
116091117891 .unused,
......@@ -116095,28 +117895,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116095117895 .unused,
116096117896 },
116097117897 .dst_temps = .{ .mem, .unused },
116098 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116099117898 .each = .{ .once = &.{
116100 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116101 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
116102 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116103 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116104 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
116105 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117899 .{ ._, ._, .mov, .tmp0d, .sia(-32, .dst0, .add_size), ._, ._ },
117900 .{ ._, .vp_q, .broadcast, .tmp1y, .src0q, ._, ._ },
117901 .{ .@"0:", .v_dqa, .mov, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
117902 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
117903 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116106117904 } },
116107117905 }, .{
116108 .required_features = .{ .sse2, null, null, null },
116109 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116110 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117906 .required_features = .{ .avx2, null, null, null },
117907 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },
117908 .src_constraints = .{ .{ .float = .qword }, .any, .any },
116111117909 .patterns = &.{
116112 .{ .src = .{ .to_mem, .none, .none } },
117910 .{ .src = .{ .mem, .none, .none } },
117911 .{ .src = .{ .to_sse, .none, .none } },
116113117912 },
116114 .call_frame = .{ .alignment = .@"16" },
116115117913 .extra_temps = .{
116116 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116117 .{ .type = .i32, .kind = .{ .reg = .edi } },
116118 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
116119 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117914 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117915 .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
117916 .unused,
117917 .unused,
116120117918 .unused,
116121117919 .unused,
116122117920 .unused,
......@@ -116126,28 +117924,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116126117924 .unused,
116127117925 },
116128117926 .dst_temps = .{ .mem, .unused },
116129 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116130117927 .each = .{ .once = &.{
116131 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116132 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
116133 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116134 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116135 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
116136 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117928 .{ ._, ._, .mov, .tmp0d, .sia(-32, .dst0, .add_size), ._, ._ },
117929 .{ ._, .v_sd, .broadcast, .tmp1y, .src0q, ._, ._ },
117930 .{ .@"0:", .v_pd, .mova, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
117931 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
117932 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116137117933 } },
116138117934 }, .{
116139 .required_features = .{ .sse, null, null, null },
116140 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116141 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117935 .required_features = .{ .avx, null, null, null },
117936 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .xword, .is = .qword } }, .any },
117937 .src_constraints = .{ .{ .int_or_float = .qword }, .any, .any },
116142117938 .patterns = &.{
116143 .{ .src = .{ .to_mem, .none, .none } },
117939 .{ .src = .{ .mem, .none, .none } },
117940 .{ .src = .{ .to_sse, .none, .none } },
116144117941 },
116145 .call_frame = .{ .alignment = .@"16" },
116146117942 .extra_temps = .{
116147 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116148 .{ .type = .i32, .kind = .{ .reg = .edi } },
116149 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
116150 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117943 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117944 .{ .type = .vector_2_u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
117945 .unused,
117946 .unused,
116151117947 .unused,
116152117948 .unused,
116153117949 .unused,
......@@ -116157,28 +117953,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116157117953 .unused,
116158117954 },
116159117955 .dst_temps = .{ .mem, .unused },
116160 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116161117956 .each = .{ .once = &.{
116162 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116163 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
116164 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116165 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116166 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
116167 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117957 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
117958 .{ ._, .v_, .movddup, .tmp1x, .src0q, ._, ._ },
117959 .{ .@"0:", .v_pd, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
117960 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
117961 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116168117962 } },
116169117963 }, .{
116170 .required_features = .{ .avx, null, null, null },
116171 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116172 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117964 .required_features = .{ .sse3, null, null, null },
117965 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .xword, .is = .qword } }, .any },
117966 .src_constraints = .{ .{ .int_or_float = .qword }, .any, .any },
116173117967 .patterns = &.{
116174 .{ .src = .{ .to_mem, .none, .none } },
117968 .{ .src = .{ .mem, .none, .none } },
117969 .{ .src = .{ .to_sse, .none, .none } },
116175117970 },
116176 .call_frame = .{ .alignment = .@"16" },
116177117971 .extra_temps = .{
116178 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116179 .{ .type = .u32, .kind = .{ .reg = .edi } },
116180 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
116181 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117972 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117973 .{ .type = .vector_2_u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
117974 .unused,
117975 .unused,
116182117976 .unused,
116183117977 .unused,
116184117978 .unused,
......@@ -116188,28 +117982,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116188117982 .unused,
116189117983 },
116190117984 .dst_temps = .{ .mem, .unused },
116191 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116192117985 .each = .{ .once = &.{
116193 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116194 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
116195 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116196 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116197 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
116198 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117986 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
117987 .{ ._, ._, .movddup, .tmp1x, .src0q, ._, ._ },
117988 .{ .@"0:", ._pd, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
117989 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
117990 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116199117991 } },
116200117992 }, .{
116201117993 .required_features = .{ .sse2, null, null, null },
116202 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116203 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117994 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }, .any },
117995 .src_constraints = .{ .{ .int = .qword }, .any, .any },
116204117996 .patterns = &.{
116205 .{ .src = .{ .to_mem, .none, .none } },
117997 .{ .src = .{ .to_sse, .none, .none } },
116206117998 },
116207 .call_frame = .{ .alignment = .@"16" },
116208117999 .extra_temps = .{
116209 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116210 .{ .type = .u32, .kind = .{ .reg = .edi } },
116211 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
116212 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118000 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118001 .{ .type = .vector_2_u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
118002 .unused,
118003 .unused,
116213118004 .unused,
116214118005 .unused,
116215118006 .unused,
......@@ -116219,28 +118010,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116219118010 .unused,
116220118011 },
116221118012 .dst_temps = .{ .mem, .unused },
116222 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116223118013 .each = .{ .once = &.{
116224 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116225 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
116226 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116227 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116228 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
116229 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118014 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
118015 .{ ._, .p_d, .shuf, .tmp1x, .src0x, .ui(0b01_00_01_00), ._ },
118016 .{ .@"0:", ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
118017 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
118018 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116230118019 } },
116231118020 }, .{
116232 .required_features = .{ .sse, null, null, null },
116233 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116234 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
118021 .required_features = .{ .sse2, null, null, null },
118022 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
118023 .src_constraints = .{ .{ .float = .qword }, .any, .any },
116235118024 .patterns = &.{
116236 .{ .src = .{ .to_mem, .none, .none } },
118025 .{ .src = .{ .mut_sse, .none, .none } },
116237118026 },
116238 .call_frame = .{ .alignment = .@"16" },
116239118027 .extra_temps = .{
116240 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116241 .{ .type = .u32, .kind = .{ .reg = .edi } },
116242 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
116243 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118028 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118029 .unused,
118030 .unused,
118031 .unused,
116244118032 .unused,
116245118033 .unused,
116246118034 .unused,
......@@ -116250,28 +118038,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116250118038 .unused,
116251118039 },
116252118040 .dst_temps = .{ .mem, .unused },
116253 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116254118041 .each = .{ .once = &.{
116255 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116256 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
116257 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116258 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116259 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
116260 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118042 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
118043 .{ ._, ._pd, .shuf, .src0x, .src0x, .ui(0b0_0), ._ },
118044 .{ .@"0:", ._pd, .mova, .memi(.dst0x, .tmp0), .src0x, ._, ._ },
118045 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
118046 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116261118047 } },
116262118048 }, .{
116263 .required_features = .{ .@"64bit", .avx, null, null },
116264 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
116265 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
118049 .required_features = .{ .sse2, null, null, null },
118050 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
118051 .src_constraints = .{ .{ .float = .qword }, .any, .any },
116266118052 .patterns = &.{
116267 .{ .src = .{ .to_mem, .none, .none } },
118053 .{ .src = .{ .sse, .none, .none } },
116268118054 },
116269 .call_frame = .{ .alignment = .@"16" },
116270118055 .extra_temps = .{
116271 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116272 .{ .type = .i64, .kind = .{ .reg = .rdi } },
116273 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },
116274 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118056 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118057 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
118058 .unused,
118059 .unused,
116275118060 .unused,
116276118061 .unused,
116277118062 .unused,
......@@ -116281,28 +118066,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116281118066 .unused,
116282118067 },
116283118068 .dst_temps = .{ .mem, .unused },
116284 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116285118069 .each = .{ .once = &.{
116286 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116287 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
116288 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116289 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116290 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
116291 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118070 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
118071 .{ ._, .p_d, .shuf, .tmp1x, .src0x, .ui(0b01_00_01_00), ._ },
118072 .{ .@"0:", ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
118073 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
118074 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116292118075 } },
116293118076 }, .{
116294 .required_features = .{ .@"64bit", .sse2, null, null },
116295 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
116296 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
118077 .required_features = .{ .sse2, null, null, null },
118078 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
118079 .src_constraints = .{ .{ .float = .qword }, .any, .any },
116297118080 .patterns = &.{
116298 .{ .src = .{ .to_mem, .none, .none } },
118081 .{ .src = .{ .to_mut_sse, .none, .none } },
116299118082 },
116300 .call_frame = .{ .alignment = .@"16" },
116301118083 .extra_temps = .{
116302 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116303 .{ .type = .i64, .kind = .{ .reg = .rdi } },
116304 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },
116305 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118084 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118085 .unused,
118086 .unused,
118087 .unused,
116306118088 .unused,
116307118089 .unused,
116308118090 .unused,
......@@ -116312,28 +118094,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116312118094 .unused,
116313118095 },
116314118096 .dst_temps = .{ .mem, .unused },
116315 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116316118097 .each = .{ .once = &.{
116317 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116318 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
116319 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116320 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116321 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
116322 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118098 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
118099 .{ ._, ._pd, .shuf, .src0x, .src0x, .ui(0b0_0), ._ },
118100 .{ .@"0:", ._pd, .mova, .memi(.dst0x, .tmp0), .src0x, ._, ._ },
118101 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
118102 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116323118103 } },
116324118104 }, .{
116325 .required_features = .{ .@"64bit", .sse, null, null },
116326 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
116327 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
118105 .required_features = .{ .sse, null, null, null },
118106 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .xword, .is = .qword } }, .any },
118107 .src_constraints = .{ .{ .int_or_float = .qword }, .any, .any },
116328118108 .patterns = &.{
116329 .{ .src = .{ .to_mem, .none, .none } },
118109 .{ .src = .{ .to_mut_sse, .none, .none } },
116330118110 },
116331 .call_frame = .{ .alignment = .@"16" },
116332118111 .extra_temps = .{
116333 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116334 .{ .type = .i64, .kind = .{ .reg = .rdi } },
116335 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },
116336 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118112 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118113 .unused,
118114 .unused,
118115 .unused,
116337118116 .unused,
116338118117 .unused,
116339118118 .unused,
......@@ -116343,28 +118122,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116343118122 .unused,
116344118123 },
116345118124 .dst_temps = .{ .mem, .unused },
116346 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116347118125 .each = .{ .once = &.{
116348 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116349 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
116350 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116351 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116352 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
116353 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118126 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
118127 .{ ._, ._ps, .shuf, .src0x, .src0x, .ui(0b01_00_01_00), ._ },
118128 .{ .@"0:", ._ps, .mova, .memi(.dst0x, .tmp0), .src0x, ._, ._ },
118129 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
118130 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116354118131 } },
116355118132 }, .{
116356 .required_features = .{ .@"64bit", .avx, null, null },
116357 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
116358 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
118133 .required_features = .{ .@"64bit", null, null, null },
118134 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .qword, .is = .qword } }, .any },
118135 .src_constraints = .{ .{ .int_or_float = .qword }, .any, .any },
116359118136 .patterns = &.{
116360 .{ .src = .{ .to_mem, .none, .none } },
118137 .{ .src = .{ .to_gpr, .none, .none } },
116361118138 },
116362 .call_frame = .{ .alignment = .@"16" },
116363118139 .extra_temps = .{
116364 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116365 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116366 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },
116367 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118140 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118141 .unused,
118142 .unused,
118143 .unused,
116368118144 .unused,
116369118145 .unused,
116370118146 .unused,
......@@ -116374,28 +118150,78 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116374118150 .unused,
116375118151 },
116376118152 .dst_temps = .{ .mem, .unused },
116377 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116378118153 .each = .{ .once = &.{
116379 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116380 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
116381 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116382 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116383 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
116384 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118154 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },
118155 .{ .@"0:", ._, .mov, .memi(.dst0q, .tmp0), .src0q, ._, ._ },
118156 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
118157 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116385118158 } },
116386118159 }, .{
116387 .required_features = .{ .@"64bit", .sse2, null, null },
116388 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
116389 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
118160 .required_features = .{ .sse, null, null, null },
118161 .dst_constraints = .{ .{ .scalar = .{ .of = .xword, .is = .xword } }, .any },
118162 .src_constraints = .{ .{ .int_or_float = .xword }, .any, .any },
116390118163 .patterns = &.{
116391 .{ .src = .{ .to_mem, .none, .none } },
118164 .{ .src = .{ .mut_mem, .none, .none } },
118165 .{ .src = .{ .to_mut_sse, .none, .none } },
118166 },
118167 .dst_temps = .{ .{ .ref = .src0 }, .unused },
118168 .each = .{ .once = &.{} },
118169 }, .{
118170 .required_features = .{ .avx2, null, null, null },
118171 .dst_constraints = .{ .{ .scalar = .{ .of = .yword, .is = .xword } }, .any },
118172 .src_constraints = .{ .{ .int_or_float = .xword }, .any, .any },
118173 .patterns = &.{
118174 .{ .src = .{ .mem, .none, .none } },
118175 },
118176 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
118177 .each = .{ .once = &.{
118178 .{ ._, .v_i128, .broadcast, .dst0y, .src0x, ._, ._ },
118179 } },
118180 }, .{
118181 .required_features = .{ .avx2, null, null, null },
118182 .dst_constraints = .{ .{ .scalar = .{ .of = .yword, .is = .xword } }, .any },
118183 .src_constraints = .{ .{ .int_or_float = .xword }, .any, .any },
118184 .patterns = &.{
118185 .{ .src = .{ .to_sse, .none, .none } },
118186 },
118187 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
118188 .each = .{ .once = &.{
118189 .{ ._, .v_i128, .insert, .dst0y, .src0y, .src0x, .ui(1) },
118190 } },
118191 }, .{
118192 .required_features = .{ .avx, null, null, null },
118193 .dst_constraints = .{ .{ .scalar = .{ .of = .yword, .is = .xword } }, .any },
118194 .src_constraints = .{ .{ .int_or_float = .xword }, .any, .any },
118195 .patterns = &.{
118196 .{ .src = .{ .mem, .none, .none } },
118197 },
118198 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
118199 .each = .{ .once = &.{
118200 .{ ._, .v_f128, .broadcast, .dst0y, .src0x, ._, ._ },
118201 } },
118202 }, .{
118203 .required_features = .{ .avx, null, null, null },
118204 .dst_constraints = .{ .{ .scalar = .{ .of = .yword, .is = .xword } }, .any },
118205 .src_constraints = .{ .{ .int_or_float = .xword }, .any, .any },
118206 .patterns = &.{
118207 .{ .src = .{ .to_sse, .none, .none } },
118208 },
118209 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
118210 .each = .{ .once = &.{
118211 .{ ._, .v_f128, .insert, .dst0y, .src0y, .src0x, .ui(1) },
118212 } },
118213 }, .{
118214 .required_features = .{ .avx2, null, null, null },
118215 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .yword, .is = .xword } }, .any },
118216 .src_constraints = .{ .{ .int_or_float = .xword }, .any, .any },
118217 .patterns = &.{
118218 .{ .src = .{ .mem, .none, .none } },
116392118219 },
116393 .call_frame = .{ .alignment = .@"16" },
116394118220 .extra_temps = .{
116395 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116396 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116397 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },
116398 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118221 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118222 .{ .type = .vector_2_u128, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
118223 .unused,
118224 .unused,
116399118225 .unused,
116400118226 .unused,
116401118227 .unused,
......@@ -116405,28 +118231,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116405118231 .unused,
116406118232 },
116407118233 .dst_temps = .{ .mem, .unused },
116408 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116409118234 .each = .{ .once = &.{
116410 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116411 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
116412 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116413 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116414 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
116415 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118235 .{ ._, ._, .mov, .tmp0d, .sia(-32, .dst0, .add_size), ._, ._ },
118236 .{ ._, .v_i128, .broadcast, .tmp1y, .src0x, ._, ._ },
118237 .{ .@"0:", .v_dqa, .mov, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
118238 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
118239 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116416118240 } },
116417118241 }, .{
116418 .required_features = .{ .@"64bit", .sse, null, null },
116419 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
116420 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
118242 .required_features = .{ .avx2, null, null, null },
118243 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .yword, .is = .xword } }, .any },
118244 .src_constraints = .{ .{ .int_or_float = .xword }, .any, .any },
116421118245 .patterns = &.{
116422 .{ .src = .{ .to_mem, .none, .none } },
118246 .{ .src = .{ .to_sse, .none, .none } },
116423118247 },
116424 .call_frame = .{ .alignment = .@"16" },
116425118248 .extra_temps = .{
116426 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116427 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116428 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },
116429 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118249 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118250 .{ .type = .vector_2_u128, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
118251 .unused,
118252 .unused,
116430118253 .unused,
116431118254 .unused,
116432118255 .unused,
......@@ -116436,29 +118259,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116436118259 .unused,
116437118260 },
116438118261 .dst_temps = .{ .mem, .unused },
116439 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116440118262 .each = .{ .once = &.{
116441 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116442 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
116443 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116444 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116445 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
116446 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118263 .{ ._, ._, .mov, .tmp0d, .sia(-32, .dst0, .add_size), ._, ._ },
118264 .{ ._, .v_i128, .insert, .tmp1y, .src0y, .src0x, .ui(1) },
118265 .{ .@"0:", .v_dqa, .mov, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
118266 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
118267 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116447118268 } },
116448118269 }, .{
116449 .required_features = .{ .@"64bit", .avx, null, null },
116450 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
116451 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
118270 .required_features = .{ .avx, null, null, null },
118271 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .yword, .is = .xword } }, .any },
118272 .src_constraints = .{ .{ .int_or_float = .xword }, .any, .any },
116452118273 .patterns = &.{
116453 .{ .src = .{ .to_mem, .none, .none } },
118274 .{ .src = .{ .mem, .none, .none } },
116454118275 },
116455 .call_frame = .{ .alignment = .@"16" },
116456118276 .extra_temps = .{
116457 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116458 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116459 .{ .type = .i64, .kind = .{ .reg = .rsi } },
116460 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },
116461 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118277 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118278 .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
118279 .unused,
118280 .unused,
118281 .unused,
116462118282 .unused,
116463118283 .unused,
116464118284 .unused,
......@@ -116467,30 +118287,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116467118287 .unused,
116468118288 },
116469118289 .dst_temps = .{ .mem, .unused },
116470 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116471118290 .each = .{ .once = &.{
116472 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116473 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
116474 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
116475 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116476 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
116477 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
116478 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118291 .{ ._, ._, .mov, .tmp0d, .sia(-32, .dst0, .add_size), ._, ._ },
118292 .{ ._, .v_f128, .broadcast, .tmp1y, .src0x, ._, ._ },
118293 .{ .@"0:", .v_pd, .mova, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
118294 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
118295 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116479118296 } },
116480118297 }, .{
116481 .required_features = .{ .@"64bit", .sse2, null, null },
116482 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
116483 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
118298 .required_features = .{ .avx, null, null, null },
118299 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .yword, .is = .xword } }, .any },
118300 .src_constraints = .{ .{ .int_or_float = .xword }, .any, .any },
116484118301 .patterns = &.{
116485 .{ .src = .{ .to_mem, .none, .none } },
118302 .{ .src = .{ .to_sse, .none, .none } },
116486118303 },
116487 .call_frame = .{ .alignment = .@"16" },
116488118304 .extra_temps = .{
116489 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116490 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116491 .{ .type = .i64, .kind = .{ .reg = .rsi } },
116492 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },
116493 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118305 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118306 .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
118307 .unused,
118308 .unused,
118309 .unused,
116494118310 .unused,
116495118311 .unused,
116496118312 .unused,
......@@ -116499,30 +118315,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116499118315 .unused,
116500118316 },
116501118317 .dst_temps = .{ .mem, .unused },
116502 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116503118318 .each = .{ .once = &.{
116504 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116505 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
116506 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
116507 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116508 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
116509 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
116510 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118319 .{ ._, ._, .mov, .tmp0d, .sia(-32, .dst0, .add_size), ._, ._ },
118320 .{ ._, .v_f128, .insert, .tmp1y, .src0y, .src0x, .ui(1) },
118321 .{ .@"0:", .v_pd, .mova, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
118322 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
118323 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116511118324 } },
116512118325 }, .{
116513 .required_features = .{ .@"64bit", .sse, null, null },
116514 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
116515 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
118326 .required_features = .{ .avx, null, null, null },
118327 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .xword, .is = .xword } }, .any },
118328 .src_constraints = .{ .{ .int_or_float = .xword }, .any, .any },
116516118329 .patterns = &.{
116517 .{ .src = .{ .to_mem, .none, .none } },
118330 .{ .src = .{ .to_sse, .none, .none } },
116518118331 },
116519 .call_frame = .{ .alignment = .@"16" },
116520118332 .extra_temps = .{
116521 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116522 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116523 .{ .type = .i64, .kind = .{ .reg = .rsi } },
116524 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },
116525 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118333 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118334 .unused,
118335 .unused,
118336 .unused,
118337 .unused,
116526118338 .unused,
116527118339 .unused,
116528118340 .unused,
......@@ -116531,30 +118343,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116531118343 .unused,
116532118344 },
116533118345 .dst_temps = .{ .mem, .unused },
116534 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116535118346 .each = .{ .once = &.{
116536 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116537 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
116538 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
116539 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116540 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
116541 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
116542 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118347 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
118348 .{ .@"0:", .v_dqa, .mov, .memi(.dst0x, .tmp0), .src0x, ._, ._ },
118349 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
118350 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116543118351 } },
116544118352 }, .{
116545 .required_features = .{ .@"64bit", .avx, null, null },
116546 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
116547 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
118353 .required_features = .{ .sse2, null, null, null },
118354 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .xword, .is = .xword } }, .any },
118355 .src_constraints = .{ .{ .int_or_float = .xword }, .any, .any },
116548118356 .patterns = &.{
116549 .{ .src = .{ .to_mem, .none, .none } },
118357 .{ .src = .{ .to_sse, .none, .none } },
116550118358 },
116551 .call_frame = .{ .alignment = .@"16" },
116552118359 .extra_temps = .{
116553 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116554 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116555 .{ .type = .u64, .kind = .{ .reg = .rsi } },
116556 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },
116557 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118360 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118361 .unused,
118362 .unused,
118363 .unused,
118364 .unused,
116558118365 .unused,
116559118366 .unused,
116560118367 .unused,
......@@ -116563,30 +118370,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116563118370 .unused,
116564118371 },
116565118372 .dst_temps = .{ .mem, .unused },
116566 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116567118373 .each = .{ .once = &.{
116568 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116569 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
116570 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
116571 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116572 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
116573 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
116574 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118374 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
118375 .{ .@"0:", ._dqa, .mov, .memi(.dst0x, .tmp0), .src0x, ._, ._ },
118376 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
118377 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116575118378 } },
116576118379 }, .{
116577 .required_features = .{ .@"64bit", .sse2, null, null },
116578 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
116579 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
118380 .required_features = .{ .sse, null, null, null },
118381 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .xword, .is = .xword } }, .any },
118382 .src_constraints = .{ .{ .int_or_float = .xword }, .any, .any },
116580118383 .patterns = &.{
116581 .{ .src = .{ .to_mem, .none, .none } },
118384 .{ .src = .{ .to_sse, .none, .none } },
116582118385 },
116583 .call_frame = .{ .alignment = .@"16" },
116584118386 .extra_temps = .{
116585 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116586 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116587 .{ .type = .u64, .kind = .{ .reg = .rsi } },
116588 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },
116589 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118387 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118388 .unused,
118389 .unused,
118390 .unused,
118391 .unused,
116590118392 .unused,
116591118393 .unused,
116592118394 .unused,
......@@ -116595,30 +118397,79 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116595118397 .unused,
116596118398 },
116597118399 .dst_temps = .{ .mem, .unused },
116598 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116599118400 .each = .{ .once = &.{
116600 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116601 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
116602 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
116603 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116604 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
116605 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
116606 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118401 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
118402 .{ .@"0:", ._ps, .mova, .memi(.dst0x, .tmp0), .src0x, ._, ._ },
118403 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
118404 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116607118405 } },
116608118406 }, .{
116609118407 .required_features = .{ .@"64bit", .sse, null, null },
116610 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
116611 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
118408 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
118409 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
118410 .patterns = &.{
118411 .{ .src = .{ .mut_mem, .none, .none } },
118412 .{ .src = .{ .to_mut_sse, .none, .none } },
118413 },
118414 .dst_temps = .{ .{ .ref = .src0 }, .unused },
118415 .each = .{ .once = &.{} },
118416 }, .{
118417 .required_features = .{ .@"64bit", .avx2, null, null },
118418 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .tbyte } }, .any },
118419 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
118420 .patterns = &.{
118421 .{ .src = .{ .mem, .none, .none } },
118422 },
118423 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
118424 .each = .{ .once = &.{
118425 .{ ._, .v_i128, .broadcast, .dst0y, .src0x, ._, ._ },
118426 } },
118427 }, .{
118428 .required_features = .{ .@"64bit", .avx2, null, null },
118429 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .tbyte } }, .any },
118430 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
118431 .patterns = &.{
118432 .{ .src = .{ .to_sse, .none, .none } },
118433 },
118434 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
118435 .each = .{ .once = &.{
118436 .{ ._, .v_i128, .insert, .dst0y, .src0y, .src0x, .ui(1) },
118437 } },
118438 }, .{
118439 .required_features = .{ .@"64bit", .avx, null, null },
118440 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .tbyte } }, .any },
118441 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
118442 .patterns = &.{
118443 .{ .src = .{ .mem, .none, .none } },
118444 },
118445 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
118446 .each = .{ .once = &.{
118447 .{ ._, .v_f128, .broadcast, .dst0y, .src0x, ._, ._ },
118448 } },
118449 }, .{
118450 .required_features = .{ .@"64bit", .avx, null, null },
118451 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .tbyte } }, .any },
118452 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
118453 .patterns = &.{
118454 .{ .src = .{ .to_sse, .none, .none } },
118455 },
118456 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
118457 .each = .{ .once = &.{
118458 .{ ._, .v_f128, .insert, .dst0y, .src0y, .src0x, .ui(1) },
118459 } },
118460 }, .{
118461 .required_features = .{ .@"64bit", .avx2, null, null },
118462 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .tbyte } }, .any },
118463 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
116612118464 .patterns = &.{
116613118465 .{ .src = .{ .to_mem, .none, .none } },
116614118466 },
116615 .call_frame = .{ .alignment = .@"16" },
116616118467 .extra_temps = .{
116617 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116618 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116619 .{ .type = .u64, .kind = .{ .reg = .rsi } },
116620 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },
116621 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118468 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118469 .{ .type = .vector_2_u128, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
118470 .unused,
118471 .unused,
118472 .unused,
116622118473 .unused,
116623118474 .unused,
116624118475 .unused,
......@@ -116627,31 +118478,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116627118478 .unused,
116628118479 },
116629118480 .dst_temps = .{ .mem, .unused },
116630 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116631118481 .each = .{ .once = &.{
116632 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116633 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
116634 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
116635 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116636 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
116637 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
116638 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118482 .{ ._, ._, .mov, .tmp0d, .sia(-32, .dst0, .add_size), ._, ._ },
118483 .{ ._, .v_i128, .broadcast, .tmp1y, .src0x, ._, ._ },
118484 .{ .@"0:", .v_dqa, .mov, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
118485 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
118486 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116639118487 } },
116640118488 }, .{
116641118489 .required_features = .{ .@"64bit", .avx, null, null },
116642 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116643 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
118490 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .tbyte } }, .any },
118491 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
116644118492 .patterns = &.{
116645118493 .{ .src = .{ .to_mem, .none, .none } },
116646118494 },
116647 .call_frame = .{ .alignment = .@"16" },
116648118495 .extra_temps = .{
116649 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116650 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116651 .{ .type = .usize, .kind = .{ .reg = .rdi } },
116652 .{ .type = .usize, .kind = .{ .reg = .rsi } },
116653 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },
116654 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118496 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118497 .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
118498 .unused,
118499 .unused,
118500 .unused,
118501 .unused,
116655118502 .unused,
116656118503 .unused,
116657118504 .unused,
......@@ -116659,33 +118506,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116659118506 .unused,
116660118507 },
116661118508 .dst_temps = .{ .mem, .unused },
116662 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116663118509 .each = .{ .once = &.{
116664 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
116665 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
116666 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
116667 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
116668 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
116669 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
116670 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
116671 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
116672 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118510 .{ ._, ._, .mov, .tmp0d, .sia(-32, .dst0, .add_size), ._, ._ },
118511 .{ ._, .v_f128, .broadcast, .tmp1y, .src0x, ._, ._ },
118512 .{ .@"0:", .v_pd, .mova, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
118513 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
118514 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116673118515 } },
116674118516 }, .{
116675 .required_features = .{ .@"64bit", .sse2, null, null },
116676 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116677 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
118517 .required_features = .{ .@"64bit", .avx, null, null },
118518 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
118519 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
116678118520 .patterns = &.{
116679118521 .{ .src = .{ .to_mem, .none, .none } },
116680118522 },
116681 .call_frame = .{ .alignment = .@"16" },
116682118523 .extra_temps = .{
116683 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116684 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116685 .{ .type = .usize, .kind = .{ .reg = .rdi } },
116686 .{ .type = .usize, .kind = .{ .reg = .rsi } },
116687 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },
116688 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118524 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118525 .{ .type = .f80, .kind = .{ .rc = .sse } },
118526 .unused,
118527 .unused,
118528 .unused,
118529 .unused,
116689118530 .unused,
116690118531 .unused,
116691118532 .unused,
......@@ -116693,33 +118534,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116693118534 .unused,
116694118535 },
116695118536 .dst_temps = .{ .mem, .unused },
116696 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116697118537 .each = .{ .once = &.{
116698 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
116699 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
116700 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
116701 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
116702 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
116703 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
116704 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
116705 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
116706 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118538 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
118539 .{ ._, .v_dqa, .mov, .tmp1x, .mem(.src0x), ._, ._ },
118540 .{ .@"0:", .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
118541 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
118542 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116707118543 } },
116708118544 }, .{
116709 .required_features = .{ .@"64bit", .sse, null, null },
116710 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116711 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
118545 .required_features = .{ .@"64bit", .sse2, null, null },
118546 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
118547 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
116712118548 .patterns = &.{
116713118549 .{ .src = .{ .to_mem, .none, .none } },
116714118550 },
116715 .call_frame = .{ .alignment = .@"16" },
116716118551 .extra_temps = .{
116717 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116718 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116719 .{ .type = .usize, .kind = .{ .reg = .rdi } },
116720 .{ .type = .usize, .kind = .{ .reg = .rsi } },
116721 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },
116722 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118552 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118553 .{ .type = .f80, .kind = .{ .rc = .sse } },
118554 .unused,
118555 .unused,
118556 .unused,
118557 .unused,
116723118558 .unused,
116724118559 .unused,
116725118560 .unused,
......@@ -116727,33 +118562,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116727118562 .unused,
116728118563 },
116729118564 .dst_temps = .{ .mem, .unused },
116730 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116731118565 .each = .{ .once = &.{
116732 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
116733 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
116734 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
116735 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
116736 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
116737 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
116738 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
116739 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
116740 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118566 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
118567 .{ ._, ._dqa, .mov, .tmp1x, .mem(.src0x), ._, ._ },
118568 .{ .@"0:", ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
118569 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
118570 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116741118571 } },
116742118572 }, .{
116743 .required_features = .{ .@"64bit", .avx, null, null },
116744 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116745 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
118573 .required_features = .{ .@"64bit", .sse, null, null },
118574 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
118575 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
116746118576 .patterns = &.{
116747118577 .{ .src = .{ .to_mem, .none, .none } },
116748118578 },
116749 .call_frame = .{ .alignment = .@"16" },
116750118579 .extra_temps = .{
116751 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116752 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116753 .{ .type = .usize, .kind = .{ .reg = .rdi } },
116754 .{ .type = .usize, .kind = .{ .reg = .rsi } },
116755 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },
116756 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118580 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118581 .{ .type = .f80, .kind = .{ .rc = .sse } },
118582 .unused,
118583 .unused,
118584 .unused,
118585 .unused,
116757118586 .unused,
116758118587 .unused,
116759118588 .unused,
......@@ -116761,33 +118590,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116761118590 .unused,
116762118591 },
116763118592 .dst_temps = .{ .mem, .unused },
116764 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116765118593 .each = .{ .once = &.{
116766 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
116767 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
116768 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
116769 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
116770 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
116771 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
116772 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
116773 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
116774 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118594 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
118595 .{ ._, ._ps, .mova, .tmp1x, .mem(.src0x), ._, ._ },
118596 .{ .@"0:", ._ps, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
118597 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
118598 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116775118599 } },
116776118600 }, .{
116777 .required_features = .{ .@"64bit", .sse2, null, null },
116778 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116779 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
118601 .required_features = .{ .@"64bit", .slow_incdec, null, null },
118602 .dst_constraints = .{ .{ .scalar_remainder_int = .{ .of = .qword, .is = .qword } }, .any },
118603 .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any, .any },
116780118604 .patterns = &.{
116781118605 .{ .src = .{ .to_mem, .none, .none } },
116782118606 },
116783 .call_frame = .{ .alignment = .@"16" },
116784118607 .extra_temps = .{
116785 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116786 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
118608 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116787118609 .{ .type = .usize, .kind = .{ .reg = .rdi } },
116788118610 .{ .type = .usize, .kind = .{ .reg = .rsi } },
116789 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },
116790 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118611 .{ .type = .usize, .kind = .{ .reg = .rcx } },
118612 .unused,
118613 .unused,
116791118614 .unused,
116792118615 .unused,
116793118616 .unused,
......@@ -116795,33 +118618,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116795118618 .unused,
116796118619 },
116797118620 .dst_temps = .{ .mem, .unused },
116798 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116799118621 .each = .{ .once = &.{
116800 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
116801 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
116802 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
116803 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
116804 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
116805 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
116806 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
116807 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
116808 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118622 .{ ._, ._, .mov, .tmp0d, .sa(.dst0, .add_len), ._, ._ },
118623 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
118624 .{ .@"0:", ._, .lea, .tmp2q, .mem(.src0), ._, ._ },
118625 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_size_div_8), ._, ._ },
118626 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
118627 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
118628 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
116809118629 } },
116810118630 }, .{
116811 .required_features = .{ .@"64bit", .sse, null, null },
116812 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116813 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
118631 .required_features = .{ .@"64bit", null, null, null },
118632 .dst_constraints = .{ .{ .scalar_remainder_int = .{ .of = .qword, .is = .qword } }, .any },
118633 .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any, .any },
116814118634 .patterns = &.{
116815118635 .{ .src = .{ .to_mem, .none, .none } },
116816118636 },
116817 .call_frame = .{ .alignment = .@"16" },
116818118637 .extra_temps = .{
116819 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116820 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
118638 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116821118639 .{ .type = .usize, .kind = .{ .reg = .rdi } },
116822118640 .{ .type = .usize, .kind = .{ .reg = .rsi } },
116823 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },
116824 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118641 .{ .type = .usize, .kind = .{ .reg = .rcx } },
118642 .unused,
118643 .unused,
116825118644 .unused,
116826118645 .unused,
116827118646 .unused,
......@@ -116829,23 +118648,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116829118648 .unused,
116830118649 },
116831118650 .dst_temps = .{ .mem, .unused },
116832 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116833118651 .each = .{ .once = &.{
116834 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
116835 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
116836 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
116837 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
116838 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
116839 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
116840 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
116841 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
116842 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118652 .{ ._, ._, .mov, .tmp0d, .sa(.dst0, .add_len), ._, ._ },
118653 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
118654 .{ .@"0:", ._, .lea, .tmp2q, .mem(.src0), ._, ._ },
118655 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_size_div_8), ._, ._ },
118656 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
118657 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
118658 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
116843118659 } },
116844118660 } }) catch |err| switch (err) {
116845 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
118661 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
116846118662 @tagName(air_tag),
116847118663 ty_op.ty.toType().fmt(pt),
116848 cg.typeOf(ty_op.operand).fmt(pt),
116849118664 ops[0].tracking(cg),
116850118665 }),
116851118666 else => |e| return e,
......@@ -143084,16 +144899,17 @@ const Select = struct {
143084144899 any_float,
143085144900 po2_any,
143086144901 bool_vec: Memory.Size,
143087 vec: Memory.Size,
143088144902 signed_int_vec: Memory.Size,
143089144903 signed_int_or_full_vec: Memory.Size,
143090144904 unsigned_int_vec: Memory.Size,
143091144905 size: Memory.Size,
143092144906 multiple_size: Memory.Size,
143093144907 int: Memory.Size,
144908 int_or_float: Memory.Size,
143094144909 scalar_int_is: Memory.Size,
143095144910 scalar_signed_int_is: Memory.Size,
143096144911 scalar_unsigned_int_is: Memory.Size,
144912 scalar: OfIsSizes,
143097144913 scalar_int: OfIsSizes,
143098144914 scalar_signed_int: OfIsSizes,
143099144915 scalar_unsigned_int: OfIsSizes,
......@@ -143101,6 +144917,7 @@ const Select = struct {
143101144917 scalar_exact_int: struct { of: Memory.Size, is: u16 },
143102144918 scalar_exact_signed_int: struct { of: Memory.Size, is: u16 },
143103144919 scalar_exact_unsigned_int: struct { of: Memory.Size, is: u16 },
144920 multiple_scalar: OfIsSizes,
143104144921 multiple_scalar_int: OfIsSizes,
143105144922 multiple_scalar_signed_int: OfIsSizes,
143106144923 multiple_scalar_unsigned_int: OfIsSizes,
......@@ -143159,8 +144976,6 @@ const Select = struct {
143159144976 .po2_any => std.math.isPowerOfTwo(ty.abiSize(zcu)),
143160144977 .bool_vec => |size| ty.isVector(zcu) and ty.scalarType(zcu).toIntern() == .bool_type and
143161144978 size.bitSize(cg.target) >= ty.vectorLen(zcu),
143162 .vec => |size| ty.isVector(zcu) and ty.scalarType(zcu).toIntern() != .bool_type and
143163 size.bitSize(cg.target) >= ty.abiSize(zcu),
143164144979 .signed_int_vec => |size| ty.isVector(zcu) and @divExact(size.bitSize(cg.target), 8) >= ty.abiSize(zcu) and
143165144980 if (cg.intInfo(ty.childType(zcu))) |int_info| int_info.signedness == .signed else false,
143166144981 .signed_int_or_full_vec => |size| ty.isVector(zcu) and @divExact(size.bitSize(cg.target), 8) >= ty.abiSize(zcu) and
......@@ -143173,6 +144988,12 @@ const Select = struct {
143173144988 .size => |size| @divExact(size.bitSize(cg.target), 8) >= ty.abiSize(zcu),
143174144989 .multiple_size => |size| ty.abiSize(zcu) % @divExact(size.bitSize(cg.target), 8) == 0,
143175144990 .int => |size| if (cg.intInfo(ty)) |int_info| size.bitSize(cg.target) >= int_info.bits else false,
144991 .int_or_float => |size| if (cg.intInfo(ty)) |int_info|
144992 size.bitSize(cg.target) >= int_info.bits
144993 else if (cg.floatBits(ty)) |float_bits|
144994 size.bitSize(cg.target) == float_bits
144995 else
144996 false,
143176144997 .scalar_int_is => |size| if (cg.intInfo(ty.scalarType(zcu))) |int_info|
143177144998 size.bitSize(cg.target) >= int_info.bits
143178144999 else
......@@ -143185,6 +145006,13 @@ const Select = struct {
143185145006 .signed => false,
143186145007 .unsigned => size.bitSize(cg.target) >= int_info.bits,
143187145008 } else false,
145009 .scalar => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and
145010 if (cg.intInfo(ty.scalarType(zcu))) |int_info|
145011 of_is.is.bitSize(cg.target) >= int_info.bits
145012 else if (cg.floatBits(ty.scalarType(zcu))) |float_bits|
145013 of_is.is.bitSize(cg.target) == float_bits
145014 else
145015 false,
143188145016 .scalar_int => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and
143189145017 if (cg.intInfo(ty.scalarType(zcu))) |int_info| of_is.is.bitSize(cg.target) >= int_info.bits else false,
143190145018 .scalar_signed_int => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and
......@@ -143206,6 +145034,13 @@ const Select = struct {
143206145034 .scalar_exact_unsigned_int => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and
143207145035 if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and
143208145036 of_is.is == int_info.bits else false,
145037 .multiple_scalar => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and
145038 if (cg.intInfo(ty.scalarType(zcu))) |int_info|
145039 of_is.is.bitSize(cg.target) >= int_info.bits
145040 else if (cg.floatBits(ty.scalarType(zcu))) |float_bits|
145041 of_is.is.bitSize(cg.target) == float_bits
145042 else
145043 false,
143209145044 .multiple_scalar_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and
143210145045 if (cg.intInfo(ty.scalarType(zcu))) |int_info| of_is.is.bitSize(cg.target) >= int_info.bits else false,
143211145046 .multiple_scalar_signed_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and
......@@ -143557,6 +145392,7 @@ const Select = struct {
143557145392 f64_0x1p52_0x1p84_mem,
143558145393 u32_0x1p52_hi_0x1p84_hi_0_0_mem,
143559145394 f32_0_0x1p64_mem,
145395 pshufb_splat_mem: struct { of: Memory.Size = .none, size: Memory.Size },
143560145396 pshufb_trunc_mem: struct { of: Memory.Size = .none, from: Memory.Size, to: Memory.Size },
143561145397 pand_trunc_mem: struct { from: Memory.Size, to: Memory.Size },
143562145398 pshufb_bswap_mem: struct { repeat: u4 = 1, size: Memory.Size, smear: u4 = 1 },
......@@ -143809,6 +145645,26 @@ const Select = struct {
143809145645 (try pt.floatValue(.f32, @as(f32, 0x1p64))).toIntern(),
143810145646 } },
143811145647 } }))), true },
145648 .pshufb_splat_mem => |splat_spec| {
145649 const zcu = pt.zcu;
145650 assert(spec.type.isVector(zcu));
145651 assert(spec.type.childType(zcu).toIntern() == .u8_type);
145652 var elem_buf: [32]u8 = @splat(1 << 7);
145653 const elems = elem_buf[0..spec.type.vectorLen(zcu)];
145654 const of_bytes: u32 = @intCast(switch (splat_spec.of) {
145655 .none => elems.len,
145656 else => |of| @divExact(of.bitSize(cg.target), 8),
145657 });
145658 const size_bytes: u32 = @intCast(@divExact(splat_spec.size.bitSize(cg.target), 8));
145659 var index: u32 = 0;
145660 while (index < of_bytes) : (index += size_bytes) for (0..size_bytes) |byte_off| {
145661 elems[index + byte_off] = @as(u4, @truncate(byte_off));
145662 };
145663 return .{ try cg.tempMemFromValue(.fromInterned(try pt.intern(.{ .aggregate = .{
145664 .ty = spec.type.toIntern(),
145665 .storage = .{ .bytes = try zcu.intern_pool.getOrPutString(zcu.gpa, pt.tid, elems, .maybe_embedded_nulls) },
145666 } }))), true };
145667 },
143812145668 .pshufb_trunc_mem => |trunc_spec| {
143813145669 const zcu = pt.zcu;
143814145670 assert(spec.type.isVector(zcu));
src/codegen/c/Type.zig+15
......@@ -1788,6 +1788,21 @@ pub const Pool = struct {
17881788 };
17891789 return pool.fromFields(allocator, .@"struct", &fields, kind);
17901790 },
1791 .vector_2_u128_type => {
1792 const vector_ctype = try pool.getVector(allocator, .{
1793 .elem_ctype = .u128,
1794 .len = 2,
1795 });
1796 if (!kind.isParameter()) return vector_ctype;
1797 var fields = [_]Info.Field{
1798 .{
1799 .name = .{ .index = .array },
1800 .ctype = vector_ctype,
1801 .alignas = AlignAs.fromAbiAlignment(Type.u128.abiAlignment(zcu)),
1802 },
1803 };
1804 return pool.fromFields(allocator, .@"struct", &fields, kind);
1805 },
17911806 .vector_4_f16_type => {
17921807 const vector_ctype = try pool.getVector(allocator, .{
17931808 .elem_ctype = .f16,
test/behavior/export_builtin.zig-4
......@@ -57,10 +57,6 @@ test "exporting using namespace access" {
5757
5858test "exporting comptime-known value" {
5959 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
60 if (builtin.zig_backend == .stage2_x86_64 and
61 (builtin.target.ofmt != .elf and
62 builtin.target.ofmt != .macho and
63 builtin.target.ofmt != .coff)) return error.SkipZigTest;
6460 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
6561 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
6662 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
test/behavior/vector.zig+2-6
......@@ -31,8 +31,7 @@ test "vector wrap operators" {
3131 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3232 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
3333 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
34 if (builtin.zig_backend == .stage2_x86_64 and
35 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest;
34 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
3635
3736 const S = struct {
3837 fn doTheTest() !void {
......@@ -350,12 +349,12 @@ test "vector casts of sizes not divisible by 8" {
350349}
351350
352351test "vector @splat" {
353 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
354352 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
355353 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
356354 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
357355 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
358356 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
357 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
359358
360359 if (builtin.zig_backend == .stage2_llvm and
361360 builtin.os.tag == .macos)
......@@ -1511,9 +1510,6 @@ test "boolean vector with 2 or more booleans" {
15111510 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
15121511 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
15131512
1514 // TODO: try removing this after <https://github.com/ziglang/zig/issues/13782>:
1515 if (!(builtin.os.tag == .linux and builtin.cpu.arch == .x86_64)) return;
1516
15171513 const vec1 = @Vector(2, bool){ true, true };
15181514 _ = vec1;
15191515
test/behavior/x86_64/unary.zig+9
......@@ -1818,3 +1818,12 @@ test optionalNotEqualNull {
18181818 try test_optional_not_equal_null.testInts();
18191819 try test_optional_not_equal_null.testFloats();
18201820}
1821
1822inline fn splat(comptime Type: type, lhs: Type) Type {
1823 return @splat(lhs[0]);
1824}
1825test splat {
1826 const test_splat = unary(splat, .{});
1827 try test_splat.testIntVectors();
1828 try test_splat.testFloatVectors();
1829}
test/cases/compile_errors/@import_zon_bad_type.zig+3-3
......@@ -117,9 +117,9 @@ export fn testMutablePointer() void {
117117// tmp.zig:37:38: note: imported here
118118// neg_inf.zon:1:1: error: expected type '?u8'
119119// tmp.zig:57:28: note: imported here
120// neg_inf.zon:1:1: error: expected type 'tmp.testNonExhaustiveEnum__enum_495'
120// neg_inf.zon:1:1: error: expected type 'tmp.testNonExhaustiveEnum__enum_496'
121121// tmp.zig:62:39: note: imported here
122// neg_inf.zon:1:1: error: expected type 'tmp.testUntaggedUnion__union_497'
122// neg_inf.zon:1:1: error: expected type 'tmp.testUntaggedUnion__union_498'
123123// tmp.zig:67:44: note: imported here
124// neg_inf.zon:1:1: error: expected type 'tmp.testTaggedUnionVoid__union_500'
124// neg_inf.zon:1:1: error: expected type 'tmp.testTaggedUnionVoid__union_501'
125125// tmp.zig:72:50: note: imported here
test/cases/compile_errors/anytype_param_requires_comptime.zig+1-1
......@@ -15,6 +15,6 @@ pub export fn entry() void {
1515// error
1616//
1717// :7:25: error: unable to resolve comptime value
18// :7:25: note: initializer of comptime-only struct 'tmp.S.foo__anon_469.C' must be comptime-known
18// :7:25: note: initializer of comptime-only struct 'tmp.S.foo__anon_470.C' must be comptime-known
1919// :4:16: note: struct requires comptime because of this field
2020// :4:16: note: types are not available at runtime
test/cases/compile_errors/bogus_method_call_on_slice.zig+1-1
......@@ -16,5 +16,5 @@ pub export fn entry2() void {
1616//
1717// :3:6: error: no field or member function named 'copy' in '[]const u8'
1818// :9:8: error: no field or member function named 'bar' in '@TypeOf(.{})'
19// :12:18: error: no field or member function named 'bar' in 'tmp.entry2__struct_473'
19// :12:18: error: no field or member function named 'bar' in 'tmp.entry2__struct_474'
2020// :12:6: note: struct declared here
test/cases/compile_errors/coerce_anon_struct.zig+1-1
......@@ -6,6 +6,6 @@ export fn foo() void {
66
77// error
88//
9// :4:16: error: expected type 'tmp.T', found 'tmp.foo__struct_462'
9// :4:16: error: expected type 'tmp.T', found 'tmp.foo__struct_463'
1010// :3:16: note: struct declared here
1111// :1:11: note: struct declared here
test/cases/compile_errors/redundant_try.zig+2-2
......@@ -44,9 +44,9 @@ comptime {
4444//
4545// :5:23: error: expected error union type, found 'comptime_int'
4646// :10:23: error: expected error union type, found '@TypeOf(.{})'
47// :15:23: error: expected error union type, found 'tmp.test2__struct_499'
47// :15:23: error: expected error union type, found 'tmp.test2__struct_500'
4848// :15:23: note: struct declared here
49// :20:27: error: expected error union type, found 'tmp.test3__struct_501'
49// :20:27: error: expected error union type, found 'tmp.test3__struct_502'
5050// :20:27: note: struct declared here
5151// :25:23: error: expected error union type, found 'struct { comptime *const [5:0]u8 = "hello" }'
5252// :31:13: error: expected error union type, found 'u32'